<?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>58060</bug_id>
          
          <creation_ts>2011-04-07 10:41:58 -0700</creation_ts>
          <short_desc>Prepare access to TreeScope from Node, using NodeRareData</short_desc>
          <delta_ts>2011-04-08 15:37:52 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>52963</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>morrita</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381476</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-07 10:41:58 -0700</bug_when>
    <thetext>Add a way to directly access a containing TreeScope from a Node, as a prerequisite step for issue 52963.

In the first version, this will be done via NodeRareData to avoid bloating Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381614</commentid>
    <comment_count>1</comment_count>
      <attachid>88677</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-07 13:16:30 -0700</bug_when>
    <thetext>Created attachment 88677
Patch

All Layout tests ran successvully, both in Debug and Release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381616</commentid>
    <comment_count>2</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-07 13:17:16 -0700</bug_when>
    <thetext>&quot;successvully&quot;? @_@;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381623</commentid>
    <comment_count>3</comment_count>
      <attachid>88677</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-07 13:23:10 -0700</bug_when>
    <thetext>Comment on attachment 88677
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=88677&amp;action=review

&gt; Source/WebCore/dom/Node.cpp:493
&gt; +        ensureRareData()-&gt;setTreeScope(newTreeScope);

Can you explain this a bit more? For example, if I am moving from document A to document B, it seems that in this case _all_ nodes will run this code path and thus gain a bit of weight by RareNodeData being instantiated.

&gt; Source/WebCore/dom/Node.cpp:517
&gt; +        if (!node-&gt;isElementNode())
&gt; +            continue;

This statement is useless?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381692</commentid>
    <comment_count>4</comment_count>
      <attachid>88677</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-07 14:16:01 -0700</bug_when>
    <thetext>Comment on attachment 88677
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=88677&amp;action=review

&gt;&gt; Source/WebCore/dom/Node.cpp:493
&gt;&gt; +        ensureRareData()-&gt;setTreeScope(newTreeScope);
&gt; 
&gt; Can you explain this a bit more? For example, if I am moving from document A to document B, it seems that in this case _all_ nodes will run this code path and thus gain a bit of weight by RareNodeData being instantiated.

If the new tree scope is a document, the if-branch should be taken - no extra rare data added (or the tree scope pointer therein reset to 0 in case it&apos;s already present).

The else-branch is strictly for the case where the new tree scope is NOT a document. It should never be taken currently, as we don&apos;t yet have a shadow scope. (Perhaps I should add a ASSERT_NOT_REACHED() with a FIXME to remove it once we land shadow scopes?)

&gt;&gt; Source/WebCore/dom/Node.cpp:517
&gt;&gt; +            continue;
&gt; 
&gt; This statement is useless?

D&apos;oh - holy forgotten cleanup, batman!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382214</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-08 07:03:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 88677 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88677&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Node.cpp:493
&gt; &gt;&gt; +        ensureRareData()-&gt;setTreeScope(newTreeScope);
&gt; &gt; 
&gt; &gt; Can you explain this a bit more? For example, if I am moving from document A to document B, it seems that in this case _all_ nodes will run this code path and thus gain a bit of weight by RareNodeData being instantiated.
&gt; 
&gt; If the new tree scope is a document, the if-branch should be taken - no extra rare data added (or the tree scope pointer therein reset to 0 in case it&apos;s already present).
&gt; 
&gt; The else-branch is strictly for the case where the new tree scope is NOT a document. It should never be taken currently, as we don&apos;t yet have a shadow scope. (Perhaps I should add a ASSERT_NOT_REACHED() with a FIXME to remove it once we land shadow scopes?)

This sounds great!

&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Node.cpp:517
&gt; &gt;&gt; +            continue;
&gt; &gt; 
&gt; &gt; This statement is useless?
&gt; 
&gt; D&apos;oh - holy forgotten cleanup, batman!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382526</commentid>
    <comment_count>6</comment_count>
      <attachid>88869</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-08 13:48:01 -0700</bug_when>
    <thetext>Created attachment 88869
new patch, added ASSERTs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382527</commentid>
    <comment_count>7</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-08 13:49:05 -0700</bug_when>
    <thetext>Re-ran all layout tests in DEBUG, successfully. Re-running on RELEASE as well atm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382535</commentid>
    <comment_count>8</comment_count>
      <attachid>88869</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-08 13:55:39 -0700</bug_when>
    <thetext>Comment on attachment 88869
new patch, added ASSERTs

View in context: https://bugs.webkit.org/attachment.cgi?id=88869&amp;action=review

pretty cool.

&gt; Source/WebCore/ChangeLog:28
&gt; +        (WebCore::Document::setDocType): change DOM manipulation methods to update scope of inserted nodes

You can just say &quot;Ditto.&quot; here.

&gt; Source/WebCore/ChangeLog:29
&gt; +        (WebCore::Document::adoptNode): change DOM manipulation methods to update scope of inserted nodes

Ditto.

&gt; Source/WebCore/dom/Node.cpp:478
&gt; +    // FIXME: until we land shadow scopes, there should be no non-document scopes.

Capitalize U.

&gt; Source/WebCore/dom/Node.cpp:521
&gt; +        // FIXME: once shadow scopes are landed, update parent scope, etc.

Capitalize O.

&gt; Source/WebCore/dom/TreeScope.cpp:49
&gt; +        // FIXME: this branch should be inert until shadow scopes are landed.

Capitalize T.

&gt; Source/WebCore/dom/TreeScope.cpp:69
&gt; +    // Cannot reparent a document!

Take out the exclamation point, turn into a sentence. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382603</commentid>
    <comment_count>9</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-08 15:37:52 -0700</bug_when>
    <thetext>Committed r83349: &lt;http://trac.webkit.org/changeset/83349&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88677</attachid>
            <date>2011-04-07 13:16:30 -0700</date>
            <delta_ts>2011-04-08 13:47:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58060-20110407131629.patch</filename>
            <type>text/plain</type>
            <size>15153</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMxODMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNTg4MTMzNTViM2MzZTRm
