<?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>228858</bug_id>
          
          <creation_ts>2021-08-05 22:41:56 -0700</creation_ts>
          <short_desc>white space atomization during parsing is expensive</short_desc>
          <delta_ts>2021-08-19 18:44:07 -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>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1782448</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-05 22:41:56 -0700</bug_when>
    <thetext>We have a memory optimization where the HTML parser will atomize any text node string that is all white space.  The process for this is a bit expensive, since we must loop over all the characters in the string three times:

* First, to check that all the characters are white space
* Second, to hash the string when looking up the atom hash table
* Third, to check the string for equality with any existing atom hash table entry

Most white space strings we encounter have a limited form -- they have at most three or four runs of consecutive equal white space characters, e.g. it&apos;s common to see a newline followed by a number of space characters.  We can take advantage of this by compressing the white space string into a simple run-length encoded form while we check that the string is entirely white space.  If we keep a cache of recently atomized white space strings that can be quickly looked up, keyed off the encoded form, we can re-use a previous result of atomizing an identical string and avoid the hashing and hash entry equality checks.

I have a WIP patch for this that is showing a 1% improvement on Speedometer 2 overall (due to 2-4% improvements on a few of the subtests) and no change to PLT5 on my local machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782449</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-05 22:42:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/81601565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782454</commentid>
    <comment_count>2</comment_count>
      <attachid>435057</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-06 01:03:56 -0700</bug_when>
    <thetext>Created attachment 435057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782742</commentid>
    <comment_count>3</comment_count>
      <attachid>435138</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-07 17:10:47 -0700</bug_when>
    <thetext>Created attachment 435138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782829</commentid>
    <comment_count>4</comment_count>
      <attachid>435138</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-08 23:19:12 -0700</bug_when>
    <thetext>Comment on attachment 435138
Patch

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

r=me

&gt; Source/WebCore/html/parser/HTMLConstructionSite.cpp:858
&gt; +        code |= (end - startOfRun);

It should be `character - startOfRun`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782830</commentid>
    <comment_count>5</comment_count>
      <attachid>435169</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-08 23:52:34 -0700</bug_when>
    <thetext>Created attachment 435169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782865</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-09 04:05:13 -0700</bug_when>
    <thetext>Committed r280772 (240356@main): &lt;https://commits.webkit.org/240356@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435169.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782871</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-09 05:35:22 -0700</bug_when>
    <thetext>Committed r280773 (240357@main): &lt;https://commits.webkit.org/240357@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785663</commentid>
    <comment_count>8</comment_count>
      <attachid>435169</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-19 18:37:29 -0700</bug_when>
    <thetext>Comment on attachment 435169
Patch

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

&gt; Source/WebCore/html/parser/HTMLConstructionSite.cpp:896
&gt; +        WTFLogAlways(&quot;reuse code %llx&quot;, code);

Will this create a lot of logging?

&gt; Source/WebCore/html/parser/HTMLConstructionSite.cpp:901
&gt; +        WTFLogAlways(&quot;override&quot;);

Ditto.

&gt; Source/WebCore/html/parser/HTMLConstructionSite.cpp:906
&gt; +        WTFLogAlways(&quot;replace code %llx&quot;, code);

Ditto.

&gt; Source/WebCore/html/parser/HTMLConstructionSite.cpp:913
&gt; +    WTFLogAlways(&quot;new code %llx&quot;, code);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785667</commentid>
    <comment_count>9</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-08-19 18:44:07 -0700</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #8)
&gt; Comment on attachment 435169 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435169&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLConstructionSite.cpp:896
&gt; &gt; +        WTFLogAlways(&quot;reuse code %llx&quot;, code);
&gt; 
&gt; Will this create a lot of logging?

Yes, Yusuke removed them shortly after this patch landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435057</attachid>
            <date>2021-08-06 01:03:56 -0700</date>
            <delta_ts>2021-08-07 17:10:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228858-20210806180354.patch</filename>
            <type>text/plain</type>
            <size>17994</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRkZGE0MzNmNTEyNDBh
