<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>77527</bug_id>
          
          <creation_ts>2012-02-01 01:37:00 -0800</creation_ts>
          <short_desc>&lt;style scoped&gt;: Implement scoped selector matching in the fast path</short_desc>
          <delta_ts>2014-02-06 10:25:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77525</dependson>
    
    <dependson>77528</dependson>
          <blocked>49142</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>syoichi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546901</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-01 01:37:00 -0800</bug_when>
    <thetext>Allow scoped selector matching to use the fast selector checking path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558969</commentid>
    <comment_count>1</comment_count>
      <attachid>127536</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-16 23:49:27 -0800</bug_when>
    <thetext>Created attachment 127536
Patch (pending user-feedback)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558974</commentid>
    <comment_count>2</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-16 23:55:31 -0800</bug_when>
    <thetext>Dromaeo CSS test results from Tools/Scripts/run-perf-tests, using WK Release at r107911:

baseline &apos;master&apos; results:

Running Dromaeo/cssquery-dojo.html (1 of 25)
RESULT Dromaeo: cssquery-dojo= 169415.365092 ms
median= 0.0 ms, stdev= 370.108854584 ms, min= 167729.0 ms, max= 170693.0 ms

Running Dromaeo/cssquery-jquery.html (2 of 25)
RESULT Dromaeo: cssquery-jquery= 1245755.45774 ms
median= 0.0 ms, stdev= 83992.7599566 ms, min= 1133214.0 ms, max= 1363938.0 ms

Running Dromaeo/cssquery-prototype.html (3 of 25)
RESULT Dromaeo: cssquery-prototype= 197169.653808 ms
median= 0.0 ms, stdev= 335.688608645 ms, min= 195401.0 ms, max= 198543.0 ms


Results with my patch:

Running Dromaeo/cssquery-dojo.html (1 of 3)
RESULT Dromaeo: cssquery-dojo= 169620.786028 ms
median= 0.0 ms, stdev= 398.474399033 ms, min= 168027.93014 ms, max= 171185.0 ms

Running Dromaeo/cssquery-jquery.html (2 of 3)
RESULT Dromaeo: cssquery-jquery= 1158673.44356 ms
median= 0.0 ms, stdev= 79879.470916 ms, min= 1060246.37163 ms, max= 1280063.79321 ms

Running Dromaeo/cssquery-prototype.html (3 of 3)
RESULT Dromaeo: cssquery-prototype= 197052.6 ms
median= 0.0 ms, stdev= 365.454511533 ms, min= 195161.0 ms, max= 198560.0 ms


The 2nd test (Dromaeo/cssquery-jquery) does not seem very reliable, as it has quite a bit of variance and the results look &quot;too good to be true&quot;, but there seems to be almost no change in the other 2 tests. If you want me to run additional tests, please let me know!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558997</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-17 00:27:22 -0800</bug_when>
    <thetext>We might not want to do this right now. Fast path is meant to optimize the most common cases and there is no &lt;style scoped&gt; content out yet. It will be hard to prove that the extra branchiness won&apos;t regress our general performance (note that effect may be different on ARM).

Benchmarks using querySelectorAll don&apos;t generally do nearly enough selector matching for differences to show up. Web page style resolve is where differences really matters, PerformanceTests/Parser/html5-full-render.html may be interesting. Comparing sampler traces gives the most accurate picture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559048</commentid>
    <comment_count>4</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-02-17 02:01:22 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; PerformanceTests/Parser/html5-full-render.html may be interesting. 

Ask and ye shall receive! ;) 

baseline &apos;master&apos; result:

Running Parser/html5-full-render.html (1 of 1)
RESULT Parser: html5-full-render= 23679.5 ms
median= 23679.5 ms, stdev= 11.5 ms, min= 23668.0 ms, max= 23691.0 ms

with patch:

Running Parser/html5-full-render.html (1 of 1)
RESULT Parser: html5-full-render= 23820.5 ms
median= 23820.5 ms, stdev= 59.5 ms, min= 23761.0 ms, max= 23880.0 ms

a performance hit of 0.6%.