OTJlMzFmMDc0OWY1MjljNGI4NTUwM2M3Li40ZWYxYWM4NzMyZTExMzg3NmE4MjI5NWZmZWFiYmJj
Yjg1MmY5YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDQtMDcgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDU4MDYwIC0gUHJlcGFyZSBhY2Nl
c3MgdG8gVHJlZVNjb3BlIGZyb20gTm9kZSwgdXNpbmcgTm9kZVJhcmVEYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA2MAorCisgICAgICAgIEFk
ZCBhIFRyZWVTY29wZSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YSB0byBhbGxvdyBkaXJlY3QgYWNj
ZXNzIHRvIHRoZSBjb250YWluaW5nIHRyZWUgc2NvcGUuCisgICAgICAgIEhvd2V2ZXIsIGluIGNh
c2UgdGhlIGNvbnRhaW5pbmcgc2NvcGUgaXMgdGhlIGRvY3VtZW50LCB0aGlzIGlzIG5vdCBzZXQs
IGFuZCB0aGUgCisgICAgICAgIGRvY3VtZW50IHBvaW50ZXIgd2l0aGluIE5vZGUgaXMgdXNlZCBp
bnN0ZWFkLiAKKworICAgICAgICBJbiBhbiBvYmplY3QgZGVyaXZlZCBmcm9tIFRyZWVTY29wZSAo
Y3VycmVudGx5IERvY3VtZW50KSwgdGhlIHRyZWUgc2NvcGUgcG9pbnRlcgorICAgICAgICBwb2lu
dHMgdG8gaXRzZWxmLiBTdWNoIG9iamVjdHMgYWxzbyBjb250YWluIGEgcGFyZW50IHRyZWUgc2Nv
cGUgcG9pbnRlciB0aGF0CisgICAgICAgIHBvaW50cyB0byB0aGUgY29udGFpbmluZyBzY29wZS4g
Rm9yIERvY3VtZW50LCB0aGlzIGlzIDAuCisKKyAgICAgICAgQWRkIG5ldyBmdW5jdGlvbnMgc2V0
VHJlZVNjb3BlW1JlY3Vyc2l2ZWx5XSB0aGF0IHJlcGxhY2Ugc2V0RG9jdW1lbnRbUmVjdXJzaXZl
bHldCisgICAgICAgIGluIHB1YmxpYyB1c2FnZS4gc2V0RG9jdW1lbnRbUmVjdXJzaXZlbHldIGFy
ZSBub3cgb25seSB1c2VkIGludGVybmFsbHkgYW5kIGFyZQorICAgICAgICB0aGVyZXJmb3JlIHBy
b3RlY3RlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChubyBuZXcgZnVuY3Rpb25hbGl0eSkK
KworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDogY2hhbmdlIERPTSBtYW5pcHVsYXRp
b24gbWV0aG9kcyB0byB1cGRhdGUgc2NvcGUgb2YgaW5zZXJ0ZWQgbm9kZXMKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpzZXREb2NUeXBlKTogY2hhbmdlIERPTSBtYW5pcHVsYXRpb24gbWV0aG9kcyB0byB1cGRh
dGUgc2NvcGUgb2YgaW5zZXJ0ZWQgbm9kZXMKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojph
ZG9wdE5vZGUpOiBjaGFuZ2UgRE9NIG1hbmlwdWxhdGlvbiBtZXRob2RzIHRvIHVwZGF0ZSBzY29w
ZSBvZiBpbnNlcnRlZCBub2RlcworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyZWVTY29wZSk6IHVzZSBO
b2RlUmFyZURhdGEgdG8gY2hlY2sgaWYgYSBub24tRG9jdW1lbnQgc2NvcGUgaXMgc2V0CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOiB1cGRhdGUgTm9kZVJhcmVEYXRhIGRl
cGVuZGluZyBvbiB3aGV0aGVyIHNjb3BlIGlzIGEgZG9jdW1lbnQKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnNldERvY3VtZW50UmVjdXJzaXZlbHkpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAg
ICogZG9tL05vZGVSYXJlRGF0YS5oOiBhZGQgc2NvcGUgcG9pbnRlcgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJh
cmVEYXRhOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRU
cmVlU2NvcGUpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOiBhZGQgcGFyZW50VHJlZVNj
b3BlIHBvaW50ZXIKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAgICAg
KiBkb20vVHJlZVNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnBhcmVudFRy
ZWVTY29wZSk6CisKIDIwMTEtMDQtMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCmluZGV4IGVhMDM4NDhhYWFmYmNkMDAwZjZmMDkwMWZlNDVjN2Q2ZTIxYWRiYjMu
Ljk3YjQ0ZTM1NTg1MmU4ODFmODgwMmE5MGQ4MWQ0NTUzNGNjYmU4MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTE2MSw3ICsxNjEsOCBAQCBib29sIENvbnRhaW5lck5v
ZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGls
ZCwgRXhjZQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01O
b2RlKGRvY3VtZW50KCksIGNoaWxkLCB0aGlzKTsKICNlbmRpZgogCi0gICAgICAgIGNoaWxkLT5z
ZXREb2N1bWVudFJlY3Vyc2l2ZWx5KGRvY3VtZW50KCkpOworICAgICAgICBjaGlsZC0+c2V0VHJl
ZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOworCiAgICAgICAgIGluc2VydEJlZm9yZUNv
bW1vbihuZXh0LmdldCgpLCBjaGlsZCk7CiAKICAgICAgICAgLy8gU2VuZCBub3RpZmljYXRpb24g
YWJvdXQgdGhlIGNoaWxkcmVuIGNoYW5nZS4KQEAgLTMxMCw3ICszMTEsNyBAQCBib29sIENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBv
bGRDaGlsZCwgRXhjZQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNl
cnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxkLmdldCgpLCB0aGlzKTsKICNlbmRpZgogCi0gICAg
ICAgIGNoaWxkLT5zZXREb2N1bWVudFJlY3Vyc2l2ZWx5KGRvY3VtZW50KCkpOworICAgICAgICBj
aGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogCiAgICAgICAgIC8v
IEFkZCBjaGlsZCBhZnRlciAicHJldiIuCiAgICAgICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsK
QEAgLTU5OSw3ICs2MDAsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBibwogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxk
LCB0aGlzKTsKICNlbmRpZgogCi0gICAgICAgIGNoaWxkLT5zZXREb2N1bWVudFJlY3Vyc2l2ZWx5
KGRvY3VtZW50KCkpOworICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJl
ZVNjb3BlKCkpOwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5kIG9mIHRoZSBs
aXN0CiAgICAgICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGRmN2E5OWQzZTdmYjRhMDA2MDhlMTFkNDg5OTcwODFhMGVjNWVlYjQuLmZhNjQ2ZGNl
ZDQ2MzY5N2Q4MWI2ZTY4MTI0MTE0MjMyYTAwNTlkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtNTE2LDYgKzUxNiw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIEFTU0VSVCgh
bV9zYXZlZFJlbmRlcmVyKTsKICAgICBBU1NFUlQobV9yYW5nZXMuaXNFbXB0eSgpKTsKICAgICBB
U1NFUlQoIW1fc3R5bGVSZWNhbGNUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW1fcGFy
ZW50VHJlZVNjb3BlKTsKIAogICAgIG1fc2NyaXB0UnVubmVyLmNsZWFyKCk7CiAKQEAgLTcwMCw3
ICs3MDEsNyBAQCB2b2lkIERvY3VtZW50OjpzZXREb2NUeXBlKFBhc3NSZWZQdHI8RG9jdW1lbnRU
eXBlPiBkb2NUeXBlKQogICAgIEFTU0VSVCghbV9kb2NUeXBlIHx8ICFkb2NUeXBlKTsKICAgICBt
X2RvY1R5cGUgPSBkb2NUeXBlOwogICAgIGlmIChtX2RvY1R5cGUpCi0gICAgICAgIG1fZG9jVHlw
ZS0+c2V0RG9jdW1lbnQodGhpcyk7CisgICAgICAgIG1fZG9jVHlwZS0+c2V0VHJlZVNjb3BlKHRo
aXMpOwogfQogCiBET01JbXBsZW1lbnRhdGlvbiogRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkK
QEAgLTkzMCw3ICs5MzEsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjphZG9wdE5vZGUo
UGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAg
c291cmNlLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKHNvdXJjZS5nZXQoKSwgZWMpOwogICAg
IH0KIAotICAgIHNvdXJjZS0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseSh0aGlzKTsKKyAgICBzb3Vy
Y2UtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRoaXMpOwogCiAgICAgcmV0dXJuIHNvdXJjZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMzU3YzRhMzUzODg1ZmJmNmU4NjMxZjAyMDkwOTgz
Mjc1MjFjNTJiZC4uMWYwZjJhMGVkYTRlNDcyOTNiMjYyMGY2YmY5ZmVmNjU4YWM0Njc4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTE0MTAsMTIgKzE0MTAsMTMgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIH07
CiAKKy8vIFB1dCB0aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBE
b2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCisK
IGlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
dGhpcyA9PSBtX2RvY3VtZW50OwogfQogCi0vLyBoZXJlIGJlY2F1c2UgaXQgdXNlcyBhIERvY3Vt
ZW50IG1ldGhvZCBidXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIGl0CiBpbmxpbmUgTm9kZTo6
Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1f
ZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5k
ZXggMTVjYjhhOGI0OGExZjIxNjM5OTFmOWRiNjFmZDk2YThhYTY2M2I0ZC4uY2M0MTI5MTQxNTg3
MDA0YWEwNDYwOTczZDJiZjY0MjU3MGRhOWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDcwLDYg
KzQ3MCw1NSBAQCB2b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICBBU1NFUlQoZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCk7CiB9CiAKK1RyZWVT
Y29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc1JhcmVEYXRhKCkp
CisgICAgICAgIHJldHVybiBkb2N1bWVudCgpOworICAgIFRyZWVTY29wZSogc2NvcGUgPSByYXJl
RGF0YSgpLT50cmVlU2NvcGUoKTsKKyAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IGRvY3VtZW50
KCk7Cit9CisKK3ZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlKFRyZWVTY29wZSogbmV3VHJlZVNjb3Bl
KQoreworICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7CisgICAgQVNTRVJUKG5ld1RyZWVT
Y29wZSk7CisgICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgdHJlZVNjb3BlKCkgPT0gbmV3VHJl
ZVNjb3BlKTsKKworICAgIGlmIChuZXdUcmVlU2NvcGUtPmlzRG9jdW1lbnROb2RlKCkpIHsKKyAg
ICAgICAgaWYgKGhhc1JhcmVEYXRhKCkpCisgICAgICAgICAgICByYXJlRGF0YSgpLT5zZXRUcmVl
U2NvcGUoMCk7CisgICAgICAgIC8vIFNldHRpbmcgdGhlIG5ldyBkb2N1bWVudCBzY29wZSB3aWxs
IGJlIGhhbmRsZWQgaW1wbGljaXRseQorICAgICAgICAvLyBieSBzZXREb2N1bWVudCgpIGJlbG93
LgorICAgIH0gZWxzZQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUobmV3
VHJlZVNjb3BlKTsKKworICAgIHNldERvY3VtZW50KG5ld1RyZWVTY29wZS0+ZG9jdW1lbnQoKSk7
Cit9CisKK3ZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoVHJlZVNjb3BlKiBuZXdU
cmVlU2NvcGUpCit7CisgICAgQVNTRVJUKCFpc0RvY3VtZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQo
bmV3VHJlZVNjb3BlKTsKKyAgICBpZiAodHJlZVNjb3BlKCkgPT0gbmV3VHJlZVNjb3BlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBEb2N1bWVudCogY3VycmVudERvY3VtZW50ID0gZG9jdW1lbnQo
KTsKKyAgICBEb2N1bWVudCogbmV3RG9jdW1lbnQgPSBuZXdUcmVlU2NvcGUtPmRvY3VtZW50KCk7
IAorICAgIC8vIElmIGFuIGVsZW1lbnQgaXMgbW92ZWQgZnJvbSBhIGRvY3VtZW50IGFuZCB0aGVu
IGV2ZW50dWFsbHkgYmFjayBhZ2FpbiB0aGUgY29sbGVjdGlvbiBjYWNoZSBmb3IKKyAgICAvLyB0
aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBjaGFuZ2VzIG1hZGUgdG8gaXQg
d2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJzaW9uCisgICAgLy8gb2YgdGhlIGRvY3Vt
ZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVhc2luZyB0aGUgRE9NVHJlZVZlcnNpb24gb2Yg
dGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKKyAgICAvLyB3ZSBlbnN1cmUgdGhhdCB0aGUgY29s
bGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRhdGVkIGFzIG5lZWRlZCB3aGVuIHRoZSBlbGVt
ZW50IGlzIG1vdmVkIGJhY2suCisgICAgaWYgKGN1cnJlbnREb2N1bWVudCAmJiBjdXJyZW50RG9j
dW1lbnQgIT0gbmV3RG9jdW1lbnQpCisgICAgICAgIGN1cnJlbnREb2N1bWVudC0+aW5jRE9NVHJl
ZVZlcnNpb24oKTsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBu
b2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CisgICAgICAgIG5vZGUtPnNldFRyZWVTY29w
ZShuZXdUcmVlU2NvcGUpOworICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBGSVhNRTogb25jZSBTaGFkb3dSb290IGlz
IGxhbmRlZCwgdXBkYXRlIHBhcmVudCBzY29wZSwgZXRjLgorICAgIH0KK30KKwogTm9kZVJhcmVE
YXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkp
OwpAQCAtODAyLDE1ICs4NTEsNyBAQCBib29sIE5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3go
KSBjb25zdAogCiB2b2lkIE5vZGU6OnNldERvY3VtZW50UmVjdXJzaXZlbHkoRG9jdW1lbnQqIG5l
d0RvY3VtZW50KQogewotICAgIGlmIChkb2N1bWVudCgpID09IG5ld0RvY3VtZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBJZiBhbiBlbGVtZW50IGlzIG1vdmVkIGZyb20gYSBkb2N1bWVu
dCBhbmQgdGhlbiBldmVudHVhbGx5IGJhY2sgYWdhaW4gdGhlIGNvbGxlY3Rpb24gY2FjaGUgZm9y
Ci0gICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWluIHN0YWxlIGRhdGEgYXMgY2hhbmdlcyBt
YWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBET01UcmVlVmVyc2lvbgotICAgIC8vIG9m
IHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5IGluY3JlYXNpbmcgdGhlIERPTVRyZWVW
ZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBoZXJlCi0gICAgLy8gd2UgZW5zdXJlIHRo
YXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBpbnZhbGlkYXRlZCBhcyBuZWVkZWQgd2hl
biB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgotICAgIGlmIChkb2N1bWVudCgpKQotICAgICAg
ICBkb2N1bWVudCgpLT5pbmNET01UcmVlVmVyc2lvbigpOworICAgIEFTU0VSVChkb2N1bWVudCgp
ICE9IG5ld0RvY3VtZW50KTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5v
ZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CiAgICAgICAgIG5vZGUtPnNldERv
Y3VtZW50KG5ld0RvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGMyMjVkYmFjOGZmODkxZGY5Y2Zl
MjY1ZWMyNmI4MmRlMWM0YmIxM2IuLjM0N2U5N2Y2OGE1YTJkZGIxYmViOGRlMDFmMWQzY2YzMmRh
NGJjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBSZW5kZXJCb3hNb2Rl
bE9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3Mg
VGFnTm9kZUxpc3Q7CitjbGFzcyBUcmVlU2NvcGU7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKQEAgLTg5LDYgKzkwLDggQEAgZW51bSBTdHlsZUNoYW5nZVR5cGUgewogCiBjbGFzcyBO
b2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWluZXJOb2Rl
PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50Owor
ICAgIGZyaWVuZCBjbGFzcyBUcmVlU2NvcGU7CisKIHB1YmxpYzoKICAgICBlbnVtIE5vZGVUeXBl
IHsKICAgICAgICAgRUxFTUVOVF9OT0RFID0gMSwKQEAgLTM0OSwxMiArMzUyLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7CiAgICAgfQogCi0gICAgLy8gRG8gbm90IHVz
ZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IG9mIGEgbm9kZSB1bnRpbCBhZnRl
ciB0aGUgbm9kZSBoYXMgYmVlbgotICAgIC8vIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgZG9j
dW1lbnQuCi0gICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCopOworICAgIFRyZWVTY29wZSog
dHJlZVNjb3BlKCkgY29uc3Q7CisKKyAgICAvLyBEbyBub3QgdXNlIHRoaXMgbWV0aG9kIHRvIGNo
YW5nZSB0aGUgc2NvcGUgb2YgYSBub2RlIHVudGlsIGFmdGVyIHRoZSBub2RlIGhhcyBiZWVuCisg
ICAgLy8gcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBzY29wZS4gRG8gbm90IHVzZSB0byBjaGFu
Z2UgZG9jdW1lbnRzLgorICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwogCiAgICAg
Ly8gVXNlZCBieSB0aGUgYmFzaWMgRE9NIG1ldGhvZHMgKGUuZy4sIGFwcGVuZENoaWxkKCkpLgot
ICAgIHZvaWQgc2V0RG9jdW1lbnRSZWN1cnNpdmVseShEb2N1bWVudCopOworICAgIHZvaWQgc2V0
VHJlZVNjb3BlUmVjdXJzaXZlbHkoVHJlZVNjb3BlKik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyBub2RlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRvY3VtZW50IGFuZCBpcyBpbiBpdHMg
YXNzb2NpYXRlZCBkb2N1bWVudCdzCiAgICAgLy8gbm9kZSB0cmVlLCBmYWxzZSBvdGhlcndpc2Uu
CkBAIC02MzAsNiArNjM1LDExIEBAIHByb3RlY3RlZDoKICAgICB9OwogICAgIE5vZGUoRG9jdW1l
bnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKIAorICAgIC8vIERvIG5vdCB1c2UgdGhpcyBtZXRob2Qg
dG8gY2hhbmdlIHRoZSBkb2N1bWVudCBvZiBhIG5vZGUgdW50aWwgYWZ0ZXIgdGhlIG5vZGUgaGFz
IGJlZW4KKyAgICAvLyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGRvY3VtZW50LgorICAgIHZv
aWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHNldERvY3VtZW50UmVjdXJzaXZl
bHkoRG9jdW1lbnQqKTsKKwogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggYmFkYzRlMTc3ZTcyYjc0ZTQ1ZWU4
ZTk1MDdlNWQ0NThiYmRmNjVhYS4uYWMwNWQzZWJkNWYwOTFmYmFlZDE1YjAwZjRmMzA2ZmUxNTc3
MmYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMzQsNiArMzQsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRyZWVTY29wZTsKKwogc3RydWN0IE5vZGVMaXN0
c05vZGVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlTGlzdHNOb2RlRGF0YSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNzMsNyArNzUsOCBAQCBjbGFz
cyBOb2RlUmFyZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0YSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKICAgICBOb2RlUmFyZURhdGEo
KQotICAgICAgICA6IG1fdGFiSW5kZXgoMCkKKyAgICAgICAgOiBtX3RyZWVTY29wZSgwKQorICAg
ICAgICAsIG1fdGFiSW5kZXgoMCkKICAgICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRs
eShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNlZChmYWxzZSkKICAgICAgICAgLCBtX25lZWRz
Rm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKGZhbHNlKQpAQCAtOTYsMTEgKzk5
LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiByYXJlRGF0YU1hcCgpLmdldChu
b2RlKTsKICAgICB9CisKKyAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJlZVNjb3BlOyB9CisgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiB0cmVlU2Nv
cGUpIHsgbV90cmVlU2NvcGUgPSB0cmVlU2NvcGU7IH0KICAgICAKICAgICB2b2lkIGNsZWFyTm9k
ZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigpOyB9CiAgICAgdm9pZCBzZXROb2RlTGlzdHMo
UGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbGlzdHMpIHsgbV9ub2RlTGlzdHMgPSBsaXN0
czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKSBjb25zdCB7IHJldHVybiBt
X25vZGVMaXN0cy5nZXQoKTsgfQotICAgIAorCiAgICAgc2hvcnQgdGFiSW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX3RhYkluZGV4OyB9CiAgICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc2hv
cnQgaW5kZXgpIHsgbV90YWJJbmRleCA9IGluZGV4OyBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRs
eSA9IHRydWU7IH0KICAgICBib29sIHRhYkluZGV4U2V0RXhwbGljaXRseSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5OyB9CkBAIC0xMjMsNiArMTI5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgc2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJB
dHRhY2goYm9vbCBuZWVkcykgeyBtX25lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVy
QXR0YWNoID0gbmVlZHM7IH0KIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3Bl
OwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAgICAgT3duUHRy
PEV2ZW50VGFyZ2V0RGF0YT4gbV9ldmVudFRhcmdldERhdGE7CiAgICAgc2hvcnQgbV90YWJJbmRl
eDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggODk2NzVlZTE4ZWYzZmMwMmRhNGFkYWJk
NGViYWM3M2Q2ZjIzZTAwMC4uYTNhNTkzY2Q1MTlkYzBlZTliOTE0YTJmMmFhNjIzM2YyMzc3ZWRk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTMwLDE2ICszMCwyOSBAQAogI2luY2x1
ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBUcmVlU2NvcGU6
OlRyZWVTY29wZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0
aW9uVHlwZSkKLSAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUp
CisgICAgOiBDb250YWluZXJOb2RlKDAsIGNvbnN0cnVjdGlvblR5cGUpCisgICAgLCBtX3BhcmVu
dFRyZWVTY29wZSgwKQogICAgICwgbV9hY2Nlc3NLZXlNYXBWYWxpZChmYWxzZSkKICAgICAsIG1f
bnVtTm9kZUxpc3RDYWNoZXMoMCkKIHsKKyAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CisgICAg
ZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworICAgIGlmIChkb2N1bWVudCAh
PSB0aGlzKSB7CisgICAgICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUKKyAg
ICAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBkb2N1bWVudDsKKyAgICB9Cit9CisKK1RyZWVTY29w
ZTo6flRyZWVTY29wZSgpCit7CisgICAgcmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKDApOwogfQog
CiB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQpAQCAtNDksNiArNjIsMTcg
QEAgdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkKICAgICBtX2VsZW1lbnRz
QnlBY2Nlc3NLZXkuY2xlYXIoKTsKIH0KIAordm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVT
Y29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQoreworICAgIC8vIENhbm5vdCByZXBhcmVu
dCBhIGRvY3VtZW50IQorICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7CisgICAgLy8gRXZl
cnkgc2NvcGUgb3RoZXIgdGhhbiBkb2N1bWVudCBuZWVkcyBhIHBhcmVudCBzY29wZS4KKyAgICBB
U1NFUlQobV9wYXJlbnRUcmVlU2NvcGUpOworICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CisK
KyAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOworfQorCiBFbGVtZW50KiBU
cmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBj
b25zdAogewogICAgIGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5o
CmluZGV4IDY0YTIyZWVkNmJjYjM2ODY2MzI4YTlmODJlMmI0ZTZkOGQ3ZmQwNTQuLjYyNzE1NDE5
NzEwNmMwMDUwNmJjYjlmYmEyMGU2ZjdjZDVmY2JhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgK
QEAgLTM1LDcgKzM1LDExIEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsK
IAogY2xhc3MgVHJlZVNjb3BlIDogcHVibGljIENvbnRhaW5lck5vZGUgeworICAgIGZyaWVuZCBj
bGFzcyBEb2N1bWVudDsKKwogcHVibGljOgorICAgIFRyZWVTY29wZSogcGFyZW50VHJlZVNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0KKwogICAgIEVsZW1lbnQqIGdl
dEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgaGFzRWxl
bWVudFdpdGhJZChBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWlu
c011bHRpcGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CkBA
IC02Myw5ICs2NywxNSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVHJlZVNjb3BlKERvY3Vt
ZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CiAKKyAgICB2aXJ0dWFs
IH5UcmVlU2NvcGUoKTsKKwogICAgIHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKIAorICAg
IHZvaWQgc2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29wZSopOworCiBwcml2YXRlOgorICAgIFRy
ZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CisKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9l
bGVtZW50c0J5SWQ7CiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1faW1hZ2VNYXBzQnlOYW1lOwog
CkBAIC04NSw3ICs5NSw3IEBAIGlubGluZSBib29sIFRyZWVTY29wZTo6Y29udGFpbnNNdWx0aXBs
ZUVsZW1lbnRzV2l0aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvCiB7CiAgICAgcmV0dXJu
IG1fZWxlbWVudHNCeUlkLmNvbnRhaW5zTXVsdGlwbGUoaWQuaW1wbCgpKTsKIH0KLSAgICAKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVHJlZVNjb3BlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88869</attachid>
            <date>2011-04-08 13:48:01 -0700</date>
            <delta_ts>2011-04-08 13:55:39 -0700</delta_ts>
            <desc>new patch, added ASSERTs</desc>
            <filename>bug-58060-20110408134800.patch</filename>
            <type>text/plain</type>
            <size>15736</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMzMTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YTkyMjA5NjA2NjUzYzU4