NjE2N2E0N2Y0MTZmODIzNDNlYmQ3N2QwYy4uOWMyMGRiNGYwZDg2ZGJkMGRmZWJkNGU5N2UxOGYy
MDkxNzM1NzMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA4LTA2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgcmVjZW50
bHkgYXRvbWl6ZWQgYWxsLXdoaXRlc3BhY2Ugc3RyaW5ncyBmb3IgdXNlIGJ5IHRoZSBIVE1MIHBh
cnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
ODU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
aGF2ZSBhIG1lbW9yeSBvcHRpbWl6YXRpb24gd2hlcmUgdGhlIEhUTUwgcGFyc2VyIHdpbGwgYXRv
bWl6ZSBhbnkKKyAgICAgICAgdGV4dCBub2RlIHN0cmluZyB0aGF0IGlzIGFsbCB3aGl0ZXNwYWNl
LiAgVGhpcyBjYW4gYmUgZXhwZW5zaXZlLAorICAgICAgICBhcyB3ZSBuZWVkIHRvIGxvb3Agb3Zl
ciB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVycyB0aHJlZSB0aW1lczogdG8gZGV0ZWN0CisgICAgICAg
IHRoYXQgaXQgaXMgaW5kZWVkIGFsbCB3aGl0ZXNwYWNlLCB0byBoYXNoIHRoZSBzdHJpbmcsIGFu
ZCB0byBjb21wYXJlCisgICAgICAgIHRvIGFueSBleGlzdGluZyBlbnRyeSBpbiB0aGUgYXRvbSBo
YXNoIHRhYmxlLgorCisgICAgICAgIE1hbnkgd2hpdGVzcGFjZSBzdHJpbmdzIGVuY291bnRlcmVk
IGR1cmluZyBwYXJzaW5nIGhhdmUgYSBsaW1pdGVkCisgICAgICAgIGZvcm0gLS0gdGhleSBoYXZl
IGEgZmV3IHJ1bnMgb2YgY29uc2VjdXRpdmUgZXF1YWwgd2hpdGVzcGFjZQorICAgICAgICBjaGFy
YWN0ZXJzLCBlLmcuIGl0J3MgY29tbW9uIHRvIHNlZSBhIG5ld2xpbmUgZm9sbG93ZWQgYnkgYSBu
dW1iZXIKKyAgICAgICAgb2Ygc3BhY2UgY2hhcmFjdGVycy4gIFdlIGNhbiB0YWtlIGFkdmFudGFn
ZSBvZiB0aGlzIGJ5IGNvbXByZXNzaW5nCisgICAgICAgIHRoZSB3aGl0ZXNwYWNlIHN0cmluZyBp
bnRvIGEgc2ltcGxlIHJ1bi1sZW5ndGggZW5jb2RlZCBmb3JtIHdoaWxlCisgICAgICAgIHdlIGxv
b3Agb3ZlciB0aGUgY2hhcmFjdGVycyB0byBjaGVjayB0aGF0IHRoZSBzdHJpbmcgaXMgYWxsCisg
ICAgICAgIHdoaXRlc3BhY2UuICBVbmxpa2UgYSBoYXNoLCB0aGlzIGVuY29kZWQgZm9ybSBwZXJm
ZWN0bHkgaWRlbnRpZmllcyB0aGUKKyAgICAgICAgc3RyaW5nIGNvbnRlbnQuCisKKyAgICAgICAg
V2UgYWRkIGEgV2hpdGVzcGFjZUNhY2hlIHRoYXQgaXMgb3duZWQgYnkgdGhlIERvY3VtZW50LCB3
aGljaCBzdG9yZXMKKyAgICAgICAgdGhlIG1vc3QgcmVjZW50bHkgYXRvbWl6ZWQgYWxsLXdoaXRl
c3BhY2Ugc3RyaW5nIGVuY291bnRlcmVkIGJ5IHRoZQorICAgICAgICBwYXJzZXIgZm9yIGEgZ2l2
ZW4gbGVuZ3RoLCBhbmQga2V5cyBpdCB3aXRoIHRoZSBlbmNvZGVkIGZvcm0uICBUaGUKKyAgICAg
ICAgcGFyc2VyIGNhbiB0aGVuIGxvb2sgdXAgdGhlIFdoaXRlc3BhY2VDYWNoZSBhbmQgZmluZCBh
biBBdG9tU3RyaW5nCisgICAgICAgIHdpdGhvdXQgdGhlIG5lZWQgdG8gcGVyZm9ybSBhIGxvb2t1
cCBpbiB0aGUgYXRvbSBoYXNoIHRhYmxlLgorCisgICAgICAgIFRoZSBXaGl0ZXNwYWNlQ2FjaGUg
Y29udGludWVzIHRvIGhvbGQgb24gdG8gdGhlIGNhY2hlZCB3aGl0ZXNwYWNlCisgICAgICAgIGF0
b21zIGZvciB0aGUgbGlmZSBvZiB0aGUgZG9jdW1lbnQuICBUaGUgV2hpdGVzcGFjZUNhY2hlIGl0
c2VsZgorICAgICAgICB0YWtlcyBhIGJpdCBvdmVyIDEgS2lCIHdoZW4gZW1wdHksIGFuZCBpZiBj
b21wbGV0ZWx5IHBvcHVsYXRlZCB3b3VsZAorICAgICAgICB0YWtlIGEgYml0IG92ZXIgMiBLaUIg
cGx1cyA4IEtpQiBvZiBhdG9tIHN0cmluZyBkYXRhIChhIDEgYnl0ZSBzdHJpbmcsCisgICAgICAg
IHBsdXMgYSAyIGJ5dGUgc3RyaW5nLCBwbHVzIGEgMyBieXRlIHN0cmluZywgZXRjLikuICBUaGlz
IGRvZXNuJ3Qgc2VlbQorICAgICAgICBoaWdoIGVub3VnaCB0byBiZSB3b3J0aCBjbGVhcmluZyB0
aGlzIG91dCBqdXN0IHRvIGF2b2lkIG1lbW9yeSB1c2FnZQorICAgICAgICBmcm9tIHRleHQgbm9k
ZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudC4KKworICAgICAgICBX
ZSBoYXZlIHRoZSBEb2N1bWVudCBvd24gdGhlIFdoaXRlc3BhY2VDYWNoZSBzbyB0aGF0IGl0J3Mg
bm90IGp1c3QgdGhlCisgICAgICAgIGluaXRpYWwgZG9jdW1lbnQgbG9hZCwgYnV0IGFueSB1c2Vz
IG9mIGlubmVySFRNTCBvciBvdGhlciBmcmFnbWVudAorICAgICAgICBwYXJzaW5nIEFQSXMsIHRo
YXQgY2FuIHJlLXVzZSBwcmV2aW91c2x5IGF0b21pemVkIHdoaXRlc3BhY2Ugc3RyaW5ncy4KKwor
ICAgICAgICBUaGUgY2hvaWNlIG9mIFdoaXRlc3BhY2VDYWNoZTo6bWF4aW11bUNhY2hlZFN0cmlu
Z0xlbmd0aCA9IDEyOCBpcworICAgICAgICBzb21ld2hhdCBhcmJpdHJhcnkuICBUaGUgdmFsdWUg
bXVzdCBiZSA8PSAyNTUgdG8gYXZvaWQgb3ZlcmZsb3dpbmcKKyAgICAgICAgdGhlIHNwZWNpZmlj
IDY0IGJpdCBjb2RlIGZvcm1hdCB1c2VkIHRvIGVuY29kZSB0aGUgd2hpdGVzcGFjZSBzdHJpbmcu
CisgICAgICAgIFRlc3Rpbmcgb24gU3BlZWRvbWV0ZXIgc2hvd3Mgd2hpdGVzcGFjZSBzdHJpbmdz
IG9ubHkgdXAgdG8gbGVuZ3RoIDI2LAorICAgICAgICBidXQgaXQgbWF5IGJlIHdvcnRoIHRlc3Rp
bmcgb3RoZXIgY29udGVudCB0byBzZWUgaWYgaXQncyB3b3J0aAorICAgICAgICByZWR1Y2luZyBt
YXhpbXVtQ2FjaGVkU3RyaW5nTGVuZ3RoLgorCisgICAgICAgIFdoZW4gcnVubmluZyBTcGVlZG9t
ZXRlciAyLCBubyBlbnRyaWVzIGluIHRoZSBjYWNoZSBldmVyIGdldCByZXBsYWNlZAorICAgICAg
ICBieSBhIGRpZmZlcmVudCB3aGl0ZXNwYWNlIHN0cmluZyBvZiB0aGUgc2FtZSBsZW5ndGgsIGFu
ZCAxNiB1bmlxdWUKKyAgICAgICAgd2hpdGVzcGFjZSBzdHJpbmcgbGVuZ3RocyBhcmUgZW5jb3Vu
dGVyZWQuCisKKyAgICAgICAgV2UgZG9uJ3QgY29tcHV0ZSBjb2RlcyBmb3IgMTYgYml0IHN0cmlu
Z3MsIHNpbmNlIDE2IGJpdCBzdHJpbmdzIHBhc3NlZAorICAgICAgICBpbiB0byBXaGl0ZXNwYWNl
Q2FjaGU6Omxvb2t1cCgpIGFyZSBhbG1vc3QgYWx3YXlzIHRoZSBlbnRpcmV0eSBvZiBhbgorICAg
ICAgICBIVE1MVG9rZW4ncyBkYXRhLCBhbmQgSFRNTFRva2VuIHRyYWNrcyB3aGV0aGVyIGFueSAx
NiBiaXQgY2hhcmFjdGVycyBhcmUKKyAgICAgICAgcHJlc2VudC4gIElmIHRoZXJlIGFyZSBhbnks
IHRoZW4gd2Uga25vdyB0aGUgc3RyaW5nIGNhbm5vdCBiZSBhbGwKKyAgICAgICAgd2hpdGVzcGFj
ZSwgYW5kIHdlIHVzZSBhIFdoaXRlc3BhY2VNb2RlIHZhbHVlIG9mIE5vdEFsbFdoaXRlc3BhY2Ug
dG8KKyAgICAgICAgc2tpcCB0aGUgYXRvbWl6YXRpb24gYWx0b2dldGhlci4KKworICAgICAgICBU
aGlzIHBhdGNoIGlzIGFuIGFsbW9zdCAxJSBpbXByb3ZlbWVudCBvbiBTcGVlZG9tZXRlciAyLgor
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fd2hpdGVz
cGFjZUNhY2hlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp3aGl0ZXNwYWNlQ2FjaGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2hpdGVzcGFj
ZUNhY2hlOjpjb2RlRm9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlc3BhY2VDYWNo
ZTo6bG9va3VwKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5o
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5C
b2R5KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKwogMjAyMS0w
OC0wNCAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFN0
b3AgdHJhY2tpbmcgZm9ybSBlbGVtZW50cyB3aXRoIEZvcm1Db250cm9sbGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA3MWFkOWM1ZGYzODY1NjU4YTk3OTYxMDg0ZGU2YzgwNjQwMGQwYTJk
Li4yMjU5NjFmOWY3NzkxZjY2ZTJkOWQ5ZWQzMjVjMzliMzllNzZkODJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJIVE1MQmFzZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb25zdHJ1Y3Rpb25TaXRlLmgiCiAjaW5jbHVkZSAiSFRN
TERpYWxvZ0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudEZhY3RvcnkuaCIKQEAgLTY1MSw2ICs2NTIsNyBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJs
LCBEb2N1bQogICAgICwgbV91bmRvTWFuYWdlcihVbmRvTWFuYWdlcjo6Y3JlYXRlKCp0aGlzKSkK
ICAgICAsIG1fZWRpdG9yKG1ha2VVbmlxdWVSZWY8RWRpdG9yPigqdGhpcykpCiAgICAgLCBtX3Nl
bGVjdGlvbihtYWtlVW5pcXVlUmVmPEZyYW1lU2VsZWN0aW9uPih0aGlzKSkKKyAgICAsIG1fd2hp
dGVzcGFjZUNhY2hlKG1ha2VVbmlxdWVSZWY8V2hpdGVzcGFjZUNhY2hlPigpKQogewogICAgIGFk
ZFRvRG9jdW1lbnRzTWFwKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2EzNzEzMDIzNzIy
MGIyOWQwMjdkYzk4NjRjMzQzMjM4ZGVkODA3Zi4uNjM3NmYzOGQ5ZDFkZWQxNWRhNTYzZGY4NzQz
YzkwYTMxMjAyOTk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTIzMyw2ICsyMzMsNyBAQCBj
bGFzcyBWaXNpdGVkTGlua1N0YXRlOwogY2xhc3MgV2ViQW5pbWF0aW9uOwogY2xhc3MgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKK2NsYXNzIFdo
aXRlc3BhY2VDYWNoZTsKIGNsYXNzIFdpbmRvd0V2ZW50TG9vcDsKIGNsYXNzIFdpbmRvd1Byb3h5
OwogY2xhc3MgWFBhdGhFdmFsdWF0b3I7CkBAIC0xNTE2LDYgKzE1MTcsOCBAQCBwdWJsaWM6CiAK
ICAgICBIVE1MRGlhbG9nRWxlbWVudCogYWN0aXZlTW9kYWxEaWFsb2coKSBjb25zdDsKIAorICAg
IFdoaXRlc3BhY2VDYWNoZSYgd2hpdGVzcGFjZUNhY2hlKCkgeyByZXR1cm4gbV93aGl0ZXNwYWNl
Q2FjaGU7IH0KKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW5z
ZXJ0QXR0YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CkBAIC0yMjA3LDYg
KzIyMTAsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxGcmFtZVNlbGVjdGlvbj4gbV9zZWxl
Y3Rpb247CiAKICAgICBMaXN0SGFzaFNldDxSZWY8RWxlbWVudD4+IG1fdG9wTGF5ZXJFbGVtZW50
czsKKyAgICBVbmlxdWVSZWY8V2hpdGVzcGFjZUNhY2hlPiBtX3doaXRlc3BhY2VDYWNoZTsKIH07
CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHAKaW5kZXggMzczMzJmZmQwY2JhOTgwMzY0NTBjMjJkYjUwZTY3NWQ5NDgwODU2ZS4uNGI5ODAx
MTcyMmNmODYwNDQ0MTE1N2FjZDMxNzI5ZTY1OGRlNDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtMjM0LDYgKzIz
NCw3IEBAIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpCiAgICAgLCBtX3JlZGlyZWN0QXR0YWNoVG9G
b3N0ZXJQYXJlbnQoZmFsc2UpCiAgICAgLCBtX21heGltdW1ET01UcmVlRGVwdGgobWF4aW11bURP
TVRyZWVEZXB0aCkKICAgICAsIG1faW5RdWlya3NNb2RlKGRvY3VtZW50LmluUXVpcmtzTW9kZSgp
KQorICAgICwgbV93aGl0ZXNwYWNlQ2FjaGUoZG9jdW1lbnQud2hpdGVzcGFjZUNhY2hlKCkpCiB7
CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50Lmlz
WEhUTUxEb2N1bWVudCgpKTsKIH0KQEAgLTI0Niw2ICsyNDcsNyBAQCBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6SFRNTENvbnN0cnVjdGlvblNpdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIFBh
cnNlckNvbgogICAgICwgbV9yZWRpcmVjdEF0dGFjaFRvRm9zdGVyUGFyZW50KGZhbHNlKQogICAg
ICwgbV9tYXhpbXVtRE9NVHJlZURlcHRoKG1heGltdW1ET01UcmVlRGVwdGgpCiAgICAgLCBtX2lu
UXVpcmtzTW9kZShmcmFnbWVudC5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKQorICAgICwgbV93
aGl0ZXNwYWNlQ2FjaGUoZnJhZ21lbnQuZG9jdW1lbnQoKS53aGl0ZXNwYWNlQ2FjaGUoKSkKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQuaXNY
SFRNTERvY3VtZW50KCkpOwogfQpAQCAtNTc0LDEwICs1NzYsNiBAQCB2b2lkIEhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMsIFdoaXRl
c3BhY2VNbwogICAgIGlmIChzaG91bGRGb3N0ZXJQYXJlbnQoKSkKICAgICAgICAgZmluZEZvc3Rl
clNpdGUodGFzayk7CiAKLSAgICAvLyBTdHJpbmdzIGNvbXBvc2VkIGVudGlyZWx5IG9mIHdoaXRl
c3BhY2UgYXJlIGxpa2VseSB0byBiZSByZXBlYXRlZC4KLSAgICAvLyBUdXJuIHRoZW0gaW50byBB
dG9tU3RyaW5nIHNvIHdlIHNoYXJlIGEgc2luZ2xlIHN0cmluZyBmb3IgZWFjaC4KLSAgICBib29s
IHNob3VsZFVzZUF0b21TdHJpbmcgPSB3aGl0ZXNwYWNlTW9kZSA9PSBBbGxXaGl0ZXNwYWNlIHx8
ICh3aGl0ZXNwYWNlTW9kZSA9PSBXaGl0ZXNwYWNlVW5rbm93biAmJiBpc0FsbFdoaXRlc3BhY2Uo
Y2hhcmFjdGVycykpOwotCiAgICAgdW5zaWduZWQgY3VycmVudFBvc2l0aW9uID0gMDsKICAgICB1
bnNpZ25lZCBsZW5ndGhMaW1pdCA9IHNob3VsZFVzZUxlbmd0aExpbWl0KCp0YXNrLnBhcmVudCkg
PyBUZXh0OjpkZWZhdWx0TGVuZ3RoTGltaXQgOiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCk7CiAKQEAgLTU5MiwxMSArNTkwLDEzIEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1v
CiAgICAgfQogCiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlvbiA8IGNoYXJhY3RlcnMubGVuZ3Ro
KCkpIHsKLSAgICAgICAgYXV0byB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZVdpdGhMZW5ndGhMaW1p
dCh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxkVXNlQXRvbVN0cmluZyA/IEF0b21TdHJp
bmcoY2hhcmFjdGVycykuc3RyaW5nKCkgOiBjaGFyYWN0ZXJzLCBjdXJyZW50UG9zaXRpb24sIGxl
bmd0aExpbWl0KTsKKyAgICAgICAgQXRvbVN0cmluZyBjaGFyYWN0ZXJzQXRvbSA9IG1fd2hpdGVz
cGFjZUNhY2hlLmxvb2t1cChjaGFyYWN0ZXJzLCB3aGl0ZXNwYWNlTW9kZSk7CisgICAgICAgIGF1
dG8gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQodGFzay5wYXJlbnQtPmRv
Y3VtZW50KCksIGNoYXJhY3RlcnNBdG9tLmlzTnVsbCgpID8gY2hhcmFjdGVycyA6IGNoYXJhY3Rl
cnNBdG9tLnN0cmluZygpLCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aExpbWl0KTsKICAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBhIHdob2xlIHN0cmluZyBvZiB1bmJyZWFrYWJsZSBjaGFyYWN0ZXJzIHRo
ZSBhYm92ZSBjb3VsZCBsZWFkIHRvIGFuIGluZmluaXRlIGxvb3AuIEV4Y2VlZGluZyB0aGUgbGVu
Z3RoIGxpbWl0IGlzIHRoZSBsZXNzZXIgZXZpbC4KICAgICAgICAgaWYgKCF0ZXh0Tm9kZS0+bGVu
Z3RoKCkpIHsKICAgICAgICAgICAgIFN0cmluZyBzdWJzdHJpbmcgPSBjaGFyYWN0ZXJzLnN1YnN0
cmluZyhjdXJyZW50UG9zaXRpb24pOwotICAgICAgICAgICAgdGV4dE5vZGUgPSBUZXh0OjpjcmVh
dGUodGFzay5wYXJlbnQtPmRvY3VtZW50KCksIHNob3VsZFVzZUF0b21TdHJpbmcgPyBBdG9tU3Ry
aW5nKHN1YnN0cmluZykuc3RyaW5nKCkgOiBzdWJzdHJpbmcpOworICAgICAgICAgICAgQXRvbVN0
cmluZyBzdWJzdHJpbmdBdG9tID0gbV93aGl0ZXNwYWNlQ2FjaGUubG9va3VwKHN1YnN0cmluZywg
d2hpdGVzcGFjZU1vZGUpOworICAgICAgICAgICAgdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUodGFz
ay5wYXJlbnQtPmRvY3VtZW50KCksIHN1YnN0cmluZ0F0b20uaXNOdWxsKCkgPyBzdWJzdHJpbmcg
OiBzdWJzdHJpbmdBdG9tLnN0cmluZygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGN1cnJlbnRQ
b3NpdGlvbiArPSB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CkBAIC04MTEsNCArODExLDEwNiBAQCB2b2lk
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpmb3N0ZXJQYXJlbnQoUmVmPE5vZGU+JiYgbm9kZSkKICAg
ICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKKy8vIENvbXB1dGUgYSA2
NCBiaXQgY29kZSB0aGF0IHJlcHJlc2VudHMgYSB3aGl0ZXNwYWNlLW9ubHkgc3RyaW5nJ3MgY29u
dGVudHMuCisvLworLy8gVGhlIGNvZGUgZm9ybWF0IGlzIGEgc2VxdWVuY2Ugb2YgZm91ciBwYWly
cyBvZiBhbiA4IGJpdCB3aGl0ZXNwYWNlIGNoYXJhY3RlcgorLy8gYW5kIGFuIDggYml0IGNvdW50
IG9mIHRoYXQgY2hhcmFjdGVyLiBGb3IgZXhhbXBsZSwgMHgwQV8wMl8yMF8wOCByZXByZXNlbnRz
CisvLyB0d28gbmV3bGluZXMgZm9sbG93ZWQgYnkgZWlnaHQgc3BhY2UgY2hhcmFjdGVycy4KKy8v
CisvLyBSZXR1cm5zIDAgaWYgYW55IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYXJlIGZvdW5k
LgorLy8KKy8vIFJldHVybnMgLTEgaWYgdGhlIGNvZGUgd291bGQgb3ZlcmZsb3cgZHVlIHRvIGZp
bmRpbmcgbW9yZSB0aGFuIGZvdXIKKy8vIHdoaXRlc3BhY2UgY2hhcmFjdGVyIHJ1bnMuCit0ZW1w
bGF0ZTxXaGl0ZXNwYWNlTW9kZSB3aGl0ZXNwYWNlTW9kZT4KK3VpbnQ2NF90IFdoaXRlc3BhY2VD
YWNoZTo6Y29kZUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBBU1NFUlQo
d2hpdGVzcGFjZU1vZGUgIT0gTm90QWxsV2hpdGVzcGFjZSk7CisgICAgQVNTRVJUKHN0cmluZy5p
czhCaXQoKSk7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoc3Ry
aW5nLmxlbmd0aCgpIDw9IG1heGltdW1DYWNoZWRTdHJpbmdMZW5ndGgpOworICAgIHN0YXRpY19h
c3NlcnQobWF4aW11bUNhY2hlZFN0cmluZ0xlbmd0aCA8PSAweEZGLCAiQ29kZSBmb3JtYXQgcmVx
dWlyZXMgd2hpdGVzcGFjZSBydW4gbGVuZ3RoIGZpdCBpbiBvbmUgYnl0ZSIpOworCisgICAgYXV0
byBzdGFydE9mUnVuID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7CisKKyAgICBpZiBjb25zdGV4cHIg
KHdoaXRlc3BhY2VNb2RlID09IFdoaXRlc3BhY2VVbmtub3duKSB7CisgICAgICAgIGlmICghaXNI
VE1MU3BhY2UoKnN0YXJ0T2ZSdW4pKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgTENoYXIgY3VycmVudFdoaXRlc3BhY2VDaGFyYWN0ZXIgPSAqc3RhcnRPZlJ1bjsKKyAgICBh
dXRvIGNoYXJhY3RlciA9IHN0YXJ0T2ZSdW4gKyAxOworICAgIGF1dG8gZW5kID0gc3RhcnRPZlJ1
biArIHN0cmluZy5sZW5ndGgoKTsKKworICAgIHVpbnQ2NF90IGNvZGUgPSAwOworICAgIGludCBy
dW5zUmVtYWluaW5nID0gNDsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgd2hpbGUgKGNoYXJh
Y3RlciAhPSBlbmQgJiYgKmNoYXJhY3RlciA9PSBjdXJyZW50V2hpdGVzcGFjZUNoYXJhY3RlcikK
KyAgICAgICAgICAgICsrY2hhcmFjdGVyOworCisgICAgICAgIGlmIGNvbnN0ZXhwciAod2hpdGVz
cGFjZU1vZGUgPT0gV2hpdGVzcGFjZVVua25vd24pIHsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0
ZXIgIT0gZW5kICYmICFpc0hUTUxTcGFjZSgqY2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNvZGUgPDw9IDE2OworICAgICAgICBjb2Rl
IHw9IChjdXJyZW50V2hpdGVzcGFjZUNoYXJhY3RlciA8PCA4KTsKKyAgICAgICAgY29kZSB8PSAo
ZW5kIC0gc3RhcnRPZlJ1bik7CisKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBlbmQpCisgICAg
ICAgICAgICByZXR1cm4gY29kZTsKKworICAgICAgICBpZiAoIS0tcnVuc1JlbWFpbmluZykKKyAg
ICAgICAgICAgIHJldHVybiBvdmVyZmxvd1doaXRlc3BhY2VDb2RlOworCisgICAgICAgIHN0YXJ0
T2ZSdW4gPSBjaGFyYWN0ZXI7CisgICAgICAgIGN1cnJlbnRXaGl0ZXNwYWNlQ2hhcmFjdGVyID0g
KmNoYXJhY3RlcjsKKyAgICAgICAgKytjaGFyYWN0ZXI7CisKKyAgICAgICAgQVNTRVJUKGlzSFRN
TFNwYWNlKGN1cnJlbnRXaGl0ZXNwYWNlQ2hhcmFjdGVyKSk7CisgICAgfQorCisgICAgcmV0dXJu
IGNvZGU7Cit9CisKK0F0b21TdHJpbmcgV2hpdGVzcGFjZUNhY2hlOjpsb29rdXAoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIFdoaXRlc3BhY2VNb2RlIHdoaXRlc3BhY2VNb2RlKQoreworICAgIGlmICh3
aGl0ZXNwYWNlTW9kZSA9PSBOb3RBbGxXaGl0ZXNwYWNlIHx8ICFzdHJpbmcuaXM4Qml0KCkgfHwg
c3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoKTsKKworICAgIHNp
emVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+IG1heGltdW1D
YWNoZWRTdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVybiB3aGl0ZXNwYWNlTW9kZSA9PSBBbGxX
aGl0ZXNwYWNlIHx8IGlzQWxsV2hpdGVzcGFjZShzdHJpbmcpID8gQXRvbVN0cmluZyhzdHJpbmcp
IDogQXRvbVN0cmluZygpOworCisgICAgc2l6ZV90IGNvZGU7CisgICAgaWYgKHdoaXRlc3BhY2VN
b2RlID09IEFsbFdoaXRlc3BhY2UpCisgICAgICAgIGNvZGUgPSBjb2RlRm9yU3RyaW5nPEFsbFdo
aXRlc3BhY2U+KHN0cmluZyk7CisgICAgZWxzZQorICAgICAgICBjb2RlID0gY29kZUZvclN0cmlu
ZzxXaGl0ZXNwYWNlVW5rbm93bj4oc3RyaW5nKTsKKworICAgIGlmICghY29kZSkKKyAgICAgICAg
cmV0dXJuIEF0b21TdHJpbmcoKTsKKworICAgIGlmIChtX2NvZGVzW2xlbmd0aF0gPT0gY29kZSkg
eworICAgICAgICBBU1NFUlQobV9hdG9tc1ttX2luZGV4ZXNbbGVuZ3RoXV0gPT0gc3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuIG1fYXRvbXNbbV9pbmRleGVzW2xlbmd0aF1dOworICAgIH0KKworICAg
IGlmIChjb2RlID09IG92ZXJmbG93V2hpdGVzcGFjZUNvZGUpCisgICAgICAgIHJldHVybiBBdG9t
U3RyaW5nKHN0cmluZyk7CisKKyAgICBpZiAobV9jb2Rlc1tsZW5ndGhdKSB7CisgICAgICAgIEF0
b21TdHJpbmcgd2hpdGVzcGFjZUF0b20oc3RyaW5nKTsKKyAgICAgICAgbV9jb2Rlc1tsZW5ndGhd
ID0gY29kZTsKKyAgICAgICAgbV9hdG9tc1ttX2luZGV4ZXNbbGVuZ3RoXV0gPSB3aGl0ZXNwYWNl
QXRvbTsKKyAgICAgICAgcmV0dXJuIHdoaXRlc3BhY2VBdG9tOworICAgIH0KKworICAgIEF0b21T
dHJpbmcgd2hpdGVzcGFjZUF0b20oc3RyaW5nKTsKKyAgICBtX2NvZGVzW2xlbmd0aF0gPSBjb2Rl
OworICAgIG1faW5kZXhlc1tsZW5ndGhdID0gbV9hdG9tcy5zaXplKCk7CisgICAgbV9hdG9tcy5h
cHBlbmQod2hpdGVzcGFjZUF0b20pOworICAgIHJldHVybiB3aGl0ZXNwYWNlQXRvbTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmgKaW5kZXggYzQxZmE3OTI0ZWFkMTJiMDk1YzRlZjc0NTNhZTJhZjRhMDUwMjE5Ny4uZDIzNGQ4
MjNmYWU3ZWEzODMxZTAzMWFjNmViMDk0NDJkYjg5YzhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCkBAIC04NSw2ICs4NSw3IEBA
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsK
IGNsYXNzIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTsKK2NsYXNzIFdoaXRlc3BhY2VDYWNoZTsK
IAogY2xhc3MgSFRNTENvbnN0cnVjdGlvblNpdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEhUTUxDb25zdHJ1Y3Rpb25TaXRlKTsKQEAgLTIxOSw2ICsyMjAsMjkgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX21heGltdW1ET01UcmVlRGVwdGg7CiAKICAgICBib29sIG1faW5RdWlya3NN
b2RlOworCisgICAgV2hpdGVzcGFjZUNhY2hlJiBtX3doaXRlc3BhY2VDYWNoZTsKK307CisKK2Ns
YXNzIFdoaXRlc3BhY2VDYWNoZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgV2hpdGVzcGFjZUNhY2hlKCkgPSBkZWZhdWx0OworCisgICAgQXRvbVN0cmluZyBs
b29rdXAoY29uc3QgU3RyaW5nJiwgV2hpdGVzcGFjZU1vZGUpOworCitwcml2YXRlOgorICAgIHRl
bXBsYXRlPFdoaXRlc3BhY2VNb2RlPiB1aW50NjRfdCBjb2RlRm9yU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgY29uc3RleHByIHN0YXRpYyB1aW50NjRfdCBvdmVyZmxvd1doaXRlc3BhY2VD
b2RlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0xKTsKKyAgICBjb25zdGV4cHIgc3RhdGljIHNp
emVfdCBtYXhpbXVtQ2FjaGVkU3RyaW5nTGVuZ3RoID0gMTI4OworCisgICAgLy8gUGFyYWxsZWwg
YXJyYXlzIHN0b3JpbmcgYSA2NCBiaXQgY29kZSBhbmQgYW4gaW5kZXggaW50byBtX2F0b21zIGZv
ciB0aGUKKyAgICAvLyBtb3N0IHJlY2VudGx5IGF0b21pemVkIHdoaXRlc3BhY2Utb25seSBzdHJp
bmcgb2YgYSBnaXZlbiBsZW5ndGguCisgICAgdWludDY0X3QgbV9jb2Rlc1ttYXhpbXVtQ2FjaGVk
U3RyaW5nTGVuZ3RoXSB7IDAgfTsKKyAgICB1aW50OF90IG1faW5kZXhlc1ttYXhpbXVtQ2FjaGVk
U3RyaW5nTGVuZ3RoXSB7IDAgfTsKKworICAgIFZlY3RvcjxBdG9tU3RyaW5nLCBtYXhpbXVtQ2Fj
aGVkU3RyaW5nTGVuZ3RoPiBtX2F0b21zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXgg
YmQ0ZGMxOTk3ZjNkMjE5M2JlYjdjNTlkOGMxMTU4ZDQxN2JlZWMwMC4uZDkyZDhhMjZkYTRlMmZj
Y2IzMTY4YTI3YzI5MTIzNTlkNDdlYTRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yMjA2LDcgKzIyMDYsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKFdURk1vdmUoYVN0YXJ0VG9rZW4pKTsKICAgICBtX3RyZWUu
ZXhlY3V0ZVF1ZXVlZFRhc2tzKCk7Ci0gICAgbV90cmVlLmluc2VydFRleHROb2RlKHN0cmluZyk7
CisgICAgbV90cmVlLmluc2VydFRleHROb2RlKHN0cmluZywgTm90QWxsV2hpdGVzcGFjZSk7CiAg
ICAgcHJvY2Vzc0VuZFRhZyhXVEZNb3ZlKGFFbmRUb2tlbikpOwogfQogCkBAIC0yMjE1LDcgKzIy
MTUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogLy8gMi4gV3JhcHMgdGhlIHBob25lIG51bWJlciBpbiBhIHRlbDog
bGluay4KIC8vIDMuIEdvZXMgYmFjayB0byBzdGVwIDEgaWYgYSBwaG9uZSBudW1iZXIgaXMgZm91
bmQgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZy4KIC8vIDQuIEFwcGVuZHMgdGhlIHJlc3Qgb2Yg
dGhlIHN0cmluZyBhcyBhIHRleHQgbm9kZS4KLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5
UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OmxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFdoaXRlc3BhY2VNb2Rl
IHdoaXRlc3BhY2VNb2RlKQogewogICAgIEFTU0VSVChUZWxlcGhvbmVOdW1iZXJEZXRlY3Rvcjo6
aXNTdXBwb3J0ZWQoKSk7CiAKQEAgLTIyMzgsNyArMjIzOCw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiAgICAgICAg
IEFTU0VSVChzY2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZUVuZFBvc2l0aW9uIDwgbGVuZ3RoKTsK
IAotICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoc3RyaW5nLnN1YnN0cmluZyhzY2FubmVy
UG9zaXRpb24sIHJlbGF0aXZlU3RhcnRQb3NpdGlvbikpOworICAgICAgICBtX3RyZWUuaW5zZXJ0
VGV4dE5vZGUoc3RyaW5nLnN1YnN0cmluZyhzY2FubmVyUG9zaXRpb24sIHJlbGF0aXZlU3RhcnRQ
b3NpdGlvbiksIHdoaXRlc3BhY2VNb2RlKTsKICAgICAgICAgaW5zZXJ0UGhvbmVOdW1iZXJMaW5r
KHN0cmluZy5zdWJzdHJpbmcoc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9u
LCByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRpdmVTdGFydFBvc2l0aW9uICsgMSkpOwogCiAg
ICAgICAgIHNjYW5uZXJQb3NpdGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKQEAgLTIy
NDgsMTAgKzIyNDgsMTAgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJl
cnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaWYgKHNjYW5uZXJQb3NpdGlvbiA+IDApIHsK
ICAgICAgICAgaWYgKHNjYW5uZXJQb3NpdGlvbiA8IGxlbmd0aCkgewogICAgICAgICAgICAgU3Ry
aW5nIGFmdGVyID0gc3RyaW5nLnN1YnN0cmluZyhzY2FubmVyUG9zaXRpb24sIGxlbmd0aCAtIHNj
YW5uZXJQb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoYWZ0ZXIp
OworICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGFmdGVyLCB3aGl0ZXNwYWNlTW9k
ZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgbV90cmVlLmluc2VydFRleHROb2Rl
KHN0cmluZyk7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShzdHJpbmcsIHdoaXRlc3Bh
Y2VNb2RlKTsKIH0KIAogLy8gTG9va3MgYXQgdGhlIGFuY2VzdG9ycyBvZiB0aGUgZWxlbWVudCB0
byBkZXRlcm1pbmUgd2hldGhlciB3ZSdyZSBpbnNpZGUgYW4gZWxlbWVudCB3aGljaCBkaXNhbGxv
d3MgcGFyc2luZyBwaG9uZSBudW1iZXJzLgpAQCAtMjQzMCwxNCArMjQzMCwxNSBAQCBSZXByb2Nl
c3NCdWZmZXI6CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZv
ckluQm9keShFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgbV90
cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7CisgICAgYXV0byB3
aGl0ZXNwYWNlTW9kZSA9IGJ1ZmZlci5pc0FsbDhCaXREYXRhKCkgPyBXaGl0ZXNwYWNlVW5rbm93
biA6IE5vdEFsbFdoaXRlc3BhY2U7CiAgICAgU3RyaW5nIGNoYXJhY3RlcnMgPSBidWZmZXIudGFr
ZVJlbWFpbmluZygpOwogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkgJiYgbV90
cmVlLmlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoKSAmJiBzaG91bGRQYXJzZVRlbGVw
aG9uZU51bWJlcnNJbk5vZGUobV90cmVlLmN1cnJlbnROb2RlKCkpICYmIFRlbGVwaG9uZU51bWJl
ckRldGVjdG9yOjppc1N1cHBvcnRlZCgpKQotICAgICAgICBsaW5raWZ5UGhvbmVOdW1iZXJzKGNo
YXJhY3RlcnMpOworICAgICAgICBsaW5raWZ5UGhvbmVOdW1iZXJzKGNoYXJhY3RlcnMsIHdoaXRl
c3BhY2VNb2RlKTsKICAgICBlbHNlCi0gICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFy
YWN0ZXJzKTsKKyAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMsIHdoaXRl
c3BhY2VNb2RlKTsKICNlbHNlCi0gICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMp
OworICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzLCB3aGl0ZXNwYWNlTW9kZSk7
CiAjZW5kaWYKICAgICBpZiAobV9mcmFtZXNldE9rICYmICFpc0FsbFdoaXRlc3BhY2VPclJlcGxh
Y2VtZW50Q2hhcmFjdGVycyhjaGFyYWN0ZXJzKSkKICAgICAgICAgbV9mcmFtZXNldE9rID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4
IGRkODA5Mjk1YmMzMzdkZWMwMDdmMjIzNjg1ODNlZjdlODAwOGI2MDEuLjRjYmQ0NTAxZmUyNjQw
YTQ2N2VmMDAwZjQxZjkxZWUwMjNlOTM2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIGluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmKTsKLSAgICB2
b2lkIGxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBsaW5raWZ5
UGhvbmVOdW1iZXJzKGNvbnN0IFN0cmluZyYsIFdoaXRlc3BhY2VNb2RlKTsKICNlbmRpZgogCiAg
ICAgdm9pZCBwcm9jZXNzVG9rZW4oQXRvbUhUTUxUb2tlbiYmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435138</attachid>
            <date>2021-08-07 17:10:47 -0700</date>
            <delta_ts>2021-08-08 23:52:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228858-20210808101045.patch</filename>
            <type>text/plain</type>
            <size>17996</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRkZGE0MzNmNTEyNDBh
