<?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>41293</bug_id>
          
          <creation_ts>2010-06-28 12:27:39 -0700</creation_ts>
          <short_desc>The new tree builder needs to call attach() on elements it attaches to the DOM</short_desc>
          <delta_ts>2010-06-29 10:44:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          <blocked>41123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243817</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 12:27:39 -0700</bug_when>
    <thetext>The new tree builder needs to call attach() on elements it attaches to the DOM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243819</commentid>
    <comment_count>1</comment_count>
      <attachid>59923</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 12:33:23 -0700</bug_when>
    <thetext>Created attachment 59923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243825</commentid>
    <comment_count>2</comment_count>
      <attachid>59923</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 12:42:50 -0700</bug_when>
    <thetext>Comment on attachment 59923
Patch

Seems like some of this basic stuff we could steal from the odl tree builder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243829</commentid>
    <comment_count>3</comment_count>
      <attachid>59923</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 12:47:12 -0700</bug_when>
    <thetext>Comment on attachment 59923
Patch

We&apos;d have to refactor the old tree builder.  This stuff is in big monolithic functions with manual ref counting...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243832</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-28 12:52:03 -0700</bug_when>
    <thetext>It would really be more efficient to build the whole tree and then attach() it from its root. That&apos;s a pretty big refactoring task, but if you&apos;re rewriting tree building anyway, maybe it&apos;s natural to make that change now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243834</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 12:59:08 -0700</bug_when>
    <thetext>Oh, we can do that.  You just call attach once at the root and it does all the children for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243837</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 13:03:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 59923 [details])
&gt; We&apos;d have to refactor the old tree builder.  This stuff is in big monolithic functions with manual ref counting...

Totally doable.  I wonder how many assumptions in other parts of WebCore that could break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243838</commentid>
    <comment_count>7</comment_count>
      <attachid>59923</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-28 13:05:40 -0700</bug_when>
    <thetext>Comment on attachment 59923
Patch

Clearing flags on attachment: 59923

Committed r62028: &lt;http://trac.webkit.org/changeset/62028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243839</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-28 13:05:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243846</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-28 13:11:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Oh, we can do that.  You just call attach once at the root and it does all the children for you?

You got it. Of course, things are never that easy :).

You&apos;ll have to get clarity on how long you can validly delay attaching renderers for a subtree. For example, if you&apos;re about to insert a script into the document, you might have to flush any pending DOM nodes, so that rendering-dependent JavaScript properties report correct values. Maybe that&apos;s the only tricky case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243856</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 13:20:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; It would really be more efficient to build the whole tree and then attach() it from its root.