YmE5MDNkNmMxODJkMTRkMWY4ZmY5M2I3Li4zYzg4MWQyODdkMWRkNTcyZjRmNjJiOTAyMGE2YWVi
ZWFiN2FhZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDQtMDcgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDU4MDYwIC0gUHJlcGFyZSBhY2Nl
c3MgdG8gVHJlZVNjb3BlIGZyb20gTm9kZSwgdXNpbmcgTm9kZVJhcmVEYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODA2MAorCisgICAgICAgIEFk
ZCBhIFRyZWVTY29wZSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YSB0byBhbGxvdyBkaXJlY3QgYWNj
ZXNzIHRvIHRoZSBjb250YWluaW5nIHRyZWUgc2NvcGUuCisgICAgICAgIEhvd2V2ZXIsIGluIGNh
c2UgdGhlIGNvbnRhaW5pbmcgc2NvcGUgaXMgdGhlIGRvY3VtZW50LCB0aGlzIGlzIG5vdCBzZXQs
IGFuZCB0aGUgCisgICAgICAgIGRvY3VtZW50IHBvaW50ZXIgd2l0aGluIE5vZGUgaXMgdXNlZCBp
bnN0ZWFkLiAKKworICAgICAgICBJbiBhbiBvYmplY3QgZGVyaXZlZCBmcm9tIFRyZWVTY29wZSAo
Y3VycmVudGx5IERvY3VtZW50KSwgdGhlIHRyZWUgc2NvcGUgcG9pbnRlcgorICAgICAgICBwb2lu
dHMgdG8gaXRzZWxmLiBTdWNoIG9iamVjdHMgYWxzbyBjb250YWluIGEgcGFyZW50IHRyZWUgc2Nv
cGUgcG9pbnRlciB0aGF0CisgICAgICAgIHBvaW50cyB0byB0aGUgY29udGFpbmluZyBzY29wZS4g
Rm9yIERvY3VtZW50LCB0aGlzIGlzIDAuCisKKyAgICAgICAgQWRkIG5ldyBmdW5jdGlvbnMgc2V0
VHJlZVNjb3BlW1JlY3Vyc2l2ZWx5XSB0aGF0IHJlcGxhY2Ugc2V0RG9jdW1lbnRbUmVjdXJzaXZl
bHldCisgICAgICAgIGluIHB1YmxpYyB1c2FnZS4gc2V0RG9jdW1lbnRbUmVjdXJzaXZlbHldIGFy
ZSBub3cgb25seSB1c2VkIGludGVybmFsbHkgYW5kIGFyZQorICAgICAgICB0aGVyZXJmb3JlIHBy
b3RlY3RlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChubyBuZXcgZnVuY3Rpb25hbGl0eSkK
KworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDogY2hhbmdlIERPTSBtYW5pcHVsYXRp
b24gbWV0aG9kcyB0byB1cGRhdGUgc2NvcGUgb2YgaW5zZXJ0ZWQgbm9kZXMKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpzZXREb2NUeXBlKTogY2hhbmdlIERPTSBtYW5pcHVsYXRpb24gbWV0aG9kcyB0byB1cGRh
dGUgc2NvcGUgb2YgaW5zZXJ0ZWQgbm9kZXMKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojph
ZG9wdE5vZGUpOiBjaGFuZ2UgRE9NIG1hbmlwdWxhdGlvbiBtZXRob2RzIHRvIHVwZGF0ZSBzY29w
ZSBvZiBpbnNlcnRlZCBub2RlcworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyZWVTY29wZSk6IHVzZSBO
b2RlUmFyZURhdGEgdG8gY2hlY2sgaWYgYSBub24tRG9jdW1lbnQgc2NvcGUgaXMgc2V0CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGUpOiB1cGRhdGUgTm9kZVJhcmVEYXRhIGRl
cGVuZGluZyBvbiB3aGV0aGVyIHNjb3BlIGlzIGEgZG9jdW1lbnQKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnNldERvY3VtZW50UmVjdXJzaXZlbHkpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAg
ICogZG9tL05vZGVSYXJlRGF0YS5oOiBhZGQgc2NvcGUgcG9pbnRlcgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJh
cmVEYXRhOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRU
cmVlU2NvcGUpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOiBhZGQgcGFyZW50VHJlZVNj
b3BlIHBvaW50ZXIKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAgICAg
KiBkb20vVHJlZVNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnBhcmVudFRy
ZWVTY29wZSk6CisKIDIwMTEtMDQtMDggIE1pc2hhIFR5dXR5dW5payAgPG1pY2hhZWwudHl1dHl1
bmlrQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDU2NTlmOWVkNDg0ZjY4NWVlNjJlNzgw
ZmIzZGNhMjcyYjA5ZDkzYjkuLjllZmM4MzhkMTUxMTE5MTcyNTdiOTQwMGIxNmY2M2EzNDNhM2Yz
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTE2MSw3ICsxNjEsOCBA
QCBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0No
aWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxkLCB0aGlzKTsKICNlbmRpZgog
Ci0gICAgICAgIGNoaWxkLT5zZXREb2N1bWVudFJlY3Vyc2l2ZWx5KGRvY3VtZW50KCkpOworICAg
ICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOworCiAgICAg
ICAgIGluc2VydEJlZm9yZUNvbW1vbihuZXh0LmdldCgpLCBjaGlsZCk7CiAKICAgICAgICAgLy8g
U2VuZCBub3RpZmljYXRpb24gYWJvdXQgdGhlIGNoaWxkcmVuIGNoYW5nZS4KQEAgLTMxMCw3ICsz
MTEsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxkLmdldCgpLCB0aGlz
KTsKICNlbmRpZgogCi0gICAgICAgIGNoaWxkLT5zZXREb2N1bWVudFJlY3Vyc2l2ZWx5KGRvY3Vt
ZW50KCkpOworICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3Bl
KCkpOwogCiAgICAgICAgIC8vIEFkZCBjaGlsZCBhZnRlciAicHJldiIuCiAgICAgICAgIGZvcmJp
ZEV2ZW50RGlzcGF0Y2goKTsKQEAgLTU5OSw3ICs2MDAsNyBAQCBib29sIENvbnRhaW5lck5vZGU6
OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVj
LCBibwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2Rl
KGRvY3VtZW50KCksIGNoaWxkLCB0aGlzKTsKICNlbmRpZgogCi0gICAgICAgIGNoaWxkLT5zZXRE
b2N1bWVudFJlY3Vyc2l2ZWx5KGRvY3VtZW50KCkpOworICAgICAgICBjaGlsZC0+c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0
byB0aGUgZW5kIG9mIHRoZSBsaXN0CiAgICAgICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRmN2E5OWQzZTdmYjRhMDA2MDhlMTFkNDg5OTcwODFh
MGVjNWVlYjQuLjY2YTk4YjVkMGIxYmM1ZWRiMTRiOGQyMjQyNGMxOGJlOWY5Nzk3MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBAIHByaXZhdGU6CiB1aW50NjRf
dCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRN
TCkKLSAgICA6IFRyZWVTY29wZSgwKQorICAgIDogVHJlZVNjb3BlKHRoaXMpCiAgICAgLCBtX2d1
YXJkUmVmQ291bnQoMCkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUoTm9RdWlya3NNb2RlKQog
ICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tlZChmYWxzZSkKQEAgLTUxNiw2ICs1MTYsNyBA
QCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBBU1NFUlQoIW1fc2F2ZWRSZW5kZXJlcik7CiAg
ICAgQVNTRVJUKG1fcmFuZ2VzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX3N0eWxlUmVjYWxj
VGltZXIuaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX3BhcmVudFRyZWVTY29wZSk7CiAKICAg
ICBtX3NjcmlwdFJ1bm5lci5jbGVhcigpOwogCkBAIC03MDAsNyArNzAxLDcgQEAgdm9pZCBEb2N1
bWVudDo6c2V0RG9jVHlwZShQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4gZG9jVHlwZSkKICAgICBB
U1NFUlQoIW1fZG9jVHlwZSB8fCAhZG9jVHlwZSk7CiAgICAgbV9kb2NUeXBlID0gZG9jVHlwZTsK
ICAgICBpZiAobV9kb2NUeXBlKQotICAgICAgICBtX2RvY1R5cGUtPnNldERvY3VtZW50KHRoaXMp
OworICAgICAgICBtX2RvY1R5cGUtPnNldFRyZWVTY29wZSh0aGlzKTsKIH0KIAogRE9NSW1wbGVt
ZW50YXRpb24qIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCkBAIC05MzAsNyArOTMxLDcgQEAg
UGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291
cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIHNvdXJjZS0+cGFyZW50Tm9kZSgp
LT5yZW1vdmVDaGlsZChzb3VyY2UuZ2V0KCksIGVjKTsKICAgICB9CiAKLSAgICBzb3VyY2UtPnNl
dERvY3VtZW50UmVjdXJzaXZlbHkodGhpcyk7CisgICAgc291cmNlLT5zZXRUcmVlU2NvcGVSZWN1
cnNpdmVseSh0aGlzKTsKIAogICAgIHJldHVybiBzb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDM1N2M0YTM1Mzg4NWZiZjZlODYzMWYwMjA5MDk4MzI3NTIxYzUyYmQuLjFmMGYyYTBl
ZGE0ZTQ3MjkzYjI2MjBmNmJmOWZlZjY1OGFjNDY3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0xNDEwLDEyICsxNDEwLDEzIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENvbnRlbnRTZWN1cml0
eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiB9OwogCisvLyBQdXQgdGhlc2UgbWV0
aG9kcyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwg
YnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgorCiBpbmxpbmUgYm9vbCBOb2RlOjpp
c0RvY3VtZW50Tm9kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRoaXMgPT0gbV9kb2N1bWVudDsK
IH0KIAotLy8gaGVyZSBiZWNhdXNlIGl0IHVzZXMgYSBEb2N1bWVudCBtZXRob2QgYnV0IHdlIHJl
YWxseSB3YW50IHRvIGlubGluZSBpdAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQog
ICAgICwgbV9wcmV2aW91cygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDJmYjc1NjljMzk0YmQ3ZWNh
MDVjZmI0MzcxYWNiZGMzMzNlYWE0NjMuLmY1ZjFiNTFkMDc2OGRhZDU4YzNkNDMzMDJiZTQxNzll
MjQwOWRjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ3MCw2ICs0NzAsNTggQEAgdm9pZCBOb2Rl
OjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgQVNTRVJUKGRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwogfQogCitUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29w
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm4gZG9j
dW1lbnQoKTsKKyAgICBUcmVlU2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7
CisgICAgLy8gRklYTUU6IHVudGlsIHdlIGxhbmQgc2hhZG93IHNjb3BlcywgdGhlcmUgc2hvdWxk
IGJlIG5vIG5vbi1kb2N1bWVudCBzY29wZXMuCisgICAgQVNTRVJUKCFzY29wZSk7CisgICAgcmV0
dXJuIHNjb3BlID8gc2NvcGUgOiBkb2N1bWVudCgpOworfQorCit2b2lkIE5vZGU6OnNldFRyZWVT
Y29wZShUcmVlU2NvcGUqIG5ld1RyZWVTY29wZSkKK3sKKyAgICBBU1NFUlQoIWlzRG9jdW1lbnRO
b2RlKCkpOworICAgIEFTU0VSVChuZXdUcmVlU2NvcGUpOworICAgIEFTU0VSVCghaW5Eb2N1bWVu
dCgpIHx8IHRyZWVTY29wZSgpID09IG5ld1RyZWVTY29wZSk7CisKKyAgICBpZiAobmV3VHJlZVNj
b3BlLT5pc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKQorICAg
ICAgICAgICAgcmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKDApOworICAgICAgICAvLyBTZXR0aW5n
IHRoZSBuZXcgZG9jdW1lbnQgc2NvcGUgd2lsbCBiZSBoYW5kbGVkIGltcGxpY2l0bHkKKyAgICAg
ICAgLy8gYnkgc2V0RG9jdW1lbnQoKSBiZWxvdy4KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBG
SVhNRTogdW50aWwgd2UgbGFuZCBzaGFkb3cgc2NvcGVzLCB0aGlzIGJyYW5jaCBzaG91bGQgYmUg
aW5lcnQuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBlbnN1cmVSYXJl
RGF0YSgpLT5zZXRUcmVlU2NvcGUobmV3VHJlZVNjb3BlKTsKKyAgICB9CisKKyAgICBzZXREb2N1
bWVudChuZXdUcmVlU2NvcGUtPmRvY3VtZW50KCkpOworfQorCit2b2lkIE5vZGU6OnNldFRyZWVT
Y29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSogbmV3VHJlZVNjb3BlKQoreworICAgIEFTU0VSVCgh
aXNEb2N1bWVudE5vZGUoKSk7CisgICAgQVNTRVJUKG5ld1RyZWVTY29wZSk7CisgICAgaWYgKHRy
ZWVTY29wZSgpID09IG5ld1RyZWVTY29wZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRG9jdW1l
bnQqIGN1cnJlbnREb2N1bWVudCA9IGRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIG5ld0RvY3Vt
ZW50ID0gbmV3VHJlZVNjb3BlLT5kb2N1bWVudCgpOyAKKyAgICAvLyBJZiBhbiBlbGVtZW50IGlz
IG1vdmVkIGZyb20gYSBkb2N1bWVudCBhbmQgdGhlbiBldmVudHVhbGx5IGJhY2sgYWdhaW4gdGhl
IGNvbGxlY3Rpb24gY2FjaGUgZm9yCisgICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWluIHN0
YWxlIGRhdGEgYXMgY2hhbmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBET01U
cmVlVmVyc2lvbgorICAgIC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5IGlu
Y3JlYXNpbmcgdGhlIERPTVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBoZXJl
CisgICAgLy8gd2UgZW5zdXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBpbnZh
bGlkYXRlZCBhcyBuZWVkZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgorICAgIGlm
IChjdXJyZW50RG9jdW1lbnQgJiYgY3VycmVudERvY3VtZW50ICE9IG5ld0RvY3VtZW50KQorICAg
ICAgICBjdXJyZW50RG9jdW1lbnQtPmluY0RPTVRyZWVWZXJzaW9uKCk7CisKKyAgICBmb3IgKE5v
ZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlz
KSkgeworICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGUobmV3VHJlZVNjb3BlKTsKKyAgICAgICAg
Ly8gRklYTUU6IG9uY2Ugc2hhZG93IHNjb3BlcyBhcmUgbGFuZGVkLCB1cGRhdGUgcGFyZW50IHNj
b3BlLCBldGMuCisgICAgfQorfQorCiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CkBAIC04MDIsMTUgKzg1NCw3IEBAIGJv
b2wgTm9kZTo6aGFzTm9uRW1wdHlCb3VuZGluZ0JveCgpIGNvbnN0CiAKIHZvaWQgTm9kZTo6c2V0
RG9jdW1lbnRSZWN1cnNpdmVseShEb2N1bWVudCogbmV3RG9jdW1lbnQpCiB7Ci0gICAgaWYgKGRv
Y3VtZW50KCkgPT0gbmV3RG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIGFu
IGVsZW1lbnQgaXMgbW92ZWQgZnJvbSBhIGRvY3VtZW50IGFuZCB0aGVuIGV2ZW50dWFsbHkgYmFj
ayBhZ2FpbiB0aGUgY29sbGVjdGlvbiBjYWNoZSBmb3IKLSAgICAvLyB0aGF0IGVsZW1lbnQgbWF5
IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBjaGFuZ2VzIG1hZGUgdG8gaXQgd2lsbCBoYXZlIHVwZGF0
ZWQgdGhlIERPTVRyZWVWZXJzaW9uCi0gICAgLy8gb2YgdGhlIGRvY3VtZW50IGl0IHdhcyBtb3Zl
ZCB0by4gQnkgaW5jcmVhc2luZyB0aGUgRE9NVHJlZVZlcnNpb24gb2YgdGhlIGRvbmF0aW5nIGRv
Y3VtZW50IGhlcmUKLSAgICAvLyB3ZSBlbnN1cmUgdGhhdCB0aGUgY29sbGVjdGlvbiBjYWNoZSB3
aWxsIGJlIGludmFsaWRhdGVkIGFzIG5lZWRlZCB3aGVuIHRoZSBlbGVtZW50IGlzIG1vdmVkIGJh
Y2suCi0gICAgaWYgKGRvY3VtZW50KCkpCi0gICAgICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVW
ZXJzaW9uKCk7CisgICAgQVNTRVJUKGRvY3VtZW50KCkgIT0gbmV3RG9jdW1lbnQpOwogCiAgICAg
Zm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5v
ZGUodGhpcykpIHsKICAgICAgICAgbm9kZS0+c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKaW5kZXggZGNiMTI2NDY5ZTU0ZjJjOTg3YmY1OWE0YzE2M2VjM2Y1ZjVlMWE0NC4uNjA4
OWUyZjk1ZTZlNjI2YjUyMDBjNTdkYWFlNzY1OWU3OTVlZjEwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC03
Miw2ICs3Miw3IEBAIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2Jq
ZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBUYWdOb2RlTGlzdDsKK2NsYXNzIFRyZWVT
Y29wZTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApAQCAtODksNiArOTAsOCBAQCBl
bnVtIFN0eWxlQ2hhbmdlVHlwZSB7CiAKIGNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQs
IHB1YmxpYyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxl
IHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29w
ZTsKKwogcHVibGljOgogICAgIGVudW0gTm9kZVR5cGUgewogICAgICAgICBFTEVNRU5UX05PREUg
PSAxLApAQCAtMzUxLDEyICszNTQsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9kb2N1
bWVudDsKICAgICB9CiAKLSAgICAvLyBEbyBub3QgdXNlIHRoaXMgbWV0aG9kIHRvIGNoYW5nZSB0
aGUgZG9jdW1lbnQgb2YgYSBub2RlIHVudGlsIGFmdGVyIHRoZSBub2RlIGhhcyBiZWVuCi0gICAg
Ly8gcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBkb2N1bWVudC4KLSAgICB2b2lkIHNldERvY3Vt
ZW50KERvY3VtZW50Kik7CisgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKKworICAg
IC8vIERvIG5vdCB1c2UgdGhpcyBtZXRob2QgdG8gY2hhbmdlIHRoZSBzY29wZSBvZiBhIG5vZGUg
dW50aWwgYWZ0ZXIgdGhlIG5vZGUgaGFzIGJlZW4KKyAgICAvLyByZW1vdmVkIGZyb20gaXRzIHBy
ZXZpb3VzIHNjb3BlLiBEbyBub3QgdXNlIHRvIGNoYW5nZSBkb2N1bWVudHMuCisgICAgdm9pZCBz
ZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CiAKICAgICAvLyBVc2VkIGJ5IHRoZSBiYXNpYyBET00g
bWV0aG9kcyAoZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCi0gICAgdm9pZCBzZXREb2N1bWVudFJlY3Vy
c2l2ZWx5KERvY3VtZW50Kik7CisgICAgdm9pZCBzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVl
U2NvcGUqKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRl
ZCB3aXRoIGEgZG9jdW1lbnQgYW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKICAg
ICAvLyBub2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KQEAgLTYzMyw2ICs2MzgsMTEgQEAgcHJv
dGVjdGVkOgogICAgIH07CiAgICAgTm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUpOwog
CisgICAgLy8gRG8gbm90IHVzZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IG9m
IGEgbm9kZSB1bnRpbCBhZnRlciB0aGUgbm9kZSBoYXMgYmVlbgorICAgIC8vIHJlbW92ZWQgZnJv
bSBpdHMgcHJldmlvdXMgZG9jdW1lbnQuCisgICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCop
OworICAgIHZvaWQgc2V0RG9jdW1lbnRSZWN1cnNpdmVseShEb2N1bWVudCopOworCiAgICAgdmly
dHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAppbmRleCBiYWRjNGUxNzdlNzJiNzRlNDVlZThlOTUwN2U1ZDQ1OGJiZGY2NWFhLi5hYzA1
ZDNlYmQ1ZjA5MWZiYWVkMTViMDBmNGYzMDZmZTE1NzcyZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgVHJlZVNjb3BlOworCiBzdHJ1Y3QgTm9kZUxpc3RzTm9kZURhdGEgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE5vZGVMaXN0c05vZGVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CkBAIC03Myw3ICs3NSw4IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6ICAgIAogICAgIE5vZGVSYXJlRGF0YSgpCi0gICAgICAgIDogbV90YWJJbmRleCgw
KQorICAgICAgICA6IG1fdHJlZVNjb3BlKDApCisgICAgICAgICwgbV90YWJJbmRleCgwKQogICAg
ICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNG
b2N1c2VkKGZhbHNlKQogICAgICAgICAsIG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29u
QWZ0ZXJBdHRhY2goZmFsc2UpCkBAIC05NiwxMSArOTksMTQgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KG5vZGUpOwogICAgIH0KKworICAgIFRyZWVT
Y29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7IH0KKyAgICB2b2lk
IHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRyZWVTY29wZSkgeyBtX3RyZWVTY29wZSA9IHRyZWVT
Y29wZTsgfQogICAgIAogICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzLmNs
ZWFyKCk7IH0KICAgICB2b2lkIHNldE5vZGVMaXN0cyhQYXNzT3duUHRyPE5vZGVMaXN0c05vZGVE
YXRhPiBsaXN0cykgeyBtX25vZGVMaXN0cyA9IGxpc3RzOyB9CiAgICAgTm9kZUxpc3RzTm9kZURh
dGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUxpc3RzLmdldCgpOyB9Ci0gICAg
CisKICAgICBzaG9ydCB0YWJJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiSW5kZXg7IH0KICAg
ICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShzaG9ydCBpbmRleCkgeyBtX3RhYkluZGV4ID0g
aW5kZXg7IG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5ID0gdHJ1ZTsgfQogICAgIGJvb2wgdGFi
SW5kZXhTZXRFeHBsaWNpdGx5KCkgY29uc3QgeyByZXR1cm4gbV90YWJJbmRleFdhc1NldEV4cGxp
Y2l0bHk7IH0KQEAgLTEyMyw2ICsxMjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXROZWVk
c0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaChib29sIG5lZWRzKSB7IG1fbmVl
ZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2ggPSBuZWVkczsgfQogCiBwcml2
YXRlOgorICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgT3duUHRyPE5vZGVMaXN0c05v
ZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBPd25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50
VGFyZ2V0RGF0YTsKICAgICBzaG9ydCBtX3RhYkluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNw
cAppbmRleCA4OTY3NWVlMThlZjNmYzAyZGE0YWRhYmQ0ZWJhYzczZDZmMjNlMDAwLi42MTk4Zjcy
ZTI0Mjc4ZGViOWQyOTMwNzY0YmIzM2JiYzZkZmJiOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcApAQCAtMzAsMTYgKzMwLDMxIEBACiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIFRyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1
bWVudCwgQ29uc3RydWN0aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQotICAgIDogQ29udGFpbmVy
Tm9kZShkb2N1bWVudCwgY29uc3RydWN0aW9uVHlwZSkKKyAgICA6IENvbnRhaW5lck5vZGUoMCwg
Y29uc3RydWN0aW9uVHlwZSkKKyAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCiAgICAgLCBtX2Fj
Y2Vzc0tleU1hcFZhbGlkKGZhbHNlKQogICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogewor
ICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKKyAgICBpZiAoZG9jdW1lbnQgIT0gdGhpcykgewor
ICAgICAgICAvLyBBc3N1bWUgZG9jdW1lbnQgYXMgcGFyZW50IHNjb3BlCisgICAgICAgIG1fcGFy
ZW50VHJlZVNjb3BlID0gZG9jdW1lbnQ7CisgICAgICAgIC8vIEZJWE1FOiB0aGlzIGJyYW5jaCBz
aG91bGQgYmUgaW5lcnQgdW50aWwgc2hhZG93IHNjb3BlcyBhcmUgbGFuZGVkLgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK1RyZWVTY29wZTo6flRyZWVTY29wZSgp
Cit7CisgICAgaWYgKGhhc1JhcmVEYXRhKCkpCisgICAgICAgIHJhcmVEYXRhKCktPnNldFRyZWVT
Y29wZSgwKTsKIH0KIAogdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkKQEAg
LTQ5LDYgKzY0LDE3IEBAIHZvaWQgVHJlZVNjb3BlOjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCiAg
ICAgbV9lbGVtZW50c0J5QWNjZXNzS2V5LmNsZWFyKCk7CiB9CiAKK3ZvaWQgVHJlZVNjb3BlOjpz
ZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKK3sKKyAgICAvLyBD
YW5ub3QgcmVwYXJlbnQgYSBkb2N1bWVudCEKKyAgICBBU1NFUlQoIWlzRG9jdW1lbnROb2RlKCkp
OworICAgIC8vIEV2ZXJ5IHNjb3BlIG90aGVyIHRoYW4gZG9jdW1lbnQgbmVlZHMgYSBwYXJlbnQg
c2NvcGUuCisgICAgQVNTRVJUKG1fcGFyZW50VHJlZVNjb3BlKTsKKyAgICBBU1NFUlQobmV3UGFy
ZW50U2NvcGUpOworCisgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKK30K
KwogRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcm
IGVsZW1lbnRJZCkgY29uc3QKIHsKICAgICBpZiAoZWxlbWVudElkLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuaAppbmRleCA2NGEyMmVlZDZiY2IzNjg2NjMyOGE5ZjgyZTJiNGU2ZDhkN2Zk
MDU0Li42MjcxNTQxOTcxMDZjMDA1MDZiY2I5ZmJhMjBlNmY3Y2Q1ZmNiYWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5oCkBAIC0zNSw3ICszNSwxMSBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRN
TE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFRyZWVTY29wZSA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsK
KyAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CisKIHB1YmxpYzoKKyAgICBUcmVlU2NvcGUqIHBh
cmVudFRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50VHJlZVNjb3BlOyB9CisKICAg
ICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKICAg
ICBib29sIGhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0OwogICAg
IGJvb2wgY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQpIGNvbnN0OwpAQCAtNjMsOSArNjcsMTUgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFRy
ZWVTY29wZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOwog
CisgICAgdmlydHVhbCB+VHJlZVNjb3BlKCk7CisKICAgICB2b2lkIGRlc3Ryb3lUcmVlU2NvcGVE
YXRhKCk7CiAKKyAgICB2b2lkIHNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqKTsKKwogcHJp
dmF0ZToKKyAgICBUcmVlU2NvcGUqIG1fcGFyZW50VHJlZVNjb3BlOworCiAgICAgRG9jdW1lbnRP
cmRlcmVkTWFwIG1fZWxlbWVudHNCeUlkOwogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2ltYWdl
TWFwc0J5TmFtZTsKIApAQCAtODUsNyArOTUsNyBAQCBpbmxpbmUgYm9vbCBUcmVlU2NvcGU6OmNv
bnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjbwog
ewogICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5jb250YWluc011bHRpcGxlKGlkLmltcGwoKSk7
CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFRyZWVTY29w
ZV9oCg==
</data>
<flag name="review"
          id="81461"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>