NjE2N2E0N2Y0MTZmODIzNDNlYmQ3N2QwYy4uOWMyMGRiNGYwZDg2ZGJkMGRmZWJkNGU5N2UxOGYy
MDkxNzM1NzMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA4LTA2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgcmVjZW50
bHkgYXRvbWl6ZWQgYWxsLXdoaXRlc3BhY2Ugc3RyaW5ncyBmb3IgdXNlIGJ5IHRoZSBIVE1MIHBh
cnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
ODU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
aGF2ZSBhIG1lbW9yeSBvcHRpbWl6YXRpb24gd2hlcmUgdGhlIEhUTUwgcGFyc2VyIHdpbGwgYXRv
bWl6ZSBhbnkKKyAgICAgICAgdGV4dCBub2RlIHN0cmluZyB0aGF0IGlzIGFsbCB3aGl0ZXNwYWNl
LiAgVGhpcyBjYW4gYmUgZXhwZW5zaXZlLAorICAgICAgICBhcyB3ZSBuZWVkIHRvIGxvb3Agb3Zl
ciB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVycyB0aHJlZSB0aW1lczogdG8gZGV0ZWN0CisgICAgICAg
IHRoYXQgaXQgaXMgaW5kZWVkIGFsbCB3aGl0ZXNwYWNlLCB0byBoYXNoIHRoZSBzdHJpbmcsIGFu
ZCB0byBjb21wYXJlCisgICAgICAgIHRvIGFueSBleGlzdGluZyBlbnRyeSBpbiB0aGUgYXRvbSBo
YXNoIHRhYmxlLgorCisgICAgICAgIE1hbnkgd2hpdGVzcGFjZSBzdHJpbmdzIGVuY291bnRlcmVk
IGR1cmluZyBwYXJzaW5nIGhhdmUgYSBsaW1pdGVkCisgICAgICAgIGZvcm0gLS0gdGhleSBoYXZl
IGEgZmV3IHJ1bnMgb2YgY29uc2VjdXRpdmUgZXF1YWwgd2hpdGVzcGFjZQorICAgICAgICBjaGFy
YWN0ZXJzLCBlLmcuIGl0J3MgY29tbW9uIHRvIHNlZSBhIG5ld2xpbmUgZm9sbG93ZWQgYnkgYSBu
dW1iZXIKKyAgICAgICAgb2Ygc3BhY2UgY2hhcmFjdGVycy4gIFdlIGNhbiB0YWtlIGFkdmFudGFn
ZSBvZiB0aGlzIGJ5IGNvbXByZXNzaW5nCisgICAgICAgIHRoZSB3aGl0ZXNwYWNlIHN0cmluZyBp
bnRvIGEgc2ltcGxlIHJ1bi1sZW5ndGggZW5jb2RlZCBmb3JtIHdoaWxlCisgICAgICAgIHdlIGxv
b3Agb3ZlciB0aGUgY2hhcmFjdGVycyB0byBjaGVjayB0aGF0IHRoZSBzdHJpbmcgaXMgYWxsCisg
ICAgICAgIHdoaXRlc3BhY2UuICBVbmxpa2UgYSBoYXNoLCB0aGlzIGVuY29kZWQgZm9ybSBwZXJm
ZWN0bHkgaWRlbnRpZmllcyB0aGUKKyAgICAgICAgc3RyaW5nIGNvbnRlbnQuCisKKyAgICAgICAg
V2UgYWRkIGEgV2hpdGVzcGFjZUNhY2hlIHRoYXQgaXMgb3duZWQgYnkgdGhlIERvY3VtZW50LCB3
aGljaCBzdG9yZXMKKyAgICAgICAgdGhlIG1vc3QgcmVjZW50bHkgYXRvbWl6ZWQgYWxsLXdoaXRl
c3BhY2Ugc3RyaW5nIGVuY291bnRlcmVkIGJ5IHRoZQorICAgICAgICBwYXJzZXIgZm9yIGEgZ2l2
ZW4gbGVuZ3RoLCBhbmQga2V5cyBpdCB3aXRoIHRoZSBlbmNvZGVkIGZvcm0uICBUaGUKKyAgICAg
ICAgcGFyc2VyIGNhbiB0aGVuIGxvb2sgdXAgdGhlIFdoaXRlc3BhY2VDYWNoZSBhbmQgZmluZCBh
biBBdG9tU3RyaW5nCisgICAgICAgIHdpdGhvdXQgdGhlIG5lZWQgdG8gcGVyZm9ybSBhIGxvb2t1
cCBpbiB0aGUgYXRvbSBoYXNoIHRhYmxlLgorCisgICAgICAgIFRoZSBXaGl0ZXNwYWNlQ2FjaGUg
Y29udGludWVzIHRvIGhvbGQgb24gdG8gdGhlIGNhY2hlZCB3aGl0ZXNwYWNlCisgICAgICAgIGF0
b21zIGZvciB0aGUgbGlmZSBvZiB0aGUgZG9jdW1lbnQuICBUaGUgV2hpdGVzcGFjZUNhY2hlIGl0
c2VsZgorICAgICAgICB0YWtlcyBhIGJpdCBvdmVyIDEgS2lCIHdoZW4gZW1wdHksIGFuZCBpZiBj
b21wbGV0ZWx5IHBvcHVsYXRlZCB3b3VsZAorICAgICAgICB0YWtlIGEgYml0IG92ZXIgMiBLaUIg
cGx1cyA4IEtpQiBvZiBhdG9tIHN0cmluZyBkYXRhIChhIDEgYnl0ZSBzdHJpbmcsCisgICAgICAg
IHBsdXMgYSAyIGJ5dGUgc3RyaW5nLCBwbHVzIGEgMyBieXRlIHN0cmluZywgZXRjLikuICBUaGlz
IGRvZXNuJ3Qgc2VlbQorICAgICAgICBoaWdoIGVub3VnaCB0byBiZSB3b3J0aCBjbGVhcmluZyB0
aGlzIG91dCBqdXN0IHRvIGF2b2lkIG1lbW9yeSB1c2FnZQorICAgICAgICBmcm9tIHRleHQgbm9k
ZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudC4KKworICAgICAgICBX
ZSBoYXZlIHRoZSBEb2N1bWVudCBvd24gdGhlIFdoaXRlc3BhY2VDYWNoZSBzbyB0aGF0IGl0J3Mg
bm90IGp1c3QgdGhlCisgICAgICAgIGluaXRpYWwgZG9jdW1lbnQgbG9hZCwgYnV0IGFueSB1c2Vz
IG9mIGlubmVySFRNTCBvciBvdGhlciBmcmFnbWVudAorICAgICAgICBwYXJzaW5nIEFQSXMsIHRo
YXQgY2FuIHJlLXVzZSBwcmV2aW91c2x5IGF0b21pemVkIHdoaXRlc3BhY2Ugc3RyaW5ncy4KKwor
ICAgICAgICBUaGUgY2hvaWNlIG9mIFdoaXRlc3BhY2VDYWNoZTo6bWF4aW11bUNhY2hlZFN0cmlu
Z0xlbmd0aCA9IDEyOCBpcworICAgICAgICBzb21ld2hhdCBhcmJpdHJhcnkuICBUaGUgdmFsdWUg
bXVzdCBiZSA8PSAyNTUgdG8gYXZvaWQgb3ZlcmZsb3dpbmcKKyAgICAgICAgdGhlIHNwZWNpZmlj
IDY0IGJpdCBjb2RlIGZvcm1hdCB1c2VkIHRvIGVuY29kZSB0aGUgd2hpdGVzcGFjZSBzdHJpbmcu
CisgICAgICAgIFRlc3Rpbmcgb24gU3BlZWRvbWV0ZXIgc2hvd3Mgd2hpdGVzcGFjZSBzdHJpbmdz
IG9ubHkgdXAgdG8gbGVuZ3RoIDI2LAorICAgICAgICBidXQgaXQgbWF5IGJlIHdvcnRoIHRlc3Rp
bmcgb3RoZXIgY29udGVudCB0byBzZWUgaWYgaXQncyB3b3J0aAorICAgICAgICByZWR1Y2luZyBt
YXhpbXVtQ2FjaGVkU3RyaW5nTGVuZ3RoLgorCisgICAgICAgIFdoZW4gcnVubmluZyBTcGVlZG9t
ZXRlciAyLCBubyBlbnRyaWVzIGluIHRoZSBjYWNoZSBldmVyIGdldCByZXBsYWNlZAorICAgICAg
ICBieSBhIGRpZmZlcmVudCB3aGl0ZXNwYWNlIHN0cmluZyBvZiB0aGUgc2FtZSBsZW5ndGgsIGFu
ZCAxNiB1bmlxdWUKKyAgICAgICAgd2hpdGVzcGFjZSBzdHJpbmcgbGVuZ3RocyBhcmUgZW5jb3Vu
dGVyZWQuCisKKyAgICAgICAgV2UgZG9uJ3QgY29tcHV0ZSBjb2RlcyBmb3IgMTYgYml0IHN0cmlu
Z3MsIHNpbmNlIDE2IGJpdCBzdHJpbmdzIHBhc3NlZAorICAgICAgICBpbiB0byBXaGl0ZXNwYWNl
Q2FjaGU6Omxvb2t1cCgpIGFyZSBhbG1vc3QgYWx3YXlzIHRoZSBlbnRpcmV0eSBvZiBhbgorICAg
ICAgICBIVE1MVG9rZW4ncyBkYXRhLCBhbmQgSFRNTFRva2VuIHRyYWNrcyB3aGV0aGVyIGFueSAx
NiBiaXQgY2hhcmFjdGVycyBhcmUKKyAgICAgICAgcHJlc2VudC4gIElmIHRoZXJlIGFyZSBhbnks
IHRoZW4gd2Uga25vdyB0aGUgc3RyaW5nIGNhbm5vdCBiZSBhbGwKKyAgICAgICAgd2hpdGVzcGFj
ZSwgYW5kIHdlIHVzZSBhIFdoaXRlc3BhY2VNb2RlIHZhbHVlIG9mIE5vdEFsbFdoaXRlc3BhY2Ug
dG8KKyAgICAgICAgc2tpcCB0aGUgYXRvbWl6YXRpb24gYWx0b2dldGhlci4KKworICAgICAgICBU
aGlzIHBhdGNoIGlzIGFuIGFsbW9zdCAxJSBpbXByb3ZlbWVudCBvbiBTcGVlZG9tZXRlciAyLgor
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fd2hpdGVz
cGFjZUNhY2hlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp3aGl0ZXNwYWNlQ2FjaGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2hpdGVzcGFj
ZUNhY2hlOjpjb2RlRm9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlc3BhY2VDYWNo
ZTo6bG9va3VwKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5o
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5C
b2R5KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKwogMjAyMS0w
OC0wNCAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFN0
b3AgdHJhY2tpbmcgZm9ybSBlbGVtZW50cyB3aXRoIEZvcm1Db250cm9sbGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA3MWFkOWM1ZGYzODY1NjU4YTk3OTYxMDg0ZGU2YzgwNjQwMGQwYTJk
Li4yMjU5NjFmOWY3NzkxZjY2ZTJkOWQ5ZWQzMjVjMzliMzllNzZkODJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJIVE1MQmFzZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb25zdHJ1Y3Rpb25TaXRlLmgiCiAjaW5jbHVkZSAiSFRN
TERpYWxvZ0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudEZhY3RvcnkuaCIKQEAgLTY1MSw2ICs2NTIsNyBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJs
LCBEb2N1bQogICAgICwgbV91bmRvTWFuYWdlcihVbmRvTWFuYWdlcjo6Y3JlYXRlKCp0aGlzKSkK
ICAgICAsIG1fZWRpdG9yKG1ha2VVbmlxdWVSZWY8RWRpdG9yPigqdGhpcykpCiAgICAgLCBtX3Nl
bGVjdGlvbihtYWtlVW5pcXVlUmVmPEZyYW1lU2VsZWN0aW9uPih0aGlzKSkKKyAgICAsIG1fd2hp
dGVzcGFjZUNhY2hlKG1ha2VVbmlxdWVSZWY8V2hpdGVzcGFjZUNhY2hlPigpKQogewogICAgIGFk
ZFRvRG9jdW1lbnRzTWFwKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2EzNzEzMDIzNzIy
MGIyOWQwMjdkYzk4NjRjMzQzMjM4ZGVkODA3Zi4uNjM3NmYzOGQ5ZDFkZWQxNWRhNTYzZGY4NzQz
YzkwYTMxMjAyOTk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTIzMyw2ICsyMzMsNyBAQCBj
bGFzcyBWaXNpdGVkTGlua1N0YXRlOwogY2xhc3MgV2ViQW5pbWF0aW9uOwogY2xhc3MgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKK2NsYXNzIFdo
aXRlc3BhY2VDYWNoZTsKIGNsYXNzIFdpbmRvd0V2ZW50TG9vcDsKIGNsYXNzIFdpbmRvd1Byb3h5
OwogY2xhc3MgWFBhdGhFdmFsdWF0b3I7CkBAIC0xNTE2LDYgKzE1MTcsOCBAQCBwdWJsaWM6CiAK
ICAgICBIVE1MRGlhbG9nRWxlbWVudCogYWN0aXZlTW9kYWxEaWFsb2coKSBjb25zdDsKIAorICAg
IFdoaXRlc3BhY2VDYWNoZSYgd2hpdGVzcGFjZUNhY2hlKCkgeyByZXR1cm4gbV93aGl0ZXNwYWNl
Q2FjaGU7IH0KKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW5z
ZXJ0QXR0YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CkBAIC0yMjA3LDYg
KzIyMTAsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxGcmFtZVNlbGVjdGlvbj4gbV9zZWxl
Y3Rpb247CiAKICAgICBMaXN0SGFzaFNldDxSZWY8RWxlbWVudD4+IG1fdG9wTGF5ZXJFbGVtZW50
czsKKyAgICBVbmlxdWVSZWY8V2hpdGVzcGFjZUNhY2hlPiBtX3doaXRlc3BhY2VDYWNoZTsKIH07
CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHAKaW5kZXggMzczMzJmZmQwY2JhOTgwMzY0NTBjMjJkYjUwZTY3NWQ5NDgwODU2ZS4uMjFjNDQ1
MmFkMGJiYzRkZDliOGZlNWI1YmE0MTlhNjUyMzU4Y2YwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtMjM0LDYgKzIz
NCw3IEBAIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpCiAgICAgLCBtX3JlZGlyZWN0QXR0YWNoVG9G
b3N0ZXJQYXJlbnQoZmFsc2UpCiAgICAgLCBtX21heGltdW1ET01UcmVlRGVwdGgobWF4aW11bURP
TVRyZWVEZXB0aCkKICAgICAsIG1faW5RdWlya3NNb2RlKGRvY3VtZW50LmluUXVpcmtzTW9kZSgp
KQorICAgICwgbV93aGl0ZXNwYWNlQ2FjaGUoZG9jdW1lbnQud2hpdGVzcGFjZUNhY2hlKCkpCiB7
CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50Lmlz
WEhUTUxEb2N1bWVudCgpKTsKIH0KQEAgLTI0Niw2ICsyNDcsNyBAQCBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6SFRNTENvbnN0cnVjdGlvblNpdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIFBh
cnNlckNvbgogICAgICwgbV9yZWRpcmVjdEF0dGFjaFRvRm9zdGVyUGFyZW50KGZhbHNlKQogICAg
ICwgbV9tYXhpbXVtRE9NVHJlZURlcHRoKG1heGltdW1ET01UcmVlRGVwdGgpCiAgICAgLCBtX2lu
UXVpcmtzTW9kZShmcmFnbWVudC5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKQorICAgICwgbV93
aGl0ZXNwYWNlQ2FjaGUoZnJhZ21lbnQuZG9jdW1lbnQoKS53aGl0ZXNwYWNlQ2FjaGUoKSkKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQuaXNY
SFRNTERvY3VtZW50KCkpOwogfQpAQCAtNTc0LDEwICs1NzYsNiBAQCB2b2lkIEhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMsIFdoaXRl
c3BhY2VNbwogICAgIGlmIChzaG91bGRGb3N0ZXJQYXJlbnQoKSkKICAgICAgICAgZmluZEZvc3Rl
clNpdGUodGFzayk7CiAKLSAgICAvLyBTdHJpbmdzIGNvbXBvc2VkIGVudGlyZWx5IG9mIHdoaXRl
c3BhY2UgYXJlIGxpa2VseSB0byBiZSByZXBlYXRlZC4KLSAgICAvLyBUdXJuIHRoZW0gaW50byBB
dG9tU3RyaW5nIHNvIHdlIHNoYXJlIGEgc2luZ2xlIHN0cmluZyBmb3IgZWFjaC4KLSAgICBib29s
IHNob3VsZFVzZUF0b21TdHJpbmcgPSB3aGl0ZXNwYWNlTW9kZSA9PSBBbGxXaGl0ZXNwYWNlIHx8
ICh3aGl0ZXNwYWNlTW9kZSA9PSBXaGl0ZXNwYWNlVW5rbm93biAmJiBpc0FsbFdoaXRlc3BhY2Uo
Y2hhcmFjdGVycykpOwotCiAgICAgdW5zaWduZWQgY3VycmVudFBvc2l0aW9uID0gMDsKICAgICB1
bnNpZ25lZCBsZW5ndGhMaW1pdCA9IHNob3VsZFVzZUxlbmd0aExpbWl0KCp0YXNrLnBhcmVudCkg
PyBUZXh0OjpkZWZhdWx0TGVuZ3RoTGltaXQgOiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCk7CiAKQEAgLTU5MiwxMSArNTkwLDEzIEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1v
CiAgICAgfQogCiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlvbiA8IGNoYXJhY3RlcnMubGVuZ3Ro
KCkpIHsKLSAgICAgICAgYXV0byB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZVdpdGhMZW5ndGhMaW1p
dCh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxkVXNlQXRvbVN0cmluZyA/IEF0b21TdHJp
bmcoY2hhcmFjdGVycykuc3RyaW5nKCkgOiBjaGFyYWN0ZXJzLCBjdXJyZW50UG9zaXRpb24sIGxl
bmd0aExpbWl0KTsKKyAgICAgICAgQXRvbVN0cmluZyBjaGFyYWN0ZXJzQXRvbSA9IG1fd2hpdGVz
cGFjZUNhY2hlLmxvb2t1cChjaGFyYWN0ZXJzLCB3aGl0ZXNwYWNlTW9kZSk7CisgICAgICAgIGF1
dG8gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQodGFzay5wYXJlbnQtPmRv
Y3VtZW50KCksIGNoYXJhY3RlcnNBdG9tLmlzTnVsbCgpID8gY2hhcmFjdGVycyA6IGNoYXJhY3Rl
cnNBdG9tLnN0cmluZygpLCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aExpbWl0KTsKICAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBhIHdob2xlIHN0cmluZyBvZiB1bmJyZWFrYWJsZSBjaGFyYWN0ZXJzIHRo
ZSBhYm92ZSBjb3VsZCBsZWFkIHRvIGFuIGluZmluaXRlIGxvb3AuIEV4Y2VlZGluZyB0aGUgbGVu
Z3RoIGxpbWl0IGlzIHRoZSBsZXNzZXIgZXZpbC4KICAgICAgICAgaWYgKCF0ZXh0Tm9kZS0+bGVu
Z3RoKCkpIHsKICAgICAgICAgICAgIFN0cmluZyBzdWJzdHJpbmcgPSBjaGFyYWN0ZXJzLnN1YnN0
cmluZyhjdXJyZW50UG9zaXRpb24pOwotICAgICAgICAgICAgdGV4dE5vZGUgPSBUZXh0OjpjcmVh
dGUodGFzay5wYXJlbnQtPmRvY3VtZW50KCksIHNob3VsZFVzZUF0b21TdHJpbmcgPyBBdG9tU3Ry
aW5nKHN1YnN0cmluZykuc3RyaW5nKCkgOiBzdWJzdHJpbmcpOworICAgICAgICAgICAgQXRvbVN0
cmluZyBzdWJzdHJpbmdBdG9tID0gbV93aGl0ZXNwYWNlQ2FjaGUubG9va3VwKHN1YnN0cmluZywg
d2hpdGVzcGFjZU1vZGUpOworICAgICAgICAgICAgdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUodGFz
ay5wYXJlbnQtPmRvY3VtZW50KCksIHN1YnN0cmluZ0F0b20uaXNOdWxsKCkgPyBzdWJzdHJpbmcg
OiBzdWJzdHJpbmdBdG9tLnN0cmluZygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGN1cnJlbnRQ
b3NpdGlvbiArPSB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CkBAIC04MTEsNCArODExLDEwNiBAQCB2b2lk
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpmb3N0ZXJQYXJlbnQoUmVmPE5vZGU+JiYgbm9kZSkKICAg
ICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKKy8vIENvbXB1dGUgYSA2
NCBiaXQgY29kZSB0aGF0IHJlcHJlc2VudHMgYSB3aGl0ZXNwYWNlLW9ubHkgc3RyaW5nJ3MgY29u
dGVudHMuCisvLworLy8gVGhlIGNvZGUgZm9ybWF0IGlzIGEgc2VxdWVuY2Ugb2YgZm91ciBwYWly
cyBvZiBhbiA4IGJpdCB3aGl0ZXNwYWNlIGNoYXJhY3RlcgorLy8gYW5kIGFuIDggYml0IGNvdW50
IG9mIHRoYXQgY2hhcmFjdGVyLiBGb3IgZXhhbXBsZSwgMHgwQV8wMl8yMF8wOCByZXByZXNlbnRz
CisvLyB0d28gbmV3bGluZXMgZm9sbG93ZWQgYnkgZWlnaHQgc3BhY2UgY2hhcmFjdGVycy4KKy8v
CisvLyBSZXR1cm5zIDAgaWYgYW55IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYXJlIGZvdW5k
LgorLy8KKy8vIFJldHVybnMgLTEgaWYgdGhlIGNvZGUgd291bGQgb3ZlcmZsb3cgZHVlIHRvIGZp
bmRpbmcgbW9yZSB0aGFuIGZvdXIKKy8vIHdoaXRlc3BhY2UgY2hhcmFjdGVyIHJ1bnMuCit0ZW1w
bGF0ZTxXaGl0ZXNwYWNlTW9kZSB3aGl0ZXNwYWNlTW9kZT4KK3VpbnQ2NF90IFdoaXRlc3BhY2VD
YWNoZTo6Y29kZUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBBU1NFUlQo
d2hpdGVzcGFjZU1vZGUgIT0gTm90QWxsV2hpdGVzcGFjZSk7CisgICAgQVNTRVJUKHN0cmluZy5p
czhCaXQoKSk7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoc3Ry
aW5nLmxlbmd0aCgpIDw9IG1heGltdW1DYWNoZWRTdHJpbmdMZW5ndGgpOworICAgIHN0YXRpY19h
c3NlcnQobWF4aW11bUNhY2hlZFN0cmluZ0xlbmd0aCA8PSAweEZGLCAiQ29kZSBmb3JtYXQgcmVx
dWlyZXMgd2hpdGVzcGFjZSBydW4gbGVuZ3RoIGZpdCBpbiBvbmUgYnl0ZSIpOworCisgICAgYXV0
byBzdGFydE9mUnVuID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7CisKKyAgICBpZiBjb25zdGV4cHIg
KHdoaXRlc3BhY2VNb2RlID09IFdoaXRlc3BhY2VVbmtub3duKSB7CisgICAgICAgIGlmICghaXNI
VE1MU3BhY2UoKnN0YXJ0T2ZSdW4pKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgTENoYXIgY3VycmVudFdoaXRlc3BhY2VDaGFyYWN0ZXIgPSAqc3RhcnRPZlJ1bjsKKyAgICBh
dXRvIGNoYXJhY3RlciA9IHN0YXJ0T2ZSdW4gKyAxOworICAgIGF1dG8gZW5kID0gc3RhcnRPZlJ1
biArIHN0cmluZy5sZW5ndGgoKTsKKworICAgIHVpbnQ2NF90IGNvZGUgPSAwOworICAgIGludCBy
dW5zUmVtYWluaW5nID0gNDsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgd2hpbGUgKGNoYXJh
Y3RlciAhPSBlbmQgJiYgKmNoYXJhY3RlciA9PSBjdXJyZW50V2hpdGVzcGFjZUNoYXJhY3RlcikK
KyAgICAgICAgICAgICsrY2hhcmFjdGVyOworCisgICAgICAgIGlmIGNvbnN0ZXhwciAod2hpdGVz
cGFjZU1vZGUgPT0gV2hpdGVzcGFjZVVua25vd24pIHsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0
ZXIgIT0gZW5kICYmICFpc0hUTUxTcGFjZSgqY2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNvZGUgPDw9IDE2OworICAgICAgICBjb2Rl
IHw9IChjdXJyZW50V2hpdGVzcGFjZUNoYXJhY3RlciA8PCA4KTsKKyAgICAgICAgY29kZSB8PSAo
ZW5kIC0gc3RhcnRPZlJ1bik7CisKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBlbmQpCisgICAg
ICAgICAgICByZXR1cm4gY29kZTsKKworICAgICAgICBpZiAoIS0tcnVuc1JlbWFpbmluZykKKyAg
ICAgICAgICAgIHJldHVybiBvdmVyZmxvd1doaXRlc3BhY2VDb2RlOworCisgICAgICAgIHN0YXJ0
T2ZSdW4gPSBjaGFyYWN0ZXI7CisgICAgICAgIGN1cnJlbnRXaGl0ZXNwYWNlQ2hhcmFjdGVyID0g
KmNoYXJhY3RlcjsKKyAgICAgICAgKytjaGFyYWN0ZXI7CisKKyAgICAgICAgQVNTRVJUKGlzSFRN
TFNwYWNlKGN1cnJlbnRXaGl0ZXNwYWNlQ2hhcmFjdGVyKSk7CisgICAgfQorCisgICAgcmV0dXJu
IGNvZGU7Cit9CisKK0F0b21TdHJpbmcgV2hpdGVzcGFjZUNhY2hlOjpsb29rdXAoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIFdoaXRlc3BhY2VNb2RlIHdoaXRlc3BhY2VNb2RlKQoreworICAgIGlmICh3
aGl0ZXNwYWNlTW9kZSA9PSBOb3RBbGxXaGl0ZXNwYWNlIHx8ICFzdHJpbmcuaXM4Qml0KCkgfHwg
c3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoKTsKKworICAgIHNp
emVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+IG1heGltdW1D
YWNoZWRTdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVybiB3aGl0ZXNwYWNlTW9kZSA9PSBBbGxX
aGl0ZXNwYWNlIHx8IGlzQWxsV2hpdGVzcGFjZShzdHJpbmcpID8gQXRvbVN0cmluZyhzdHJpbmcp
IDogQXRvbVN0cmluZygpOworCisgICAgdWludDY0X3QgY29kZTsKKyAgICBpZiAod2hpdGVzcGFj
ZU1vZGUgPT0gQWxsV2hpdGVzcGFjZSkKKyAgICAgICAgY29kZSA9IGNvZGVGb3JTdHJpbmc8QWxs
V2hpdGVzcGFjZT4oc3RyaW5nKTsKKyAgICBlbHNlCisgICAgICAgIGNvZGUgPSBjb2RlRm9yU3Ry
aW5nPFdoaXRlc3BhY2VVbmtub3duPihzdHJpbmcpOworCisgICAgaWYgKCFjb2RlKQorICAgICAg
ICByZXR1cm4gQXRvbVN0cmluZygpOworCisgICAgaWYgKG1fY29kZXNbbGVuZ3RoXSA9PSBjb2Rl
KSB7CisgICAgICAgIEFTU0VSVChtX2F0b21zW21faW5kZXhlc1tsZW5ndGhdXSA9PSBzdHJpbmcp
OworICAgICAgICByZXR1cm4gbV9hdG9tc1ttX2luZGV4ZXNbbGVuZ3RoXV07CisgICAgfQorCisg
ICAgaWYgKGNvZGUgPT0gb3ZlcmZsb3dXaGl0ZXNwYWNlQ29kZSkKKyAgICAgICAgcmV0dXJuIEF0
b21TdHJpbmcoc3RyaW5nKTsKKworICAgIGlmIChtX2NvZGVzW2xlbmd0aF0pIHsKKyAgICAgICAg
QXRvbVN0cmluZyB3aGl0ZXNwYWNlQXRvbShzdHJpbmcpOworICAgICAgICBtX2NvZGVzW2xlbmd0
aF0gPSBjb2RlOworICAgICAgICBtX2F0b21zW21faW5kZXhlc1tsZW5ndGhdXSA9IHdoaXRlc3Bh
Y2VBdG9tOworICAgICAgICByZXR1cm4gd2hpdGVzcGFjZUF0b207CisgICAgfQorCisgICAgQXRv
bVN0cmluZyB3aGl0ZXNwYWNlQXRvbShzdHJpbmcpOworICAgIG1fY29kZXNbbGVuZ3RoXSA9IGNv
ZGU7CisgICAgbV9pbmRleGVzW2xlbmd0aF0gPSBtX2F0b21zLnNpemUoKTsKKyAgICBtX2F0b21z
LmFwcGVuZCh3aGl0ZXNwYWNlQXRvbSk7CisgICAgcmV0dXJuIHdoaXRlc3BhY2VBdG9tOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuaAppbmRleCBjNDFmYTc5MjRlYWQxMmIwOTVjNGVmNzQ1M2FlMmFmNGEwNTAyMTk3Li5kMjM0
ZDgyM2ZhZTdlYTM4MzFlMDMxYWM2ZWIwOTQ0MmRiODljOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKQEAgLTg1LDYgKzg1LDcg
QEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50
OwogY2xhc3MgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOworY2xhc3MgV2hpdGVzcGFjZUNhY2hl
OwogCiBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSFRNTENvbnN0cnVjdGlvblNpdGUpOwpAQCAtMjE5LDYgKzIyMCwyOSBAQCBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1fbWF4aW11bURPTVRyZWVEZXB0aDsKIAogICAgIGJvb2wgbV9pblF1aXJr
c01vZGU7CisKKyAgICBXaGl0ZXNwYWNlQ2FjaGUmIG1fd2hpdGVzcGFjZUNhY2hlOworfTsKKwor
Y2xhc3MgV2hpdGVzcGFjZUNhY2hlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBXaGl0ZXNwYWNlQ2FjaGUoKSA9IGRlZmF1bHQ7CisKKyAgICBBdG9tU3RyaW5n
IGxvb2t1cChjb25zdCBTdHJpbmcmLCBXaGl0ZXNwYWNlTW9kZSk7CisKK3ByaXZhdGU6CisgICAg
dGVtcGxhdGU8V2hpdGVzcGFjZU1vZGU+IHVpbnQ2NF90IGNvZGVGb3JTdHJpbmcoY29uc3QgU3Ry
aW5nJik7CisKKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ2NF90IG92ZXJmbG93V2hpdGVzcGFj
ZUNvZGUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oLTEpOworICAgIGNvbnN0ZXhwciBzdGF0aWMg
c2l6ZV90IG1heGltdW1DYWNoZWRTdHJpbmdMZW5ndGggPSAxMjg7CisKKyAgICAvLyBQYXJhbGxl
bCBhcnJheXMgc3RvcmluZyBhIDY0IGJpdCBjb2RlIGFuZCBhbiBpbmRleCBpbnRvIG1fYXRvbXMg
Zm9yIHRoZQorICAgIC8vIG1vc3QgcmVjZW50bHkgYXRvbWl6ZWQgd2hpdGVzcGFjZS1vbmx5IHN0
cmluZyBvZiBhIGdpdmVuIGxlbmd0aC4KKyAgICB1aW50NjRfdCBtX2NvZGVzW21heGltdW1DYWNo
ZWRTdHJpbmdMZW5ndGhdIHsgMCB9OworICAgIHVpbnQ4X3QgbV9pbmRleGVzW21heGltdW1DYWNo
ZWRTdHJpbmdMZW5ndGhdIHsgMCB9OworCisgICAgVmVjdG9yPEF0b21TdHJpbmcsIG1heGltdW1D
YWNoZWRTdHJpbmdMZW5ndGg+IG1fYXRvbXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRl
eCBiZDRkYzE5OTdmM2QyMTkzYmViN2M1OWQ4YzExNThkNDE3YmVlYzAwLi5kOTJkOGEyNmRhNGUy
ZmNjYjMxNjhhMjdjMjkxMjM1OWQ0N2VhNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTIyMDYsNyArMjIwNiw3IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjppbnNlcnRQaG9uZU51bWJlckxpbmsoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAKICAgICBwcm9jZXNzU3RhcnRUYWcoV1RGTW92ZShhU3RhcnRUb2tlbikpOwogICAgIG1fdHJl
ZS5leGVjdXRlUXVldWVkVGFza3MoKTsKLSAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoc3RyaW5n
KTsKKyAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoc3RyaW5nLCBOb3RBbGxXaGl0ZXNwYWNlKTsK
ICAgICBwcm9jZXNzRW5kVGFnKFdURk1vdmUoYUVuZFRva2VuKSk7CiB9CiAKQEAgLTIyMTUsNyAr
MjIxNSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRQaG9uZU51bWJlckxpbmsoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiAvLyAyLiBXcmFwcyB0aGUgcGhvbmUgbnVtYmVyIGluIGEgdGVs
OiBsaW5rLgogLy8gMy4gR29lcyBiYWNrIHRvIHN0ZXAgMSBpZiBhIHBob25lIG51bWJlciBpcyBm
b3VuZCBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLgogLy8gNC4gQXBwZW5kcyB0aGUgcmVzdCBv
ZiB0aGUgc3RyaW5nIGFzIGEgdGV4dCBub2RlLgotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omxpbmtp
ZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6bGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJpbmcmIHN0cmluZywgV2hpdGVzcGFjZU1v
ZGUgd2hpdGVzcGFjZU1vZGUpCiB7CiAgICAgQVNTRVJUKFRlbGVwaG9uZU51bWJlckRldGVjdG9y
Ojppc1N1cHBvcnRlZCgpKTsKIApAQCAtMjIzOCw3ICsyMjM4LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKICAgICAg
ICAgQVNTRVJUKHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlRW5kUG9zaXRpb24gPCBsZW5ndGgp
OwogCi0gICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShzdHJpbmcuc3Vic3RyaW5nKHNjYW5u
ZXJQb3NpdGlvbiwgcmVsYXRpdmVTdGFydFBvc2l0aW9uKSk7CisgICAgICAgIG1fdHJlZS5pbnNl
cnRUZXh0Tm9kZShzdHJpbmcuc3Vic3RyaW5nKHNjYW5uZXJQb3NpdGlvbiwgcmVsYXRpdmVTdGFy
dFBvc2l0aW9uKSwgd2hpdGVzcGFjZU1vZGUpOwogICAgICAgICBpbnNlcnRQaG9uZU51bWJlckxp
bmsoc3RyaW5nLnN1YnN0cmluZyhzY2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRp
b24sIHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gKyAxKSk7CiAK
ICAgICAgICAgc2Nhbm5lclBvc2l0aW9uICs9IHJlbGF0aXZlRW5kUG9zaXRpb24gKyAxOwpAQCAt
MjI0OCwxMCArMjI0OCwxMCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25lTnVt
YmVycyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBpZiAoc2Nhbm5lclBvc2l0aW9uID4gMCkg
ewogICAgICAgICBpZiAoc2Nhbm5lclBvc2l0aW9uIDwgbGVuZ3RoKSB7CiAgICAgICAgICAgICBT
dHJpbmcgYWZ0ZXIgPSBzdHJpbmcuc3Vic3RyaW5nKHNjYW5uZXJQb3NpdGlvbiwgbGVuZ3RoIC0g
c2Nhbm5lclBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShhZnRl
cik7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoYWZ0ZXIsIHdoaXRlc3BhY2VN
b2RlKTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5v
ZGUoc3RyaW5nKTsKKyAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKHN0cmluZywgd2hpdGVz
cGFjZU1vZGUpOwogfQogCiAvLyBMb29rcyBhdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBlbGVtZW50
IHRvIGRldGVybWluZSB3aGV0aGVyIHdlJ3JlIGluc2lkZSBhbiBlbGVtZW50IHdoaWNoIGRpc2Fs
bG93cyBwYXJzaW5nIHBob25lIG51bWJlcnMuCkBAIC0yNDMwLDE0ICsyNDMwLDE1IEBAIFJlcHJv
Y2Vzc0J1ZmZlcjoKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVy
Rm9ySW5Cb2R5KEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlcikKIHsKICAgICBt
X3RyZWUucmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsKKyAgICBhdXRv
IHdoaXRlc3BhY2VNb2RlID0gYnVmZmVyLmlzQWxsOEJpdERhdGEoKSA/IFdoaXRlc3BhY2VVbmtu
b3duIDogTm90QWxsV2hpdGVzcGFjZTsKICAgICBTdHJpbmcgY2hhcmFjdGVycyA9IGJ1ZmZlci50
YWtlUmVtYWluaW5nKCk7CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSAmJiBt
X3RyZWUuaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpICYmIHNob3VsZFBhcnNlVGVs
ZXBob25lTnVtYmVyc0luTm9kZShtX3RyZWUuY3VycmVudE5vZGUoKSkgJiYgVGVsZXBob25lTnVt
YmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpCi0gICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMo
Y2hhcmFjdGVycyk7CisgICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMoY2hhcmFjdGVycywgd2hp
dGVzcGFjZU1vZGUpOwogICAgIGVsc2UKLSAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGNo
YXJhY3RlcnMpOworICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycywgd2hp
dGVzcGFjZU1vZGUpOwogI2Vsc2UKLSAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVy
cyk7CisgICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMsIHdoaXRlc3BhY2VNb2Rl
KTsKICNlbmRpZgogICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVw
bGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQogICAgICAgICBtX2ZyYW1lc2V0T2sgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5k
ZXggZGQ4MDkyOTViYzMzN2RlYzAwN2YyMjM2ODU4M2VmN2U4MDA4YjYwMS4uNGNiZDQ1MDFmZTI2
NDBhNDY3ZWYwMDBmNDFmOTFlZTAyM2U5MzZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogCiAj
aWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHZvaWQgaW5zZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0IFN0cmluZyYpOwotICAg
IHZvaWQgbGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGxpbmtp
ZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJiwgV2hpdGVzcGFjZU1vZGUpOwogI2VuZGlmCiAK
ICAgICB2b2lkIHByb2Nlc3NUb2tlbihBdG9tSFRNTFRva2VuJiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435169</attachid>
            <date>2021-08-08 23:52:34 -0700</date>
            <delta_ts>2021-08-09 04:05:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228858-20210809165233.patch</filename>
            <type>text/plain</type>
            <size>18185</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRkZGE0MzNmNTEyNDBh