I understand your point regarding postponing this, but just to bring it up: This is just a straightforward implementation - apart from trying more &quot;creative&quot; implementations, another simple possibility would be to completely branch for &apos;scoped&apos; matching in the fast path - that is essentially duplicating the code, one branch for non-scoped matching, one for scoped matching. This would just entail a single additional &apos;if&apos; at the start of matching. Would that be a realistic approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629526</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-21 14:47:12 -0700</bug_when>
    <thetext>I don&apos;t know how to review this, or if it&apos;s still wanted.  It&apos;s a rather old patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629717</commentid>
    <comment_count>6</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-05-21 16:51:43 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I don&apos;t know how to review this, or if it&apos;s still wanted.  It&apos;s a rather old patch.

We agreed to freeze implementation of this pending more user-feedback on the whole &lt;style scoped&gt; feature. Removing review request for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977421</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-06 10:25:12 -0800</bug_when>
    <thetext>Scoped stylesheets were taken out.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127536</attachid>
            <date>2012-02-16 23:49:27 -0800</date>
            <delta_ts>2012-05-21 16:50:35 -0700</delta_ts>
            <desc>Patch (pending user-feedback)</desc>
            <filename>bug-77527-20120217164924.patch</filename>
            <type>text/plain</type>
            <size>12079</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3OTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ1OGE2MWI5OTBiNWFj