I believe you.  But could you clarify what aspects would make it more efficient?  Would that cut out layouts/style resolves?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243857</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 13:21:09 -0700</bug_when>
    <thetext>Thank you for bringing this up Geoff.  This is exactly the time to do so!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243874</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-06-28 13:41:00 -0700</bug_when>
    <thetext>It would be super helpful if the attach() call could be delayed as long as possible.  One thing this would allow would be to delay calculating styles and updating the style selector.  Currently we synchronously re resolve styles on the entire DOM whenever a &lt;style&gt; tag is parsed out, which kind of sucks (see http://code.google.com/p/chromium/issues/detail?id=35471 and https://bugs.webkit.org/show_bug.cgi?id=36303).  I&apos;ve been doing some work to attach() lazily in more cases, but it&apos;s hard to make it work perfectly.

The tricky bit is that attach() has side effects for some elements.  Plugins trigger their resource loading and initialization off the render tree currently so you need create the renderer (via attach()ing) shortly after parsing out the plugin.  At a minimum you need to do this before executing any script to avoid observable ordering issues, and preferably do the attach() before yielding so that the plugin resource loads can kick off as soon as possible.

Queries from javascript will force any elements in the DOM to get attach()d anyway because they force a style resolution + layout pass before returning and recalcStyle() attaches any unattached nodes.

Also, the old tree builder&apos;s residual style fixup code makes some deep assumptions about how attach() works and how it&apos;s related to addChild()/etc, presumably as a performance optimization (to avoid doing unnecessary work).  That bit of code will probably need careful attention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243882</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-28 13:57:43 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #4)
&gt; &gt; It would really be more efficient to build the whole tree and then attach() it from its root.
&gt; 
&gt; I believe you.  But could you clarify what aspects would make it more efficient?  Would that cut out layouts/style resolves?

First, I should take back my statement that you might need to attach everything before running scripts. Our design is that any JavaScript accessors that depend on layout should update layout if needed before doing their thing. Any failures in this area are the fault of the accessor. So, in theory, you should be able to delay attaching until the layout timer fires and you actually display the page.

Bearing that in mind, here are two cases that would definitely get faster if the parser attached elements lazily (or not at all, and just relied on the layout timer):

1. An element is added to the page but, before it displays, a script removes it from the page. (More common than you might think.)

2. An element is added to the page but, before it displays, another element is added, or a new stylesheet is loaded, changing the first element&apos;s layout or rendering.

In both of these cases, the eager attach done by the parser is just thrown away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243897</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 14:21:29 -0700</bug_when>
    <thetext>Can one of you expert-types file a new bug about this and marking it as blocking 41123?  We have a good handle on when scripts execute in the new design.  I&apos;d rather not do this until we&apos;re able to actually run the LayoutTests so we can get some sort of handle on what we&apos;re breaking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244376</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-29 10:44:39 -0700</bug_when>
    <thetext>HTML5 TreeBuilder should attach whole subtrees instead of individual nodes
https://bugs.webkit.org/show_bug.cgi?id=41361</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59923</attachid>
            <date>2010-06-28 12:33:23 -0700</date>
            <delta_ts>2010-06-28 13:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41293-20100628123322.patch</filename>
            <type>text/plain</type>
            <size>8511</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZTI2YzA3YzBkMDNiM2Q3MmJiM2JhNjliZWEwMjY2NDRhZmJhMWZiLi5kMGIwMTcy
NGNhYjcxOWQ5MzkwNTk5MGRlZDJiYmFmYjgyYTYxODkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMDYtMjggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbmV3IHRyZWUgYnVpbGRl
ciBuZWVkcyB0byBjYWxsIGF0dGFjaCgpIG9uIGVsZW1lbnRzIGl0IGF0dGFjaGVzIHRvCisgICAg
ICAgIHRoZSBET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxMjkzCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMgdG8gc2hvdyB0aGF0
IHRoZSBjb250ZW50cyBvZiB0aGUgaWZyYW1lCisgICAgICAgIGFjdHVhbGx5IGdldCBjcmVhdGVk
LiAgVGhpcyBvbmx5IGdldHMgdXMgYSBmZXcgbGluZXMgZG93biB0aGUgdGVzdAorICAgICAgICBo
YXJuZXNzIGJlZm9yZSBlcnJvcmluZyBvdXQgYWdhaW4sIGJ1dCBJJ2xsIHRha2UgaXQuCisKKyAg
ICAgICAgKiBodG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0OgorICAgICAgICAqIGh0
bWw1bGliL3dlYmtpdC1yZXN1bWVyLWV4cGVjdGVkLWh0bWw1LnR4dDoKKwogMjAxMC0wNi0yOCAg
U2FtIE1hZ251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dCBiL0xheW91dFRlc3RzL2h0bWw1bGli
L3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKaW5kZXggNzY1Nzk0MjdiNTM1MDgwNjBkNGZlMDRk
MmM3Y2YxNjM0OTBiYjRjNy4uZDExN2E0NDQyYjQ1ODI4Y2Q0NTQ2YzQzOTVlNTRkYjYzOTcxMDE3
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0
CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBUeXBlRXJyb3I6IFJl
c3VsdCBvZiBleHByZXNzaW9uICdpZnJhbWUuY29udGVudFdpbmRvdycgW251bGxdIGlzIG5vdCBh
biBvYmplY3QuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzY6IFR5cGVFcnJvcjogUmVzdWx0IG9m
IGV4cHJlc3Npb24gJ2lmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50Lmxhc3RDaGlsZCcgW251
bGxdIGlzIG5vdCBhbiBvYmplY3QuCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KIAogI0VPRgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvd2Via2l0LXJlc3VtZXItZXhwZWN0ZWQt
aHRtbDUudHh0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvd2Via2l0LXJlc3VtZXItZXhwZWN0ZWQt
aHRtbDUudHh0CmluZGV4IDc2NTc5NDI3YjUzNTA4MDYwZDRmZTA0ZDJjN2NmMTYzNDkwYmI0Yzcu
LmQxMTdhNDQ0MmI0NTgyOGNkNDU0NmM0Mzk1ZTU0ZGI2Mzk3MTAxNzggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3dlYmtpdC1yZXN1bWVyLWV4cGVjdGVkLWh0bWw1LnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9odG1sNWxpYi93ZWJraXQtcmVzdW1lci1leHBlY3RlZC1odG1sNS50eHQK
QEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzM6IFR5cGVFcnJvcjogUmVz
dWx0IG9mIGV4cHJlc3Npb24gJ2lmcmFtZS5jb250ZW50V2luZG93JyBbbnVsbF0gaXMgbm90IGFu
IG9iamVjdC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNjogVHlwZUVycm9yOiBSZXN1bHQgb2Yg
ZXhwcmVzc2lvbiAnaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQubGFzdENoaWxkJyBbbnVs
bF0gaXMgbm90IGFuIG9iamVjdC4KIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgogCiAjRU9GCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJl
OWJlNzFiZDllYjM0MGQ0YmViYjk4ZGJiNDRmYmVlYWQ0NzRhYTkuLmU3ZTc1ZTU5MDYyNTkwYjU5
NTVlZmIyNTczNzEzMGQ0MGI4ZWFmMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzEgQEAKIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBUaGUgbmV3IHRyZWUgYnVpbGRlciBuZWVk
cyB0byBjYWxsIGF0dGFjaCgpIG9uIGVsZW1lbnRzIGl0IGF0dGFjaGVzIHRvCisgICAgICAgIHRo
ZSBET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MjkzCisKKyAgICAgICAgQXBwYXJlbnRseSBOb2RlcyBleHBlY3QgdG8gaGF2ZSB0aGVpciBhdHRh
Y2goKSBtZXRob2QgY2FsbGVkIHdoZW4gdGhleQorICAgICAgICBhcmUgYXR0YWNoZWQgdG8gdGhl
IERPTS4gIFRoZSBuZXcgdHJlZSBidWlsZGVyIGlzIGhhcHB5IHRvIG9ibGlnZS4KKyAgICAgICAg
TWFraW5nIHRoaXMgY2FsbCByZXF1aXJlcyBzb21lIGZhbmN5IGZvb3R3b3JrIHdpdGggUmVmUHRy
L1Bhc3NSZWZQdHIgdG8KKyAgICAgICAgYXZvaWQgZXh0cmEgcmVmIGNodXJuIHdoaWxlIGtlZXBp
bmcgZWFjaCBmdW5jdGlvbiBzbWFsbC4KKworICAgICAgICAqIGh0bWwvSFRNTFRyZWVCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0SFRNTFN0YXJ0
VGFnQmVmb3JlSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRE
b2N0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0Q29tbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydENvbW1lbnRPbkRv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFNlbGZDbG9zaW5n
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFNjcmlw
dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmF0dGFjaCk6CisKKzIwMTAtMDYtMjggIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKwogICAgICAgICBIVE1MNSBSZWdyZXNzaW9uOiBDcmFzaCBpbiBpbnNlcnQoKQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEyODEKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA3M2Q2YjJhOTMyMjZmNTFmYjEwYmE2ZTVmZTk4Y2M0
YjczNTkzYjQ5Li45NGJiZDJjN2VhYTdlODdjYzMwY2IyOGVmYmMzOTQ5Mzc1YWVmMmUyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjgxLDggKzI4MSw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNy
ZWF0ZShtX2RvY3VtZW50KTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVNYXAodG9rZW4uYXR0
cmlidXRlcygpLCBtX2ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7Ci0gICAgbV9kb2N1bWVu
dC0+YWRkQ2hpbGQoZWxlbWVudCk7Ci0gICAgbV9vcGVuRWxlbWVudHMucHVzaChlbGVtZW50LnJl
bGVhc2UoKSk7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaChhdHRhY2gobV9kb2N1bWVudCwgZWxl
bWVudC5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEhUTUxT
dGFydFRhZ0luQm9keShBdG9taWNIVE1MVG9rZW4mKQpAQCAtNjY2LDcgKzY2NSw3IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXIoQXRvbWljSFRNTFRva2VuJiB0
b2tlbikKIHsKICAgICBpZiAoaW5zZXJ0aW9uTW9kZSgpID09IFRleHRNb2RlKSB7Ci0gICAgICAg
IGN1cnJlbnRFbGVtZW50KCktPmFkZENoaWxkKFRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tl
bi5jaGFyYWN0ZXJzKCkpKTsKKyAgICAgICAgYXR0YWNoKGN1cnJlbnRFbGVtZW50KCksIFRleHQ6
OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5jaGFyYWN0ZXJzKCkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBoYW5k
bGUgZWFjaCBjaGFyYWN0ZXIgaW5kaXZpZHVhbGx5LgpAQCAtNzkyLDcgKzc5MSw3IEBAIGJvb2wg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnREb2N0eXBlKEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkRP
Q1RZUEUpOwotICAgIG1fZG9jdW1lbnQtPmFkZENoaWxkKERvY3VtZW50VHlwZTo6Y3JlYXRlKG1f
ZG9jdW1lbnQsIHRva2VuLm5hbWUoKSwgU3RyaW5nOjphZG9wdCh0b2tlbi5wdWJsaWNJZGVudGlm
aWVyKCkpLCBTdHJpbmc6OmFkb3B0KHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKKyAgICBh
dHRhY2gobV9kb2N1bWVudCwgRG9jdW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4u
bmFtZSgpLCBTdHJpbmc6OmFkb3B0KHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKSksIFN0cmluZzo6
YWRvcHQodG9rZW4uc3lzdGVtSWRlbnRpZmllcigpKSkpOwogICAgIC8vIEZJWE1FOiBNb3ZlIHF1
aXJrcyBtb2RlIGRldGVjdGlvbiBmcm9tIERvY3VtZW50VHlwZSBlbGVtZW50IHRvIGhlcmUuCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBpZiAodG9rZW4uZm9yY2VRdWlya3MoKSkKQEAgLTgw
MiwyNyArODAxLDI1IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnREb2N0eXBlKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0Q29tbWVudChB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpDb21tZW50KTsKLSAgICBjdXJyZW50RWxlbWVudCgpLT5hZGRDaGlsZChDb21tZW50
OjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4uY29tbWVudCgpKSk7CisgICAgYXR0YWNoKGN1cnJl
bnRFbGVtZW50KCksIENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5jb21tZW50KCkp
KTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydENvbW1lbnRPbkRvY3VtZW50KEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OkNvbW1lbnQpOwotICAgIG1fZG9jdW1lbnQtPmFkZENoaWxkKENvbW1lbnQ6OmNyZWF0
ZShtX2RvY3VtZW50LCB0b2tlbi5jb21tZW50KCkpKTsKKyAgICBhdHRhY2gobV9kb2N1bWVudCwg
Q29tbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLmNvbW1lbnQoKSkpOwogfQogCiB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0RWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
ewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7Ci0gICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KHRva2VuKTsKLSAgICBjdXJy
ZW50RWxlbWVudCgpLT5hZGRDaGlsZChlbGVtZW50KTsKLSAgICBtX29wZW5FbGVtZW50cy5wdXNo
KGVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICBtX29wZW5FbGVtZW50cy5wdXNoKGF0dGFjaChjdXJy
ZW50RWxlbWVudCgpLCBjcmVhdGVFbGVtZW50KHRva2VuKSkpOwogfQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6aW5zZXJ0U2VsZkNsb3NpbmdFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKLSAg
ICBjdXJyZW50RWxlbWVudCgpLT5hZGRDaGlsZChjcmVhdGVFbGVtZW50KHRva2VuKSk7CisgICAg
YXR0YWNoKGN1cnJlbnRFbGVtZW50KCksIGNyZWF0ZUVsZW1lbnQodG9rZW4pKTsKICAgICAvLyBG
SVhNRTogRG8gd2Ugd2FudCB0byBhY2tub3dsZWRnZSB0aGUgdG9rZW4ncyBzZWxmLWNsb3Npbmcg
ZmxhZz8KICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNhY2tub3dsZWRnZS1zZWxmLWNsb3Np
bmctZmxhZwogfQpAQCAtODU2LDggKzg1Myw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNl
cnRTY3JpcHRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgQVNTRVJUX1VOVVNF
RCh0b2tlbiwgdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIFJlZlB0
cjxIVE1MU2NyaXB0RWxlbWVudD4gZWxlbWVudCA9IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUo
c2NyaXB0VGFnLCBtX2RvY3VtZW50LCB0cnVlKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVN
YXAodG9rZW4uYXR0cmlidXRlcygpLCBtX2ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7Ci0g
ICAgY3VycmVudEVsZW1lbnQoKS0+YWRkQ2hpbGQoZWxlbWVudCk7Ci0gICAgbV9vcGVuRWxlbWVu
dHMucHVzaChlbGVtZW50LnJlbGVhc2UoKSk7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaChhdHRh
Y2goY3VycmVudEVsZW1lbnQoKSwgZWxlbWVudC5yZWxlYXNlKCkpKTsKICAgICBtX3Rva2VuaXpl
ci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlKTsKICAgICBtX29yaWdp
bmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICBtX2luc2VydGlvbk1vZGUg
PSBUZXh0TW9kZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaCBi
L1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCAyZjI1MjRlNjY1YmUyM2JlMTIx
NGNiYTE4NWJmYjBjMjk3MWQyYzM3Li41OTNhZjAxNzRlMjNmMDZlZGIxZmU1MDE0YzU2N2EzN2I3
N2Y2NGVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCkBAIC0xNzcsNiArMTc3LDIwIEBAIHByaXZh
dGU6CiAKICAgICBib29sIHByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZChBdG9taWNIVE1MVG9rZW4m
KTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoaWxkVHlwZT4KKyAgICBQYXNzUmVmUHRyPENo
aWxkVHlwZT4gYXR0YWNoKE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxDaGlsZFR5cGU+IHBycENo
aWxkKQorICAgIHsKKyAgICAgICAgUmVmUHRyPENoaWxkVHlwZT4gY2hpbGQgPSBwcnBDaGlsZDsK
KyAgICAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CisgICAgICAgIC8vIEl0J3Mgc2xpZ2h0
bHkgdW5mb3J0dW5hdGUgdGhhdCB3ZSBuZWVkIHRvIGhvbGQgYSByZWZlcmVuY2UgdG8gY2hpbGQK
KyAgICAgICAgLy8gaGVyZSB0byBjYWxsIGF0dGFjaCgpLiAgV2Ugc2hvdWxkIGludmVzdGlnYXRl
IHdoZXRoZXIgd2UgY2FuIHJlbHkgb24KKyAgICAgICAgLy8gfHBhcmVudHwgdG8gaG9sZCBhIHJl
ZiBhdCB0aGlzIHBvaW50LiAgSW4gdGhlIGNvbW1vbiBjYXNlIChhdCBsZWFzdAorICAgICAgICAv
LyBmb3IgZWxlbWVudHMpLCBob3dldmVyLCB3ZSdsbCBnZXQgdG8gdXNlIHRoaXMgcmVmIGluIHRo
ZSBzdGFjayBvZgorICAgICAgICAvLyBvcGVuIGVsZW1lbnRzLgorICAgICAgICBjaGlsZC0+YXR0
YWNoKCk7CisgICAgICAgIHJldHVybiBjaGlsZC5yZWxlYXNlKCk7CisgICAgfTsKKwogICAgIHZv
aWQgaW5zZXJ0RG9jdHlwZShBdG9taWNIVE1MVG9rZW4mKTsKICAgICB2b2lkIGluc2VydENvbW1l
bnQoQXRvbWljSFRNTFRva2VuJik7CiAgICAgdm9pZCBpbnNlcnRDb21tZW50T25Eb2N1bWVudChB
dG9taWNIVE1MVG9rZW4mKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>