NjE2N2E0N2Y0MTZmODIzNDNlYmQ3N2QwYy4uOWUzNjVkNjJjNTFiMWE3YTNjNDc3MmNlOGJiYTI0
ZDgyNzI0ODUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA4LTA2ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgcmVjZW50
bHkgYXRvbWl6ZWQgYWxsLXdoaXRlc3BhY2Ugc3RyaW5ncyBmb3IgdXNlIGJ5IHRoZSBIVE1MIHBh
cnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
ODU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBXZSBo
YXZlIGEgbWVtb3J5IG9wdGltaXphdGlvbiB3aGVyZSB0aGUgSFRNTCBwYXJzZXIgd2lsbCBhdG9t
aXplIGFueQorICAgICAgICB0ZXh0IG5vZGUgc3RyaW5nIHRoYXQgaXMgYWxsIHdoaXRlc3BhY2Uu
ICBUaGlzIGNhbiBiZSBleHBlbnNpdmUsCisgICAgICAgIGFzIHdlIG5lZWQgdG8gbG9vcCBvdmVy
IHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIHRocmVlIHRpbWVzOiB0byBkZXRlY3QKKyAgICAgICAg
dGhhdCBpdCBpcyBpbmRlZWQgYWxsIHdoaXRlc3BhY2UsIHRvIGhhc2ggdGhlIHN0cmluZywgYW5k
IHRvIGNvbXBhcmUKKyAgICAgICAgdG8gYW55IGV4aXN0aW5nIGVudHJ5IGluIHRoZSBhdG9tIGhh
c2ggdGFibGUuCisKKyAgICAgICAgTWFueSB3aGl0ZXNwYWNlIHN0cmluZ3MgZW5jb3VudGVyZWQg
ZHVyaW5nIHBhcnNpbmcgaGF2ZSBhIGxpbWl0ZWQKKyAgICAgICAgZm9ybSAtLSB0aGV5IGhhdmUg
YSBmZXcgcnVucyBvZiBjb25zZWN1dGl2ZSBlcXVhbCB3aGl0ZXNwYWNlCisgICAgICAgIGNoYXJh
Y3RlcnMsIGUuZy4gaXQncyBjb21tb24gdG8gc2VlIGEgbmV3bGluZSBmb2xsb3dlZCBieSBhIG51
bWJlcgorICAgICAgICBvZiBzcGFjZSBjaGFyYWN0ZXJzLiAgV2UgY2FuIHRha2UgYWR2YW50YWdl
IG9mIHRoaXMgYnkgY29tcHJlc3NpbmcKKyAgICAgICAgdGhlIHdoaXRlc3BhY2Ugc3RyaW5nIGlu
dG8gYSBzaW1wbGUgcnVuLWxlbmd0aCBlbmNvZGVkIGZvcm0gd2hpbGUKKyAgICAgICAgd2UgbG9v
cCBvdmVyIHRoZSBjaGFyYWN0ZXJzIHRvIGNoZWNrIHRoYXQgdGhlIHN0cmluZyBpcyBhbGwKKyAg
ICAgICAgd2hpdGVzcGFjZS4gIFVubGlrZSBhIGhhc2gsIHRoaXMgZW5jb2RlZCBmb3JtIHBlcmZl
Y3RseSBpZGVudGlmaWVzIHRoZQorICAgICAgICBzdHJpbmcgY29udGVudC4KKworICAgICAgICBX
ZSBhZGQgYSBXaGl0ZXNwYWNlQ2FjaGUgdGhhdCBpcyBvd25lZCBieSB0aGUgRG9jdW1lbnQsIHdo
aWNoIHN0b3JlcworICAgICAgICB0aGUgbW9zdCByZWNlbnRseSBhdG9taXplZCBhbGwtd2hpdGVz
cGFjZSBzdHJpbmcgZW5jb3VudGVyZWQgYnkgdGhlCisgICAgICAgIHBhcnNlciBmb3IgYSBnaXZl
biBsZW5ndGgsIGFuZCBrZXlzIGl0IHdpdGggdGhlIGVuY29kZWQgZm9ybS4gIFRoZQorICAgICAg
ICBwYXJzZXIgY2FuIHRoZW4gbG9vayB1cCB0aGUgV2hpdGVzcGFjZUNhY2hlIGFuZCBmaW5kIGFu
IEF0b21TdHJpbmcKKyAgICAgICAgd2l0aG91dCB0aGUgbmVlZCB0byBwZXJmb3JtIGEgbG9va3Vw
IGluIHRoZSBhdG9tIGhhc2ggdGFibGUuCisKKyAgICAgICAgVGhlIFdoaXRlc3BhY2VDYWNoZSBj
b250aW51ZXMgdG8gaG9sZCBvbiB0byB0aGUgY2FjaGVkIHdoaXRlc3BhY2UKKyAgICAgICAgYXRv
bXMgZm9yIHRoZSBsaWZlIG9mIHRoZSBkb2N1bWVudC4gIFRoZSBXaGl0ZXNwYWNlQ2FjaGUgaXRz
ZWxmCisgICAgICAgIHRha2VzIGEgYml0IG92ZXIgMSBLaUIgd2hlbiBlbXB0eSwgYW5kIGlmIGNv
bXBsZXRlbHkgcG9wdWxhdGVkIHdvdWxkCisgICAgICAgIHRha2UgYSBiaXQgb3ZlciAyIEtpQiBw
bHVzIDggS2lCIG9mIGF0b20gc3RyaW5nIGRhdGEgKGEgMSBieXRlIHN0cmluZywKKyAgICAgICAg
cGx1cyBhIDIgYnl0ZSBzdHJpbmcsIHBsdXMgYSAzIGJ5dGUgc3RyaW5nLCBldGMuKS4gIFRoaXMg
ZG9lc24ndCBzZWVtCisgICAgICAgIGhpZ2ggZW5vdWdoIHRvIGJlIHdvcnRoIGNsZWFyaW5nIHRo
aXMgb3V0IGp1c3QgdG8gYXZvaWQgbWVtb3J5IHVzYWdlCisgICAgICAgIGZyb20gdGV4dCBub2Rl
cyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50LgorCisgICAgICAgIFdl
IGhhdmUgdGhlIERvY3VtZW50IG93biB0aGUgV2hpdGVzcGFjZUNhY2hlIHNvIHRoYXQgaXQncyBu
b3QganVzdCB0aGUKKyAgICAgICAgaW5pdGlhbCBkb2N1bWVudCBsb2FkLCBidXQgYW55IHVzZXMg
b2YgaW5uZXJIVE1MIG9yIG90aGVyIGZyYWdtZW50CisgICAgICAgIHBhcnNpbmcgQVBJcywgdGhh
dCBjYW4gcmUtdXNlIHByZXZpb3VzbHkgYXRvbWl6ZWQgd2hpdGVzcGFjZSBzdHJpbmdzLgorCisg
ICAgICAgIFRoZSBjaG9pY2Ugb2YgV2hpdGVzcGFjZUNhY2hlOjptYXhpbXVtQ2FjaGVkU3RyaW5n
TGVuZ3RoID0gMTI4IGlzCisgICAgICAgIHNvbWV3aGF0IGFyYml0cmFyeS4gIFRoZSB2YWx1ZSBt
dXN0IGJlIDw9IDI1NSB0byBhdm9pZCBvdmVyZmxvd2luZworICAgICAgICB0aGUgc3BlY2lmaWMg
NjQgYml0IGNvZGUgZm9ybWF0IHVzZWQgdG8gZW5jb2RlIHRoZSB3aGl0ZXNwYWNlIHN0cmluZy4K
KyAgICAgICAgVGVzdGluZyBvbiBTcGVlZG9tZXRlciBzaG93cyB3aGl0ZXNwYWNlIHN0cmluZ3Mg
b25seSB1cCB0byBsZW5ndGggMjYsCisgICAgICAgIGJ1dCBpdCBtYXkgYmUgd29ydGggdGVzdGlu
ZyBvdGhlciBjb250ZW50IHRvIHNlZSBpZiBpdCdzIHdvcnRoCisgICAgICAgIHJlZHVjaW5nIG1h
eGltdW1DYWNoZWRTdHJpbmdMZW5ndGguCisKKyAgICAgICAgV2hlbiBydW5uaW5nIFNwZWVkb21l
dGVyIDIsIG5vIGVudHJpZXMgaW4gdGhlIGNhY2hlIGV2ZXIgZ2V0IHJlcGxhY2VkCisgICAgICAg
IGJ5IGEgZGlmZmVyZW50IHdoaXRlc3BhY2Ugc3RyaW5nIG9mIHRoZSBzYW1lIGxlbmd0aCwgYW5k
IDE2IHVuaXF1ZQorICAgICAgICB3aGl0ZXNwYWNlIHN0cmluZyBsZW5ndGhzIGFyZSBlbmNvdW50
ZXJlZC4KKworICAgICAgICBXZSBkb24ndCBjb21wdXRlIGNvZGVzIGZvciAxNiBiaXQgc3RyaW5n
cywgc2luY2UgMTYgYml0IHN0cmluZ3MgcGFzc2VkCisgICAgICAgIGluIHRvIFdoaXRlc3BhY2VD
YWNoZTo6bG9va3VwKCkgYXJlIGFsbW9zdCBhbHdheXMgdGhlIGVudGlyZXR5IG9mIGFuCisgICAg
ICAgIEhUTUxUb2tlbidzIGRhdGEsIGFuZCBIVE1MVG9rZW4gdHJhY2tzIHdoZXRoZXIgYW55IDE2
IGJpdCBjaGFyYWN0ZXJzIGFyZQorICAgICAgICBwcmVzZW50LiAgSWYgdGhlcmUgYXJlIGFueSwg
dGhlbiB3ZSBrbm93IHRoZSBzdHJpbmcgY2Fubm90IGJlIGFsbAorICAgICAgICB3aGl0ZXNwYWNl
LCBhbmQgd2UgdXNlIGEgV2hpdGVzcGFjZU1vZGUgdmFsdWUgb2YgTm90QWxsV2hpdGVzcGFjZSB0
bworICAgICAgICBza2lwIHRoZSBhdG9taXphdGlvbiBhbHRvZ2V0aGVyLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaXMgYW4gYWxtb3N0IDElIGltcHJvdmVtZW50IG9uIFNwZWVkb21ldGVyIDIuCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV93aGl0ZXNw
YWNlQ2FjaGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OndoaXRlc3BhY2VDYWNoZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNp
dGU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXaGl0ZXNwYWNl
Q2FjaGU6OmNvZGVGb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2hpdGVzcGFjZUNhY2hl
Ojpsb29rdXApOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmg6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25lTnVtYmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXJGb3JJbkJv
ZHkpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oOgorCiAyMDIxLTA4
LTA0ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU3Rv
cCB0cmFja2luZyBmb3JtIGVsZW1lbnRzIHdpdGggRm9ybUNvbnRyb2xsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDcxYWQ5YzVkZjM4NjU2NThhOTc5NjEwODRkZTZjODA2NDAwZDBhMmQu
LjIyNTk2MWY5Zjc3OTFmNjZlMmQ5ZDllZDMyNWMzOWIzOWU3NmQ4MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtOTIsNiArOTIsNyBAQAogI2luY2x1ZGUgIkhUTUxCYXNlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbnN0cnVjdGlvblNpdGUuaCIKICNpbmNsdWRlICJIVE1M
RGlhbG9nRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50RmFjdG9yeS5oIgpAQCAtNjUxLDYgKzY1Miw3IEBAIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmws
IERvY3VtCiAgICAgLCBtX3VuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyOjpjcmVhdGUoKnRoaXMpKQog
ICAgICwgbV9lZGl0b3IobWFrZVVuaXF1ZVJlZjxFZGl0b3I+KCp0aGlzKSkKICAgICAsIG1fc2Vs
ZWN0aW9uKG1ha2VVbmlxdWVSZWY8RnJhbWVTZWxlY3Rpb24+KHRoaXMpKQorICAgICwgbV93aGl0
ZXNwYWNlQ2FjaGUobWFrZVVuaXF1ZVJlZjxXaGl0ZXNwYWNlQ2FjaGU+KCkpCiB7CiAgICAgYWRk
VG9Eb2N1bWVudHNNYXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjYTM3MTMwMjM3MjIw
YjI5ZDAyN2RjOTg2NGMzNDMyMzhkZWQ4MDdmLi42Mzc2ZjM4ZDlkMWRlZDE1ZGE1NjNkZjg3NDNj
OTBhMzEyMDI5OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjMzLDYgKzIzMyw3IEBAIGNs
YXNzIFZpc2l0ZWRMaW5rU3RhdGU7CiBjbGFzcyBXZWJBbmltYXRpb247CiBjbGFzcyBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgV2hp
dGVzcGFjZUNhY2hlOwogY2xhc3MgV2luZG93RXZlbnRMb29wOwogY2xhc3MgV2luZG93UHJveHk7
CiBjbGFzcyBYUGF0aEV2YWx1YXRvcjsKQEAgLTE1MTYsNiArMTUxNyw4IEBAIHB1YmxpYzoKIAog
ICAgIEhUTUxEaWFsb2dFbGVtZW50KiBhY3RpdmVNb2RhbERpYWxvZygpIGNvbnN0OwogCisgICAg
V2hpdGVzcGFjZUNhY2hlJiB3aGl0ZXNwYWNlQ2FjaGUoKSB7IHJldHVybiBtX3doaXRlc3BhY2VD
YWNoZTsgfQorCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRJbnNl
cnRBdHRhY2htZW50RWxlbWVudChIVE1MQXR0YWNobWVudEVsZW1lbnQmKTsKQEAgLTIyMDcsNiAr
MjIxMCw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEZyYW1lU2VsZWN0aW9uPiBtX3NlbGVj
dGlvbjsKIAogICAgIExpc3RIYXNoU2V0PFJlZjxFbGVtZW50Pj4gbV90b3BMYXllckVsZW1lbnRz
OworICAgIFVuaXF1ZVJlZjxXaGl0ZXNwYWNlQ2FjaGU+IG1fd2hpdGVzcGFjZUNhY2hlOwogfTsK
IAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cAppbmRleCAzNzMzMmZmZDBjYmE5ODAzNjQ1MGMyMmRiNTBlNjc1ZDk0ODA4NTZlLi5kMmZlNTNj
ZGU0NjQxNmQ2OTI2ZmJiZmIxMjRmMDY1OTQwZmMwODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC0yMzQsNiArMjM0
LDcgQEAgSFRNTENvbnN0cnVjdGlvblNpdGU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlKERvY3VtZW50
JiBkb2N1bWVudCwgUGFyc2VyQ29udGVudFBvbGkKICAgICAsIG1fcmVkaXJlY3RBdHRhY2hUb0Zv
c3RlclBhcmVudChmYWxzZSkKICAgICAsIG1fbWF4aW11bURPTVRyZWVEZXB0aChtYXhpbXVtRE9N
VHJlZURlcHRoKQogICAgICwgbV9pblF1aXJrc01vZGUoZG9jdW1lbnQuaW5RdWlya3NNb2RlKCkp
CisgICAgLCBtX3doaXRlc3BhY2VDYWNoZShkb2N1bWVudC53aGl0ZXNwYWNlQ2FjaGUoKSkKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQuaXNY
SFRNTERvY3VtZW50KCkpOwogfQpAQCAtMjQ2LDYgKzI0Nyw3IEBAIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZShEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgUGFy
c2VyQ29uCiAgICAgLCBtX3JlZGlyZWN0QXR0YWNoVG9Gb3N0ZXJQYXJlbnQoZmFsc2UpCiAgICAg
LCBtX21heGltdW1ET01UcmVlRGVwdGgobWF4aW11bURPTVRyZWVEZXB0aCkKICAgICAsIG1faW5R
dWlya3NNb2RlKGZyYWdtZW50LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkpCisgICAgLCBtX3do
aXRlc3BhY2VDYWNoZShmcmFnbWVudC5kb2N1bWVudCgpLndoaXRlc3BhY2VDYWNoZSgpKQogewog
ICAgIEFTU0VSVChtX2RvY3VtZW50LmlzSFRNTERvY3VtZW50KCkgfHwgbV9kb2N1bWVudC5pc1hI
VE1MRG9jdW1lbnQoKSk7CiB9CkBAIC01NzQsMTAgKzU3Niw2IEBAIHZvaWQgSFRNTENvbnN0cnVj
dGlvblNpdGU6Omluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVz
cGFjZU1vCiAgICAgaWYgKHNob3VsZEZvc3RlclBhcmVudCgpKQogICAgICAgICBmaW5kRm9zdGVy
U2l0ZSh0YXNrKTsKIAotICAgIC8vIFN0cmluZ3MgY29tcG9zZWQgZW50aXJlbHkgb2Ygd2hpdGVz
cGFjZSBhcmUgbGlrZWx5IHRvIGJlIHJlcGVhdGVkLgotICAgIC8vIFR1cm4gdGhlbSBpbnRvIEF0
b21TdHJpbmcgc28gd2Ugc2hhcmUgYSBzaW5nbGUgc3RyaW5nIGZvciBlYWNoLgotICAgIGJvb2wg
c2hvdWxkVXNlQXRvbVN0cmluZyA9IHdoaXRlc3BhY2VNb2RlID09IEFsbFdoaXRlc3BhY2UgfHwg
KHdoaXRlc3BhY2VNb2RlID09IFdoaXRlc3BhY2VVbmtub3duICYmIGlzQWxsV2hpdGVzcGFjZShj
aGFyYWN0ZXJzKSk7Ci0KICAgICB1bnNpZ25lZCBjdXJyZW50UG9zaXRpb24gPSAwOwogICAgIHVu
c2lnbmVkIGxlbmd0aExpbWl0ID0gc2hvdWxkVXNlTGVuZ3RoTGltaXQoKnRhc2sucGFyZW50KSA/
IFRleHQ6OmRlZmF1bHRMZW5ndGhMaW1pdCA6IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKTsKIApAQCAtNTkyLDExICs1OTAsMTMgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6aW5zZXJ0VGV4dE5vZGUoY29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW8K
ICAgICB9CiAKICAgICB3aGlsZSAoY3VycmVudFBvc2l0aW9uIDwgY2hhcmFjdGVycy5sZW5ndGgo
KSkgewotICAgICAgICBhdXRvIHRleHROb2RlID0gVGV4dDo6Y3JlYXRlV2l0aExlbmd0aExpbWl0
KHRhc2sucGFyZW50LT5kb2N1bWVudCgpLCBzaG91bGRVc2VBdG9tU3RyaW5nID8gQXRvbVN0cmlu
ZyhjaGFyYWN0ZXJzKS5zdHJpbmcoKSA6IGNoYXJhY3RlcnMsIGN1cnJlbnRQb3NpdGlvbiwgbGVu
Z3RoTGltaXQpOworICAgICAgICBBdG9tU3RyaW5nIGNoYXJhY3RlcnNBdG9tID0gbV93aGl0ZXNw
YWNlQ2FjaGUubG9va3VwKGNoYXJhY3RlcnMsIHdoaXRlc3BhY2VNb2RlKTsKKyAgICAgICAgYXV0
byB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZVdpdGhMZW5ndGhMaW1pdCh0YXNrLnBhcmVudC0+ZG9j
dW1lbnQoKSwgY2hhcmFjdGVyc0F0b20uaXNOdWxsKCkgPyBjaGFyYWN0ZXJzIDogY2hhcmFjdGVy
c0F0b20uc3RyaW5nKCksIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoTGltaXQpOwogICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgd2hvbGUgc3RyaW5nIG9mIHVuYnJlYWthYmxlIGNoYXJhY3RlcnMgdGhl
IGFib3ZlIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcC4gRXhjZWVkaW5nIHRoZSBsZW5n
dGggbGltaXQgaXMgdGhlIGxlc3NlciBldmlsLgogICAgICAgICBpZiAoIXRleHROb2RlLT5sZW5n
dGgoKSkgewogICAgICAgICAgICAgU3RyaW5nIHN1YnN0cmluZyA9IGNoYXJhY3RlcnMuc3Vic3Ry
aW5nKGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0
ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxkVXNlQXRvbVN0cmluZyA/IEF0b21TdHJp
bmcoc3Vic3RyaW5nKS5zdHJpbmcoKSA6IHN1YnN0cmluZyk7CisgICAgICAgICAgICBBdG9tU3Ry
aW5nIHN1YnN0cmluZ0F0b20gPSBtX3doaXRlc3BhY2VDYWNoZS5sb29rdXAoc3Vic3RyaW5nLCB3
aGl0ZXNwYWNlTW9kZSk7CisgICAgICAgICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSh0YXNr
LnBhcmVudC0+ZG9jdW1lbnQoKSwgc3Vic3RyaW5nQXRvbS5pc051bGwoKSA/IHN1YnN0cmluZyA6
IHN1YnN0cmluZ0F0b20uc3RyaW5nKCkpOwogICAgICAgICB9CiAKICAgICAgICAgY3VycmVudFBv
c2l0aW9uICs9IHRleHROb2RlLT5sZW5ndGgoKTsKQEAgLTgxMSw0ICs4MTEsMTExIEBAIHZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6OmZvc3RlclBhcmVudChSZWY8Tm9kZT4mJiBub2RlKQogICAg
IG1fdGFza1F1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KIAorLy8gQ29tcHV0ZSBhIDY0
IGJpdCBjb2RlIHRoYXQgcmVwcmVzZW50cyBhIHdoaXRlc3BhY2Utb25seSBzdHJpbmcncyBjb250
ZW50cy4KKy8vCisvLyBUaGUgY29kZSBmb3JtYXQgaXMgYSBzZXF1ZW5jZSBvZiBmb3VyIHBhaXJz
IG9mIGFuIDggYml0IHdoaXRlc3BhY2UgY2hhcmFjdGVyCisvLyBhbmQgYW4gOCBiaXQgY291bnQg
b2YgdGhhdCBjaGFyYWN0ZXIuIEZvciBleGFtcGxlLCAweDBBXzAyXzIwXzA4IHJlcHJlc2VudHMK
Ky8vIHR3byBuZXdsaW5lcyBmb2xsb3dlZCBieSBlaWdodCBzcGFjZSBjaGFyYWN0ZXJzLgorLy8K
Ky8vIFJldHVybnMgMCBpZiBhbnkgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBhcmUgZm91bmQu
CisvLworLy8gUmV0dXJucyAtMSBpZiB0aGUgY29kZSB3b3VsZCBvdmVyZmxvdyBkdWUgdG8gZmlu
ZGluZyBtb3JlIHRoYW4gZm91cgorLy8gd2hpdGVzcGFjZSBjaGFyYWN0ZXIgcnVucy4KK3RlbXBs
YXRlPFdoaXRlc3BhY2VNb2RlIHdoaXRlc3BhY2VNb2RlPgordWludDY0X3QgV2hpdGVzcGFjZUNh
Y2hlOjpjb2RlRm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIEFTU0VSVCh3
aGl0ZXNwYWNlTW9kZSAhPSBOb3RBbGxXaGl0ZXNwYWNlKTsKKyAgICBBU1NFUlQoc3RyaW5nLmlz
OEJpdCgpKTsKKyAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChzdHJp
bmcubGVuZ3RoKCkgPD0gbWF4aW11bUNhY2hlZFN0cmluZ0xlbmd0aCk7CisgICAgc3RhdGljX2Fz
c2VydChtYXhpbXVtQ2FjaGVkU3RyaW5nTGVuZ3RoIDw9IDB4RkYsICJDb2RlIGZvcm1hdCByZXF1
aXJlcyB3aGl0ZXNwYWNlIHJ1biBsZW5ndGggZml0IGluIG9uZSBieXRlIik7CisKKyAgICBhdXRv
IHN0YXJ0T2ZSdW4gPSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKKworICAgIGlmIGNvbnN0ZXhwciAo
d2hpdGVzcGFjZU1vZGUgPT0gV2hpdGVzcGFjZVVua25vd24pIHsKKyAgICAgICAgaWYgKCFpc0hU
TUxTcGFjZSgqc3RhcnRPZlJ1bikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICBMQ2hhciBjdXJyZW50V2hpdGVzcGFjZUNoYXJhY3RlciA9ICpzdGFydE9mUnVuOworICAgIGF1
dG8gY2hhcmFjdGVyID0gc3RhcnRPZlJ1biArIDE7CisgICAgYXV0byBlbmQgPSBzdGFydE9mUnVu
ICsgc3RyaW5nLmxlbmd0aCgpOworCisgICAgdWludDY0X3QgY29kZSA9IDA7CisgICAgaW50IHJ1
bnNSZW1haW5pbmcgPSA0OworCisgICAgZm9yICg7OykgeworICAgICAgICB3aGlsZSAoY2hhcmFj
dGVyICE9IGVuZCAmJiAqY2hhcmFjdGVyID09IGN1cnJlbnRXaGl0ZXNwYWNlQ2hhcmFjdGVyKQor
ICAgICAgICAgICAgKytjaGFyYWN0ZXI7CisKKyAgICAgICAgaWYgY29uc3RleHByICh3aGl0ZXNw
YWNlTW9kZSA9PSBXaGl0ZXNwYWNlVW5rbm93bikgeworICAgICAgICAgICAgaWYgKGNoYXJhY3Rl
ciAhPSBlbmQgJiYgIWlzSFRNTFNwYWNlKCpjaGFyYWN0ZXIpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgY29kZSA8PD0gMTY7CisgICAgICAgIGNvZGUg
fD0gKGN1cnJlbnRXaGl0ZXNwYWNlQ2hhcmFjdGVyIDw8IDgpOworICAgICAgICBjb2RlIHw9IChj
aGFyYWN0ZXIgLSBzdGFydE9mUnVuKTsKKworICAgICAgICBpZiAoY2hhcmFjdGVyID09IGVuZCkK
KyAgICAgICAgICAgIHJldHVybiBjb2RlOworCisgICAgICAgIGlmICghLS1ydW5zUmVtYWluaW5n
KQorICAgICAgICAgICAgcmV0dXJuIG92ZXJmbG93V2hpdGVzcGFjZUNvZGU7CisKKyAgICAgICAg
c3RhcnRPZlJ1biA9IGNoYXJhY3RlcjsKKyAgICAgICAgY3VycmVudFdoaXRlc3BhY2VDaGFyYWN0
ZXIgPSAqY2hhcmFjdGVyOworICAgICAgICArK2NoYXJhY3RlcjsKKworICAgICAgICBBU1NFUlQo
aXNIVE1MU3BhY2UoY3VycmVudFdoaXRlc3BhY2VDaGFyYWN0ZXIpKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY29kZTsKK30KKworQXRvbVN0cmluZyBXaGl0ZXNwYWNlQ2FjaGU6Omxvb2t1cChjb25z
dCBTdHJpbmcmIHN0cmluZywgV2hpdGVzcGFjZU1vZGUgd2hpdGVzcGFjZU1vZGUpCit7CisgICAg
aWYgKHdoaXRlc3BhY2VNb2RlID09IE5vdEFsbFdoaXRlc3BhY2UgfHwgIXN0cmluZy5pczhCaXQo
KSB8fCBzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQXRvbVN0cmluZygpOworCisg
ICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoID4gbWF4
aW11bUNhY2hlZFN0cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIHdoaXRlc3BhY2VNb2RlID09
IEFsbFdoaXRlc3BhY2UgfHwgaXNBbGxXaGl0ZXNwYWNlKHN0cmluZykgPyBBdG9tU3RyaW5nKHN0
cmluZykgOiBBdG9tU3RyaW5nKCk7CisKKyAgICB1aW50NjRfdCBjb2RlOworICAgIGlmICh3aGl0
ZXNwYWNlTW9kZSA9PSBBbGxXaGl0ZXNwYWNlKQorICAgICAgICBjb2RlID0gY29kZUZvclN0cmlu
ZzxBbGxXaGl0ZXNwYWNlPihzdHJpbmcpOworICAgIGVsc2UKKyAgICAgICAgY29kZSA9IGNvZGVG
b3JTdHJpbmc8V2hpdGVzcGFjZVVua25vd24+KHN0cmluZyk7CisKKyAgICBpZiAoIWNvZGUpCisg
ICAgICAgIHJldHVybiBBdG9tU3RyaW5nKCk7CisKKyAgICBpZiAobV9jb2Rlc1tsZW5ndGhdID09
IGNvZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fYXRvbXNbbV9pbmRleGVzW2xlbmd0aF1dID09IHN0
cmluZyk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygicmV1c2UgY29kZSAlbGx4IiwgY29kZSk7Cisg
ICAgICAgIHJldHVybiBtX2F0b21zW21faW5kZXhlc1tsZW5ndGhdXTsKKyAgICB9CisKKyAgICBp
ZiAoY29kZSA9PSBvdmVyZmxvd1doaXRlc3BhY2VDb2RlKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygib3ZlcnJpZGUiKTsKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoc3RyaW5nKTsKKyAgICB9
CisKKyAgICBpZiAobV9jb2Rlc1tsZW5ndGhdKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygicmVw
bGFjZSBjb2RlICVsbHgiLCBjb2RlKTsKKyAgICAgICAgQXRvbVN0cmluZyB3aGl0ZXNwYWNlQXRv
bShzdHJpbmcpOworICAgICAgICBtX2NvZGVzW2xlbmd0aF0gPSBjb2RlOworICAgICAgICBtX2F0
b21zW21faW5kZXhlc1tsZW5ndGhdXSA9IHdoaXRlc3BhY2VBdG9tOworICAgICAgICByZXR1cm4g
d2hpdGVzcGFjZUF0b207CisgICAgfQorCisgICAgV1RGTG9nQWx3YXlzKCJuZXcgY29kZSAlbGx4
IiwgY29kZSk7CisgICAgQXRvbVN0cmluZyB3aGl0ZXNwYWNlQXRvbShzdHJpbmcpOworICAgIG1f
Y29kZXNbbGVuZ3RoXSA9IGNvZGU7CisgICAgbV9pbmRleGVzW2xlbmd0aF0gPSBtX2F0b21zLnNp
emUoKTsKKyAgICBtX2F0b21zLmFwcGVuZCh3aGl0ZXNwYWNlQXRvbSk7CisgICAgcmV0dXJuIHdo
aXRlc3BhY2VBdG9tOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTENvbnN0cnVjdGlvblNpdGUuaAppbmRleCBjNDFmYTc5MjRlYWQxMmIwOTVjNGVmNzQ1M2Fl
MmFmNGEwNTAyMTk3Li5kMjM0ZDgyM2ZhZTdlYTM4MzFlMDMxYWM2ZWIwOTQ0MmRiODljOGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmgKQEAgLTg1LDYgKzg1LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xh
c3MgSFRNTEZvcm1FbGVtZW50OwogY2xhc3MgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOworY2xh
c3MgV2hpdGVzcGFjZUNhY2hlOwogCiBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTENvbnN0cnVjdGlvblNpdGUpOwpAQCAtMjE5LDYgKzIy
MCwyOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbWF4aW11bURPTVRyZWVEZXB0aDsKIAog
ICAgIGJvb2wgbV9pblF1aXJrc01vZGU7CisKKyAgICBXaGl0ZXNwYWNlQ2FjaGUmIG1fd2hpdGVz
cGFjZUNhY2hlOworfTsKKworY2xhc3MgV2hpdGVzcGFjZUNhY2hlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXaGl0ZXNwYWNlQ2FjaGUoKSA9IGRlZmF1bHQ7
CisKKyAgICBBdG9tU3RyaW5nIGxvb2t1cChjb25zdCBTdHJpbmcmLCBXaGl0ZXNwYWNlTW9kZSk7
CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8V2hpdGVzcGFjZU1vZGU+IHVpbnQ2NF90IGNvZGVG
b3JTdHJpbmcoY29uc3QgU3RyaW5nJik7CisKKyAgICBjb25zdGV4cHIgc3RhdGljIHVpbnQ2NF90
IG92ZXJmbG93V2hpdGVzcGFjZUNvZGUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oLTEpOworICAg
IGNvbnN0ZXhwciBzdGF0aWMgc2l6ZV90IG1heGltdW1DYWNoZWRTdHJpbmdMZW5ndGggPSAxMjg7
CisKKyAgICAvLyBQYXJhbGxlbCBhcnJheXMgc3RvcmluZyBhIDY0IGJpdCBjb2RlIGFuZCBhbiBp
bmRleCBpbnRvIG1fYXRvbXMgZm9yIHRoZQorICAgIC8vIG1vc3QgcmVjZW50bHkgYXRvbWl6ZWQg
d2hpdGVzcGFjZS1vbmx5IHN0cmluZyBvZiBhIGdpdmVuIGxlbmd0aC4KKyAgICB1aW50NjRfdCBt
X2NvZGVzW21heGltdW1DYWNoZWRTdHJpbmdMZW5ndGhdIHsgMCB9OworICAgIHVpbnQ4X3QgbV9p
bmRleGVzW21heGltdW1DYWNoZWRTdHJpbmdMZW5ndGhdIHsgMCB9OworCisgICAgVmVjdG9yPEF0
b21TdHJpbmcsIG1heGltdW1DYWNoZWRTdHJpbmdMZW5ndGg+IG1fYXRvbXM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcAppbmRleCBiZDRkYzE5OTdmM2QyMTkzYmViN2M1OWQ4YzExNThkNDE3YmVl
YzAwLi5kOTJkOGEyNmRhNGUyZmNjYjMxNjhhMjdjMjkxMjM1OWQ0N2VhNGRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTIyMDYsNyAr
MjIwNiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRQaG9uZU51bWJlckxpbmsoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiAKICAgICBwcm9jZXNzU3RhcnRUYWcoV1RGTW92ZShhU3RhcnRU
b2tlbikpOwogICAgIG1fdHJlZS5leGVjdXRlUXVldWVkVGFza3MoKTsKLSAgICBtX3RyZWUuaW5z
ZXJ0VGV4dE5vZGUoc3RyaW5nKTsKKyAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoc3RyaW5nLCBO
b3RBbGxXaGl0ZXNwYWNlKTsKICAgICBwcm9jZXNzRW5kVGFnKFdURk1vdmUoYUVuZFRva2VuKSk7
CiB9CiAKQEAgLTIyMTUsNyArMjIxNSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRQ
aG9uZU51bWJlckxpbmsoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAvLyAyLiBXcmFwcyB0aGUgcGhv
bmUgbnVtYmVyIGluIGEgdGVsOiBsaW5rLgogLy8gMy4gR29lcyBiYWNrIHRvIHN0ZXAgMSBpZiBh
IHBob25lIG51bWJlciBpcyBmb3VuZCBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLgogLy8gNC4g
QXBwZW5kcyB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIGFzIGEgdGV4dCBub2RlLgotdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6bGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJpbmcmIHN0
cmluZywgV2hpdGVzcGFjZU1vZGUgd2hpdGVzcGFjZU1vZGUpCiB7CiAgICAgQVNTRVJUKFRlbGVw
aG9uZU51bWJlckRldGVjdG9yOjppc1N1cHBvcnRlZCgpKTsKIApAQCAtMjIzOCw3ICsyMjM4LDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAKICAgICAgICAgQVNTRVJUKHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlRW5k
UG9zaXRpb24gPCBsZW5ndGgpOwogCi0gICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShzdHJp
bmcuc3Vic3RyaW5nKHNjYW5uZXJQb3NpdGlvbiwgcmVsYXRpdmVTdGFydFBvc2l0aW9uKSk7Cisg
ICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShzdHJpbmcuc3Vic3RyaW5nKHNjYW5uZXJQb3Np
dGlvbiwgcmVsYXRpdmVTdGFydFBvc2l0aW9uKSwgd2hpdGVzcGFjZU1vZGUpOwogICAgICAgICBp
bnNlcnRQaG9uZU51bWJlckxpbmsoc3RyaW5nLnN1YnN0cmluZyhzY2FubmVyUG9zaXRpb24gKyBy
ZWxhdGl2ZVN0YXJ0UG9zaXRpb24sIHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2ZVN0YXJ0
UG9zaXRpb24gKyAxKSk7CiAKICAgICAgICAgc2Nhbm5lclBvc2l0aW9uICs9IHJlbGF0aXZlRW5k
UG9zaXRpb24gKyAxOwpAQCAtMjI0OCwxMCArMjI0OCwxMCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6bGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBpZiAoc2Nh
bm5lclBvc2l0aW9uID4gMCkgewogICAgICAgICBpZiAoc2Nhbm5lclBvc2l0aW9uIDwgbGVuZ3Ro
KSB7CiAgICAgICAgICAgICBTdHJpbmcgYWZ0ZXIgPSBzdHJpbmcuc3Vic3RyaW5nKHNjYW5uZXJQ
b3NpdGlvbiwgbGVuZ3RoIC0gc2Nhbm5lclBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fdHJlZS5p
bnNlcnRUZXh0Tm9kZShhZnRlcik7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUo
YWZ0ZXIsIHdoaXRlc3BhY2VNb2RlKTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBt
X3RyZWUuaW5zZXJ0VGV4dE5vZGUoc3RyaW5nKTsKKyAgICAgICAgbV90cmVlLmluc2VydFRleHRO
b2RlKHN0cmluZywgd2hpdGVzcGFjZU1vZGUpOwogfQogCiAvLyBMb29rcyBhdCB0aGUgYW5jZXN0
b3JzIG9mIHRoZSBlbGVtZW50IHRvIGRldGVybWluZSB3aGV0aGVyIHdlJ3JlIGluc2lkZSBhbiBl
bGVtZW50IHdoaWNoIGRpc2FsbG93cyBwYXJzaW5nIHBob25lIG51bWJlcnMuCkBAIC0yNDMwLDE0
ICsyNDMwLDE1IEBAIFJlcHJvY2Vzc0J1ZmZlcjoKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5KEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBtX3RyZWUucmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxl
bWVudHMoKTsKKyAgICBhdXRvIHdoaXRlc3BhY2VNb2RlID0gYnVmZmVyLmlzQWxsOEJpdERhdGEo
KSA/IFdoaXRlc3BhY2VVbmtub3duIDogTm90QWxsV2hpdGVzcGFjZTsKICAgICBTdHJpbmcgY2hh
cmFjdGVycyA9IGJ1ZmZlci50YWtlUmVtYWluaW5nKCk7CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghaXNQYXJz
aW5nRnJhZ21lbnQoKSAmJiBtX3RyZWUuaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgp
ICYmIHNob3VsZFBhcnNlVGVsZXBob25lTnVtYmVyc0luTm9kZShtX3RyZWUuY3VycmVudE5vZGUo
KSkgJiYgVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6OmlzU3VwcG9ydGVkKCkpCi0gICAgICAgIGxp
bmtpZnlQaG9uZU51bWJlcnMoY2hhcmFjdGVycyk7CisgICAgICAgIGxpbmtpZnlQaG9uZU51bWJl
cnMoY2hhcmFjdGVycywgd2hpdGVzcGFjZU1vZGUpOwogICAgIGVsc2UKLSAgICAgICAgbV90cmVl
Lmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMpOworICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5v
ZGUoY2hhcmFjdGVycywgd2hpdGVzcGFjZU1vZGUpOwogI2Vsc2UKLSAgICBtX3RyZWUuaW5zZXJ0
VGV4dE5vZGUoY2hhcmFjdGVycyk7CisgICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3Rl
cnMsIHdoaXRlc3BhY2VNb2RlKTsKICNlbmRpZgogICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlz
QWxsV2hpdGVzcGFjZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQogICAgICAg
ICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmgKaW5kZXggZGQ4MDkyOTViYzMzN2RlYzAwN2YyMjM2ODU4M2VmN2U4MDA4
YjYwMS4uNGNiZDQ1MDFmZTI2NDBhNDY3ZWYwMDBmNDFmOTFlZTAyM2U5MzZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTEwOSw3ICsxMDks
NyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgaW5zZXJ0UGhvbmVOdW1iZXJMaW5rKGNv
bnN0IFN0cmluZyYpOwotICAgIHZvaWQgbGlua2lmeVBob25lTnVtYmVycyhjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIGxpbmtpZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJiwgV2hpdGVzcGFj
ZU1vZGUpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NUb2tlbihBdG9tSFRNTFRva2VuJiYp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>