ZDNiNGI5NmQ0NjA2NmU4YzM5NDBjMTNkNi4uMDc5Y2M0YmY5YWI5MDBjN2JjYTNiZjRlMTRkYTY4
OTA5OTU1YjI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDEyLTAyLTE2ICBSb2xh
bmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgogCisgICAgICAgIDxzdHls
ZSBzY29wZWQ+OiBJbXBsZW1lbnQgc2NvcGVkIHNlbGVjdG9yIG1hdGNoaW5nIGluIHRoZSBmYXN0
IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NTI3CisKKyAgICAgICAgQWRhcHQgZmFzdENoZWNrU2VsZWN0b3IoKSBldCBhbCB0byBhbGxvdyBz
Y29wZWQgc2VsZWN0b3IgbWF0Y2hpbmcgaW4gdGhlIGZhc3Qgc2VsZWN0b3IgcGF0aC4KKyAgICAg
ICAgUmVtb3ZlIHJlc3RyaWN0aW9ucyBvbiBzY29wZWQgc3R5bGUgcnVsZXMgdG8gb25seSBydW4g
aW4gdGhlIHNsb3cgcGF0aC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIChyZWZhY3RvcmluZykKKworICAgICAgICAqIGNzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFJ1bGVEYXRhKToKKyAgICAgICAgKFJ1bGVT
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hl
Y2tTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAo
U2VsZWN0b3JDaGVja2VyKToKKworMjAxMi0wMi0xNiAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRz
dGVpbmVyQGNocm9taXVtLm9yZz4KKwogICAgICAgICA8c3R5bGUgc2NvcGVkPjogSW1wbGVtZW50
IHNjb3BlZCBzZWxlY3RvciBtYXRjaGluZyBpbiB0aGUgc2xvdyBwYXRoCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUyOAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMzE3MTNhZDgxOTUwNTI1M2IwNjBmOThmYmNh
MmQ0OWY1NWZjOWY0Ny4uMzM2ZjEzZmY3NWExYzM1NmQ2MGQwZTE4YjU5NmM3NGYzNjNhOTgxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtMTczLDcgKzE3Myw3
IEBAIGlmIChwcmltaXRpdmVWYWx1ZSkgXAogCiBjbGFzcyBSdWxlRGF0YSB7CiBwdWJsaWM6Ci0g
ICAgUnVsZURhdGEoQ1NTU3R5bGVSdWxlKiwgQ1NTU2VsZWN0b3IqLCB1bnNpZ25lZCBwb3NpdGlv
biwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciA9IHRydWUpOworICAgIFJ1bGVEYXRhKENT
U1N0eWxlUnVsZSosIENTU1NlbGVjdG9yKiwgdW5zaWduZWQgcG9zaXRpb24pOwogCiAgICAgdW5z
aWduZWQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAgICAgQ1NTU3R5
bGVSdWxlKiBydWxlKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlOyB9CkBAIC0yMjUsOCArMjI1LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0Kiwg
Y29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYsIENTU1N0eWxlU2VsZWN0b3IqID0gMCwgY29uc3Qg
RWxlbWVudCogPSAwKTsKIAotICAgIHZvaWQgYWRkU3R5bGVSdWxlKENTU1N0eWxlUnVsZSosIGJv
b2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IgPSB0cnVlKTsKLSAgICB2b2lkIGFkZFJ1bGUoQ1NT
U3R5bGVSdWxlKiwgQ1NTU2VsZWN0b3IqLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVjdG9yID0g
dHJ1ZSk7CisgICAgdm9pZCBhZGRTdHlsZVJ1bGUoQ1NTU3R5bGVSdWxlKik7CisgICAgdm9pZCBh
ZGRSdWxlKENTU1N0eWxlUnVsZSosIENTU1NlbGVjdG9yKik7CiAgICAgdm9pZCBhZGRQYWdlUnVs
ZShDU1NQYWdlUnVsZSopOwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwq
IGtleSwgQXRvbVJ1bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwogICAgIHZvaWQgYWRkUmVnaW9u
UnVsZShXZWJLaXRDU1NSZWdpb25SdWxlKik7CkBAIC0yMTIxLDcgKzIxMjEsNyBAQCBpbmxpbmUg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxl
RGF0YSwgY29uc3QgRWxlbQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAo
IVNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IobV9l
bGVtZW50LCBydWxlRGF0YS5zZWxlY3RvcigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIG1fY2hlY2tlci5mYXN0Q2hlY2tTZWxlY3RvcihydWxlRGF0YS5zZWxl
Y3RvcigpLCBtX2VsZW1lbnQpOworICAgICAgICByZXR1cm4gbV9jaGVja2VyLmZhc3RDaGVja1Nl
bGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCksIG1fZWxlbWVudCwgc2NvcGUpOwogICAgIH0KIAog
ICAgIC8vIFNsb3cgcGF0aC4KQEAgLTIxNDYsNyArMjE0Niw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxl
Y3Rvcjo6Y2hlY2tSZWdpb25TZWxlY3RvcihDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IsIEVs
ZW1lbnQqCiAgICAgbV9jaGVja2VyLnNldFBzZXVkb1N0eWxlKE5PUFNFVURPKTsKIAogICAgIGZv
ciAoQ1NTU2VsZWN0b3IqIHMgPSByZWdpb25TZWxlY3RvcjsgczsgcyA9IENTU1NlbGVjdG9yTGlz
dDo6bmV4dChzKSkKLSAgICAgICAgaWYgKG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKHMsIHJlZ2lv
bkVsZW1lbnQpKQorICAgICAgICBpZiAobV9jaGVja2VyLmNoZWNrU2VsZWN0b3IocywgcmVnaW9u
RWxlbWVudCwgMCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIyMzUsMTIgKzIyMzUsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGNvbnRhaW5zVW5j
b21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0YShDU1NTdHlsZVJ1bGUqIHJ1bGUs
IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgdW5zaWduZWQgcG9zaXRpb24sIGJvb2wgY2FuVXNlRmFz
dENoZWNrU2VsZWN0b3IpCitSdWxlRGF0YTo6UnVsZURhdGEoQ1NTU3R5bGVSdWxlKiBydWxlLCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnbmVkIHBvc2l0aW9uKQogICAgIDogbV9ydWxlKHJ1
bGUpCiAgICAgLCBtX3NlbGVjdG9yKHNlbGVjdG9yKQogICAgICwgbV9zcGVjaWZpY2l0eShzZWxl
Y3Rvci0+c3BlY2lmaWNpdHkoKSkKICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCi0gICAgLCBt
X2hhc0Zhc3RDaGVja2FibGVTZWxlY3RvcihjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciAmJiBTZWxl
Y3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKSkKKyAgICAsIG1f
aGFzRmFzdENoZWNrYWJsZVNlbGVjdG9yKFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxl
U2VsZWN0b3Ioc2VsZWN0b3IpKQogICAgICwgbV9oYXNNdWx0aXBhcnRTZWxlY3RvcighIXNlbGVj
dG9yLT50YWdIaXN0b3J5KCkpCiAgICAgLCBtX2hhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdI
VE1MQmFzZWRPblJ1bGVIYXNoKGlzU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2go
c2VsZWN0b3IpKQogICAgICwgbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoV2Vi
Q29yZTo6Y29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHNlbGVjdG9yKSkKQEAgLTIz
MDksOSArMjMwOSw5IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0lt
cGwqIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiAgICAgcnVsZXMtPmFwcGVu
ZChydWxlRGF0YSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShDU1NTdHlsZVJ1bGUqIHJ1
bGUsIENTU1NlbGVjdG9yKiBzZWxlY3RvciwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvcikK
K3ZvaWQgUnVsZVNldDo6YWRkUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBz
ZWxlY3RvcikKIHsKLSAgICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBzZWxlY3RvciwgbV9ydWxl
Q291bnQrKywgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IpOworICAgIFJ1bGVEYXRhIHJ1bGVEYXRh
KHJ1bGUsIHNlbGVjdG9yLCBtX3J1bGVDb3VudCsrKTsKICAgICBjb2xsZWN0RmVhdHVyZXNGcm9t
UnVsZURhdGEobV9mZWF0dXJlcywgcnVsZURhdGEpOwogCiAgICAgaWYgKHNlbGVjdG9yLT5tX21h
dGNoID09IENTU1NlbGVjdG9yOjpJZCkgewpAQCAtMjM4OCw3ICsyMzg4LDcgQEAgdm9pZCBSdWxl
U2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0KiBzaGVldCwgY29uc3QgTWVkaWFR
dWVyeUV2YWx1YXRvciYKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAg
ICAgIENTU1J1bGUqIHJ1bGUgPSBzaGVldC0+aXRlbShpKTsKICAgICAgICAgaWYgKHJ1bGUtPmlz
U3R5bGVSdWxlKCkpCi0gICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NTU3R5
bGVSdWxlKj4ocnVsZSksICFzY29wZSk7CisgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlmIChydWxlLT5pc1Bh
Z2VSdWxlKCkpCiAgICAgICAgICAgICBhZGRQYWdlUnVsZShzdGF0aWNfY2FzdDxDU1NQYWdlUnVs
ZSo+KHJ1bGUpKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNJbXBvcnRSdWxlKCkpIHsKQEAg
LTI0MDUsNyArMjQwNSw3IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5
bGVTaGVldCogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImCiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJ1bGVzLT5sZW5ndGgoKTsgaisrKSB7CiAgICAg
ICAgICAgICAgICAgICAgIENTU1J1bGUgKmNoaWxkSXRlbSA9IHJ1bGVzLT5pdGVtKGopOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoY2hpbGRJdGVtLT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KGNo
aWxkSXRlbSksICFzY29wZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRTdHlsZVJ1bGUo
c3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4oY2hpbGRJdGVtKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGNoaWxkSXRlbS0+aXNQYWdlUnVsZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NTUGFnZVJ1bGUqPihjaGlsZEl0ZW0pKTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRJdGVtLT5pc0ZvbnRGYWNlUnVsZSgp
ICYmIHN0eWxlU2VsZWN0b3IpIHsKQEAgLTI0NDksMTAgKzI0NDksMTAgQEAgdm9pZCBSdWxlU2V0
OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0KiBzaGVldCwgY29uc3QgTWVkaWFRdWVy
eUV2YWx1YXRvciYKICAgICAgICAgc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBSdWxlU2V0Ojph
ZGRTdHlsZVJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVj
dG9yKQordm9pZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQogewog
ICAgIGZvciAoQ1NTU2VsZWN0b3IqIHMgPSBydWxlLT5zZWxlY3Rvckxpc3QoKS5maXJzdCgpOyBz
OyBzID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHMpKQotICAgICAgICBhZGRSdWxlKHJ1bGUsIHMs
IGNhblVzZUZhc3RDaGVja1NlbGVjdG9yKTsKKyAgICAgICAgYWRkUnVsZShydWxlLCBzKTsKIH0K
IAogc3RhdGljIGlubGluZSB2b2lkIHNocmlua01hcFZlY3RvcnNUb0ZpdChSdWxlU2V0OjpBdG9t
UnVsZU1hcCYgbWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBi
YzIxNjYwNWQxNTYzZDcxM2MwYzcwOGVjZDYwMGE0MzAwN2QzNTdjLi4xNzQxOWY0OGQ1MWM2Yzk4
MzMzYjgzNGFhNWY0YjMwOWIzNGIyN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja1Nl
bGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgaXNGCiBuYW1l
c3BhY2UgewogCiB0ZW1wbGF0ZSA8Ym9vbCBjaGVja1ZhbHVlKGNvbnN0IEVsZW1lbnQqLCBBdG9t
aWNTdHJpbmdJbXBsKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpLCBib29sIGluaXRBdHRyaWJ1dGVO
YW1lPgotaW5saW5lIGJvb2wgZmFzdENoZWNrU2luZ2xlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0
b3IqJiBzZWxlY3RvciwgY29uc3QgRWxlbWVudComIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9y
KiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgdG9wQ2hpbGRPclN1YnNl
bGVjdG9yTWF0Y2hFbGVtZW50KQoraW5saW5lIGJvb2wgZmFzdENoZWNrU2luZ2xlU2VsZWN0b3Io
Y29uc3QgQ1NTU2VsZWN0b3IqJiBzZWxlY3RvciwgY29uc3QgRWxlbWVudComIGVsZW1lbnQsIGNv
bnN0IEVsZW1lbnQqIHNjb3BlLCBjb25zdCBDU1NTZWxlY3RvciomIHRvcENoaWxkT3JTdWJzZWxl
Y3RvciwgY29uc3QgRWxlbWVudComIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkK
IHsKICAgICBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSA9IHNlbGVjdG9yLT52YWx1ZSgpLmltcGwo
KTsKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUgPSBpbml0QXR0cmlidXRlTmFt
ZSA/IHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSA6IGFueVFOYW1lKCk7CkBAIC0yOTUsNyArMjk1LDcg
QEAgaW5saW5lIGJvb2wgZmFzdENoZWNrU2luZ2xlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3Iq
JiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCoKICAgICAgICAgICAgICAgICB0b3BDaGlsZE9yU3Vi
c2VsZWN0b3JNYXRjaEVsZW1lbnQgPSBlbGVtZW50OwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikK
LSAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOworICAg
ICAgICAgICAgICAgIGVsZW1lbnQgPSAoZWxlbWVudCA9PSBzY29wZSkgPyAwIDogZWxlbWVudC0+
cGFyZW50RWxlbWVudCgpOwogICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlz
dG9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMwOCwxMCAr
MzA4LDEyIEBAIGlubGluZSBib29sIGZhc3RDaGVja1NpbmdsZVNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKiYgc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqCiAgICAgICAgICAgICAvLyBUaGVyZSBt
YXkgYmUgb3RoZXIgbWF0Y2hlcyBkb3duIHRoZSBhbmNlc3RvciBjaGFpbi4KICAgICAgICAgICAg
IC8vIFJld2luZCB0byB0aGUgdG9wbW9zdCBjaGlsZCBvciBzdWJzZWxlY3RvciBhbmQgdGhlIGVs
ZW1lbnQgaXQgbWF0Y2hlZCwgY29udGludWUgY2hlY2tpbmcgYW5jZXN0b3JzLgogICAgICAgICAg
ICAgc2VsZWN0b3IgPSB0b3BDaGlsZE9yU3Vic2VsZWN0b3I7Ci0gICAgICAgICAgICBlbGVtZW50
ID0gdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Cisg
ICAgICAgICAgICBlbGVtZW50ID0gKHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCA9
PSBzY29wZSkgPyAwIDogdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50LT5wYXJlbnRF
bGVtZW50KCk7CiAgICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSAwOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGVsZW1lbnQgPT0gc2Nv
cGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTM2Miw3ICszNjQsNyBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmZhc3RD
aGVja1JpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlYwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVja1NlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCkgY29uc3QK
K2Jvb2wgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEVsZW1lbnQqIHNjb3Bl
KSBjb25zdAogewogICAgIEFTU0VSVChmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3RvcihzZWxlY3Rv
ciwgZWxlbWVudCwgVmlzaXRlZE1hdGNoRW5hYmxlZCkpOwogCkBAIC0zNzEsOCArMzczLDExIEBA
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IsIGNvbnN0IEVsZW1lCiAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpID09
IENTU1NlbGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3IpCiAgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IHNlbGVjdG9y
OwogCi0gICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxl
Y3RvcikKKyAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNl
bGVjdG9yKSB7CisgICAgICAgIGlmIChlbGVtZW50ID09IHNjb3BlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwor
ICAgIH0KIAogICAgIHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKIApAQCAtMzgw
LDIwICszODUsMjAgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVja1NlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgY29uc3QgRWxlbWUKICAgICB3aGlsZSAoc2VsZWN0
b3IpIHsKICAgICAgICAgc3dpdGNoIChzZWxlY3Rvci0+bV9tYXRjaCkgewogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpDbGFzczoKLSAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2Vs
ZWN0b3I8Y2hlY2tDbGFzc1ZhbHVlLCBmYWxzZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxk
T3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAgICAg
ICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2VsZWN0b3I8Y2hlY2tDbGFzc1ZhbHVlLCBmYWxz
ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHNjb3BlLCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENo
aWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OklkOgot
ICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja0lEVmFsdWUsIGZh
bHNlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BDaGlsZE9y
U3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQorICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5n
bGVTZWxlY3RvcjxjaGVja0lEVmFsdWUsIGZhbHNlPihzZWxlY3RvciwgZWxlbWVudCwgc2NvcGUs
IHRvcENoaWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Tm9uZToKLSAgICAgICAgICAgIGlmICghZmFzdENoZWNr
U2luZ2xlU2VsZWN0b3I8Y2hlY2tUYWdWYWx1ZSwgZmFsc2U+KHNlbGVjdG9yLCBlbGVtZW50LCB0
b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkp
CisgICAgICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNlbGVjdG9yPGNoZWNrVGFnVmFsdWUs
IGZhbHNlPihzZWxlY3RvciwgZWxlbWVudCwgc2NvcGUsIHRvcENoaWxkT3JTdWJzZWxlY3Rvciwg
dG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
U2V0OgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKLSAgICAgICAgICAgIGlmICgh
ZmFzdENoZWNrU2luZ2xlU2VsZWN0b3I8Y2hlY2tFeGFjdEF0dHJpYnV0ZVZhbHVlLCB0cnVlPihz
ZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BDaGlsZE9yU3Vic2Vs
ZWN0b3JNYXRjaEVsZW1lbnQpKQorICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxl
Y3RvcjxjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUsIHRydWU+KHNlbGVjdG9yLCBlbGVtZW50LCBz
Y29wZSwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVs
ZW1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4
IDdlODA4MDhkZDNiNmJkOGJmNGFmNzU0NDYyZGNiMzlhMWJhZTgxMjUuLmRhN2Q0YjBkZjlhMWE2
YzZiZDM2YzVkM2RlNjUyODA0Y2VkMTJiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tTZWxlY3RvcihD
U1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yID0gZmFs
c2UpIGNvbnN0OwogICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgaXNG
YXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAgICBib29sIGZhc3RD
aGVja1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopIGNvbnN0Owor
ICAgIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVt
ZW50KiwgY29uc3QgRWxlbWVudCogc2NvcGUgPSAwKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx1
bnNpZ25lZCBtYXhpbXVtSWRlbnRpZmllckNvdW50PgogICAgIGlubGluZSBib29sIGZhc3RSZWpl
Y3RTZWxlY3Rvcihjb25zdCB1bnNpZ25lZCogaWRlbnRpZmllckhhc2hlcykgY29uc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>