<?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>224171</bug_id>
          
          <creation_ts>2021-04-03 22:15:56 -0700</creation_ts>
          <short_desc>[WTF] Introduce FixedVector and use it for FixedOperands</short_desc>
          <delta_ts>2021-04-06 13:54:27 -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>JavaScriptCore</component>
          <version>WebKit Nightly 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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746854</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 22:15:56 -0700</bug_when>
    <thetext>[WTF] Introduce FixedVector and use it for FixedOperands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746855</commentid>
    <comment_count>1</comment_count>
      <attachid>425126</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 22:19:13 -0700</bug_when>
    <thetext>Created attachment 425126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746856</commentid>
    <comment_count>2</comment_count>
      <attachid>425127</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-03 23:07:28 -0700</bug_when>
    <thetext>Created attachment 425127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746985</commentid>
    <comment_count>3</comment_count>
      <attachid>425127</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-05 09:44:10 -0700</bug_when>
    <thetext>Comment on attachment 425127
Patch

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

r=me

&gt; Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:90
&gt;      using RefCountedArray = WTF::RefCountedArray&lt;int&gt;;

I think we can remove this now.

&gt; Source/JavaScriptCore/runtime/CachedTypes.cpp:625
&gt; +    void encode(Encoder&amp; encoder, const FixedVector&lt;SourceType&lt;T&gt;&gt;&amp; vector)

It&apos;s a pity that we&apos;re copy-pasting this code 3 times.  Can we use just one template, and if needed, std::enable_if the container type to be one of the 3 acceptable types?

&gt; Source/JavaScriptCore/runtime/CachedTypes.cpp:658
&gt; +    void decode(Decoder&amp; decoder, FixedVector&lt;SourceType&lt;T&gt;&gt;&amp; vector, Args... args) const

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747030</commentid>
    <comment_count>4</comment_count>
      <attachid>425127</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 11:33:29 -0700</bug_when>
    <thetext>Comment on attachment 425127
Patch

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

&gt;&gt; Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:90
&gt;&gt;      using RefCountedArray = WTF::RefCountedArray&lt;int&gt;;
&gt; 
&gt; I think we can remove this now.

Unfortunately, LLInt still uses RefCountedArray::m_data in

loadp CodeBlock::m_argumentValueProfiles + FixedVector::m_storage + RefCountedArray::m_data[t1], t3

&gt;&gt; Source/JavaScriptCore/runtime/CachedTypes.cpp:625
&gt;&gt; +    void encode(Encoder&amp; encoder, const FixedVector&lt;SourceType&lt;T&gt;&gt;&amp; vector)
&gt; 
&gt; It&apos;s a pity that we&apos;re copy-pasting this code 3 times.  Can we use just one template, and if needed, std::enable_if the container type to be one of the 3 acceptable types?

Changed them to use templatized ones :)

&gt;&gt; Source/JavaScriptCore/runtime/CachedTypes.cpp:658
&gt;&gt; +    void decode(Decoder&amp; decoder, FixedVector&lt;SourceType&lt;T&gt;&gt;&amp; vector, Args... args) const
&gt; 
&gt; Ditto.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747053</commentid>
    <comment_count>5</comment_count>
      <attachid>425186</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 12:25:03 -0700</bug_when>
    <thetext>Created attachment 425186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747275</commentid>
    <comment_count>6</comment_count>
      <attachid>425239</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 21:40:22 -0700</bug_when>
    <thetext>Created attachment 425239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747427</commentid>
    <comment_count>7</comment_count>
      <attachid>425278</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-06 07:56:30 -0700</bug_when>
    <thetext>Created attachment 425278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747577</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-06 12:44:27 -0700</bug_when>
    <thetext>Existing flaky crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747579</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-06 12:45:55 -0700</bug_when>
    <thetext>mac-debug-wk1 is getting stuck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747580</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-06 12:47:57 -0700</bug_when>
    <thetext>Committed r275542 (236198@main): &lt;https://commits.webkit.org/236198@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747581</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-06 12:48:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/76279966&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425126</attachid>
            <date>2021-04-03 22:19:13 -0700</date>
            <delta_ts>2021-04-03 23:07:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224171-20210403221912.patch</filename>
            <type>text/plain</type>
            <size>53623</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi5mZjcwNWE3NzQ0NDczMzYz
NGViM2ZlZjkwNGM0YzNmYjA5MDg5NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZlY3RvciBhbmQgdXNlIGl0IGZvciBG
aXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZWZpbmUgRml4ZWRPcGVyYW5kczxUPiB3aGljaCB1c2VzIEZpeGVkVmVjdG9yIGZvciBp
dHMgc3RvcmFnZS4gV2UgdXNlIEZpeGVkT3BlcmFuZHMgaW4gRlRMOjpPU1JFeGl0RGVzY3JpcHRv
ci4KKyAgICAgICAgV2UgYWxzbyByZXBsYWNlIFJlZkNvdW50ZWRBcnJheTxUPiB3aXRoIEZpeGVk
VmVjdG9yPFQ+IGlmIHRoZXkgYXJlIG5vdCByZXF1aXJpbmcgUmVmQ291bnRlZEFycmF5PFQ+J3Mg
cmVmLWNvdW50aW5nCisgICAgICAgIHNlbWFudGljcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldFJhcmVD
YXNlUHJvZmlsZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tC
b3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFuZHMuaDoKKyAgICAgICAgKEpTQzo6
T3BlcmFuZHM6Ok9wZXJhbmRzKToKKyAgICAgICAgKiBieXRlY29kZS9PcGVyYW5kc0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6VT46OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlND
OjpVPjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wZXJhbmRzPFQ+OjpkdW1wSW5Db250
ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3BlcmFuZHM8VD46OmR1bXAgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmR1bXBFeHByZXNzaW9uUmFuZ2VJbmZv
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlSW5kZXggY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpleHByZXNzaW9uSW5mbyk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppZGVudGlmaWVycyBjb25zdCk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpjb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRJZGVudGlmaWVy
U2V0cyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpvcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0cyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRj
aCk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICog
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkVmVjdG9yOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRW
ZWN0b3I6OmRlY29kZSBjb25zdCk6CisKIDIwMjEtMDQtMDIgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlZHVjZSBieXRlY29kZSBpbnN0cnVjdGlv
biBjb3VudCBlbWl0dGVkIGZvciBgY2xhc3MgZXh0ZW5kc2AKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDFkZGY1NTI4OGI3ZDdm
ZDk3NDM0Y2NiMjlkOWIxMDgxODc4YmYzMC4uNGFlOGI4M2VlZmQ0OTFkOGQzNDM0NzM5ZTBiNjhi
OGNkNTM0YzhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZl
Y3RvciBhbmQgdXNlIGl0IGZvciBGaXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIEZpeGVkVmVjdG9yPFQ+IGlzIGEgd3JhcHBl
ciBhcm91bmQgUmVmQ291bnRlZEFycmF5PFQ+LCBidXQgdGhpcyBvZmZlcnMgVmVjdG9yLWxpa2Ug
Y29weSAvIG1vdmUgc2VtYW50aWNzLAorICAgICAgICBzbyB0aGF0IHdlIGNhbiB1c2UgdGhpcyBG
aXhlZFZlY3RvcjxUPiBhcyBhIGRyb3AtaW4tcmVwbGFjZW1lbnQgZm9yIGZpeGVkLXNpemVkIFZl
Y3RvciBmaWVsZHMuIFRoZSBwdXJwb3NlCisgICAgICAgIG9mIHRoYXQgaXMgc2F2aW5nIG1lbW9y
eSBieSByZW1vdmluZyB1bm5lY2Vzc2FyeSBzdG9yYWdlIChGaXhlZFZlY3RvciBpcyBmaXhlZC1z
aXplZCBhbGxvY2F0ZWQpIGFuZCBwdXR0aW5nIHNpemUKKyAgICAgICAgaW50byB0aGUgYWxsb2Nh
dGVkIG1lbW9yeS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rv
ci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpGYXN0Qml0VmVjdG9yKToKKyAgICAg
ICAgKiB3dGYvRml4ZWRWZWN0b3IuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9y
OjpGaXhlZFZlY3Rvcik6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXVEY6OkZp
eGVkVmVjdG9yOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmJ5
dGVTaXplIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmRhdGEpOgorICAgICAg
ICAoV1RGOjpGaXhlZFZlY3Rvcjo6YmVnaW4pOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6
ZW5kKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmRhdGEgY29uc3QpOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJiZWdpbik6CisgICAg
ICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyZW5kKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6
OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyZW5kIGNvbnN0KToK
KyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmF0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0
b3I6OmF0IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yW10pOgor
ICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjpmaXJzdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpmaXJz
dCBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpsYXN0KToKKyAgICAgICAgKFdU
Rjo6Rml4ZWRWZWN0b3I6Omxhc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6
ZmlsbCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAg
ICAgICAgKiB3dGYvUmVmQ291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRB
cnJheTo6UmVmQ291bnRlZEFycmF5KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5Ojpi
ZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6ZW5kKToKKyAgICAgICAgKFdU
Rjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpyYmVn
aW4pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJlbmQpOgorICAgICAgICAoV1RG
OjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRBcnJheTo6cmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6Zmls
bCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6c3dhcCk6CisKIDIwMjEtMDQtMDIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxl
IFByZWZlclBhZ2VSZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCBieSBkZWZhdWx0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA2Y2I4OGNlN2FmNTM1NzlhOTZiY2E2NDc4NGIy
NzMxY2E1ODI4ZmQ3Li40ZDU3ZGE1YTMwZTJkMTlmMGM4NWNiNWNkOWRiZjM3MDg1MzM1ZjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Rh
dGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSkpOwogICAgICAgICBhdXRvJiBq
dW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIGp1
bXBUYWJsZS5taW4gPSAwOwotICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IFJlZkNv
dW50ZWRBcnJheTxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKKyAgICAgICAganVtcFRh
YmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkg
KyAxKTsKICAgICAgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCks
IGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsKICAgICAgICAganVtcFRhYmxlLmFk
ZCgwLCBuZXh0VG9FbnRlclBvaW50Lm9mZnNldCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhMjM0MTk4YTlhZTU0MGNmMzI1NjRiZDU3YWY0
MGUwODIzZWMwNDBkLi5hY2U4M2VhZDRjYjY1OTZjZTBjYjVkOWM5YWM4ZjcwZjUzNTUxMWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDAz
LDcgKzQwMyw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgfQogCiAgICAgYm9vbCBz
aG91bGRVcGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgPSBtX3VubGlua2VkQ29kZS0+d2Fz
Q29tcGlsZWRXaXRoVHlwZVByb2ZpbGVyT3Bjb2RlcygpIHx8IG1fdW5saW5rZWRDb2RlLT53YXND
b21waWxlZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpOwotICAgIG1fZnVuY3Rpb25E
ZWNscyA9IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4o
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKKyAgICBtX2Z1bmN0
aW9uRGVjbHMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4o
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNp
emVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwg
aSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KGkpOwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKQpA
QCAtNDExLDcgKzQxMSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIG1fZnVu
Y3Rpb25EZWNsc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZS0+bGluayh2bSwg
dG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLCBXVEY6Om51bGxv
cHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bigpKSk7CiAgICAgfQogCi0gICAgbV9mdW5jdGlvbkV4cHJzID0gUmVmQ291bnRlZEFycmF5PFdy
aXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkV4cHJzKCkpOworICAgIG1fZnVuY3Rpb25FeHBycyA9IEZpeGVkVmVjdG9yPFdy
aXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkV4cHJzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25FeHBycygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9
IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7CiAgICAgICAgIGlmIChzaG91bGRV
cGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUpCkBAIC04ODcsNyArODg3LDcgQEAgQ29kZUJs
b2NrOjp+Q29kZUJsb2NrKCkKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCi12b2lkIENvZGVC
bG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFy
cmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgUmVmQ291bnRlZEFycmF5PFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2Ny
aXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKQordm9pZCBDb2RlQmxvY2s6OnNldENv
bnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4m
IGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYg
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BM
ZXZlbEV4ZWN1dGFibGUpCiB7CiAgICAgVk0mIHZtID0gKm1fdm07CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTQ5LDcgKzk0OSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRl
cnMgPSBuZXdWYWx1ZTsKIAotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gUmVmQ291bnRl
ZEFycmF5PFZhbHVlUHJvZmlsZT4oT3B0aW9uczo6dXNlSklUKCkgPyBuZXdWYWx1ZSA6IDApOwor
ICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPihP
cHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAKIENvZGVCbG9jayogQ29kZUJs
b2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0xNzU0LDcgKzE3NTQsNyBAQCBD
YWxsTGlua0luZm8qIENvZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChC
eXRlY29kZUluZGV4IGluZGV4KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIENvZGVC
bG9jazo6c2V0UmFyZUNhc2VQcm9maWxlcyhSZWZDb3VudGVkQXJyYXk8UmFyZUNhc2VQcm9maWxl
PiYmIHJhcmVDYXNlUHJvZmlsZXMpCit2b2lkIENvZGVCbG9jazo6c2V0UmFyZUNhc2VQcm9maWxl
cyhGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+JiYgcmFyZUNhc2VQcm9maWxlcykKIHsKICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgZW5zdXJlSklURGF0YShs
b2NrZXIpLm1fcmFyZUNhc2VQcm9maWxlcyA9IFdURk1vdmUocmFyZUNhc2VQcm9maWxlcyk7CkBA
IC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5k
YXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBpZiAoIXVubGlua2VkQ29kZUJs
b2NrKCktPmhhc09wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9wUHJvZmlsZUNv
bnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CisgICAgY29uc3QgRml4ZWRWZWN0b3I8SW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2Nr
KCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBieXRlY29kZU9mZnNldHMuc2l6ZSgpOyBpIDwgb2Zm
c2V0c0xlbmd0aDsgaSsrKSB7CiAgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBm
aW5kaW5nIAogICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyB3aWxs
IGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMgYmxvY2suCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggM2U4YTgwMTQ2NzQwZWQ3
YTFhYzIzNDg4MmQ3MDliNGMyNTQwZmYwZS4uM2RhNDhmY2RkZGI1MzEyZDk1MjIyMWFjODk0NGFl
MzQ2MDAwZTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aApAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3
dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC0yNzcsNyArMjc3LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsK
ICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgUGFja2VkUmF3U2VudGlu
ZWxOb2RlPENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdDYWxsczsKICAgICAgICAgU2VudGluZWxM
aW5rZWRMaXN0PFBvbHltb3JwaGljQ2FsbE5vZGUsIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxQb2x5
bW9ycGhpY0NhbGxOb2RlPj4gbV9pbmNvbWluZ1BvbHltb3JwaGljQ2FsbHM7Ci0gICAgICAgIFJl
ZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+IG1fcmFyZUNhc2VQcm9maWxlczsKKyAgICAg
ICAgRml4ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlPiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4gbV9wY1RvQ29kZU9yaWdpbk1h
cDsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBtX2NhbGxl
ZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIEpJVENvZGVNYXAgbV9qaXRDb2RlTWFwOwpAQCAtMzQx
LDcgKzM0MSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQg
c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CiAgICAgdm9pZCBzZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOwogCi0g
ICAgdm9pZCBzZXRSYXJlQ2FzZVByb2ZpbGVzKFJlZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2Zp
bGU+JiYpOworICAgIHZvaWQgc2V0UmFyZUNhc2VQcm9maWxlcyhGaXhlZFZlY3RvcjxSYXJlQ2Fz
ZVByb2ZpbGU+JiYpOwogICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4KTsKICAg
ICB1bnNpZ25lZCByYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHZvaWQgdXBkYXRlQWxsVmFs
dWVQcm9maWxlUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxp
dmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNhbXBsZXNJblBy
b2ZpbGVzKTsKIAotICAgIHZvaWQgc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgUmVmQ291bnRl
ZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgUmVmQ291bnRl
ZEFycmF5PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKKyAgICB2
b2lkIHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxV
bmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRh
YmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOwogCiAgICAgdm9pZCByZXBsYWNlQ29uc3RhbnQoVmly
dHVhbFJlZ2lzdGVyIHJlZywgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMDMyLDcgKzEwMzIs
NyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyBmb3IgREZHIGNv
ZGUgYmxvY2tzLgogICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBt
X2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKICNlbmRpZgotICAgIFJlZkNvdW50ZWRBcnJheTxW
YWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOworICAgIEZpeGVkVmVjdG9yPFZh
bHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQ
b29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJy
aWVyX1Vua25vd24pOwpAQCAtMTA0MCw4ICsxMDQwLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgLy8gaXQsIHNvIHdlJ3JlIHN0dWNrIHdpdGggaXQgZm9yIG5vdy4K
ICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwog
ICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rp
b25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkRlY2xzOwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0
ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkV4cHJzOworICAgIEZpeGVk
VmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1bmN0aW9uRGVjbHM7
CisgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4+IG1fZnVu
Y3Rpb25FeHByczsKIAogICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFu
ZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCmluZGV4IDA4
YTUwMzc3NDZjYThlNmQ4MWM0MjY3Y2M2MzcxZmQwZTdlMjZiMTIuLjUxYWVhNGU3ODZiZWUzNTU2
YTY3OGQ0YjQwYWMwNWNjZmJiMTk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGVyYW5kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGVyYW5kcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTEzNCwzOSArMTM1LDM4IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpID09
IHNpemVvZih1aW50NjRfdCksICJPcGVyYW5kOjphc0JpdHMoKSByZWxpZXMgb24KIAogZW51bSBP
cGVyYW5kc0xpa2VUYWcgeyBPcGVyYW5kc0xpa2UgfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0b3JhZ2VBcmcgPSBzdGQ6OmNvbmRpdGlv
bmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIFZlY3RvcjxULCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4+PgogY2xhc3MgT3BlcmFuZHMgewogcHVibGljOgotICAg
IHVzaW5nIFN0b3JhZ2UgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9v
bD4sIEZhc3RCaXRWZWN0b3IsIFZlY3RvcjxULCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4+Owor
ICAgIHVzaW5nIFN0b3JhZ2UgPSBTdG9yYWdlQXJnOwogICAgIHVzaW5nIFJlZlR5cGUgPSBzdGQ6
OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRSZWZlcmVuY2Us
IFQmPjsKICAgICB1c2luZyBDb25zdFJlZlR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjpp
c19zYW1lX3Y8VCwgYm9vbD4sIGJvb2wsIGNvbnN0IFQmPjsKIAogICAgIE9wZXJhbmRzKCkgPSBk
ZWZhdWx0OwogCiAgICAgZXhwbGljaXQgT3BlcmFuZHMoc2l6ZV90IG51bUFyZ3VtZW50cywgc2l6
ZV90IG51bUxvY2Fscywgc2l6ZV90IG51bVRtcHMpCi0gICAgICAgIDogbV9udW1Bcmd1bWVudHMo
bnVtQXJndW1lbnRzKQorICAgICAgICA6IG1fdmFsdWVzKG51bUFyZ3VtZW50cyArIG51bUxvY2Fs
cyArIG51bVRtcHMpCisgICAgICAgICwgbV9udW1Bcmd1bWVudHMobnVtQXJndW1lbnRzKQogICAg
ICAgICAsIG1fbnVtTG9jYWxzKG51bUxvY2FscykKICAgICB7Ci0gICAgICAgIHNpemVfdCBzaXpl
ID0gbnVtQXJndW1lbnRzICsgbnVtTG9jYWxzICsgbnVtVG1wczsKLSAgICAgICAgbV92YWx1ZXMu
Z3JvdyhzaXplKTsKICAgICAgICAgaWYgKCFXVEY6OlZlY3RvclRyYWl0czxUPjo6bmVlZHNJbml0
aWFsaXphdGlvbikKICAgICAgICAgICAgIG1fdmFsdWVzLmZpbGwoVCgpKTsKICAgICB9CiAKICAg
ICBleHBsaWNpdCBPcGVyYW5kcyhzaXplX3QgbnVtQXJndW1lbnRzLCBzaXplX3QgbnVtTG9jYWxz
LCBzaXplX3QgbnVtVG1wcywgY29uc3QgVCYgaW5pdGlhbFZhbHVlKQotICAgICAgICA6IG1fbnVt
QXJndW1lbnRzKG51bUFyZ3VtZW50cykKKyAgICAgICAgOiBtX3ZhbHVlcyhudW1Bcmd1bWVudHMg
KyBudW1Mb2NhbHMgKyBudW1UbXBzKQorICAgICAgICAsIG1fbnVtQXJndW1lbnRzKG51bUFyZ3Vt
ZW50cykKICAgICAgICAgLCBtX251bUxvY2FscyhudW1Mb2NhbHMpCiAgICAgewotICAgICAgICBt
X3ZhbHVlcy5ncm93KG51bUFyZ3VtZW50cyArIG51bUxvY2FscyArIG51bVRtcHMpOwogICAgICAg
ICBtX3ZhbHVlcy5maWxsKGluaXRpYWxWYWx1ZSk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+Ci0gICAgZXhwbGljaXQgT3BlcmFuZHMoT3BlcmFuZHNMaWtlVGFnLCBjb25z
dCBPcGVyYW5kczxVPiYgb3RoZXIsIGNvbnN0IFQmIGluaXRpYWxWYWx1ZSA9IFQoKSkKLSAgICAg
ICAgOiBtX251bUFyZ3VtZW50cyhvdGhlci5udW1iZXJPZkFyZ3VtZW50cygpKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgZXhwbGljaXQgT3BlcmFuZHMoT3BlcmFu
ZHNMaWtlVGFnLCBjb25zdCBPcGVyYW5kczxVLCBWPiYgb3RoZXIsIGNvbnN0IFQmIGluaXRpYWxW
YWx1ZSA9IFQoKSkKKyAgICAgICAgOiBtX3ZhbHVlcyhvdGhlci5zaXplKCkpCisgICAgICAgICwg
bV9udW1Bcmd1bWVudHMob3RoZXIubnVtYmVyT2ZBcmd1bWVudHMoKSkKICAgICAgICAgLCBtX251
bUxvY2FscyhvdGhlci5udW1iZXJPZkxvY2FscygpKQogICAgIHsKLSAgICAgICAgbV92YWx1ZXMu
Z3JvdyhvdGhlci5zaXplKCkpOwogICAgICAgICBtX3ZhbHVlcy5maWxsKGluaXRpYWxWYWx1ZSk7
CiAgICAgfQogCkBAIC0zOTksNCArMzk5LDcgQEAgY2xhc3MgT3BlcmFuZHMgewogICAgIHVuc2ln
bmVkIG1fbnVtTG9jYWxzIHsgMCB9OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5n
IEZpeGVkT3BlcmFuZHMgPSBPcGVyYW5kczxULCBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19z
YW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIEZpeGVkVmVjdG9yPFQ+Pj47CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wZXJhbmRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJh
bmRzSW5saW5lcy5oCmluZGV4IDBiMWNjMWYyZDE5N2FkMDgzNjVhOGY3ODU2MWZkZjY3YTdkOWVk
ZGQuLjU2YzIwODU4OTNjNDRmYjNhM2FjYzQzZTllZGYzNzk5NDRiMjZmZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKQEAgLTM4LDgg
KzM4LDggQEAgaW5saW5lIHZvaWQgT3BlcmFuZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogICAgICAgICBvdXQucHJpbnQodmlydHVhbFJlZ2lzdGVyKCkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotdm9pZCBPcGVyYW5kczxUPjo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+Cit2b2lkIE9wZXJhbmRzPFQsIFU+OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFt
JiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBj
b21tYSgiICIpOwogICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50SW5kZXggPSBudW1iZXJPZkFyZ3Vt
ZW50cygpOyBhcmd1bWVudEluZGV4LS07KSB7CkBAIC01OSw4ICs1OSw4IEBAIHZvaWQgT3BlcmFu
ZHM8VD46OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpIGNvbnN0CiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBPcGVyYW5k
czxUPjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KK3ZvaWQgT3BlcmFuZHM8VCwgVT46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoIiAiKTsKICAgICBmb3IgKHNpemVfdCBh
cmd1bWVudEluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnRJbmRleC0tOykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKaW5kZXggM2FkZjllOTU0ZTFjNGJiZjViNTcxOTY0MmQyOTFlNzRlN2QyYTlkYi4uYzEw
NjExYzVjYzM3YmQyYzJjNDg2MDEwZTlmZTVmMGY2ZmM4MTQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgc3RhdGljIHZvaWQgZHVtcExpbmVDb2x1bW5FbnRyeShzaXplX3QgaW5kZXgs
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGkKIAogdm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6ZHVtcEV4cHJlc3Npb25SYW5nZUluZm8oKQogewotICAgIFJlZkNvdW50ZWRBcnJheTxF
eHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8gPSBtX2V4cHJlc3Npb25JbmZvOwor
ICAgIEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+JiBleHByZXNzaW9uSW5mbyA9IG1f
ZXhwcmVzc2lvbkluZm87CiAKICAgICBzaXplX3Qgc2l6ZSA9IG1fZXhwcmVzc2lvbkluZm8uc2l6
ZSgpOwogICAgIGRhdGFMb2dGKCJVbmxpbmtlZENvZGVCbG9jayAlcCBleHByZXNzaW9uUmFuZ2VJ
bmZvWyV6dV0ge1xuIiwgdGhpcywgc2l6ZSk7CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBVbmxp
bmtlZENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IFJlZkNv
dW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8gPSBtX2V4cHJl
c3Npb25JbmZvOworICAgIGNvbnN0IEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+JiBl
eHByZXNzaW9uSW5mbyA9IG1fZXhwcmVzc2lvbkluZm87CiAKICAgICBpbnQgbG93ID0gMDsKICAg
ICBpbnQgaGlnaCA9IGV4cHJlc3Npb25JbmZvLnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjNmNGVmM2VkNDVh
OTg4ZjMzN2Q0MjQzMmJhZjY2YjMwNmYzMTQ1NS4uMDZjMWFkYmY2Mjc2MTE1ZTliYzI2NWViNjAw
Y2IxNzgyMmNhMmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9UcmlT
dGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9Vbmlx
dWVkU3RyaW5nSW1wbC5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdK
dW1wVGFibGUgewogfTsKIAogc3RydWN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlIHsKLSAgICBS
ZWZDb3VudGVkQXJyYXk8aW50MzJfdD4gYnJhbmNoT2Zmc2V0czsKKyAgICBGaXhlZFZlY3Rvcjxp
bnQzMl90PiBicmFuY2hPZmZzZXRzOwogICAgIGludDMyX3QgbWluOwogCiAgICAgaW50MzJfdCBv
ZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpOwpAQCAt
MTM1LDcgKzEzNSw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuICEobV9mZWF0
dXJlcyAmIE5vRXZhbENhY2hlRmVhdHVyZSk7IH0KIAogICAgIGJvb2wgaGFzRXhwcmVzc2lvbklu
Zm8oKSB7IHJldHVybiBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgfQotICAgIGNvbnN0IFJlZkNv
dW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8oKSB7IHJldHVy
biBtX2V4cHJlc3Npb25JbmZvOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJh
bmdlSW5mbz4mIGV4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9leHByZXNzaW9uSW5mbzsgfQog
CiAgICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2hlY2twb2lu
dHM7IH0KICAgICB2b2lkIHNldEhhc0NoZWNrcG9pbnRzKCkgeyBtX2hhc0NoZWNrcG9pbnRzID0g
dHJ1ZTsgfQpAQCAtMTUyLDE3ICsxNTIsMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKIAogICAgIHNpemVfdCBudW1iZXJPZklkZW50aWZpZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVycy5zaXplKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyc1tpbmRleF07
IH0KLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyczsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPElk
ZW50aWZpZXI+JiBpZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcnM7IH0K
IAogICAgIEJpdFZlY3RvciYgYml0VmVjdG9yKHNpemVfdCBpKSB7IEFTU0VSVChtX3JhcmVEYXRh
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fYml0VmVjdG9yc1tpXTsgfQogCi0gICAgY29uc3QgUmVm
Q291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkg
eyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyczsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFdy
aXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25z
dGFudFJlZ2lzdGVyczsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3Rh
bnRSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50
UmVnaXN0ZXJzW3JlZy50b0NvbnN0YW50SW5kZXgoKV07IH0KICAgICBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgZ2V0Q29uc3RhbnQoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9j
b25zdGFudFJlZ2lzdGVyc1tyZWcudG9Db25zdGFudEluZGV4KCldLmdldCgpOyB9Ci0gICAgY29u
c3QgUmVmQ291bnRlZEFycmF5PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1Nv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbV9j
b25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247IH0KIAogICAgIHVuc2lnbmVkIG51bWJl
ck9mQ29uc3RhbnRJZGVudGlmaWVyU2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBt
X3JhcmVEYXRhLT5tX2NvbnN0YW50SWRlbnRpZmllclNldHMuc2l6ZSgpIDogMDsgfQotICAgIGNv
bnN0IFJlZkNvdW50ZWRBcnJheTxJZGVudGlmaWVyU2V0PiYgY29uc3RhbnRJZGVudGlmaWVyU2V0
cygpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb25zdGFudElk
ZW50aWZpZXJTZXRzOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8SWRlbnRpZmllclNldD4mIGNv
bnN0YW50SWRlbnRpZmllclNldHMoKSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsgfQogCiAgICAgLy8gSnVtcHMKICAgICBz
aXplX3QgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMu
c2l6ZSgpOyB9CkBAIC0yMzQsNyArMjM0LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29sdW1uOyB9CiAKLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldD4mIG9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkg
Y29uc3QKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYg
b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSBjb25zdAogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fcmFyZURhdGEpOwogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKQEAgLTM3NCw3ICszNzQsNyBAQCBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFBhY2tlZFJlZlB0cjxT
dHJpbmdJbXBsPiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5n
SW1wbD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCi0gICAgUmVmQ291bnRlZEFycmF5
PEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgRml4ZWRWZWN0
b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBSZWY8VW5s
aW5rZWRNZXRhZGF0YVRhYmxlPiBtX21ldGFkYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0
cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz4gbV9saXZlbmVzczsKQEAgLTM4NSwxMCArMzg1LDEwIEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAjZW5kaWYKIAogICAgIC8v
IENvbnN0YW50IFBvb2xzCi0gICAgUmVmQ291bnRlZEFycmF5PElkZW50aWZpZXI+IG1faWRlbnRp
ZmllcnM7Ci0gICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9jb25z
dGFudFJlZ2lzdGVyczsKLSAgICBSZWZDb3VudGVkQXJyYXk8U291cmNlQ29kZVJlcHJlc2VudGF0
aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsKLSAgICB1c2luZyBGdW5j
dGlvbkV4cHJlc3Npb25WZWN0b3IgPSBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPj47CisgICAgRml4ZWRWZWN0b3I8SWRlbnRpZmllcj4gbV9p
ZGVudGlmaWVyczsKKyAgICBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29u
c3RhbnRSZWdpc3RlcnM7CisgICAgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9u
PiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsKKyAgICB1c2luZyBGdW5jdGlv
bkV4cHJlc3Npb25WZWN0b3IgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+PjsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlv
bkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRXhwcnM7CiAK
QEAgLTM5NiwyMiArMzk2LDIyIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogCi0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxVbmxpbmtlZEhhbmRsZXJJ
bmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOworICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZEhh
bmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOwogCiAgICAgICAgIC8vIEp1bXAgVGFibGVz
Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0
Y2hKdW1wVGFibGVzOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8VW5saW5rZWRTdHJpbmdKdW1w
VGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRWZWN0b3I8VW5s
aW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRW
ZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsK
IAotICAgICAgICBSZWZDb3VudGVkQXJyYXk8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRp
b24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CisgICAgICAgIEZpeGVkVmVjdG9yPEV4
cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRp
b25zOwogCiAgICAgICAgIHN0cnVjdCBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgewogICAg
ICAgICAgICAgdW5zaWduZWQgbV9zdGFydERpdm90OwogICAgICAgICAgICAgdW5zaWduZWQgbV9l
bmREaXZvdDsKICAgICAgICAgfTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVHlwZVByb2Zp
bGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9NYXA7Ci0gICAgICAgIFJlZkNv
dW50ZWRBcnJheTxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8Qml0VmVjdG9yPiBt
X2JpdFZlY3RvcnM7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxJZGVudGlmaWVyU2V0PiBtX2Nv
bnN0YW50SWRlbnRpZmllclNldHM7CisgICAgICAgIEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CisgICAg
ICAgIEZpeGVkVmVjdG9yPEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOworICAgICAgICBGaXhlZFZl
Y3RvcjxJZGVudGlmaWVyU2V0PiBtX2NvbnN0YW50SWRlbnRpZmllclNldHM7CiAKICAgICAgICAg
dW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwpAQCAtNDI4LDcgKzQyOCw3IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBPdXRPZkxpbmVK
dW1wVGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
YXJlRGF0YT4gbV9yYXJlRGF0YTsKLSAgICBSZWZDb3VudGVkQXJyYXk8RXhwcmVzc2lvblJhbmdl
SW5mbz4gbV9leHByZXNzaW9uSW5mbzsKKyAgICBGaXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJ
bmZvPiBtX2V4cHJlc3Npb25JbmZvOwogCiBwcm90ZWN0ZWQ6CiAgICAgREVDTEFSRV9WSVNJVF9D
SElMRFJFTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNmFkN2Y1ZDM5OWE1MmJhMDNlNzBmYTliY2Y1
N2UwMWZmYmE5NzcwYS4uMzVkNGNkYWZjZjE2YzBiMmIwZTFjNWY1OTBiNTdhNDY2N2JhOTE2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKQEAgLTQwOTIsNyArNDA5Miw3IEBAIHN0YXRpYyB2b2lkIHByZXBh
cmVKdW1wVGFibGVGb3JTd2l0Y2goCiAgICAgaW50MzJfdCAoKmtleUdldHRlcikoRXhwcmVzc2lv
bk5vZGUqLCBpbnQzMl90IG1pbiwgaW50MzJfdCBtYXgpKQogewogICAgIGp1bXBUYWJsZS5taW4g
PSBtaW47Ci0gICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBSZWZDb3VudGVkQXJyYXk8aW50
MzJfdD4obWF4IC0gbWluICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhl
ZFZlY3RvcjxpbnQzMl90PihtYXggLSBtaW4gKyAxKTsKICAgICBzdGQ6OmZpbGwoanVtcFRhYmxl
LmJyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCksIDAp
OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjbGF1c2VDb3VudDsgKytpKSB7CiAgICAg
ICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxk
IGhhdmUgYmVlbiBmaXhlZCwgc28gCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5o
CmluZGV4IGE2NDFlYjc0YjYxZmE0NGQ3ODFlYTViMzkyMDU3MTU3ZGI1MDQ4MDcuLjRlMjUyMzc3
MDMyNjA2ZTFiY2UyMzRiMjRlNTI2OThiZjYxZmZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdC5oCkBAIC02Nyw2ICs2Nyw5IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRv
ckltcGw7CiBzdHJ1Y3QgT1NSRXhpdEhhbmRsZTsKIAogc3RydWN0IE9TUkV4aXREZXNjcmlwdG9y
IHsKK3ByaXZhdGU6CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT1NSRXhpdERlc2NyaXB0b3Ip
OworcHVibGljOgogICAgIE9TUkV4aXREZXNjcmlwdG9yKAogICAgICAgICBEYXRhRm9ybWF0IHBy
b2ZpbGVEYXRhRm9ybWF0LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLAogICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cywgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMsIHVuc2ln
bmVkIG51bWJlck9mVG1wcyk7CkBAIC03OSw3ICs4Miw3IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3Jp
cHRvciB7CiAgICAgRGF0YUZvcm1hdCBtX3Byb2ZpbGVEYXRhRm9ybWF0OwogICAgIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CiAgICAgCi0gICAgT3BlcmFuZHM8
RXhpdFZhbHVlPiBtX3ZhbHVlczsKKyAgICBGaXhlZE9wZXJhbmRzPEV4aXRWYWx1ZT4gbV92YWx1
ZXM7CiAgICAgQmFnPEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uPiBtX21hdGVyaWFsaXph
dGlvbnM7CiAKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJl
bmNlcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDRlZWEzYTVmZTc1MWU4NWE4
OGI4NThiMGFmZGI0NmE0YWFkZGRhZGQuLjc3MjFkZjVhODRjYWRjM2E2NTNhNGJlODU2NjcwZTJj
MGIwNGMzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTUyMCw5ICs1MjAsOSBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fYnlWYWxJbnN0cnVj
dGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKIAotICAgIFJlZkNv
dW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+IHJhcmVDYXNlUHJvZmlsZXM7CisgICAgRml4ZWRW
ZWN0b3I8UmFyZUNhc2VQcm9maWxlPiByYXJlQ2FzZVByb2ZpbGVzOwogICAgIGlmIChzaG91bGRF
bWl0UHJvZmlsaW5nKCkpCi0gICAgICAgIHJhcmVDYXNlUHJvZmlsZXMgPSBSZWZDb3VudGVkQXJy
YXk8UmFyZUNhc2VQcm9maWxlPihtX2J5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSk7CisgICAg
ICAgIHJhcmVDYXNlUHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+KG1fYnl0
ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZUNv
dW50SGF2aW5nU2xvd0Nhc2UgPSAwOwogICAgIGZvciAoVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciBpdGVyID0gbV9zbG93Q2FzZXMuYmVnaW4oKTsgaXRlciAhPSBtX3Nsb3dDYXNlcy5l
bmQoKTspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYzhjMjYxNTI0M2FkOGMwYTZkZWRkMGUwZWYzNTQ1YTQ2
NzQ4NzExNy4uNmRmNDY4NTBlMmM3ZWI5Njg5OGVjNGM1N2ZjYjc3ZGQ4NzVkMmQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKICAg
ICAvLyBUaGVzZSB0eXBlcyBhcmUgdXNlZnVsIHNpbmNlIHdlIGNhbid0IHVzZSAnPC4uLj4nIHN5
bnRheCBpbiBMTEludCBvZmZzZXRzIGV4dHJhY3Rpb24uIGUuZy4gVmVjdG9yPGludD46Om1fZGF0
YQogICAgIHVzaW5nIFZlY3RvciA9IFdURjo6VmVjdG9yPGludD47CiAgICAgdXNpbmcgSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbCA9IEpTQzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+Owor
ICAgIHVzaW5nIEZpeGVkVmVjdG9yID0gV1RGOjpGaXhlZFZlY3RvcjxpbnQ+OwogICAgIHVzaW5n
IFJlZkNvdW50ZWRBcnJheSA9IFdURjo6UmVmQ291bnRlZEFycmF5PGludD47CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQppbmRleCAzODMzN2Q3ZDE5MDg0Y2Q1ZjcyNzc2YjU2ZGU4ZDkxYzIwZWMyOGFhLi5mZmM0
ZjYyOTM5ZWNlNzQ2MmUzOTc0MDllNzNmMWJkYzgxOGRkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNTUwLDcg
KzE1NTAsNyBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQog
ICAgIGFkZHAgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdo
YXQgaGFzIHRoZSBwZWVwaG9sZQogICAgIGFzc2VydChtYWNybyAob2spIGJwZ3RlcSB0MCwgMCwg
b2sgZW5kKQogICAgIGJ0cHogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCi0gICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRh
W3QxXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsg
Rml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMK
ICAgICBidHB6IHQzLCAuYXJndW1lbnRQcm9maWxlRG9uZSAjIFdoZW4gd2UgY2FuJ3QgSklULCB3
ZSBkb24ndCBhbGxvY2F0ZSBhbnkgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMuCiAgICAgbXVscCBz
aXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVk
dWN0aW9uIQogICAgIGxzaGlmdHAgMywgdDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3Vt
ZW50cyBvbiB0aGUgc3RhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKaW5kZXggN2JhMjcxZDhjNmIzZjE5MDY2MmEwMWJlZjhlMzFkMjExYzhjYzJl
YS4uZDE2Yjc4NzBkZTAwYmMwYzMzY2Y5MDU1NjhlOTgwNWMxZTIyOGQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtNjIyLDYgKzYyMiwx
NiBAQCBjbGFzcyBDYWNoZWRWZWN0b3IgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VmVj
dG9yPFNvdXJjZVR5cGU8VD4sIElubGluZUNhcAogICAgICAgICAgICAgOjpKU0M6OmVuY29kZShl
bmNvZGVyLCBidWZmZXJbaV0sIHZlY3RvcltpXSk7CiAgICAgfQogCisgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlVHlwZTxUPj4mIHZlY3Rv
cikKKyAgICB7CisgICAgICAgIG1fc2l6ZSA9IHZlY3Rvci5zaXplKCk7CisgICAgICAgIGlmICgh
bV9zaXplKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBUKiBidWZmZXIgPSB0aGlzLT50
ZW1wbGF0ZSBhbGxvY2F0ZTxUPihlbmNvZGVyLCBtX3NpemUpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICA6OkpTQzo6ZW5jb2RlKGVu
Y29kZXIsIGJ1ZmZlcltpXSwgdmVjdG9yW2ldKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPgogICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxT
b3VyY2VUeXBlPFQ+LCBJbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCAxNiwgTWFsbG9j
PiYgdmVjdG9yLCBBcmdzLi4uIGFyZ3MpIGNvbnN0CiAgICAgewpAQCAtNjQ0LDYgKzY1NCwxNiBA
QCBjbGFzcyBDYWNoZWRWZWN0b3IgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VmVjdG9y
PFNvdXJjZVR5cGU8VD4sIElubGluZUNhcAogICAgICAgICAgICAgOjpKU0M6OmRlY29kZShkZWNv
ZGVyLCBidWZmZXJbaV0sIHZlY3RvcltpXSwgYXJncy4uLik7CiAgICAgfQogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBG
aXhlZFZlY3RvcjxTb3VyY2VUeXBlPFQ+PiYgdmVjdG9yLCBBcmdzLi4uIGFyZ3MpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIW1fc2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dmVjdG9yID0gRml4ZWRWZWN0b3I8U291cmNlVHlwZTxUPj4obV9zaXplKTsKKyAgICAgICAgY29u
c3QgVCogYnVmZmVyID0gdGhpcy0+dGVtcGxhdGUgYnVmZmVyPFQ+KCk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIDo6SlNDOjpkZWNv
ZGUoZGVjb2RlciwgYnVmZmVyW2ldLCB2ZWN0b3JbaV0sIGFyZ3MuLi4pOworICAgIH0KIAogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1ZjMwYzlhNTYxMzdiM2MzMWQzMGRiYWI1MzE5MzllYjNjODk4YTYy
Li42NzNhOWU2ZGY5YjI2YWUyM2JlOTJlZThkMDc5MzU0YWZjMTFlYTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc0Miw2ICs3NDIsNyBAQAogCQlFM0JF
MDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDNTgzQzgy
NjEyN0FERDAwQzU3NTY4IC8qIFJvYmluSG9vZEhhc2hNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm9i
aW5Ib29kSGFzaE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NGNzY5MDIx
MTVENkJBMDA5MURFNDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb21wYWN0UG9pbnRlclR1cGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRTBGMDRGMjYxOTcxNTcwMDQ2NDBGQyAvKiBGaXhlZFZlY3Rvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFFNTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxOUYy
RTYyM0FCOUUyMzAwQjI2MTI5IC8qIFZlY3Rvckhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmVjdG9ySGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAzOCw2ICsxMDM5LDcgQEAKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVBy
aW50U3RyZWFtLmggKi8sCiAJCQkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW0uY3BwICovLAogCQkJCUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmgg
Ki8sCisJCQkJRTNFMEYwNEYyNjE5NzE1NzAwNDY0MEZDIC8qIEZpeGVkVmVjdG9yLmggKi8sCiAJ
CQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUZFODZB
ODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oICovLAogCQkJCUE4
QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CmluZGV4IGUxZmE1NDVhNDAxNzhlYTMyMzcwODkzOTYzYmI0ZGE4ZWY1ODhlMWMuLmEzMDU5ZTli
YmY2ZmNlMjAyMTcxZmM0MjcwYmQxOTQ4Yzk0MjI5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBA
IC02OSw2ICs2OSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBGaWxlTWV0YWRhdGEu
aAogICAgIEZpbGVQcmludFN0cmVhbS5oCiAgICAgRmlsZVN5c3RlbS5oCisgICAgRml4ZWRWZWN0
b3IuaAogICAgIEZsaXBCeXRlcy5oCiAgICAgRm9yYmlkSGVhcEFsbG9jYXRpb24uaAogICAgIEZv
cndhcmQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDk2ZGNjZTFjZGJjMzg3NGUzNjJiMzcw
MGIyOGE0Zjk0NDMzODRhYzQuLjQzYjQ0MTA0NDdiODkxMDNlYjRjYWI1MDBkYjU0Yjc5MGIzZWY2
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTQ3OSw2ICs0NzksMTAgQEAgY2xhc3MgRmFz
dEJpdFJlZmVyZW5jZSB7CiBjbGFzcyBGYXN0Qml0VmVjdG9yIDogcHVibGljIEZhc3RCaXRWZWN0
b3JJbXBsPEZhc3RCaXRWZWN0b3JXb3JkT3duZXI+IHsKIHB1YmxpYzoKICAgICBGYXN0Qml0VmVj
dG9yKCkgeyB9CisgICAgZXhwbGljaXQgRmFzdEJpdFZlY3RvcihzaXplX3QgbnVtQml0cykKKyAg
ICB7CisgICAgICAgIGdyb3cobnVtQml0cyk7CisgICAgfQogICAgIAogICAgIEZhc3RCaXRWZWN0
b3IoY29uc3QgRmFzdEJpdFZlY3RvciYpID0gZGVmYXVsdDsKICAgICBGYXN0Qml0VmVjdG9yJiBv
cGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3RvciYpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFkZGQ5NGRiMzBjN2ZiNTMzNzkxN2FlOTg3OGJlM2M2Y2EzZjJkMzgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCkBAIC0wLDAgKzEs
MTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCisvLyBXcmFwcGVyIGFyb3VuZCBSZWZDb3VudGVkQXJyYXksIGZpeGVkLXNpemVk
LCBtZW1vcnkgY29tcGFjdCBWZWN0b3IuCisvLyBDb3B5IGNvbnN0cnVjdG9yIC8gYXNzaWdubWVu
dCBvcGVyYXRvciB3b3JrIGRpZmZlcmVudGx5IGZyb20gUmVmQ291bnRlZEFycmF5OiB3b3JrcyBh
cyBsaWtlIGEgVmVjdG9yLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEZpeGVkVmVjdG9y
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRvciA9IFQqOworICAgIHVzaW5nIGNvbnN0X2l0
ZXJhdG9yID0gY29uc3QgVCo7CisgICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2
ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisgICAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRv
ciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47CisKKyAgICBGaXhlZFZl
Y3RvcigpID0gZGVmYXVsdDsKKyAgICBGaXhlZFZlY3Rvcihjb25zdCBGaXhlZFZlY3RvciYgb3Ro
ZXIpCisgICAgICAgIDogbV9zdG9yYWdlKG90aGVyLm1fc3RvcmFnZS5jbG9uZSgpKQorICAgIHsg
fQorICAgIEZpeGVkVmVjdG9yKEZpeGVkVmVjdG9yJiYgb3RoZXIpID0gZGVmYXVsdDsKKworICAg
IEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgRml4ZWRWZWN0b3ImIG90aGVyKQorICAgIHsK
KyAgICAgICAgRml4ZWRWZWN0b3IgdG1wKG90aGVyKTsKKyAgICAgICAgc3dhcCh0bXApOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShG
aXhlZFZlY3RvciYmIG90aGVyKQorICAgIHsKKyAgICAgICAgRml4ZWRWZWN0b3IgdG1wKFdURk1v
dmUob3RoZXIpKTsKKyAgICAgICAgc3dhcCh0bXApOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgRml4ZWRWZWN0b3Ioc2l6ZV90IHNpemUpCisgICAgICAgIDog
bV9zdG9yYWdlKHNpemUpCisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBleHBsaWNpdCBGaXhlZFZlY3Rv
cihjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVy
KQorICAgICAgICA6IG1fc3RvcmFnZShvdGhlcikKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIEZpeGVk
VmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXI+JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZSA9IG90aGVyOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQorICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CisKKyAgICBUKiBkYXRhKCkgeyByZXR1cm4g
bV9zdG9yYWdlLmRhdGEoKTsgfQorICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9zdG9y
YWdlLmJlZ2luKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UuZW5k
KCk7IH0KKworICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZp
eGVkVmVjdG9yKj4odGhpcyktPmRhdGEoKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMpLT5iZWdpbigpOyB9
CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhl
ZFZlY3Rvcio+KHRoaXMpLT5lbmQoKTsgfQorCisgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4o
KSB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJl
bmQoKSB7IHJldHVybiBtX3N0b3JhZ2UucmVuZCgpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVy
YXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KKyAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmVu
ZCgpOyB9CisKKyAgICBUJiBhdChzaXplX3QgaSkgeyByZXR1cm4gbV9zdG9yYWdlLmF0KGkpOyB9
CisgICAgY29uc3QgVCYgYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5hdChp
KTsgfQorCisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KKyAg
ICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQor
CisgICAgVCYgZmlyc3QoKSB7IHJldHVybiAoKnRoaXMpWzBdOyB9CisgICAgY29uc3QgVCYgZmly
c3QoKSBjb25zdCB7IHJldHVybiAoKnRoaXMpWzBdOyB9CisgICAgVCYgbGFzdCgpIHsgcmV0dXJu
ICgqdGhpcylbc2l6ZSgpIC0gMV07IH0KKyAgICBjb25zdCBUJiBsYXN0KCkgY29uc3QgeyByZXR1
cm4gKCp0aGlzKVtzaXplKCkgLSAxXTsgfQorCisgICAgdm9pZCBmaWxsKGNvbnN0IFQmIHZhbCkg
eyBtX3N0b3JhZ2UuZmlsbCh2YWwpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRml4
ZWRWZWN0b3I8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPT0gb3RoZXIubV9z
dG9yYWdlOyB9CisKKyAgICB2b2lkIHN3YXAoRml4ZWRWZWN0b3I8VD4mIG90aGVyKQorICAgIHsK
KyAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAg
UmVmQ291bnRlZEFycmF5PFQ+IG1fc3RvcmFnZTsKK307CitzdGF0aWNfYXNzZXJ0KHNpemVvZihG
aXhlZFZlY3RvcjxpbnQ+KSA9PSBzaXplb2YoaW50KikpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgoraW5saW5lIHZvaWQgc3dhcChGaXhlZFZlY3RvcjxUPiYgYSwgRml4ZWRWZWN0b3I8VD4mIGIp
Cit7CisgICAgYS5zd2FwKGIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpGaXhlZFZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJh
eS5oIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggNTVjYTk4MTMxMzhi
MjYyMDEwMzQ5OTA3YzI1NjlmZWMyZGIxNGExYy4uMjQ4NmQ2NTEwODgwMWZmOTE2YzgyMmJjYjE5
MmU4YTc1ZjkzOTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5
LmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTUwLDYgKzUwLDEx
IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgZW51bSBDb21tb25Db3B5Q29uc3RydWN0
b3JUYWcgeyBDb21tb25Db3B5Q29uc3RydWN0b3IgfTsKIAogcHVibGljOgorICAgIHVzaW5nIGl0
ZXJhdG9yID0gVCo7CisgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25zdCBUKjsKKyAgICB1
c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsK
KyAgICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9y
PGNvbnN0X2l0ZXJhdG9yPjsKKwogICAgIFJlZkNvdW50ZWRBcnJheSgpID0gZGVmYXVsdDsKICAg
ICAKICAgICBSZWZDb3VudGVkQXJyYXkoY29uc3QgUmVmQ291bnRlZEFycmF5JiBvdGhlcikKQEAg
LTYxLDYgKzY2LDEwIEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgICAgIDogUmVmQ291
bnRlZEFycmF5KENvbW1vbkNvcHlDb25zdHJ1Y3Rvciwgb3RoZXIpCiAgICAgeyB9CiAKKyAgICBS
ZWZDb3VudGVkQXJyYXkoUmVmQ291bnRlZEFycmF5JiYgb3RoZXIpCisgICAgICAgIDogbV9kYXRh
KFB0clRyYWl0czo6ZXhjaGFuZ2Uob3RoZXIubV9kYXRhLCBudWxscHRyKSkKKyAgICB7IH0KKwog
ICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAg
IGlmICghc2l6ZSkgewpAQCAtMTY5LDggKzE3OCw4IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7
CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpICogc2l6ZW9mKFQp
OyB9CiAgICAgCiAgICAgVCogZGF0YSgpIHsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fZGF0
YSk7IH0KLSAgICBUKiBiZWdpbigpIHsgcmV0dXJuIGRhdGEoKTsgfQotICAgIFQqIGVuZCgpCisg
ICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBlbmQo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAg
LTE3OSw4ICsxODgsMTMgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICB9CiAgICAgCiAg
ICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFy
cmF5Kj4odGhpcyktPmRhdGEoKTsgfQotICAgIGNvbnN0IFQqIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+YmVnaW4oKTsgfQotICAgIGNv
bnN0IFQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4o
dGhpcyktPmVuZCgpOyB9CisgICAgY29uc3QgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5iZWdpbigpOyB9Cisg
ICAgY29uc3QgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxS
ZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+ZW5kKCk7IH0KKworICAgIHJldmVyc2VfaXRlcmF0b3Ig
cmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgICByZXZlcnNl
X2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9Cisg
ICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVu
ZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KICAg
ICAKICAgICBUJiBhdChzaXplX3QgaSkKICAgICB7CkBAIC0yMDIsNiArMjE2LDE2IEBAIGNsYXNz
IFJlZkNvdW50ZWRBcnJheSB7CiAgICAgVCYgbGFzdCgpIHsgcmV0dXJuICgqdGhpcylbc2l6ZSgp
IC0gMV07IH0KICAgICBjb25zdCBUJiBsYXN0KCkgY29uc3QgeyByZXR1cm4gKCp0aGlzKVtzaXpl
KCkgLSAxXTsgfQogCisgICAgdm9pZCBmaWxsKGNvbnN0IFQmIHZhbCkKKyAgICB7CisgICAgICAg
IHN0ZDo6ZmlsbChiZWdpbigpLCBlbmQoKSwgdmFsKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAo
UmVmQ291bnRlZEFycmF5JiBvdGhlcikKKyAgICB7CisgICAgICAgIFB0clRyYWl0czo6c3dhcCht
X2RhdGEsIG90aGVyLm1fZGF0YSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXJUcmFpdHMgPSBQdHJUcmFpdHM+CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZkNvdW50
ZWRBcnJheTxULCBPdGhlclRyYWl0cz4mIG90aGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMDRkNjc4OTYzODcyMzM2
YTRmMTBlOGIzODRiZWJlYjE3ZGMzZWJhLi41M2FmY2VkNThkNGE5ZDgwMzNkYTY1ZTcyZDZiNGVh
NWY5OWU3NDBhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgRml4ZWRWZWN0b3IgYW5kIHVz
ZSBpdCBmb3IgRml4ZWRPcGVyYW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0MTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcDogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkRlc3RydWN0b3JPYnNlcnZlcjo6RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6fkRlc3RydWN0b3JPYnNlcnZlcik6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6Om9wZXJhdG9yPSk6CisKIDIw
MjEtMDQtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBXS1VSTFNjaGVtZVRhc2sgcmVkaXJlY3QgQVBJLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKaW5kZXggM2Y3Y2ZmZGUyOTFjMmQ4MmRkMTI1MWJiZWM4YzgxMzExMjdmYmVmZS4uY2Q2N2Nl
NmFmYzg3YTkyOTgxODI4YjQzZWE1MTY1N2NiNTVhNDEwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CkBAIC00NCw2ICs0NCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0
cy9XVEYvRW51bVRyYWl0cy5jcHAKICAgICBUZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCiAgICAgVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisgICAgVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcAogICAg
IFRlc3RzL1dURi9GdW5jdGlvbi5jcHAKICAgICBUZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3Bw
CiAgICAgVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU2
ZWNlZmVlNjFkNmQyYzY1Mzc4NDA4YmZlN2VlZjk0NTY2ODJlOTIuLjgxZGY3YmM5YjcxZmVhNjZm
NWUxOWU3ODE2NTk5NmE4MTU3ODdmMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA5
LDYgKzExMDksNyBAQAogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVE
aXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdEMDAxM0Uy
RkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAq
LzsgfTsKIAkJRTE5NEUxQkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJl
Y2VpdmVSZXNwb25zZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zy
b21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLzsgfTsKIAkJRTMwMkJEQUEyNDA0QjkyNDAwODY1
Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyogQ29tcGFjdFJl
ZlB0clR1cGxlLmNwcCAqLzsgfTsKKwkJRTMyMTA1MTkyNjE5NzlGMzAwMTU3QzY3IC8qIEZpeGVk
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMjEwNTE4MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi87IH07CiAJCUUz
MjRBNkYwMjA0MUM4MjAwMEE3NjU5MyAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4QkMwRjIwNDFDNzYzMDAzODcxMzYg
LyogVW5pcXVlQXJyYXkuY3BwICovOyB9OwogCQlFMzI1QzkwNzIzRTM4NzAyMDBCQzdEM0IgLyog
UGljdHVyZUluUGljdHVyZVN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzI1QzkwNjIzRTM4NzAyMDBCQzdEM0IgLyogUGljdHVyZUluUGlj
dHVyZVN1cHBvcnQubW0gKi87IH07CiAJCUUzMkI1NDkyMjI4MTBBQzQwMDhBRDcwMiAvKiBQYWNr
ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMy
QjU0OTEyMjgxMEFDMDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgKi87IH07CkBAIC0yOTAyLDYgKzI5
MDMsNyBAQAogCQlFMTk0RTFCQTE3N0U1MTQ1MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlk
UmVjZWl2ZVJlc3BvbnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9t
RGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNl
aXZlUmVzcG9uc2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMwMkJEQTky
NDA0QjkyMzAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wYWN0UmVmUHRyVHVwbGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzIxMDUxODI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRml4ZWRWZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI1QzkwNjIzRTM4NzAyMDBCQzdE
M0IgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
aWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTMyQjU0OTEyMjgxMEFDMDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWNrZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRBNkQxODI0MTJE
RTM5MDAxMkFCNkUgLyogR3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VzU2VydmljZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdyYW50QWNjZXNzVG9QcmVmZXJlbmNlc1NlcnZpY2UubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzcwLDYgKzQzNzIsNyBAQAogCQkJCTFBRjdCMjFE
MUQ2Q0QxMkUwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJB
NTQ3MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwICovLAogCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMy
OEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLywKKwkJCQlFMzIxMDUxODI2MTk3OUYzMDAxNTdDNjcg
LyogRml4ZWRWZWN0b3IuY3BwICovLAogCQkJCTkzMTBDRDM2MUVGNzA4RkIwMDUwRkZFMCAvKiBG
dW5jdGlvbi5jcHAgKi8sCiAJCQkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9u
LmNwcCAqLywKIAkJCQk3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRTZXQu
Y3BwICovLApAQCAtNTEyMSw2ICs1MTI0LDcgQEAKIAkJCQkxQUY3QjIxRjFENkNEMTREMDA4QzEy
NkMgLyogRW51bVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDdDNDM0RDFERDJBNTRF
MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMxMDgyNzIyMUYy
OTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyMTA1
MTkyNjE5NzlGMzAwMTU3QzY3IC8qIEZpeGVkVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMTBDRDM4MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
eGVkVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NGVhYTk1ZDA5YTEyZTRhZjE0MjU5MGUxMTRmNWU3OGM2Y2RhMzZm
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRW
ZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfRml4ZWRW
ZWN0b3IsIEVtcHR5KQoreworICAgIEZpeGVkVmVjdG9yPGludD4gaW50VmVjdG9yOworICAgIEVY
UEVDVF9UUlVFKGludFZlY3Rvci5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUSgwVSwgaW50VmVj
dG9yLnNpemUoKSk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBJdGVyYXRvcikKK3sKKyAg
ICBGaXhlZFZlY3RvcjxpbnQ+IGludFZlY3Rvcig0KTsKKyAgICBpbnRWZWN0b3JbMF0gPSAxMDsK
KyAgICBpbnRWZWN0b3JbMV0gPSAxMTsKKyAgICBpbnRWZWN0b3JbMl0gPSAxMjsKKyAgICBpbnRW
ZWN0b3JbM10gPSAxMzsKKworICAgIEZpeGVkVmVjdG9yPGludD46Oml0ZXJhdG9yIGl0ID0gaW50
VmVjdG9yLmJlZ2luKCk7CisgICAgRml4ZWRWZWN0b3I8aW50Pjo6aXRlcmF0b3IgZW5kID0gaW50
VmVjdG9yLmVuZCgpOworICAgIEVYUEVDVF9UUlVFKGVuZCAhPSBpdCk7CisKKyAgICBFWFBFQ1Rf
RVEoMTAsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTEsICppdCk7CisgICAgKytp
dDsKKyAgICBFWFBFQ1RfRVEoMTIsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTMs
ICppdCk7CisgICAgKytpdDsKKworICAgIEVYUEVDVF9UUlVFKGVuZCA9PSBpdCk7Cit9CisKK1RF
U1QoV1RGX0ZpeGVkVmVjdG9yLCBPdmVybG9hZGVkT3BlcmF0b3JBbXBlcnNhbmQpCit7CisgICAg
c3RydWN0IFRlc3QgeworICAgIHByaXZhdGU6CisgICAgICAgIFRlc3QqIG9wZXJhdG9yJigpID0g
ZGVsZXRlOworICAgIH07CisKKyAgICBGaXhlZFZlY3RvcjxUZXN0PiB2ZWN0b3IoMSk7CisgICAg
dmVjdG9yWzBdID0gVGVzdCgpOworfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgQ29weSkKK3sK
KyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7CisgICAgdmVjMVswXSA9IDA7CisgICAgdmVj
MVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzIo
dmVjMSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAzKTsKKyAgICBFWFBFQ1RfRVEodmVj
Mi5zaXplKCksIDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsr
aSkgeworICAgICAgICBFWFBFQ1RfRVEodmVjMVtpXSwgaSk7CisgICAgICAgIEVYUEVDVF9FUSh2
ZWMyW2ldLCBpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBDb3B5QXNzaWdu
KQoreworICAgIEZpeGVkVmVjdG9yPGludD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBdID0gMDsKKyAg
ICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAgIEZpeGVkVmVjdG9yPGludD4g
dmVjMjsKKyAgICB2ZWMyID0gdmVjMTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDMpOwor
ICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgMyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2ZWMxLnNpemUoKTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMxW2ldLCBpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworICAgIH0KK30KKworVEVTVChXVEZfRml4ZWRW
ZWN0b3IsIE1vdmUpCit7CisgICAgRml4ZWRWZWN0b3I8aW50PiB2ZWMxKDMpOworICAgIHZlYzFb
MF0gPSAwOworICAgIHZlYzFbMV0gPSAxOworICAgIHZlYzFbMl0gPSAyOworCisgICAgRml4ZWRW
ZWN0b3I8aW50PiB2ZWMyKFdURk1vdmUodmVjMSkpOworICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUo
KSwgMCk7CisgICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAzKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZlYzIuc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBp
KTsKK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVBc3NpZ24pCit7CisgICAgRml4ZWRW
ZWN0b3I8aW50PiB2ZWMxKDMpOworICAgIHZlYzFbMF0gPSAwOworICAgIHZlYzFbMV0gPSAxOwor
ICAgIHZlYzFbMl0gPSAyOworCisgICAgRml4ZWRWZWN0b3I8aW50PiB2ZWMyOworICAgIHZlYzIg
PSBXVEZNb3ZlKHZlYzEpOworICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMCk7CisgICAgRVhQ
RUNUX0VRKHZlYzIuc2l6ZSgpLCAzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlYzIu
c2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKK30KKworVEVTVChX
VEZfRml4ZWRWZWN0b3IsIFN3YXApCit7CisgICAgRml4ZWRWZWN0b3I8aW50PiB2ZWMxKDMpOwor
ICAgIHZlYzFbMF0gPSAwOworICAgIHZlYzFbMV0gPSAxOworICAgIHZlYzFbMl0gPSAyOworCisg
ICAgRml4ZWRWZWN0b3I8aW50PiB2ZWMyOworICAgIHZlYzIuc3dhcCh2ZWMxKTsKKyAgICBFWFBF
Q1RfRVEodmVjMS5zaXplKCksIDApOworICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgMyk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWMyLnNpemUoKTsgKytpKQorICAgICAgICBFWFBF
Q1RfRVEodmVjMltpXSwgaSk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBJdGVyYXRvckZv
cikKK3sKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7CisgICAgdmVjMVswXSA9IDA7Cisg
ICAgdmVjMVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICBpbnQgaW5kZXggPSAwOwor
ICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS5iZWdpbigpOyBpdGVyICE9IHZlYzEuZW5kKCk7ICsr
aXRlcikgeworICAgICAgICBFWFBFQ1RfRVEoKml0ZXIsIGluZGV4KTsKKyAgICAgICAgKytpbmRl
eDsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBSZXZlcnNlKQoreworICAgIEZp
eGVkVmVjdG9yPGludD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0g
MTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAgIGludCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRv
IGl0ZXIgPSB2ZWMxLnJiZWdpbigpOyBpdGVyICE9IHZlYzEucmVuZCgpOyArK2l0ZXIpIHsKKyAg
ICAgICAgKytpbmRleDsKKyAgICAgICAgRVhQRUNUX0VRKCppdGVyLCAzIC0gaW5kZXgpOworICAg
IH0KK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIEZpbGwpCit7CisgICAgRml4ZWRWZWN0b3I8
aW50PiB2ZWMxKDMpOworICAgIHZlYzEuZmlsbCg0Mik7CisKKyAgICBmb3IgKGF1dG8mIHZhbHVl
IDogdmVjMSkKKyAgICAgICAgRVhQRUNUX0VRKHZhbHVlLCA0Mik7Cit9CisKK3N0cnVjdCBEZXN0
cnVjdG9yT2JzZXJ2ZXIgeworICAgIERlc3RydWN0b3JPYnNlcnZlcigpID0gZGVmYXVsdDsKKwor
ICAgIERlc3RydWN0b3JPYnNlcnZlcihib29sKiBkZXN0cnVjdGVkKQorICAgICAgICA6IGRlc3Ry
dWN0ZWQoZGVzdHJ1Y3RlZCkKKyAgICB7CisgICAgfQorCisgICAgfkRlc3RydWN0b3JPYnNlcnZl
cigpCisgICAgeworICAgICAgICBpZiAoZGVzdHJ1Y3RlZCkKKyAgICAgICAgICAgICpkZXN0cnVj
dGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoRGVzdHJ1Y3Rvck9i
c2VydmVyJiYgb3RoZXIpCisgICAgICAgIDogZGVzdHJ1Y3RlZChvdGhlci5kZXN0cnVjdGVkKQor
ICAgIHsKKyAgICAgICAgb3RoZXIuZGVzdHJ1Y3RlZCA9IG51bGxwdHI7CisgICAgfQorCisgICAg
RGVzdHJ1Y3Rvck9ic2VydmVyJiBvcGVyYXRvcj0oRGVzdHJ1Y3Rvck9ic2VydmVyJiYgb3RoZXIp
CisgICAgeworICAgICAgICBkZXN0cnVjdGVkID0gb3RoZXIuZGVzdHJ1Y3RlZDsKKyAgICAgICAg
b3RoZXIuZGVzdHJ1Y3RlZCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICBib29sKiBkZXN0cnVjdGVkIHsgbnVsbHB0ciB9OworfTsKKworVEVTVChXVEZfRml4
ZWRWZWN0b3IsIERlc3RydWN0b3IpCit7CisgICAgVmVjdG9yPGJvb2w+IGZsYWdzKDMsIGZhbHNl
KTsKKyAgICB7CisgICAgICAgIEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj4gdmVjdG9y
KGZsYWdzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIHZlY3RvcltpXSA9IERlc3RydWN0b3JPYnNlcnZlcigm
ZmxhZ3NbaV0pOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVD
VF9UUlVFKGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIERlc3RydWN0b3JB
ZnRlck1vdmUpCit7CisgICAgVmVjdG9yPGJvb2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7Cisg
ICAgICAgIEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj4gb3V0ZXJWZWN0b3I7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj4gdmVjdG9y
KGZsYWdzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxh
Z3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgdmVjdG9yW2ldID0gRGVzdHJ1Y3Rvck9i
c2VydmVyKCZmbGFnc1tpXSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ld
KTsKKyAgICAgICAgICAgIG91dGVyVmVjdG9yID0gV1RGTW92ZSh2ZWN0b3IpOworICAgICAgICB9
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7CisgICAgfQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZmxh
Z3NbaV0pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425127</attachid>
            <date>2021-04-03 23:07:28 -0700</date>
            <delta_ts>2021-04-05 10:02:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224171-20210403230727.patch</filename>
            <type>text/plain</type>
            <size>53775</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi5mZjcwNWE3NzQ0NDczMzYz
NGViM2ZlZjkwNGM0YzNmYjA5MDg5NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZlY3RvciBhbmQgdXNlIGl0IGZvciBG
aXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZWZpbmUgRml4ZWRPcGVyYW5kczxUPiB3aGljaCB1c2VzIEZpeGVkVmVjdG9yIGZvciBp
dHMgc3RvcmFnZS4gV2UgdXNlIEZpeGVkT3BlcmFuZHMgaW4gRlRMOjpPU1JFeGl0RGVzY3JpcHRv
ci4KKyAgICAgICAgV2UgYWxzbyByZXBsYWNlIFJlZkNvdW50ZWRBcnJheTxUPiB3aXRoIEZpeGVk
VmVjdG9yPFQ+IGlmIHRoZXkgYXJlIG5vdCByZXF1aXJpbmcgUmVmQ291bnRlZEFycmF5PFQ+J3Mg
cmVmLWNvdW50aW5nCisgICAgICAgIHNlbWFudGljcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldFJhcmVD
YXNlUHJvZmlsZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tC
b3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFuZHMuaDoKKyAgICAgICAgKEpTQzo6
T3BlcmFuZHM6Ok9wZXJhbmRzKToKKyAgICAgICAgKiBieXRlY29kZS9PcGVyYW5kc0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6VT46OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlND
OjpVPjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wZXJhbmRzPFQ+OjpkdW1wSW5Db250
ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3BlcmFuZHM8VD46OmR1bXAgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmR1bXBFeHByZXNzaW9uUmFuZ2VJbmZv
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlSW5kZXggY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpleHByZXNzaW9uSW5mbyk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppZGVudGlmaWVycyBjb25zdCk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpjb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRJZGVudGlmaWVy
U2V0cyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpvcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0cyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRj
aCk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICog
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkVmVjdG9yOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRW
ZWN0b3I6OmRlY29kZSBjb25zdCk6CisKIDIwMjEtMDQtMDIgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlZHVjZSBieXRlY29kZSBpbnN0cnVjdGlv
biBjb3VudCBlbWl0dGVkIGZvciBgY2xhc3MgZXh0ZW5kc2AKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDFkZGY1NTI4OGI3ZDdm
ZDk3NDM0Y2NiMjlkOWIxMDgxODc4YmYzMC4uNGFlOGI4M2VlZmQ0OTFkOGQzNDM0NzM5ZTBiNjhi
OGNkNTM0YzhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0wNC0wMyAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZl
Y3RvciBhbmQgdXNlIGl0IGZvciBGaXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIEZpeGVkVmVjdG9yPFQ+IGlzIGEgd3JhcHBl
ciBhcm91bmQgUmVmQ291bnRlZEFycmF5PFQ+LCBidXQgdGhpcyBvZmZlcnMgVmVjdG9yLWxpa2Ug
Y29weSAvIG1vdmUgc2VtYW50aWNzLAorICAgICAgICBzbyB0aGF0IHdlIGNhbiB1c2UgdGhpcyBG
aXhlZFZlY3RvcjxUPiBhcyBhIGRyb3AtaW4tcmVwbGFjZW1lbnQgZm9yIGZpeGVkLXNpemVkIFZl
Y3RvciBmaWVsZHMuIFRoZSBwdXJwb3NlCisgICAgICAgIG9mIHRoYXQgaXMgc2F2aW5nIG1lbW9y
eSBieSByZW1vdmluZyB1bm5lY2Vzc2FyeSBzdG9yYWdlIChGaXhlZFZlY3RvciBpcyBmaXhlZC1z
aXplZCBhbGxvY2F0ZWQpIGFuZCBwdXR0aW5nIHNpemUKKyAgICAgICAgaW50byB0aGUgYWxsb2Nh
dGVkIG1lbW9yeS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rv
ci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpGYXN0Qml0VmVjdG9yKToKKyAgICAg
ICAgKiB3dGYvRml4ZWRWZWN0b3IuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9y
OjpGaXhlZFZlY3Rvcik6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXVEY6OkZp
eGVkVmVjdG9yOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmJ5
dGVTaXplIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmRhdGEpOgorICAgICAg
ICAoV1RGOjpGaXhlZFZlY3Rvcjo6YmVnaW4pOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6
ZW5kKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmRhdGEgY29uc3QpOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJiZWdpbik6CisgICAg
ICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyZW5kKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6
OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyZW5kIGNvbnN0KToK
KyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmF0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0
b3I6OmF0IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yW10pOgor
ICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjpmaXJzdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpmaXJz
dCBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpsYXN0KToKKyAgICAgICAgKFdU
Rjo6Rml4ZWRWZWN0b3I6Omxhc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6
ZmlsbCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAg
ICAgICAgKiB3dGYvUmVmQ291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRB
cnJheTo6UmVmQ291bnRlZEFycmF5KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5Ojpi
ZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6ZW5kKToKKyAgICAgICAgKFdU
Rjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpyYmVn
aW4pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJlbmQpOgorICAgICAgICAoV1RG
OjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRBcnJheTo6cmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6Zmls
bCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6c3dhcCk6CisKIDIwMjEtMDQtMDIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxl
IFByZWZlclBhZ2VSZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCBieSBkZWZhdWx0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA2Y2I4OGNlN2FmNTM1NzlhOTZiY2E2NDc4NGIy
NzMxY2E1ODI4ZmQ3Li40ZDU3ZGE1YTMwZTJkMTlmMGM4NWNiNWNkOWRiZjM3MDg1MzM1ZjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Rh
dGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSkpOwogICAgICAgICBhdXRvJiBq
dW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIGp1
bXBUYWJsZS5taW4gPSAwOwotICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IFJlZkNv
dW50ZWRBcnJheTxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKKyAgICAgICAganVtcFRh
YmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkg
KyAxKTsKICAgICAgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCks
IGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsKICAgICAgICAganVtcFRhYmxlLmFk
ZCgwLCBuZXh0VG9FbnRlclBvaW50Lm9mZnNldCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhMjM0MTk4YTlhZTU0MGNmMzI1NjRiZDU3YWY0
MGUwODIzZWMwNDBkLi5hY2U4M2VhZDRjYjY1OTZjZTBjYjVkOWM5YWM4ZjcwZjUzNTUxMWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDAz
LDcgKzQwMyw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgfQogCiAgICAgYm9vbCBz
aG91bGRVcGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgPSBtX3VubGlua2VkQ29kZS0+d2Fz
Q29tcGlsZWRXaXRoVHlwZVByb2ZpbGVyT3Bjb2RlcygpIHx8IG1fdW5saW5rZWRDb2RlLT53YXND
b21waWxlZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpOwotICAgIG1fZnVuY3Rpb25E
ZWNscyA9IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4o
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKKyAgICBtX2Z1bmN0
aW9uRGVjbHMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4o
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNp
emVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwg
aSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KGkpOwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKQpA
QCAtNDExLDcgKzQxMSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIG1fZnVu
Y3Rpb25EZWNsc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZS0+bGluayh2bSwg
dG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLCBXVEY6Om51bGxv
cHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bigpKSk7CiAgICAgfQogCi0gICAgbV9mdW5jdGlvbkV4cHJzID0gUmVmQ291bnRlZEFycmF5PFdy
aXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkV4cHJzKCkpOworICAgIG1fZnVuY3Rpb25FeHBycyA9IEZpeGVkVmVjdG9yPFdy
aXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkV4cHJzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25FeHBycygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9
IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7CiAgICAgICAgIGlmIChzaG91bGRV
cGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUpCkBAIC04ODcsNyArODg3LDcgQEAgQ29kZUJs
b2NrOjp+Q29kZUJsb2NrKCkKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCi12b2lkIENvZGVC
bG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFy
cmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgUmVmQ291bnRlZEFycmF5PFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2Ny
aXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKQordm9pZCBDb2RlQmxvY2s6OnNldENv
bnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4m
IGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYg
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BM
ZXZlbEV4ZWN1dGFibGUpCiB7CiAgICAgVk0mIHZtID0gKm1fdm07CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTQ5LDcgKzk0OSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRl
cnMgPSBuZXdWYWx1ZTsKIAotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gUmVmQ291bnRl
ZEFycmF5PFZhbHVlUHJvZmlsZT4oT3B0aW9uczo6dXNlSklUKCkgPyBuZXdWYWx1ZSA6IDApOwor
ICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPihP
cHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAKIENvZGVCbG9jayogQ29kZUJs
b2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0xNzU0LDcgKzE3NTQsNyBAQCBD
YWxsTGlua0luZm8qIENvZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChC
eXRlY29kZUluZGV4IGluZGV4KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIENvZGVC
bG9jazo6c2V0UmFyZUNhc2VQcm9maWxlcyhSZWZDb3VudGVkQXJyYXk8UmFyZUNhc2VQcm9maWxl
PiYmIHJhcmVDYXNlUHJvZmlsZXMpCit2b2lkIENvZGVCbG9jazo6c2V0UmFyZUNhc2VQcm9maWxl
cyhGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+JiYgcmFyZUNhc2VQcm9maWxlcykKIHsKICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgZW5zdXJlSklURGF0YShs
b2NrZXIpLm1fcmFyZUNhc2VQcm9maWxlcyA9IFdURk1vdmUocmFyZUNhc2VQcm9maWxlcyk7CkBA
IC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5k
YXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBpZiAoIXVubGlua2VkQ29kZUJs
b2NrKCktPmhhc09wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9wUHJvZmlsZUNv
bnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CisgICAgY29uc3QgRml4ZWRWZWN0b3I8SW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2Nr
KCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBieXRlY29kZU9mZnNldHMuc2l6ZSgpOyBpIDwgb2Zm
c2V0c0xlbmd0aDsgaSsrKSB7CiAgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBm
aW5kaW5nIAogICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyB3aWxs
IGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMgYmxvY2suCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggM2U4YTgwMTQ2NzQwZWQ3
YTFhYzIzNDg4MmQ3MDliNGMyNTQwZmYwZS4uM2RhNDhmY2RkZGI1MzEyZDk1MjIyMWFjODk0NGFl
MzQ2MDAwZTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aApAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3
dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC0yNzcsNyArMjc3LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsK
ICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgUGFja2VkUmF3U2VudGlu
ZWxOb2RlPENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdDYWxsczsKICAgICAgICAgU2VudGluZWxM
aW5rZWRMaXN0PFBvbHltb3JwaGljQ2FsbE5vZGUsIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxQb2x5
bW9ycGhpY0NhbGxOb2RlPj4gbV9pbmNvbWluZ1BvbHltb3JwaGljQ2FsbHM7Ci0gICAgICAgIFJl
ZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+IG1fcmFyZUNhc2VQcm9maWxlczsKKyAgICAg
ICAgRml4ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlPiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4gbV9wY1RvQ29kZU9yaWdpbk1h
cDsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBtX2NhbGxl
ZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIEpJVENvZGVNYXAgbV9qaXRDb2RlTWFwOwpAQCAtMzQx
LDcgKzM0MSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQg
c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CiAgICAgdm9pZCBzZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOwogCi0g
ICAgdm9pZCBzZXRSYXJlQ2FzZVByb2ZpbGVzKFJlZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2Zp
bGU+JiYpOworICAgIHZvaWQgc2V0UmFyZUNhc2VQcm9maWxlcyhGaXhlZFZlY3RvcjxSYXJlQ2Fz
ZVByb2ZpbGU+JiYpOwogICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4KTsKICAg
ICB1bnNpZ25lZCByYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHZvaWQgdXBkYXRlQWxsVmFs
dWVQcm9maWxlUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxp
dmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNhbXBsZXNJblBy
b2ZpbGVzKTsKIAotICAgIHZvaWQgc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgUmVmQ291bnRl
ZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgUmVmQ291bnRl
ZEFycmF5PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKKyAgICB2
b2lkIHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxV
bmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRh
YmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOwogCiAgICAgdm9pZCByZXBsYWNlQ29uc3RhbnQoVmly
dHVhbFJlZ2lzdGVyIHJlZywgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMDMyLDcgKzEwMzIs
NyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyBmb3IgREZHIGNv
ZGUgYmxvY2tzLgogICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBt
X2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKICNlbmRpZgotICAgIFJlZkNvdW50ZWRBcnJheTxW
YWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOworICAgIEZpeGVkVmVjdG9yPFZh
bHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQ
b29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJy
aWVyX1Vua25vd24pOwpAQCAtMTA0MCw4ICsxMDQwLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgLy8gaXQsIHNvIHdlJ3JlIHN0dWNrIHdpdGggaXQgZm9yIG5vdy4K
ICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwog
ICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rp
b25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkRlY2xzOwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0
ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkV4cHJzOworICAgIEZpeGVk
VmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1bmN0aW9uRGVjbHM7
CisgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4+IG1fZnVu
Y3Rpb25FeHByczsKIAogICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFu
ZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCmluZGV4IDA4
YTUwMzc3NDZjYThlNmQ4MWM0MjY3Y2M2MzcxZmQwZTdlMjZiMTIuLjUxYWVhNGU3ODZiZWUzNTU2
YTY3OGQ0YjQwYWMwNWNjZmJiMTk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGVyYW5kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGVyYW5kcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTEzNCwzOSArMTM1LDM4IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpID09
IHNpemVvZih1aW50NjRfdCksICJPcGVyYW5kOjphc0JpdHMoKSByZWxpZXMgb24KIAogZW51bSBP
cGVyYW5kc0xpa2VUYWcgeyBPcGVyYW5kc0xpa2UgfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0b3JhZ2VBcmcgPSBzdGQ6OmNvbmRpdGlv
bmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIFZlY3RvcjxULCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4+PgogY2xhc3MgT3BlcmFuZHMgewogcHVibGljOgotICAg
IHVzaW5nIFN0b3JhZ2UgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9v
bD4sIEZhc3RCaXRWZWN0b3IsIFZlY3RvcjxULCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4+Owor
ICAgIHVzaW5nIFN0b3JhZ2UgPSBTdG9yYWdlQXJnOwogICAgIHVzaW5nIFJlZlR5cGUgPSBzdGQ6
OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRSZWZlcmVuY2Us
IFQmPjsKICAgICB1c2luZyBDb25zdFJlZlR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjpp
c19zYW1lX3Y8VCwgYm9vbD4sIGJvb2wsIGNvbnN0IFQmPjsKIAogICAgIE9wZXJhbmRzKCkgPSBk
ZWZhdWx0OwogCiAgICAgZXhwbGljaXQgT3BlcmFuZHMoc2l6ZV90IG51bUFyZ3VtZW50cywgc2l6
ZV90IG51bUxvY2Fscywgc2l6ZV90IG51bVRtcHMpCi0gICAgICAgIDogbV9udW1Bcmd1bWVudHMo
bnVtQXJndW1lbnRzKQorICAgICAgICA6IG1fdmFsdWVzKG51bUFyZ3VtZW50cyArIG51bUxvY2Fs
cyArIG51bVRtcHMpCisgICAgICAgICwgbV9udW1Bcmd1bWVudHMobnVtQXJndW1lbnRzKQogICAg
ICAgICAsIG1fbnVtTG9jYWxzKG51bUxvY2FscykKICAgICB7Ci0gICAgICAgIHNpemVfdCBzaXpl
ID0gbnVtQXJndW1lbnRzICsgbnVtTG9jYWxzICsgbnVtVG1wczsKLSAgICAgICAgbV92YWx1ZXMu
Z3JvdyhzaXplKTsKICAgICAgICAgaWYgKCFXVEY6OlZlY3RvclRyYWl0czxUPjo6bmVlZHNJbml0
aWFsaXphdGlvbikKICAgICAgICAgICAgIG1fdmFsdWVzLmZpbGwoVCgpKTsKICAgICB9CiAKICAg
ICBleHBsaWNpdCBPcGVyYW5kcyhzaXplX3QgbnVtQXJndW1lbnRzLCBzaXplX3QgbnVtTG9jYWxz
LCBzaXplX3QgbnVtVG1wcywgY29uc3QgVCYgaW5pdGlhbFZhbHVlKQotICAgICAgICA6IG1fbnVt
QXJndW1lbnRzKG51bUFyZ3VtZW50cykKKyAgICAgICAgOiBtX3ZhbHVlcyhudW1Bcmd1bWVudHMg
KyBudW1Mb2NhbHMgKyBudW1UbXBzKQorICAgICAgICAsIG1fbnVtQXJndW1lbnRzKG51bUFyZ3Vt
ZW50cykKICAgICAgICAgLCBtX251bUxvY2FscyhudW1Mb2NhbHMpCiAgICAgewotICAgICAgICBt
X3ZhbHVlcy5ncm93KG51bUFyZ3VtZW50cyArIG51bUxvY2FscyArIG51bVRtcHMpOwogICAgICAg
ICBtX3ZhbHVlcy5maWxsKGluaXRpYWxWYWx1ZSk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+Ci0gICAgZXhwbGljaXQgT3BlcmFuZHMoT3BlcmFuZHNMaWtlVGFnLCBjb25z
dCBPcGVyYW5kczxVPiYgb3RoZXIsIGNvbnN0IFQmIGluaXRpYWxWYWx1ZSA9IFQoKSkKLSAgICAg
ICAgOiBtX251bUFyZ3VtZW50cyhvdGhlci5udW1iZXJPZkFyZ3VtZW50cygpKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgZXhwbGljaXQgT3BlcmFuZHMoT3BlcmFu
ZHNMaWtlVGFnLCBjb25zdCBPcGVyYW5kczxVLCBWPiYgb3RoZXIsIGNvbnN0IFQmIGluaXRpYWxW
YWx1ZSA9IFQoKSkKKyAgICAgICAgOiBtX3ZhbHVlcyhvdGhlci5zaXplKCkpCisgICAgICAgICwg
bV9udW1Bcmd1bWVudHMob3RoZXIubnVtYmVyT2ZBcmd1bWVudHMoKSkKICAgICAgICAgLCBtX251
bUxvY2FscyhvdGhlci5udW1iZXJPZkxvY2FscygpKQogICAgIHsKLSAgICAgICAgbV92YWx1ZXMu
Z3JvdyhvdGhlci5zaXplKCkpOwogICAgICAgICBtX3ZhbHVlcy5maWxsKGluaXRpYWxWYWx1ZSk7
CiAgICAgfQogCkBAIC0zOTksNCArMzk5LDcgQEAgY2xhc3MgT3BlcmFuZHMgewogICAgIHVuc2ln
bmVkIG1fbnVtTG9jYWxzIHsgMCB9OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5n
IEZpeGVkT3BlcmFuZHMgPSBPcGVyYW5kczxULCBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19z
YW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIEZpeGVkVmVjdG9yPFQ+Pj47CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wZXJhbmRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJh
bmRzSW5saW5lcy5oCmluZGV4IDBiMWNjMWYyZDE5N2FkMDgzNjVhOGY3ODU2MWZkZjY3YTdkOWVk
ZGQuLjU2YzIwODU4OTNjNDRmYjNhM2FjYzQzZTllZGYzNzk5NDRiMjZmZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKQEAgLTM4LDgg
KzM4LDggQEAgaW5saW5lIHZvaWQgT3BlcmFuZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogICAgICAgICBvdXQucHJpbnQodmlydHVhbFJlZ2lzdGVyKCkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotdm9pZCBPcGVyYW5kczxUPjo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+Cit2b2lkIE9wZXJhbmRzPFQsIFU+OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFt
JiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBj
b21tYSgiICIpOwogICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50SW5kZXggPSBudW1iZXJPZkFyZ3Vt
ZW50cygpOyBhcmd1bWVudEluZGV4LS07KSB7CkBAIC01OSw4ICs1OSw4IEBAIHZvaWQgT3BlcmFu
ZHM8VD46OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpIGNvbnN0CiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBPcGVyYW5k
czxUPjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KK3ZvaWQgT3BlcmFuZHM8VCwgVT46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoIiAiKTsKICAgICBmb3IgKHNpemVfdCBh
cmd1bWVudEluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnRJbmRleC0tOykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKaW5kZXggM2FkZjllOTU0ZTFjNGJiZjViNTcxOTY0MmQyOTFlNzRlN2QyYTlkYi4uYzEw
NjExYzVjYzM3YmQyYzJjNDg2MDEwZTlmZTVmMGY2ZmM4MTQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgc3RhdGljIHZvaWQgZHVtcExpbmVDb2x1bW5FbnRyeShzaXplX3QgaW5kZXgs
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGkKIAogdm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6ZHVtcEV4cHJlc3Npb25SYW5nZUluZm8oKQogewotICAgIFJlZkNvdW50ZWRBcnJheTxF
eHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8gPSBtX2V4cHJlc3Npb25JbmZvOwor
ICAgIEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+JiBleHByZXNzaW9uSW5mbyA9IG1f
ZXhwcmVzc2lvbkluZm87CiAKICAgICBzaXplX3Qgc2l6ZSA9IG1fZXhwcmVzc2lvbkluZm8uc2l6
ZSgpOwogICAgIGRhdGFMb2dGKCJVbmxpbmtlZENvZGVCbG9jayAlcCBleHByZXNzaW9uUmFuZ2VJ
bmZvWyV6dV0ge1xuIiwgdGhpcywgc2l6ZSk7CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBVbmxp
bmtlZENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IFJlZkNv
dW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8gPSBtX2V4cHJl
c3Npb25JbmZvOworICAgIGNvbnN0IEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+JiBl
eHByZXNzaW9uSW5mbyA9IG1fZXhwcmVzc2lvbkluZm87CiAKICAgICBpbnQgbG93ID0gMDsKICAg
ICBpbnQgaGlnaCA9IGV4cHJlc3Npb25JbmZvLnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjNmNGVmM2VkNDVh
OTg4ZjMzN2Q0MjQzMmJhZjY2YjMwNmYzMTQ1NS4uMDZjMWFkYmY2Mjc2MTE1ZTliYzI2NWViNjAw
Y2IxNzgyMmNhMmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9UcmlT
dGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9Vbmlx
dWVkU3RyaW5nSW1wbC5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdK
dW1wVGFibGUgewogfTsKIAogc3RydWN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlIHsKLSAgICBS
ZWZDb3VudGVkQXJyYXk8aW50MzJfdD4gYnJhbmNoT2Zmc2V0czsKKyAgICBGaXhlZFZlY3Rvcjxp
bnQzMl90PiBicmFuY2hPZmZzZXRzOwogICAgIGludDMyX3QgbWluOwogCiAgICAgaW50MzJfdCBv
ZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpOwpAQCAt
MTM1LDcgKzEzNSw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuICEobV9mZWF0
dXJlcyAmIE5vRXZhbENhY2hlRmVhdHVyZSk7IH0KIAogICAgIGJvb2wgaGFzRXhwcmVzc2lvbklu
Zm8oKSB7IHJldHVybiBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgfQotICAgIGNvbnN0IFJlZkNv
dW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8oKSB7IHJldHVy
biBtX2V4cHJlc3Npb25JbmZvOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJh
bmdlSW5mbz4mIGV4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9leHByZXNzaW9uSW5mbzsgfQog
CiAgICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2hlY2twb2lu
dHM7IH0KICAgICB2b2lkIHNldEhhc0NoZWNrcG9pbnRzKCkgeyBtX2hhc0NoZWNrcG9pbnRzID0g
dHJ1ZTsgfQpAQCAtMTUyLDE3ICsxNTIsMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKIAogICAgIHNpemVfdCBudW1iZXJPZklkZW50aWZpZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVycy5zaXplKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyc1tpbmRleF07
IH0KLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyczsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPElk
ZW50aWZpZXI+JiBpZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcnM7IH0K
IAogICAgIEJpdFZlY3RvciYgYml0VmVjdG9yKHNpemVfdCBpKSB7IEFTU0VSVChtX3JhcmVEYXRh
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fYml0VmVjdG9yc1tpXTsgfQogCi0gICAgY29uc3QgUmVm
Q291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkg
eyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyczsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFdy
aXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25z
dGFudFJlZ2lzdGVyczsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3Rh
bnRSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50
UmVnaXN0ZXJzW3JlZy50b0NvbnN0YW50SW5kZXgoKV07IH0KICAgICBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgZ2V0Q29uc3RhbnQoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9j
b25zdGFudFJlZ2lzdGVyc1tyZWcudG9Db25zdGFudEluZGV4KCldLmdldCgpOyB9Ci0gICAgY29u
c3QgUmVmQ291bnRlZEFycmF5PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1Nv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbV9j
b25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247IH0KIAogICAgIHVuc2lnbmVkIG51bWJl
ck9mQ29uc3RhbnRJZGVudGlmaWVyU2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBt
X3JhcmVEYXRhLT5tX2NvbnN0YW50SWRlbnRpZmllclNldHMuc2l6ZSgpIDogMDsgfQotICAgIGNv
bnN0IFJlZkNvdW50ZWRBcnJheTxJZGVudGlmaWVyU2V0PiYgY29uc3RhbnRJZGVudGlmaWVyU2V0
cygpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb25zdGFudElk
ZW50aWZpZXJTZXRzOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8SWRlbnRpZmllclNldD4mIGNv
bnN0YW50SWRlbnRpZmllclNldHMoKSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsgfQogCiAgICAgLy8gSnVtcHMKICAgICBz
aXplX3QgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMu
c2l6ZSgpOyB9CkBAIC0yMzQsNyArMjM0LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29sdW1uOyB9CiAKLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldD4mIG9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkg
Y29uc3QKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYg
b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSBjb25zdAogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fcmFyZURhdGEpOwogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKQEAgLTM3NCw3ICszNzQsNyBAQCBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFBhY2tlZFJlZlB0cjxT
dHJpbmdJbXBsPiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5n
SW1wbD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCi0gICAgUmVmQ291bnRlZEFycmF5
PEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgRml4ZWRWZWN0
b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBSZWY8VW5s
aW5rZWRNZXRhZGF0YVRhYmxlPiBtX21ldGFkYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0
cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz4gbV9saXZlbmVzczsKQEAgLTM4NSwxMCArMzg1LDEwIEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAjZW5kaWYKIAogICAgIC8v
IENvbnN0YW50IFBvb2xzCi0gICAgUmVmQ291bnRlZEFycmF5PElkZW50aWZpZXI+IG1faWRlbnRp
ZmllcnM7Ci0gICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9jb25z
dGFudFJlZ2lzdGVyczsKLSAgICBSZWZDb3VudGVkQXJyYXk8U291cmNlQ29kZVJlcHJlc2VudGF0
aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsKLSAgICB1c2luZyBGdW5j
dGlvbkV4cHJlc3Npb25WZWN0b3IgPSBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPj47CisgICAgRml4ZWRWZWN0b3I8SWRlbnRpZmllcj4gbV9p
ZGVudGlmaWVyczsKKyAgICBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29u
c3RhbnRSZWdpc3RlcnM7CisgICAgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9u
PiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsKKyAgICB1c2luZyBGdW5jdGlv
bkV4cHJlc3Npb25WZWN0b3IgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+PjsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlv
bkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRXhwcnM7CiAK
QEAgLTM5NiwyMiArMzk2LDIyIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogCi0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxVbmxpbmtlZEhhbmRsZXJJ
bmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOworICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZEhh
bmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOwogCiAgICAgICAgIC8vIEp1bXAgVGFibGVz
Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0
Y2hKdW1wVGFibGVzOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8VW5saW5rZWRTdHJpbmdKdW1w
VGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRWZWN0b3I8VW5s
aW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRW
ZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsK
IAotICAgICAgICBSZWZDb3VudGVkQXJyYXk8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRp
b24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CisgICAgICAgIEZpeGVkVmVjdG9yPEV4
cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRp
b25zOwogCiAgICAgICAgIHN0cnVjdCBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgewogICAg
ICAgICAgICAgdW5zaWduZWQgbV9zdGFydERpdm90OwogICAgICAgICAgICAgdW5zaWduZWQgbV9l
bmREaXZvdDsKICAgICAgICAgfTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVHlwZVByb2Zp
bGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9NYXA7Ci0gICAgICAgIFJlZkNv
dW50ZWRBcnJheTxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8Qml0VmVjdG9yPiBt
X2JpdFZlY3RvcnM7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxJZGVudGlmaWVyU2V0PiBtX2Nv
bnN0YW50SWRlbnRpZmllclNldHM7CisgICAgICAgIEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CisgICAg
ICAgIEZpeGVkVmVjdG9yPEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOworICAgICAgICBGaXhlZFZl
Y3RvcjxJZGVudGlmaWVyU2V0PiBtX2NvbnN0YW50SWRlbnRpZmllclNldHM7CiAKICAgICAgICAg
dW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwpAQCAtNDI4LDcgKzQyOCw3IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBPdXRPZkxpbmVK
dW1wVGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
YXJlRGF0YT4gbV9yYXJlRGF0YTsKLSAgICBSZWZDb3VudGVkQXJyYXk8RXhwcmVzc2lvblJhbmdl
SW5mbz4gbV9leHByZXNzaW9uSW5mbzsKKyAgICBGaXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJ
bmZvPiBtX2V4cHJlc3Npb25JbmZvOwogCiBwcm90ZWN0ZWQ6CiAgICAgREVDTEFSRV9WSVNJVF9D
SElMRFJFTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNmFkN2Y1ZDM5OWE1MmJhMDNlNzBmYTliY2Y1
N2UwMWZmYmE5NzcwYS4uMzVkNGNkYWZjZjE2YzBiMmIwZTFjNWY1OTBiNTdhNDY2N2JhOTE2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKQEAgLTQwOTIsNyArNDA5Miw3IEBAIHN0YXRpYyB2b2lkIHByZXBh
cmVKdW1wVGFibGVGb3JTd2l0Y2goCiAgICAgaW50MzJfdCAoKmtleUdldHRlcikoRXhwcmVzc2lv
bk5vZGUqLCBpbnQzMl90IG1pbiwgaW50MzJfdCBtYXgpKQogewogICAgIGp1bXBUYWJsZS5taW4g
PSBtaW47Ci0gICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBSZWZDb3VudGVkQXJyYXk8aW50
MzJfdD4obWF4IC0gbWluICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhl
ZFZlY3RvcjxpbnQzMl90PihtYXggLSBtaW4gKyAxKTsKICAgICBzdGQ6OmZpbGwoanVtcFRhYmxl
LmJyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCksIDAp
OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjbGF1c2VDb3VudDsgKytpKSB7CiAgICAg
ICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxk
IGhhdmUgYmVlbiBmaXhlZCwgc28gCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5o
CmluZGV4IGE2NDFlYjc0YjYxZmE0NGQ3ODFlYTViMzkyMDU3MTU3ZGI1MDQ4MDcuLjRlMjUyMzc3
MDMyNjA2ZTFiY2UyMzRiMjRlNTI2OThiZjYxZmZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdC5oCkBAIC02Nyw2ICs2Nyw5IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRv
ckltcGw7CiBzdHJ1Y3QgT1NSRXhpdEhhbmRsZTsKIAogc3RydWN0IE9TUkV4aXREZXNjcmlwdG9y
IHsKK3ByaXZhdGU6CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT1NSRXhpdERlc2NyaXB0b3Ip
OworcHVibGljOgogICAgIE9TUkV4aXREZXNjcmlwdG9yKAogICAgICAgICBEYXRhRm9ybWF0IHBy
b2ZpbGVEYXRhRm9ybWF0LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLAogICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cywgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMsIHVuc2ln
bmVkIG51bWJlck9mVG1wcyk7CkBAIC03OSw3ICs4Miw3IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3Jp
cHRvciB7CiAgICAgRGF0YUZvcm1hdCBtX3Byb2ZpbGVEYXRhRm9ybWF0OwogICAgIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CiAgICAgCi0gICAgT3BlcmFuZHM8
RXhpdFZhbHVlPiBtX3ZhbHVlczsKKyAgICBGaXhlZE9wZXJhbmRzPEV4aXRWYWx1ZT4gbV92YWx1
ZXM7CiAgICAgQmFnPEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uPiBtX21hdGVyaWFsaXph
dGlvbnM7CiAKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJl
bmNlcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDRlZWEzYTVmZTc1MWU4NWE4
OGI4NThiMGFmZGI0NmE0YWFkZGRhZGQuLjc3MjFkZjVhODRjYWRjM2E2NTNhNGJlODU2NjcwZTJj
MGIwNGMzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTUyMCw5ICs1MjAsOSBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fYnlWYWxJbnN0cnVj
dGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKIAotICAgIFJlZkNv
dW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+IHJhcmVDYXNlUHJvZmlsZXM7CisgICAgRml4ZWRW
ZWN0b3I8UmFyZUNhc2VQcm9maWxlPiByYXJlQ2FzZVByb2ZpbGVzOwogICAgIGlmIChzaG91bGRF
bWl0UHJvZmlsaW5nKCkpCi0gICAgICAgIHJhcmVDYXNlUHJvZmlsZXMgPSBSZWZDb3VudGVkQXJy
YXk8UmFyZUNhc2VQcm9maWxlPihtX2J5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSk7CisgICAg
ICAgIHJhcmVDYXNlUHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+KG1fYnl0
ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZUNv
dW50SGF2aW5nU2xvd0Nhc2UgPSAwOwogICAgIGZvciAoVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciBpdGVyID0gbV9zbG93Q2FzZXMuYmVnaW4oKTsgaXRlciAhPSBtX3Nsb3dDYXNlcy5l
bmQoKTspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYzhjMjYxNTI0M2FkOGMwYTZkZWRkMGUwZWYzNTQ1YTQ2
NzQ4NzExNy4uNmRmNDY4NTBlMmM3ZWI5Njg5OGVjNGM1N2ZjYjc3ZGQ4NzVkMmQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKICAg
ICAvLyBUaGVzZSB0eXBlcyBhcmUgdXNlZnVsIHNpbmNlIHdlIGNhbid0IHVzZSAnPC4uLj4nIHN5
bnRheCBpbiBMTEludCBvZmZzZXRzIGV4dHJhY3Rpb24uIGUuZy4gVmVjdG9yPGludD46Om1fZGF0
YQogICAgIHVzaW5nIFZlY3RvciA9IFdURjo6VmVjdG9yPGludD47CiAgICAgdXNpbmcgSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbCA9IEpTQzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+Owor
ICAgIHVzaW5nIEZpeGVkVmVjdG9yID0gV1RGOjpGaXhlZFZlY3RvcjxpbnQ+OwogICAgIHVzaW5n
IFJlZkNvdW50ZWRBcnJheSA9IFdURjo6UmVmQ291bnRlZEFycmF5PGludD47CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQppbmRleCAzODMzN2Q3ZDE5MDg0Y2Q1ZjcyNzc2YjU2ZGU4ZDkxYzIwZWMyOGFhLi5mZmM0
ZjYyOTM5ZWNlNzQ2MmUzOTc0MDllNzNmMWJkYzgxOGRkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNTUwLDcg
KzE1NTAsNyBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQog
ICAgIGFkZHAgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdo
YXQgaGFzIHRoZSBwZWVwaG9sZQogICAgIGFzc2VydChtYWNybyAob2spIGJwZ3RlcSB0MCwgMCwg
b2sgZW5kKQogICAgIGJ0cHogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCi0gICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRh
W3QxXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsg
Rml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMK
ICAgICBidHB6IHQzLCAuYXJndW1lbnRQcm9maWxlRG9uZSAjIFdoZW4gd2UgY2FuJ3QgSklULCB3
ZSBkb24ndCBhbGxvY2F0ZSBhbnkgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMuCiAgICAgbXVscCBz
aXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVk
dWN0aW9uIQogICAgIGxzaGlmdHAgMywgdDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3Vt
ZW50cyBvbiB0aGUgc3RhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKaW5kZXggN2JhMjcxZDhjNmIzZjE5MDY2MmEwMWJlZjhlMzFkMjExYzhjYzJl
YS4uZDE2Yjc4NzBkZTAwYmMwYzMzY2Y5MDU1NjhlOTgwNWMxZTIyOGQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtNjIyLDYgKzYyMiwx
NiBAQCBjbGFzcyBDYWNoZWRWZWN0b3IgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VmVj
dG9yPFNvdXJjZVR5cGU8VD4sIElubGluZUNhcAogICAgICAgICAgICAgOjpKU0M6OmVuY29kZShl
bmNvZGVyLCBidWZmZXJbaV0sIHZlY3RvcltpXSk7CiAgICAgfQogCisgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlVHlwZTxUPj4mIHZlY3Rv
cikKKyAgICB7CisgICAgICAgIG1fc2l6ZSA9IHZlY3Rvci5zaXplKCk7CisgICAgICAgIGlmICgh
bV9zaXplKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBUKiBidWZmZXIgPSB0aGlzLT50
ZW1wbGF0ZSBhbGxvY2F0ZTxUPihlbmNvZGVyLCBtX3NpemUpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICA6OkpTQzo6ZW5jb2RlKGVu
Y29kZXIsIGJ1ZmZlcltpXSwgdmVjdG9yW2ldKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPgogICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxT
b3VyY2VUeXBlPFQ+LCBJbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCAxNiwgTWFsbG9j
PiYgdmVjdG9yLCBBcmdzLi4uIGFyZ3MpIGNvbnN0CiAgICAgewpAQCAtNjQ0LDYgKzY1NCwxNiBA
QCBjbGFzcyBDYWNoZWRWZWN0b3IgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8VmVjdG9y
PFNvdXJjZVR5cGU8VD4sIElubGluZUNhcAogICAgICAgICAgICAgOjpKU0M6OmRlY29kZShkZWNv
ZGVyLCBidWZmZXJbaV0sIHZlY3RvcltpXSwgYXJncy4uLik7CiAgICAgfQogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBG
aXhlZFZlY3RvcjxTb3VyY2VUeXBlPFQ+PiYgdmVjdG9yLCBBcmdzLi4uIGFyZ3MpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIW1fc2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dmVjdG9yID0gRml4ZWRWZWN0b3I8U291cmNlVHlwZTxUPj4obV9zaXplKTsKKyAgICAgICAgY29u
c3QgVCogYnVmZmVyID0gdGhpcy0+dGVtcGxhdGUgYnVmZmVyPFQ+KCk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIDo6SlNDOjpkZWNv
ZGUoZGVjb2RlciwgYnVmZmVyW2ldLCB2ZWN0b3JbaV0sIGFyZ3MuLi4pOworICAgIH0KIAogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1ZjMwYzlhNTYxMzdiM2MzMWQzMGRiYWI1MzE5MzllYjNjODk4YTYy
Li42NzNhOWU2ZGY5YjI2YWUyM2JlOTJlZThkMDc5MzU0YWZjMTFlYTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc0Miw2ICs3NDIsNyBAQAogCQlFM0JF
MDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDNTgzQzgy
NjEyN0FERDAwQzU3NTY4IC8qIFJvYmluSG9vZEhhc2hNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm9i
aW5Ib29kSGFzaE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NGNzY5MDIx
MTVENkJBMDA5MURFNDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb21wYWN0UG9pbnRlclR1cGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRTBGMDRGMjYxOTcxNTcwMDQ2NDBGQyAvKiBGaXhlZFZlY3Rvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzRTY0RjBCMjI4MTM0MjgwMDFFNTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5vbm1vdmFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxOUYy
RTYyM0FCOUUyMzAwQjI2MTI5IC8qIFZlY3Rvckhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmVjdG9ySGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAzOCw2ICsxMDM5LDcgQEAKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVBy
aW50U3RyZWFtLmggKi8sCiAJCQkJQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW0uY3BwICovLAogCQkJCUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmgg
Ki8sCisJCQkJRTNFMEYwNEYyNjE5NzE1NzAwNDY0MEZDIC8qIEZpeGVkVmVjdG9yLmggKi8sCiAJ
CQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUZFODZB
ODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oICovLAogCQkJCUE4
QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CmluZGV4IGUxZmE1NDVhNDAxNzhlYTMyMzcwODkzOTYzYmI0ZGE4ZWY1ODhlMWMuLmEzMDU5ZTli
YmY2ZmNlMjAyMTcxZmM0MjcwYmQxOTQ4Yzk0MjI5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBA
IC02OSw2ICs2OSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBGaWxlTWV0YWRhdGEu
aAogICAgIEZpbGVQcmludFN0cmVhbS5oCiAgICAgRmlsZVN5c3RlbS5oCisgICAgRml4ZWRWZWN0
b3IuaAogICAgIEZsaXBCeXRlcy5oCiAgICAgRm9yYmlkSGVhcEFsbG9jYXRpb24uaAogICAgIEZv
cndhcmQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDk2ZGNjZTFjZGJjMzg3NGUzNjJiMzcw
MGIyOGE0Zjk0NDMzODRhYzQuLjQzYjQ0MTA0NDdiODkxMDNlYjRjYWI1MDBkYjU0Yjc5MGIzZWY2
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTQ3OSw2ICs0NzksMTAgQEAgY2xhc3MgRmFz
dEJpdFJlZmVyZW5jZSB7CiBjbGFzcyBGYXN0Qml0VmVjdG9yIDogcHVibGljIEZhc3RCaXRWZWN0
b3JJbXBsPEZhc3RCaXRWZWN0b3JXb3JkT3duZXI+IHsKIHB1YmxpYzoKICAgICBGYXN0Qml0VmVj
dG9yKCkgeyB9CisgICAgZXhwbGljaXQgRmFzdEJpdFZlY3RvcihzaXplX3QgbnVtQml0cykKKyAg
ICB7CisgICAgICAgIGdyb3cobnVtQml0cyk7CisgICAgfQogICAgIAogICAgIEZhc3RCaXRWZWN0
b3IoY29uc3QgRmFzdEJpdFZlY3RvciYpID0gZGVmYXVsdDsKICAgICBGYXN0Qml0VmVjdG9yJiBv
cGVyYXRvcj0oY29uc3QgRmFzdEJpdFZlY3RvciYpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFkZGQ5NGRiMzBjN2ZiNTMzNzkxN2FlOTg3OGJlM2M2Y2EzZjJkMzgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCkBAIC0wLDAgKzEs
MTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCisvLyBXcmFwcGVyIGFyb3VuZCBSZWZDb3VudGVkQXJyYXksIGZpeGVkLXNpemVk
LCBtZW1vcnkgY29tcGFjdCBWZWN0b3IuCisvLyBDb3B5IGNvbnN0cnVjdG9yIC8gYXNzaWdubWVu
dCBvcGVyYXRvciB3b3JrIGRpZmZlcmVudGx5IGZyb20gUmVmQ291bnRlZEFycmF5OiB3b3JrcyBh
cyBsaWtlIGEgVmVjdG9yLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEZpeGVkVmVjdG9y
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRvciA9IFQqOworICAgIHVzaW5nIGNvbnN0X2l0
ZXJhdG9yID0gY29uc3QgVCo7CisgICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2
ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisgICAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRv
ciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47CisKKyAgICBGaXhlZFZl
Y3RvcigpID0gZGVmYXVsdDsKKyAgICBGaXhlZFZlY3Rvcihjb25zdCBGaXhlZFZlY3RvciYgb3Ro
ZXIpCisgICAgICAgIDogbV9zdG9yYWdlKG90aGVyLm1fc3RvcmFnZS5jbG9uZSgpKQorICAgIHsg
fQorICAgIEZpeGVkVmVjdG9yKEZpeGVkVmVjdG9yJiYgb3RoZXIpID0gZGVmYXVsdDsKKworICAg
IEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgRml4ZWRWZWN0b3ImIG90aGVyKQorICAgIHsK
KyAgICAgICAgRml4ZWRWZWN0b3IgdG1wKG90aGVyKTsKKyAgICAgICAgc3dhcCh0bXApOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShG
aXhlZFZlY3RvciYmIG90aGVyKQorICAgIHsKKyAgICAgICAgRml4ZWRWZWN0b3IgdG1wKFdURk1v
dmUob3RoZXIpKTsKKyAgICAgICAgc3dhcCh0bXApOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgRml4ZWRWZWN0b3Ioc2l6ZV90IHNpemUpCisgICAgICAgIDog
bV9zdG9yYWdlKHNpemUpCisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBleHBsaWNpdCBGaXhlZFZlY3Rv
cihjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVy
KQorICAgICAgICA6IG1fc3RvcmFnZShvdGhlcikKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIEZpeGVk
VmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXI+JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZSA9IG90aGVyOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQorICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CisKKyAgICBUKiBkYXRhKCkgeyByZXR1cm4g
bV9zdG9yYWdlLmRhdGEoKTsgfQorICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9zdG9y
YWdlLmJlZ2luKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UuZW5k
KCk7IH0KKworICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZp
eGVkVmVjdG9yKj4odGhpcyktPmRhdGEoKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMpLT5iZWdpbigpOyB9
CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhl
ZFZlY3Rvcio+KHRoaXMpLT5lbmQoKTsgfQorCisgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4o
KSB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJl
bmQoKSB7IHJldHVybiBtX3N0b3JhZ2UucmVuZCgpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVy
YXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KKyAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmVu
ZCgpOyB9CisKKyAgICBUJiBhdChzaXplX3QgaSkgeyByZXR1cm4gbV9zdG9yYWdlLmF0KGkpOyB9
CisgICAgY29uc3QgVCYgYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5hdChp
KTsgfQorCisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KKyAg
ICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQor
CisgICAgVCYgZmlyc3QoKSB7IHJldHVybiAoKnRoaXMpWzBdOyB9CisgICAgY29uc3QgVCYgZmly
c3QoKSBjb25zdCB7IHJldHVybiAoKnRoaXMpWzBdOyB9CisgICAgVCYgbGFzdCgpIHsgcmV0dXJu
ICgqdGhpcylbc2l6ZSgpIC0gMV07IH0KKyAgICBjb25zdCBUJiBsYXN0KCkgY29uc3QgeyByZXR1
cm4gKCp0aGlzKVtzaXplKCkgLSAxXTsgfQorCisgICAgdm9pZCBmaWxsKGNvbnN0IFQmIHZhbCkg
eyBtX3N0b3JhZ2UuZmlsbCh2YWwpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRml4
ZWRWZWN0b3I8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPT0gb3RoZXIubV9z
dG9yYWdlOyB9CisKKyAgICB2b2lkIHN3YXAoRml4ZWRWZWN0b3I8VD4mIG90aGVyKQorICAgIHsK
KyAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAg
UmVmQ291bnRlZEFycmF5PFQ+IG1fc3RvcmFnZTsKK307CitzdGF0aWNfYXNzZXJ0KHNpemVvZihG
aXhlZFZlY3RvcjxpbnQ+KSA9PSBzaXplb2YoaW50KikpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgoraW5saW5lIHZvaWQgc3dhcChGaXhlZFZlY3RvcjxUPiYgYSwgRml4ZWRWZWN0b3I8VD4mIGIp
Cit7CisgICAgYS5zd2FwKGIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpGaXhlZFZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJh
eS5oIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggNTVjYTk4MTMxMzhi
MjYyMDEwMzQ5OTA3YzI1NjlmZWMyZGIxNGExYy4uMjQ4NmQ2NTEwODgwMWZmOTE2YzgyMmJjYjE5
MmU4YTc1ZjkzOTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5
LmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTUwLDYgKzUwLDEx
IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgZW51bSBDb21tb25Db3B5Q29uc3RydWN0
b3JUYWcgeyBDb21tb25Db3B5Q29uc3RydWN0b3IgfTsKIAogcHVibGljOgorICAgIHVzaW5nIGl0
ZXJhdG9yID0gVCo7CisgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25zdCBUKjsKKyAgICB1
c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsK
KyAgICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9y
PGNvbnN0X2l0ZXJhdG9yPjsKKwogICAgIFJlZkNvdW50ZWRBcnJheSgpID0gZGVmYXVsdDsKICAg
ICAKICAgICBSZWZDb3VudGVkQXJyYXkoY29uc3QgUmVmQ291bnRlZEFycmF5JiBvdGhlcikKQEAg
LTYxLDYgKzY2LDEwIEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgICAgIDogUmVmQ291
bnRlZEFycmF5KENvbW1vbkNvcHlDb25zdHJ1Y3Rvciwgb3RoZXIpCiAgICAgeyB9CiAKKyAgICBS
ZWZDb3VudGVkQXJyYXkoUmVmQ291bnRlZEFycmF5JiYgb3RoZXIpCisgICAgICAgIDogbV9kYXRh
KFB0clRyYWl0czo6ZXhjaGFuZ2Uob3RoZXIubV9kYXRhLCBudWxscHRyKSkKKyAgICB7IH0KKwog
ICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAg
IGlmICghc2l6ZSkgewpAQCAtMTY5LDggKzE3OCw4IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7
CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpICogc2l6ZW9mKFQp
OyB9CiAgICAgCiAgICAgVCogZGF0YSgpIHsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fZGF0
YSk7IH0KLSAgICBUKiBiZWdpbigpIHsgcmV0dXJuIGRhdGEoKTsgfQotICAgIFQqIGVuZCgpCisg
ICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBlbmQo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAg
LTE3OSw4ICsxODgsMTMgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICB9CiAgICAgCiAg
ICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFy
cmF5Kj4odGhpcyktPmRhdGEoKTsgfQotICAgIGNvbnN0IFQqIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+YmVnaW4oKTsgfQotICAgIGNv
bnN0IFQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291bnRlZEFycmF5Kj4o
dGhpcyktPmVuZCgpOyB9CisgICAgY29uc3QgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRoaXMpLT5iZWdpbigpOyB9Cisg
ICAgY29uc3QgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxS
ZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+ZW5kKCk7IH0KKworICAgIHJldmVyc2VfaXRlcmF0b3Ig
cmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgICByZXZlcnNl
X2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9Cisg
ICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVu
ZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KICAg
ICAKICAgICBUJiBhdChzaXplX3QgaSkKICAgICB7CkBAIC0yMDIsNiArMjE2LDE2IEBAIGNsYXNz
IFJlZkNvdW50ZWRBcnJheSB7CiAgICAgVCYgbGFzdCgpIHsgcmV0dXJuICgqdGhpcylbc2l6ZSgp
IC0gMV07IH0KICAgICBjb25zdCBUJiBsYXN0KCkgY29uc3QgeyByZXR1cm4gKCp0aGlzKVtzaXpl
KCkgLSAxXTsgfQogCisgICAgdm9pZCBmaWxsKGNvbnN0IFQmIHZhbCkKKyAgICB7CisgICAgICAg
IHN0ZDo6ZmlsbChiZWdpbigpLCBlbmQoKSwgdmFsKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAo
UmVmQ291bnRlZEFycmF5JiBvdGhlcikKKyAgICB7CisgICAgICAgIFB0clRyYWl0czo6c3dhcCht
X2RhdGEsIG90aGVyLm1fZGF0YSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXJUcmFpdHMgPSBQdHJUcmFpdHM+CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZkNvdW50
ZWRBcnJheTxULCBPdGhlclRyYWl0cz4mIG90aGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMDRkNjc4OTYzODcyMzM2
YTRmMTBlOGIzODRiZWJlYjE3ZGMzZWJhLi41M2FmY2VkNThkNGE5ZDgwMzNkYTY1ZTcyZDZiNGVh
NWY5OWU3NDBhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgRml4ZWRWZWN0b3IgYW5kIHVz
ZSBpdCBmb3IgRml4ZWRPcGVyYW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0MTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcDogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkRlc3RydWN0b3JPYnNlcnZlcjo6RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6fkRlc3RydWN0b3JPYnNlcnZlcik6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6Om9wZXJhdG9yPSk6CisKIDIw
MjEtMDQtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBXS1VSTFNjaGVtZVRhc2sgcmVkaXJlY3QgQVBJLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKaW5kZXggM2Y3Y2ZmZGUyOTFjMmQ4MmRkMTI1MWJiZWM4YzgxMzExMjdmYmVmZS4uY2Q2N2Nl
NmFmYzg3YTkyOTgxODI4YjQzZWE1MTY1N2NiNTVhNDEwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CkBAIC00NCw2ICs0NCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0
cy9XVEYvRW51bVRyYWl0cy5jcHAKICAgICBUZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCiAgICAgVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisgICAgVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcAogICAg
IFRlc3RzL1dURi9GdW5jdGlvbi5jcHAKICAgICBUZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3Bw
CiAgICAgVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU2
ZWNlZmVlNjFkNmQyYzY1Mzc4NDA4YmZlN2VlZjk0NTY2ODJlOTIuLjgxZGY3YmM5YjcxZmVhNjZm
NWUxOWU3ODE2NTk5NmE4MTU3ODdmMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA5
LDYgKzExMDksNyBAQAogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVE
aXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdEMDAxM0Uy
RkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAq
LzsgfTsKIAkJRTE5NEUxQkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJl
Y2VpdmVSZXNwb25zZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zy
b21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLzsgfTsKIAkJRTMwMkJEQUEyNDA0QjkyNDAwODY1
Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyogQ29tcGFjdFJl
ZlB0clR1cGxlLmNwcCAqLzsgfTsKKwkJRTMyMTA1MTkyNjE5NzlGMzAwMTU3QzY3IC8qIEZpeGVk
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMjEwNTE4MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi87IH07CiAJCUUz
MjRBNkYwMjA0MUM4MjAwMEE3NjU5MyAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4QkMwRjIwNDFDNzYzMDAzODcxMzYg
LyogVW5pcXVlQXJyYXkuY3BwICovOyB9OwogCQlFMzI1QzkwNzIzRTM4NzAyMDBCQzdEM0IgLyog
UGljdHVyZUluUGljdHVyZVN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzI1QzkwNjIzRTM4NzAyMDBCQzdEM0IgLyogUGljdHVyZUluUGlj
dHVyZVN1cHBvcnQubW0gKi87IH07CiAJCUUzMkI1NDkyMjI4MTBBQzQwMDhBRDcwMiAvKiBQYWNr
ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMy
QjU0OTEyMjgxMEFDMDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgKi87IH07CkBAIC0yOTAyLDYgKzI5
MDMsNyBAQAogCQlFMTk0RTFCQTE3N0U1MTQ1MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlk
UmVjZWl2ZVJlc3BvbnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9t
RGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNl
aXZlUmVzcG9uc2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMwMkJEQTky
NDA0QjkyMzAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wYWN0UmVmUHRyVHVwbGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzIxMDUxODI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRml4ZWRWZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzI1QzkwNjIzRTM4NzAyMDBCQzdE
M0IgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
aWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTMyQjU0OTEyMjgxMEFDMDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWNrZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRBNkQxODI0MTJE
RTM5MDAxMkFCNkUgLyogR3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VzU2VydmljZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdyYW50QWNjZXNzVG9QcmVmZXJlbmNlc1NlcnZpY2UubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzcwLDYgKzQzNzIsNyBAQAogCQkJCTFBRjdCMjFE
MUQ2Q0QxMkUwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJB
NTQ3MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwICovLAogCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMy
OEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLywKKwkJCQlFMzIxMDUxODI2MTk3OUYzMDAxNTdDNjcg
LyogRml4ZWRWZWN0b3IuY3BwICovLAogCQkJCTkzMTBDRDM2MUVGNzA4RkIwMDUwRkZFMCAvKiBG
dW5jdGlvbi5jcHAgKi8sCiAJCQkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9u
LmNwcCAqLywKIAkJCQk3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRTZXQu
Y3BwICovLApAQCAtNTEyMSw2ICs1MTI0LDcgQEAKIAkJCQkxQUY3QjIxRjFENkNEMTREMDA4QzEy
NkMgLyogRW51bVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDdDNDM0RDFERDJBNTRF
MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMxMDgyNzIyMUYy
OTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyMTA1
MTkyNjE5NzlGMzAwMTU3QzY3IC8qIEZpeGVkVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMTBDRDM4MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
eGVkVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wOWFkMTQzOGI3OTA5YmM0MGUxMmEyMjQ1ZDAxZWJmNmVhYzI3ZTRh
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRW
ZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfRml4ZWRW
ZWN0b3IsIEVtcHR5KQoreworICAgIEZpeGVkVmVjdG9yPGludD4gaW50VmVjdG9yOworICAgIEVY
UEVDVF9UUlVFKGludFZlY3Rvci5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUSgwVSwgaW50VmVj
dG9yLnNpemUoKSk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBJdGVyYXRvcikKK3sKKyAg
ICBGaXhlZFZlY3RvcjxpbnQ+IGludFZlY3Rvcig0KTsKKyAgICBpbnRWZWN0b3JbMF0gPSAxMDsK
KyAgICBpbnRWZWN0b3JbMV0gPSAxMTsKKyAgICBpbnRWZWN0b3JbMl0gPSAxMjsKKyAgICBpbnRW
ZWN0b3JbM10gPSAxMzsKKworICAgIEZpeGVkVmVjdG9yPGludD46Oml0ZXJhdG9yIGl0ID0gaW50
VmVjdG9yLmJlZ2luKCk7CisgICAgRml4ZWRWZWN0b3I8aW50Pjo6aXRlcmF0b3IgZW5kID0gaW50
VmVjdG9yLmVuZCgpOworICAgIEVYUEVDVF9UUlVFKGVuZCAhPSBpdCk7CisKKyAgICBFWFBFQ1Rf
RVEoMTAsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTEsICppdCk7CisgICAgKytp
dDsKKyAgICBFWFBFQ1RfRVEoMTIsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTMs
ICppdCk7CisgICAgKytpdDsKKworICAgIEVYUEVDVF9UUlVFKGVuZCA9PSBpdCk7Cit9CisKK1RF
U1QoV1RGX0ZpeGVkVmVjdG9yLCBPdmVybG9hZGVkT3BlcmF0b3JBbXBlcnNhbmQpCit7CisgICAg
c3RydWN0IFRlc3QgeworICAgIHByaXZhdGU6CisgICAgICAgIFRlc3QqIG9wZXJhdG9yJigpID0g
ZGVsZXRlOworICAgIH07CisKKyAgICBGaXhlZFZlY3RvcjxUZXN0PiB2ZWN0b3IoMSk7CisgICAg
dmVjdG9yWzBdID0gVGVzdCgpOworfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgQ29weSkKK3sK
KyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7CisgICAgdmVjMVswXSA9IDA7CisgICAgdmVj
MVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzIo
dmVjMSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAzKTsKKyAgICBFWFBFQ1RfRVEodmVj
Mi5zaXplKCksIDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsr
aSkgeworICAgICAgICBFWFBFQ1RfRVEodmVjMVtpXSwgaSk7CisgICAgICAgIEVYUEVDVF9FUSh2
ZWMyW2ldLCBpKTsKKyAgICB9CisgICAgdmVjMVsyXSA9IDQyOworICAgIEVYUEVDVF9FUSh2ZWMx
WzJdLCA0Mik7CisgICAgRVhQRUNUX0VRKHZlYzJbMl0sIDIpOworfQorCitURVNUKFdURl9GaXhl
ZFZlY3RvciwgQ29weUFzc2lnbikKK3sKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7Cisg
ICAgdmVjMVswXSA9IDA7CisgICAgdmVjMVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAg
ICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzI7CisgICAgdmVjMiA9IHZlYzE7CisgICAgRVhQRUNUX0VR
KHZlYzEuc2l6ZSgpLCAzKTsKKyAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDMpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkgeworICAgICAgICBFWFBFQ1Rf
RVEodmVjMVtpXSwgaSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAgICB9Cisg
ICAgdmVjMVsyXSA9IDQyOworICAgIEVYUEVDVF9FUSh2ZWMxWzJdLCA0Mik7CisgICAgRVhQRUNU
X0VRKHZlYzJbMl0sIDIpOworfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZSkKK3sKKyAg
ICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7CisgICAgdmVjMVswXSA9IDA7CisgICAgdmVjMVsx
XSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzIoV1RG
TW92ZSh2ZWMxKSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwKTsKKyAgICBFWFBFQ1Rf
RVEodmVjMi5zaXplKCksIDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjMi5zaXpl
KCk7ICsraSkKKyAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworfQorCitURVNUKFdURl9G
aXhlZFZlY3RvciwgTW92ZUFzc2lnbikKK3sKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7
CisgICAgdmVjMVswXSA9IDA7CisgICAgdmVjMVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisK
KyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzI7CisgICAgdmVjMiA9IFdURk1vdmUodmVjMSk7Cisg
ICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCks
IDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjMi5zaXplKCk7ICsraSkKKyAgICAg
ICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgU3dh
cCkKK3sKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7CisgICAgdmVjMVswXSA9IDA7Cisg
ICAgdmVjMVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICBGaXhlZFZlY3RvcjxpbnQ+
IHZlYzI7CisgICAgdmVjMi5zd2FwKHZlYzEpOworICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwg
MCk7CisgICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAzKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZlYzIuc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsK
K30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIEl0ZXJhdG9yRm9yKQoreworICAgIEZpeGVkVmVj
dG9yPGludD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0gMTsKKyAg
ICB2ZWMxWzJdID0gMjsKKworICAgIGludCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIg
PSB2ZWMxLmJlZ2luKCk7IGl0ZXIgIT0gdmVjMS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIEVY
UEVDVF9FUSgqaXRlciwgaW5kZXgpOworICAgICAgICArK2luZGV4OworICAgIH0KK30KKworVEVT
VChXVEZfRml4ZWRWZWN0b3IsIFJldmVyc2UpCit7CisgICAgRml4ZWRWZWN0b3I8aW50PiB2ZWMx
KDMpOworICAgIHZlYzFbMF0gPSAwOworICAgIHZlYzFbMV0gPSAxOworICAgIHZlYzFbMl0gPSAy
OworCisgICAgaW50IGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEucmJlZ2lu
KCk7IGl0ZXIgIT0gdmVjMS5yZW5kKCk7ICsraXRlcikgeworICAgICAgICArK2luZGV4OworICAg
ICAgICBFWFBFQ1RfRVEoKml0ZXIsIDMgLSBpbmRleCk7CisgICAgfQorfQorCitURVNUKFdURl9G
aXhlZFZlY3RvciwgRmlsbCkKK3sKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7CisgICAg
dmVjMS5maWxsKDQyKTsKKworICAgIGZvciAoYXV0byYgdmFsdWUgOiB2ZWMxKQorICAgICAgICBF
WFBFQ1RfRVEodmFsdWUsIDQyKTsKK30KKworc3RydWN0IERlc3RydWN0b3JPYnNlcnZlciB7Cisg
ICAgRGVzdHJ1Y3Rvck9ic2VydmVyKCkgPSBkZWZhdWx0OworCisgICAgRGVzdHJ1Y3Rvck9ic2Vy
dmVyKGJvb2wqIGRlc3RydWN0ZWQpCisgICAgICAgIDogZGVzdHJ1Y3RlZChkZXN0cnVjdGVkKQor
ICAgIHsKKyAgICB9CisKKyAgICB+RGVzdHJ1Y3Rvck9ic2VydmVyKCkKKyAgICB7CisgICAgICAg
IGlmIChkZXN0cnVjdGVkKQorICAgICAgICAgICAgKmRlc3RydWN0ZWQgPSB0cnVlOworICAgIH0K
KworICAgIERlc3RydWN0b3JPYnNlcnZlcihEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAg
ICAgICAgOiBkZXN0cnVjdGVkKG90aGVyLmRlc3RydWN0ZWQpCisgICAgeworICAgICAgICBvdGhl
ci5kZXN0cnVjdGVkID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIm
IG9wZXJhdG9yPShEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRl
c3RydWN0ZWQgPSBvdGhlci5kZXN0cnVjdGVkOworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wqIGRlc3Ry
dWN0ZWQgeyBudWxscHRyIH07Cit9OworCitURVNUKFdURl9GaXhlZFZlY3RvciwgRGVzdHJ1Y3Rv
cikKK3sKKyAgICBWZWN0b3I8Ym9vbD4gZmxhZ3MoMywgZmFsc2UpOworICAgIHsKKyAgICAgICAg
Rml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPiB2ZWN0b3IoZmxhZ3Muc2l6ZSgpKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgdmVjdG9yW2ldID0gRGVzdHJ1Y3Rvck9ic2VydmVyKCZmbGFnc1tpXSk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZmxhZ3NbaV0pOwor
fQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgRGVzdHJ1Y3RvckFmdGVyTW92ZSkKK3sKKyAgICBW
ZWN0b3I8Ym9vbD4gZmxhZ3MoMywgZmFsc2UpOworICAgIHsKKyAgICAgICAgRml4ZWRWZWN0b3I8
RGVzdHJ1Y3Rvck9ic2VydmVyPiBvdXRlclZlY3RvcjsKKyAgICAgICAgeworICAgICAgICAgICAg
Rml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPiB2ZWN0b3IoZmxhZ3Muc2l6ZSgpKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgICAgICB2ZWN0b3JbaV0gPSBEZXN0cnVjdG9yT2JzZXJ2ZXIoJmZsYWdzW2ldKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgICAgICAgICAgb3V0
ZXJWZWN0b3IgPSBXVEZNb3ZlKHZlY3Rvcik7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKGZsYWdzW2ldKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdz
LnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="444967"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="445004"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425186</attachid>
            <date>2021-04-05 12:25:03 -0700</date>
            <delta_ts>2021-04-05 21:36:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224171-20210405122502.patch</filename>
            <type>text/plain</type>
            <size>54793</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjY3ODdjN2ViNTQ2NzY2NjM4OGZiYWVjZGJhYzc4YTNlODU1YjQxLi44ZDVkMjk3N2E0MTQ5MzQ4
Y2IzZGNkYWY4NGVlMjQ3NjYzMmVlNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMS0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZlY3RvciBhbmQgdXNlIGl0IGZvciBG
aXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEZWZpbmUgRml4ZWRPcGVyYW5kczxUPiB3aGljaCB1c2VzIEZpeGVkVmVjdG9yIGZvciBp
dHMgc3RvcmFnZS4gV2UgdXNlIEZpeGVkT3BlcmFuZHMgaW4gRlRMOjpPU1JFeGl0RGVzY3JpcHRv
ci4KKyAgICAgICAgV2UgYWxzbyByZXBsYWNlIFJlZkNvdW50ZWRBcnJheTxUPiB3aXRoIEZpeGVk
VmVjdG9yPFQ+IGlmIHRoZXkgYXJlIG5vdCByZXF1aXJpbmcgUmVmQ291bnRlZEFycmF5PFQ+J3Mg
cmVmLWNvdW50aW5nCisgICAgICAgIHNlbWFudGljcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldFJhcmVD
YXNlUHJvZmlsZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tC
b3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFuZHMuaDoKKyAgICAgICAgKEpTQzo6
T3BlcmFuZHM6Ok9wZXJhbmRzKToKKyAgICAgICAgKiBieXRlY29kZS9PcGVyYW5kc0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6VT46OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlND
OjpVPjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wZXJhbmRzPFQ+OjpkdW1wSW5Db250
ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3BlcmFuZHM8VD46OmR1bXAgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmR1bXBFeHByZXNzaW9uUmFuZ2VJbmZv
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlSW5kZXggY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpleHByZXNzaW9uSW5mbyk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppZGVudGlmaWVycyBjb25zdCk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpjb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAg
IChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRJZGVudGlmaWVy
U2V0cyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpvcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0cyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRj
aCk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICog
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkVmVjdG9yOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRW
ZWN0b3I6OmRlY29kZSBjb25zdCk6CisKIDIwMjEtMDQtMDIgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlZHVjZSBieXRlY29kZSBpbnN0cnVjdGlv
biBjb3VudCBlbWl0dGVkIGZvciBgY2xhc3MgZXh0ZW5kc2AKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDFkZGY1NTI4OGI3ZDdm
ZDk3NDM0Y2NiMjlkOWIxMDgxODc4YmYzMC4uMzkyYjg5YzkzYTIzMWE3MjAwNzlmOThjMWZjMTUw
ZDk1ZjRmOWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0wNC0wNSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZl
Y3RvciBhbmQgdXNlIGl0IGZvciBGaXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIEZpeGVkVmVjdG9yPFQ+IGlzIGEgd3JhcHBl
ciBhcm91bmQgUmVmQ291bnRlZEFycmF5PFQ+LCBidXQgdGhpcyBvZmZlcnMgVmVjdG9yLWxpa2Ug
Y29weSAvIG1vdmUgc2VtYW50aWNzLAorICAgICAgICBzbyB0aGF0IHdlIGNhbiB1c2UgdGhpcyBG
aXhlZFZlY3RvcjxUPiBhcyBhIGRyb3AtaW4tcmVwbGFjZW1lbnQgZm9yIGZpeGVkLXNpemVkIFZl
Y3RvciBmaWVsZHMuIFRoZSBwdXJwb3NlCisgICAgICAgIG9mIHRoYXQgaXMgc2F2aW5nIG1lbW9y
eSBieSByZW1vdmluZyB1bm5lY2Vzc2FyeSBzdG9yYWdlIChGaXhlZFZlY3RvciBpcyBmaXhlZC1z
aXplZCBhbGxvY2F0ZWQpIGFuZCBwdXR0aW5nIHNpemUKKyAgICAgICAgaW50byB0aGUgYWxsb2Nh
dGVkIG1lbW9yeS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rv
ci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpGYXN0Qml0VmVjdG9yKToKKyAgICAg
ICAgKiB3dGYvRml4ZWRWZWN0b3IuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9y
OjpGaXhlZFZlY3Rvcik6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXVEY6OkZp
eGVkVmVjdG9yOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmJ5
dGVTaXplIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmRhdGEpOgorICAgICAg
ICAoV1RGOjpGaXhlZFZlY3Rvcjo6YmVnaW4pOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6
ZW5kKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmRhdGEgY29uc3QpOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJiZWdpbik6CisgICAg
ICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyZW5kKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6
OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyZW5kIGNvbnN0KToK
KyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmF0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0
b3I6OmF0IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yW10pOgor
ICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjpmaXJzdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpmaXJz
dCBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpsYXN0KToKKyAgICAgICAgKFdU
Rjo6Rml4ZWRWZWN0b3I6Omxhc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6
ZmlsbCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAg
ICAgICAgKiB3dGYvUmVmQ291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRB
cnJheTo6UmVmQ291bnRlZEFycmF5KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5Ojpi
ZWdpbik6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6ZW5kKToKKyAgICAgICAgKFdU
Rjo6UmVmQ291bnRlZEFycmF5OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpyYmVn
aW4pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OnJlbmQpOgorICAgICAgICAoV1RG
OjpSZWZDb3VudGVkQXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRBcnJheTo6cmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6Zmls
bCk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6c3dhcCk6CisKIDIwMjEtMDQtMDIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxl
IFByZWZlclBhZ2VSZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCBieSBkZWZhdWx0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA2Y2I4OGNlN2FmNTM1NzlhOTZiY2E2NDc4NGIy
NzMxY2E1ODI4ZmQ3Li40ZDU3ZGE1YTMwZTJkMTlmMGM4NWNiNWNkOWRiZjM3MDg1MzM1ZjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Rh
dGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSkpOwogICAgICAgICBhdXRvJiBq
dW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIGp1
bXBUYWJsZS5taW4gPSAwOwotICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IFJlZkNv
dW50ZWRBcnJheTxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKKyAgICAgICAganVtcFRh
YmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkg
KyAxKTsKICAgICAgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCks
IGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsKICAgICAgICAganVtcFRhYmxlLmFk
ZCgwLCBuZXh0VG9FbnRlclBvaW50Lm9mZnNldCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhMjM0MTk4YTlhZTU0MGNmMzI1NjRiZDU3YWY0
MGUwODIzZWMwNDBkLi5hY2U4M2VhZDRjYjY1OTZjZTBjYjVkOWM5YWM4ZjcwZjUzNTUxMWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDAz
LDcgKzQwMyw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgfQogCiAgICAgYm9vbCBz
aG91bGRVcGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgPSBtX3VubGlua2VkQ29kZS0+d2Fz
Q29tcGlsZWRXaXRoVHlwZVByb2ZpbGVyT3Bjb2RlcygpIHx8IG1fdW5saW5rZWRDb2RlLT53YXND
b21waWxlZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpOwotICAgIG1fZnVuY3Rpb25E
ZWNscyA9IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4o
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKKyAgICBtX2Z1bmN0
aW9uRGVjbHMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4o
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNp
emVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwg
aSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KGkpOwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKQpA
QCAtNDExLDcgKzQxMSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIG1fZnVu
Y3Rpb25EZWNsc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZS0+bGluayh2bSwg
dG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLCBXVEY6Om51bGxv
cHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bigpKSk7CiAgICAgfQogCi0gICAgbV9mdW5jdGlvbkV4cHJzID0gUmVmQ291bnRlZEFycmF5PFdy
aXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkV4cHJzKCkpOworICAgIG1fZnVuY3Rpb25FeHBycyA9IEZpeGVkVmVjdG9yPFdy
aXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkV4cHJzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25FeHBycygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9
IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7CiAgICAgICAgIGlmIChzaG91bGRV
cGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUpCkBAIC04ODcsNyArODg3LDcgQEAgQ29kZUJs
b2NrOjp+Q29kZUJsb2NrKCkKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCi12b2lkIENvZGVC
bG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFy
cmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgUmVmQ291bnRlZEFycmF5PFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2Ny
aXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKQordm9pZCBDb2RlQmxvY2s6OnNldENv
bnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4m
IGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYg
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BM
ZXZlbEV4ZWN1dGFibGUpCiB7CiAgICAgVk0mIHZtID0gKm1fdm07CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTQ5LDcgKzk0OSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRl
cnMgPSBuZXdWYWx1ZTsKIAotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gUmVmQ291bnRl
ZEFycmF5PFZhbHVlUHJvZmlsZT4oT3B0aW9uczo6dXNlSklUKCkgPyBuZXdWYWx1ZSA6IDApOwor
ICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPihP
cHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAKIENvZGVCbG9jayogQ29kZUJs
b2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0xNzU0LDcgKzE3NTQsNyBAQCBD
YWxsTGlua0luZm8qIENvZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChC
eXRlY29kZUluZGV4IGluZGV4KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIENvZGVC
bG9jazo6c2V0UmFyZUNhc2VQcm9maWxlcyhSZWZDb3VudGVkQXJyYXk8UmFyZUNhc2VQcm9maWxl
PiYmIHJhcmVDYXNlUHJvZmlsZXMpCit2b2lkIENvZGVCbG9jazo6c2V0UmFyZUNhc2VQcm9maWxl
cyhGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+JiYgcmFyZUNhc2VQcm9maWxlcykKIHsKICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgZW5zdXJlSklURGF0YShs
b2NrZXIpLm1fcmFyZUNhc2VQcm9maWxlcyA9IFdURk1vdmUocmFyZUNhc2VQcm9maWxlcyk7CkBA
IC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5k
YXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBpZiAoIXVubGlua2VkQ29kZUJs
b2NrKCktPmhhc09wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9wUHJvZmlsZUNv
bnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CisgICAgY29uc3QgRml4ZWRWZWN0b3I8SW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2Nr
KCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBieXRlY29kZU9mZnNldHMuc2l6ZSgpOyBpIDwgb2Zm
c2V0c0xlbmd0aDsgaSsrKSB7CiAgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBm
aW5kaW5nIAogICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyB3aWxs
IGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMgYmxvY2suCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggM2U4YTgwMTQ2NzQwZWQ3
YTFhYzIzNDg4MmQ3MDliNGMyNTQwZmYwZS4uM2RhNDhmY2RkZGI1MzEyZDk1MjIyMWFjODk0NGFl
MzQ2MDAwZTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aApAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3
dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC0yNzcsNyArMjc3LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsK
ICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgUGFja2VkUmF3U2VudGlu
ZWxOb2RlPENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdDYWxsczsKICAgICAgICAgU2VudGluZWxM
aW5rZWRMaXN0PFBvbHltb3JwaGljQ2FsbE5vZGUsIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxQb2x5
bW9ycGhpY0NhbGxOb2RlPj4gbV9pbmNvbWluZ1BvbHltb3JwaGljQ2FsbHM7Ci0gICAgICAgIFJl
ZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+IG1fcmFyZUNhc2VQcm9maWxlczsKKyAgICAg
ICAgRml4ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlPiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4gbV9wY1RvQ29kZU9yaWdpbk1h
cDsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBtX2NhbGxl
ZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIEpJVENvZGVNYXAgbV9qaXRDb2RlTWFwOwpAQCAtMzQx
LDcgKzM0MSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQg
c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CiAgICAgdm9pZCBzZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOwogCi0g
ICAgdm9pZCBzZXRSYXJlQ2FzZVByb2ZpbGVzKFJlZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2Zp
bGU+JiYpOworICAgIHZvaWQgc2V0UmFyZUNhc2VQcm9maWxlcyhGaXhlZFZlY3RvcjxSYXJlQ2Fz
ZVByb2ZpbGU+JiYpOwogICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4KTsKICAg
ICB1bnNpZ25lZCByYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHZvaWQgdXBkYXRlQWxsVmFs
dWVQcm9maWxlUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxp
dmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNhbXBsZXNJblBy
b2ZpbGVzKTsKIAotICAgIHZvaWQgc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgUmVmQ291bnRl
ZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgUmVmQ291bnRl
ZEFycmF5PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKKyAgICB2
b2lkIHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxV
bmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRh
YmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOwogCiAgICAgdm9pZCByZXBsYWNlQ29uc3RhbnQoVmly
dHVhbFJlZ2lzdGVyIHJlZywgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMDMyLDcgKzEwMzIs
NyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyBmb3IgREZHIGNv
ZGUgYmxvY2tzLgogICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBt
X2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKICNlbmRpZgotICAgIFJlZkNvdW50ZWRBcnJheTxW
YWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOworICAgIEZpeGVkVmVjdG9yPFZh
bHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQ
b29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJy
aWVyX1Vua25vd24pOwpAQCAtMTA0MCw4ICsxMDQwLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgLy8gaXQsIHNvIHdlJ3JlIHN0dWNrIHdpdGggaXQgZm9yIG5vdy4K
ICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwog
ICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rp
b25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkRlY2xzOwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0
ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkV4cHJzOworICAgIEZpeGVk
VmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1bmN0aW9uRGVjbHM7
CisgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4+IG1fZnVu
Y3Rpb25FeHByczsKIAogICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFu
ZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCmluZGV4IDA4
YTUwMzc3NDZjYThlNmQ4MWM0MjY3Y2M2MzcxZmQwZTdlMjZiMTIuLjUxYWVhNGU3ODZiZWUzNTU2
YTY3OGQ0YjQwYWMwNWNjZmJiMTk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGVyYW5kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGVyYW5kcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTEzNCwzOSArMTM1LDM4IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpID09
IHNpemVvZih1aW50NjRfdCksICJPcGVyYW5kOjphc0JpdHMoKSByZWxpZXMgb24KIAogZW51bSBP
cGVyYW5kc0xpa2VUYWcgeyBPcGVyYW5kc0xpa2UgfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0b3JhZ2VBcmcgPSBzdGQ6OmNvbmRpdGlv
bmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIFZlY3RvcjxULCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4+PgogY2xhc3MgT3BlcmFuZHMgewogcHVibGljOgotICAg
IHVzaW5nIFN0b3JhZ2UgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9v
bD4sIEZhc3RCaXRWZWN0b3IsIFZlY3RvcjxULCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4+Owor
ICAgIHVzaW5nIFN0b3JhZ2UgPSBTdG9yYWdlQXJnOwogICAgIHVzaW5nIFJlZlR5cGUgPSBzdGQ6
OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRSZWZlcmVuY2Us
IFQmPjsKICAgICB1c2luZyBDb25zdFJlZlR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjpp
c19zYW1lX3Y8VCwgYm9vbD4sIGJvb2wsIGNvbnN0IFQmPjsKIAogICAgIE9wZXJhbmRzKCkgPSBk
ZWZhdWx0OwogCiAgICAgZXhwbGljaXQgT3BlcmFuZHMoc2l6ZV90IG51bUFyZ3VtZW50cywgc2l6
ZV90IG51bUxvY2Fscywgc2l6ZV90IG51bVRtcHMpCi0gICAgICAgIDogbV9udW1Bcmd1bWVudHMo
bnVtQXJndW1lbnRzKQorICAgICAgICA6IG1fdmFsdWVzKG51bUFyZ3VtZW50cyArIG51bUxvY2Fs
cyArIG51bVRtcHMpCisgICAgICAgICwgbV9udW1Bcmd1bWVudHMobnVtQXJndW1lbnRzKQogICAg
ICAgICAsIG1fbnVtTG9jYWxzKG51bUxvY2FscykKICAgICB7Ci0gICAgICAgIHNpemVfdCBzaXpl
ID0gbnVtQXJndW1lbnRzICsgbnVtTG9jYWxzICsgbnVtVG1wczsKLSAgICAgICAgbV92YWx1ZXMu
Z3JvdyhzaXplKTsKICAgICAgICAgaWYgKCFXVEY6OlZlY3RvclRyYWl0czxUPjo6bmVlZHNJbml0
aWFsaXphdGlvbikKICAgICAgICAgICAgIG1fdmFsdWVzLmZpbGwoVCgpKTsKICAgICB9CiAKICAg
ICBleHBsaWNpdCBPcGVyYW5kcyhzaXplX3QgbnVtQXJndW1lbnRzLCBzaXplX3QgbnVtTG9jYWxz
LCBzaXplX3QgbnVtVG1wcywgY29uc3QgVCYgaW5pdGlhbFZhbHVlKQotICAgICAgICA6IG1fbnVt
QXJndW1lbnRzKG51bUFyZ3VtZW50cykKKyAgICAgICAgOiBtX3ZhbHVlcyhudW1Bcmd1bWVudHMg
KyBudW1Mb2NhbHMgKyBudW1UbXBzKQorICAgICAgICAsIG1fbnVtQXJndW1lbnRzKG51bUFyZ3Vt
ZW50cykKICAgICAgICAgLCBtX251bUxvY2FscyhudW1Mb2NhbHMpCiAgICAgewotICAgICAgICBt
X3ZhbHVlcy5ncm93KG51bUFyZ3VtZW50cyArIG51bUxvY2FscyArIG51bVRtcHMpOwogICAgICAg
ICBtX3ZhbHVlcy5maWxsKGluaXRpYWxWYWx1ZSk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+Ci0gICAgZXhwbGljaXQgT3BlcmFuZHMoT3BlcmFuZHNMaWtlVGFnLCBjb25z
dCBPcGVyYW5kczxVPiYgb3RoZXIsIGNvbnN0IFQmIGluaXRpYWxWYWx1ZSA9IFQoKSkKLSAgICAg
ICAgOiBtX251bUFyZ3VtZW50cyhvdGhlci5udW1iZXJPZkFyZ3VtZW50cygpKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgZXhwbGljaXQgT3BlcmFuZHMoT3BlcmFu
ZHNMaWtlVGFnLCBjb25zdCBPcGVyYW5kczxVLCBWPiYgb3RoZXIsIGNvbnN0IFQmIGluaXRpYWxW
YWx1ZSA9IFQoKSkKKyAgICAgICAgOiBtX3ZhbHVlcyhvdGhlci5zaXplKCkpCisgICAgICAgICwg
bV9udW1Bcmd1bWVudHMob3RoZXIubnVtYmVyT2ZBcmd1bWVudHMoKSkKICAgICAgICAgLCBtX251
bUxvY2FscyhvdGhlci5udW1iZXJPZkxvY2FscygpKQogICAgIHsKLSAgICAgICAgbV92YWx1ZXMu
Z3JvdyhvdGhlci5zaXplKCkpOwogICAgICAgICBtX3ZhbHVlcy5maWxsKGluaXRpYWxWYWx1ZSk7
CiAgICAgfQogCkBAIC0zOTksNCArMzk5LDcgQEAgY2xhc3MgT3BlcmFuZHMgewogICAgIHVuc2ln
bmVkIG1fbnVtTG9jYWxzIHsgMCB9OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5n
IEZpeGVkT3BlcmFuZHMgPSBPcGVyYW5kczxULCBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19z
YW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIEZpeGVkVmVjdG9yPFQ+Pj47CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wZXJhbmRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJh
bmRzSW5saW5lcy5oCmluZGV4IDBiMWNjMWYyZDE5N2FkMDgzNjVhOGY3ODU2MWZkZjY3YTdkOWVk
ZGQuLjU2YzIwODU4OTNjNDRmYjNhM2FjYzQzZTllZGYzNzk5NDRiMjZmZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKQEAgLTM4LDgg
KzM4LDggQEAgaW5saW5lIHZvaWQgT3BlcmFuZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogICAgICAgICBvdXQucHJpbnQodmlydHVhbFJlZ2lzdGVyKCkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotdm9pZCBPcGVyYW5kczxUPjo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+Cit2b2lkIE9wZXJhbmRzPFQsIFU+OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFt
JiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBj
b21tYSgiICIpOwogICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50SW5kZXggPSBudW1iZXJPZkFyZ3Vt
ZW50cygpOyBhcmd1bWVudEluZGV4LS07KSB7CkBAIC01OSw4ICs1OSw4IEBAIHZvaWQgT3BlcmFu
ZHM8VD46OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpIGNvbnN0CiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBPcGVyYW5k
czxUPjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KK3ZvaWQgT3BlcmFuZHM8VCwgVT46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoIiAiKTsKICAgICBmb3IgKHNpemVfdCBh
cmd1bWVudEluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnRJbmRleC0tOykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKaW5kZXggM2FkZjllOTU0ZTFjNGJiZjViNTcxOTY0MmQyOTFlNzRlN2QyYTlkYi4uYzEw
NjExYzVjYzM3YmQyYzJjNDg2MDEwZTlmZTVmMGY2ZmM4MTQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgc3RhdGljIHZvaWQgZHVtcExpbmVDb2x1bW5FbnRyeShzaXplX3QgaW5kZXgs
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGkKIAogdm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6ZHVtcEV4cHJlc3Npb25SYW5nZUluZm8oKQogewotICAgIFJlZkNvdW50ZWRBcnJheTxF
eHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8gPSBtX2V4cHJlc3Npb25JbmZvOwor
ICAgIEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+JiBleHByZXNzaW9uSW5mbyA9IG1f
ZXhwcmVzc2lvbkluZm87CiAKICAgICBzaXplX3Qgc2l6ZSA9IG1fZXhwcmVzc2lvbkluZm8uc2l6
ZSgpOwogICAgIGRhdGFMb2dGKCJVbmxpbmtlZENvZGVCbG9jayAlcCBleHByZXNzaW9uUmFuZ2VJ
bmZvWyV6dV0ge1xuIiwgdGhpcywgc2l6ZSk7CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBVbmxp
bmtlZENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IFJlZkNv
dW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8gPSBtX2V4cHJl
c3Npb25JbmZvOworICAgIGNvbnN0IEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+JiBl
eHByZXNzaW9uSW5mbyA9IG1fZXhwcmVzc2lvbkluZm87CiAKICAgICBpbnQgbG93ID0gMDsKICAg
ICBpbnQgaGlnaCA9IGV4cHJlc3Npb25JbmZvLnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjNmNGVmM2VkNDVh
OTg4ZjMzN2Q0MjQzMmJhZjY2YjMwNmYzMTQ1NS4uMDZjMWFkYmY2Mjc2MTE1ZTliYzI2NWViNjAw
Y2IxNzgyMmNhMmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9UcmlT
dGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9Vbmlx
dWVkU3RyaW5nSW1wbC5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdK
dW1wVGFibGUgewogfTsKIAogc3RydWN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlIHsKLSAgICBS
ZWZDb3VudGVkQXJyYXk8aW50MzJfdD4gYnJhbmNoT2Zmc2V0czsKKyAgICBGaXhlZFZlY3Rvcjxp
bnQzMl90PiBicmFuY2hPZmZzZXRzOwogICAgIGludDMyX3QgbWluOwogCiAgICAgaW50MzJfdCBv
ZmZzZXRGb3JWYWx1ZShpbnQzMl90IHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpOwpAQCAt
MTM1LDcgKzEzNSw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuICEobV9mZWF0
dXJlcyAmIE5vRXZhbENhY2hlRmVhdHVyZSk7IH0KIAogICAgIGJvb2wgaGFzRXhwcmVzc2lvbklu
Zm8oKSB7IHJldHVybiBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgfQotICAgIGNvbnN0IFJlZkNv
dW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8oKSB7IHJldHVy
biBtX2V4cHJlc3Npb25JbmZvOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJh
bmdlSW5mbz4mIGV4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9leHByZXNzaW9uSW5mbzsgfQog
CiAgICAgYm9vbCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2hlY2twb2lu
dHM7IH0KICAgICB2b2lkIHNldEhhc0NoZWNrcG9pbnRzKCkgeyBtX2hhc0NoZWNrcG9pbnRzID0g
dHJ1ZTsgfQpAQCAtMTUyLDE3ICsxNTIsMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKIAogICAgIHNpemVfdCBudW1iZXJPZklkZW50aWZpZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVycy5zaXplKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyc1tpbmRleF07
IH0KLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyczsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPElk
ZW50aWZpZXI+JiBpZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcnM7IH0K
IAogICAgIEJpdFZlY3RvciYgYml0VmVjdG9yKHNpemVfdCBpKSB7IEFTU0VSVChtX3JhcmVEYXRh
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fYml0VmVjdG9yc1tpXTsgfQogCi0gICAgY29uc3QgUmVm
Q291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkg
eyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyczsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFdy
aXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25z
dGFudFJlZ2lzdGVyczsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3Rh
bnRSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50
UmVnaXN0ZXJzW3JlZy50b0NvbnN0YW50SW5kZXgoKV07IH0KICAgICBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgZ2V0Q29uc3RhbnQoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9j
b25zdGFudFJlZ2lzdGVyc1tyZWcudG9Db25zdGFudEluZGV4KCldLmdldCgpOyB9Ci0gICAgY29u
c3QgUmVmQ291bnRlZEFycmF5PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1Nv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbV9j
b25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247IH0KIAogICAgIHVuc2lnbmVkIG51bWJl
ck9mQ29uc3RhbnRJZGVudGlmaWVyU2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBt
X3JhcmVEYXRhLT5tX2NvbnN0YW50SWRlbnRpZmllclNldHMuc2l6ZSgpIDogMDsgfQotICAgIGNv
bnN0IFJlZkNvdW50ZWRBcnJheTxJZGVudGlmaWVyU2V0PiYgY29uc3RhbnRJZGVudGlmaWVyU2V0
cygpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb25zdGFudElk
ZW50aWZpZXJTZXRzOyB9CisgICAgY29uc3QgRml4ZWRWZWN0b3I8SWRlbnRpZmllclNldD4mIGNv
bnN0YW50SWRlbnRpZmllclNldHMoKSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsgfQogCiAgICAgLy8gSnVtcHMKICAgICBz
aXplX3QgbnVtYmVyT2ZKdW1wVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMu
c2l6ZSgpOyB9CkBAIC0yMzQsNyArMjM0LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29sdW1uOyB9CiAKLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldD4mIG9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkg
Y29uc3QKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYg
b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSBjb25zdAogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fcmFyZURhdGEpOwogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKQEAgLTM3NCw3ICszNzQsNyBAQCBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFBhY2tlZFJlZlB0cjxT
dHJpbmdJbXBsPiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5n
SW1wbD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCi0gICAgUmVmQ291bnRlZEFycmF5
PEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CisgICAgRml4ZWRWZWN0
b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKICAgICBSZWY8VW5s
aW5rZWRNZXRhZGF0YVRhYmxlPiBtX21ldGFkYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0
cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz4gbV9saXZlbmVzczsKQEAgLTM4NSwxMCArMzg1LDEwIEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAjZW5kaWYKIAogICAgIC8v
IENvbnN0YW50IFBvb2xzCi0gICAgUmVmQ291bnRlZEFycmF5PElkZW50aWZpZXI+IG1faWRlbnRp
ZmllcnM7Ci0gICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9jb25z
dGFudFJlZ2lzdGVyczsKLSAgICBSZWZDb3VudGVkQXJyYXk8U291cmNlQ29kZVJlcHJlc2VudGF0
aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsKLSAgICB1c2luZyBGdW5j
dGlvbkV4cHJlc3Npb25WZWN0b3IgPSBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPj47CisgICAgRml4ZWRWZWN0b3I8SWRlbnRpZmllcj4gbV9p
ZGVudGlmaWVyczsKKyAgICBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29u
c3RhbnRSZWdpc3RlcnM7CisgICAgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9u
PiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsKKyAgICB1c2luZyBGdW5jdGlv
bkV4cHJlc3Npb25WZWN0b3IgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+PjsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlv
bkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRXhwcnM7CiAK
QEAgLTM5NiwyMiArMzk2LDIyIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogCi0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxVbmxpbmtlZEhhbmRsZXJJ
bmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOworICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZEhh
bmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOwogCiAgICAgICAgIC8vIEp1bXAgVGFibGVz
Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0
Y2hKdW1wVGFibGVzOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8VW5saW5rZWRTdHJpbmdKdW1w
VGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRWZWN0b3I8VW5s
aW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgRml4ZWRW
ZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsK
IAotICAgICAgICBSZWZDb3VudGVkQXJyYXk8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRp
b24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CisgICAgICAgIEZpeGVkVmVjdG9yPEV4
cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRp
b25zOwogCiAgICAgICAgIHN0cnVjdCBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgewogICAg
ICAgICAgICAgdW5zaWduZWQgbV9zdGFydERpdm90OwogICAgICAgICAgICAgdW5zaWduZWQgbV9l
bmREaXZvdDsKICAgICAgICAgfTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgVHlwZVByb2Zp
bGVyRXhwcmVzc2lvblJhbmdlPiBtX3R5cGVQcm9maWxlckluZm9NYXA7Ci0gICAgICAgIFJlZkNv
dW50ZWRBcnJheTxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8Qml0VmVjdG9yPiBt
X2JpdFZlY3RvcnM7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxJZGVudGlmaWVyU2V0PiBtX2Nv
bnN0YW50SWRlbnRpZmllclNldHM7CisgICAgICAgIEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CisgICAg
ICAgIEZpeGVkVmVjdG9yPEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOworICAgICAgICBGaXhlZFZl
Y3RvcjxJZGVudGlmaWVyU2V0PiBtX2NvbnN0YW50SWRlbnRpZmllclNldHM7CiAKICAgICAgICAg
dW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwpAQCAtNDI4LDcgKzQyOCw3IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBPdXRPZkxpbmVK
dW1wVGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
YXJlRGF0YT4gbV9yYXJlRGF0YTsKLSAgICBSZWZDb3VudGVkQXJyYXk8RXhwcmVzc2lvblJhbmdl
SW5mbz4gbV9leHByZXNzaW9uSW5mbzsKKyAgICBGaXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJ
bmZvPiBtX2V4cHJlc3Npb25JbmZvOwogCiBwcm90ZWN0ZWQ6CiAgICAgREVDTEFSRV9WSVNJVF9D
SElMRFJFTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNmFkN2Y1ZDM5OWE1MmJhMDNlNzBmYTliY2Y1
N2UwMWZmYmE5NzcwYS4uMzVkNGNkYWZjZjE2YzBiMmIwZTFjNWY1OTBiNTdhNDY2N2JhOTE2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKQEAgLTQwOTIsNyArNDA5Miw3IEBAIHN0YXRpYyB2b2lkIHByZXBh
cmVKdW1wVGFibGVGb3JTd2l0Y2goCiAgICAgaW50MzJfdCAoKmtleUdldHRlcikoRXhwcmVzc2lv
bk5vZGUqLCBpbnQzMl90IG1pbiwgaW50MzJfdCBtYXgpKQogewogICAgIGp1bXBUYWJsZS5taW4g
PSBtaW47Ci0gICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBSZWZDb3VudGVkQXJyYXk8aW50
MzJfdD4obWF4IC0gbWluICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhl
ZFZlY3RvcjxpbnQzMl90PihtYXggLSBtaW4gKyAxKTsKICAgICBzdGQ6OmZpbGwoanVtcFRhYmxl
LmJyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCksIDAp
OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjbGF1c2VDb3VudDsgKytpKSB7CiAgICAg
ICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxk
IGhhdmUgYmVlbiBmaXhlZCwgc28gCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5o
CmluZGV4IGE2NDFlYjc0YjYxZmE0NGQ3ODFlYTViMzkyMDU3MTU3ZGI1MDQ4MDcuLjRlMjUyMzc3
MDMyNjA2ZTFiY2UyMzRiMjRlNTI2OThiZjYxZmZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdC5oCkBAIC02Nyw2ICs2Nyw5IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3JpcHRv
ckltcGw7CiBzdHJ1Y3QgT1NSRXhpdEhhbmRsZTsKIAogc3RydWN0IE9TUkV4aXREZXNjcmlwdG9y
IHsKK3ByaXZhdGU6CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT1NSRXhpdERlc2NyaXB0b3Ip
OworcHVibGljOgogICAgIE9TUkV4aXREZXNjcmlwdG9yKAogICAgICAgICBEYXRhRm9ybWF0IHBy
b2ZpbGVEYXRhRm9ybWF0LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLAogICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cywgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMsIHVuc2ln
bmVkIG51bWJlck9mVG1wcyk7CkBAIC03OSw3ICs4Miw3IEBAIHN0cnVjdCBPU1JFeGl0RGVzY3Jp
cHRvciB7CiAgICAgRGF0YUZvcm1hdCBtX3Byb2ZpbGVEYXRhRm9ybWF0OwogICAgIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CiAgICAgCi0gICAgT3BlcmFuZHM8
RXhpdFZhbHVlPiBtX3ZhbHVlczsKKyAgICBGaXhlZE9wZXJhbmRzPEV4aXRWYWx1ZT4gbV92YWx1
ZXM7CiAgICAgQmFnPEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uPiBtX21hdGVyaWFsaXph
dGlvbnM7CiAKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJl
bmNlcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDRlZWEzYTVmZTc1MWU4NWE4
OGI4NThiMGFmZGI0NmE0YWFkZGRhZGQuLjc3MjFkZjVhODRjYWRjM2E2NTNhNGJlODU2NjcwZTJj
MGIwNGMzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTUyMCw5ICs1MjAsOSBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fYnlWYWxJbnN0cnVj
dGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKIAotICAgIFJlZkNv
dW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+IHJhcmVDYXNlUHJvZmlsZXM7CisgICAgRml4ZWRW
ZWN0b3I8UmFyZUNhc2VQcm9maWxlPiByYXJlQ2FzZVByb2ZpbGVzOwogICAgIGlmIChzaG91bGRF
bWl0UHJvZmlsaW5nKCkpCi0gICAgICAgIHJhcmVDYXNlUHJvZmlsZXMgPSBSZWZDb3VudGVkQXJy
YXk8UmFyZUNhc2VQcm9maWxlPihtX2J5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSk7CisgICAg
ICAgIHJhcmVDYXNlUHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+KG1fYnl0
ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZUNv
dW50SGF2aW5nU2xvd0Nhc2UgPSAwOwogICAgIGZvciAoVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciBpdGVyID0gbV9zbG93Q2FzZXMuYmVnaW4oKTsgaXRlciAhPSBtX3Nsb3dDYXNlcy5l
bmQoKTspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYzhjMjYxNTI0M2FkOGMwYTZkZWRkMGUwZWYzNTQ1YTQ2
NzQ4NzExNy4uNmRmNDY4NTBlMmM3ZWI5Njg5OGVjNGM1N2ZjYjc3ZGQ4NzVkMmQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKICAg
ICAvLyBUaGVzZSB0eXBlcyBhcmUgdXNlZnVsIHNpbmNlIHdlIGNhbid0IHVzZSAnPC4uLj4nIHN5
bnRheCBpbiBMTEludCBvZmZzZXRzIGV4dHJhY3Rpb24uIGUuZy4gVmVjdG9yPGludD46Om1fZGF0
YQogICAgIHVzaW5nIFZlY3RvciA9IFdURjo6VmVjdG9yPGludD47CiAgICAgdXNpbmcgSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbCA9IEpTQzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+Owor
ICAgIHVzaW5nIEZpeGVkVmVjdG9yID0gV1RGOjpGaXhlZFZlY3RvcjxpbnQ+OwogICAgIHVzaW5n
IFJlZkNvdW50ZWRBcnJheSA9IFdURjo6UmVmQ291bnRlZEFycmF5PGludD47CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQppbmRleCAzODMzN2Q3ZDE5MDg0Y2Q1ZjcyNzc2YjU2ZGU4ZDkxYzIwZWMyOGFhLi5mZmM0
ZjYyOTM5ZWNlNzQ2MmUzOTc0MDllNzNmMWJkYzgxOGRkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNTUwLDcg
KzE1NTAsNyBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQog
ICAgIGFkZHAgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdo
YXQgaGFzIHRoZSBwZWVwaG9sZQogICAgIGFzc2VydChtYWNybyAob2spIGJwZ3RlcSB0MCwgMCwg
b2sgZW5kKQogICAgIGJ0cHogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCi0gICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRh
W3QxXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsg
Rml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMK
ICAgICBidHB6IHQzLCAuYXJndW1lbnRQcm9maWxlRG9uZSAjIFdoZW4gd2UgY2FuJ3QgSklULCB3
ZSBkb24ndCBhbGxvY2F0ZSBhbnkgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMuCiAgICAgbXVscCBz
aXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVk
dWN0aW9uIQogICAgIGxzaGlmdHAgMywgdDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3Vt
ZW50cyBvbiB0aGUgc3RhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKaW5kZXggN2JhMjcxZDhjNmIzZjE5MDY2MmEwMWJlZjhlMzFkMjExYzhjYzJl
YS4uYzBkN2QyZTEwNGViZDllNTU5MzBiNTc2ODE0NjFhYWYzMzE3ZjFhMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtNjAyLDcgKzYwMiw4
IEBAIHB0cmRpZmZfdCBDYWNoZWRXcml0ZUJhcnJpZXJPZmZzZXRzOjpwdHJPZmZzZXQoKQogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IElubGluZUNhcGFjaXR5ID0gMCwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyID0gQ3Jhc2hPbk92ZXJmbG93LCB0eXBlbmFtZSBNYWxsb2MgPSBXVEY6OlZl
Y3Rvck1hbGxvYz4KIGNsYXNzIENhY2hlZFZlY3RvciA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9i
amVjdDxWZWN0b3I8U291cmNlVHlwZTxUPiwgSW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgMTYsIE1hbGxvYz4+IHsKIHB1YmxpYzoKLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBWZWN0b3I8U291cmNlVHlwZTxUPiwgSW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgMTYsIE1hbGxvYz4mIHZlY3RvcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0
b3JDb250YWluZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVj
dG9yQ29udGFpbmVyJiB2ZWN0b3IpCiAgICAgewogICAgICAgICBtX3NpemUgPSB2ZWN0b3Iuc2l6
ZSgpOwogICAgICAgICBpZiAoIW1fc2l6ZSkKQEAgLTYxMiwzOSArNjEzLDE3IEBAIGNsYXNzIENh
Y2hlZFZlY3RvciA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxWZWN0b3I8U291cmNlVHlw
ZTxUPiwgSW5saW5lQ2FwCiAgICAgICAgICAgICA6OkpTQzo6ZW5jb2RlKGVuY29kZXIsIGJ1ZmZl
cltpXSwgdmVjdG9yW2ldKTsKICAgICB9CiAKLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8U291cmNlVHlwZTxUPj4mIHZlY3RvcikKLSAgICB7
Ci0gICAgICAgIG1fc2l6ZSA9IHZlY3Rvci5zaXplKCk7Ci0gICAgICAgIGlmICghbV9zaXplKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBUKiBidWZmZXIgPSB0aGlzLT50ZW1wbGF0ZSBh
bGxvY2F0ZTxUPihlbmNvZGVyLCBtX3NpemUpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zaXplOyArK2kpCi0gICAgICAgICAgICA6OkpTQzo6ZW5jb2RlKGVuY29kZXIsIGJ1
ZmZlcltpXSwgdmVjdG9yW2ldKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPgotICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTb3VyY2VUeXBl
PFQ+LCBJbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCAxNiwgTWFsbG9jPiYgdmVjdG9y
LCBBcmdzLi4uIGFyZ3MpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncywgdHlw
ZW5hbWUgVmVjdG9yQ29udGFpbmVyPgorICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFZlY3RvckNvbnRhaW5lciYgdmVjdG9yLCBBcmdzLi4uIGFyZ3MpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmVjdG9yLnJl
c2l6ZVRvRml0KG1fc2l6ZSk7CisgICAgICAgIHZlY3RvciA9IFZlY3RvckNvbnRhaW5lcihtX3Np
emUpOwogICAgICAgICBjb25zdCBUKiBidWZmZXIgPSB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4o
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQogICAgICAg
ICAgICAgOjpKU0M6OmRlY29kZShkZWNvZGVyLCBidWZmZXJbaV0sIHZlY3RvcltpXSwgYXJncy4u
Lik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZWZDb3VudGVkQXJyYXk8U291cmNlVHlwZTxUPj4mIHZl
Y3RvciwgQXJncy4uLiBhcmdzKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX3NpemUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZlY3RvciA9IFJlZkNvdW50ZWRBcnJheTxTb3Vy
Y2VUeXBlPFQ+PihtX3NpemUpOwotICAgICAgICBjb25zdCBUKiBidWZmZXIgPSB0aGlzLT50ZW1w
bGF0ZSBidWZmZXI8VD4oKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6
ZTsgKytpKQotICAgICAgICAgICAgOjpKU0M6OmRlY29kZShkZWNvZGVyLCBidWZmZXJbaV0sIHZl
Y3RvcltpXSwgYXJncy4uLik7Ci0gICAgfQotCi0KIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9z
aXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVm
MzBjOWE1NjEzN2IzYzMxZDMwZGJhYjUzMTkzOWViM2M4OThhNjIuLjY3M2E5ZTZkZjliMjZhZTIz
YmU5MmVlOGQwNzkzNTRhZmMxMWVhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNzQyLDYgKzc0Miw3IEBACiAJCUUzQkUwOUE2MjRBNTg1NDUwMDlERjJC
NCAvKiBJQ1VIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElDVUhlbHBlcnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0M1ODNDODI2MTI3QUREMDBDNTc1NjggLyog
Um9iaW5Ib29kSGFzaE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSb2Jpbkhvb2RIYXNoTWFwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBD
b21wYWN0UG9pbnRlclR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBhY3RQb2ludGVyVHVwbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNFMEYw
NEYyNjE5NzE1NzAwNDY0MEZDIC8qIEZpeGVkVmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpeGVk
VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTE1ODI1MUVBREE1M0Mw
MDRBMDc5RCAvKiBTeXN0ZW1GcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5c3RlbUZyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFNjRGMEIyMjgx
MzQyODAwMUU1NUI0IC8qIE5vbm1vdmFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9ubW92YWJsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5RjJFNjIzQUI5RTIzMDBCMjYxMjkg
LyogVmVjdG9ySGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZWN0b3JI
YXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDM4LDYgKzEwMzksNyBAQAog
CQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKIAkJ
CQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJQTMz
MUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLywKKwkJCQlFM0UwRjA0RjI2
MTk3MTU3MDA0NjQwRkMgLyogRml4ZWRWZWN0b3IuaCAqLywKIAkJCQkwRjJCNjZBNTE3QjZCNEY3
MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCiAJCQkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJG
IC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThBNDcyQTYxNTFBODI1QTAwNDEy
M0ZGIC8qIEZvcndhcmQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZTFmYTU0NWE0MDE3
OGVhMzIzNzA4OTM5NjNiYjRkYThlZjU4OGUxYy4uYTMwNTllOWJiZjZmY2UyMDIxNzFmYzQyNzBi
ZDE5NDhjOTQyMjlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTY5LDYgKzY5LDcgQEAgc2V0
KFdURl9QVUJMSUNfSEVBREVSUwogICAgIEZpbGVNZXRhZGF0YS5oCiAgICAgRmlsZVByaW50U3Ry
ZWFtLmgKICAgICBGaWxlU3lzdGVtLmgKKyAgICBGaXhlZFZlY3Rvci5oCiAgICAgRmxpcEJ5dGVz
LmgKICAgICBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oCiAgICAgRm9yd2FyZC5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0
VmVjdG9yLmgKaW5kZXggOTZkY2NlMWNkYmMzODc0ZTM2MmIzNzAwYjI4YTRmOTQ0MzM4NGFjNC4u
NDNiNDQxMDQ0N2I4OTEwM2ViNGNhYjUwMGRiNTRiNzkwYjNlZjYwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRW
ZWN0b3IuaApAQCAtNDc5LDYgKzQ3OSwxMCBAQCBjbGFzcyBGYXN0Qml0UmVmZXJlbmNlIHsKIGNs
YXNzIEZhc3RCaXRWZWN0b3IgOiBwdWJsaWMgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rv
cldvcmRPd25lcj4gewogcHVibGljOgogICAgIEZhc3RCaXRWZWN0b3IoKSB7IH0KKyAgICBleHBs
aWNpdCBGYXN0Qml0VmVjdG9yKHNpemVfdCBudW1CaXRzKQorICAgIHsKKyAgICAgICAgZ3Jvdyhu
dW1CaXRzKTsKKyAgICB9CiAgICAgCiAgICAgRmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0Qml0VmVj
dG9yJikgPSBkZWZhdWx0OwogICAgIEZhc3RCaXRWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBGYXN0
Qml0VmVjdG9yJikgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRml4ZWRW
ZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRkZDk0
ZGIzMGM3ZmI1MzM3OTE3YWU5ODc4YmUzYzZjYTNmMmQzOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIFdyYXBw
ZXIgYXJvdW5kIFJlZkNvdW50ZWRBcnJheSwgZml4ZWQtc2l6ZWQsIG1lbW9yeSBjb21wYWN0IFZl
Y3Rvci4KKy8vIENvcHkgY29uc3RydWN0b3IgLyBhc3NpZ25tZW50IG9wZXJhdG9yIHdvcmsgZGlm
ZmVyZW50bHkgZnJvbSBSZWZDb3VudGVkQXJyYXk6IHdvcmtzIGFzIGxpa2UgYSBWZWN0b3IuCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgRml4ZWRWZWN0b3IgeworcHVibGljOgorICAgIHVz
aW5nIGl0ZXJhdG9yID0gVCo7CisgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBjb25zdCBUKjsK
KyAgICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJh
dG9yPjsKKyAgICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0
ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPjsKKworICAgIEZpeGVkVmVjdG9yKCkgPSBkZWZhdWx0Owor
ICAgIEZpeGVkVmVjdG9yKGNvbnN0IEZpeGVkVmVjdG9yJiBvdGhlcikKKyAgICAgICAgOiBtX3N0
b3JhZ2Uob3RoZXIubV9zdG9yYWdlLmNsb25lKCkpCisgICAgeyB9CisgICAgRml4ZWRWZWN0b3Io
Rml4ZWRWZWN0b3ImJiBvdGhlcikgPSBkZWZhdWx0OworCisgICAgRml4ZWRWZWN0b3ImIG9wZXJh
dG9yPShjb25zdCBGaXhlZFZlY3RvciYgb3RoZXIpCisgICAgeworICAgICAgICBGaXhlZFZlY3Rv
ciB0bXAob3RoZXIpOworICAgICAgICBzd2FwKHRtcCk7CisgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICB9CisKKyAgICBGaXhlZFZlY3RvciYgb3BlcmF0b3I9KEZpeGVkVmVjdG9yJiYgb3RoZXIp
CisgICAgeworICAgICAgICBGaXhlZFZlY3RvciB0bXAoV1RGTW92ZShvdGhlcikpOworICAgICAg
ICBzd2FwKHRtcCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBleHBsaWNp
dCBGaXhlZFZlY3RvcihzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX3N0b3JhZ2Uoc2l6ZSkKKyAg
ICB7IH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyPgorICAgIGV4cGxpY2l0IEZpeGVkVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIpCisgICAgICAgIDogbV9zdG9y
YWdlKG90aGVyKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShj
b25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQor
ICAgIHsKKyAgICAgICAgbV9zdG9yYWdlID0gb3RoZXI7CisgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5zaXpl
KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UuaXNFbXB0
eSgpOyB9CisgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmJ5
dGVTaXplKCk7IH0KKworICAgIFQqIGRhdGEoKSB7IHJldHVybiBtX3N0b3JhZ2UuZGF0YSgpOyB9
CisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UuYmVnaW4oKTsgfQorICAg
IGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZS5lbmQoKTsgfQorCisgICAgY29uc3Qg
VCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Rml4ZWRWZWN0b3IqPih0aGlzKS0+
ZGF0YSgpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25z
dF9jYXN0PEZpeGVkVmVjdG9yKj4odGhpcyktPmJlZ2luKCk7IH0KKyAgICBjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4odGhpcyktPmVu
ZCgpOyB9CisKKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIG1fc3RvcmFn
ZS5yYmVnaW4oKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIG1fc3Rv
cmFnZS5yZW5kKCk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RvcmFnZS5yYmVnaW4oKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5yZW5kKCk7IH0KKworICAgIFQmIGF0
KHNpemVfdCBpKSB7IHJldHVybiBtX3N0b3JhZ2UuYXQoaSk7IH0KKyAgICBjb25zdCBUJiBhdChz
aXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmF0KGkpOyB9CisKKyAgICBUJiBvcGVy
YXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQorICAgIGNvbnN0IFQmIG9wZXJhdG9y
W10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CisKKyAgICBUJiBmaXJzdCgpIHsg
cmV0dXJuICgqdGhpcylbMF07IH0KKyAgICBjb25zdCBUJiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJu
ICgqdGhpcylbMF07IH0KKyAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0aGlzKVtzaXplKCkgLSAx
XTsgfQorICAgIGNvbnN0IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAt
IDFdOyB9CisKKyAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKSB7IG1fc3RvcmFnZS5maWxsKHZh
bCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaXhlZFZlY3RvcjxUPiYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA9PSBvdGhlci5tX3N0b3JhZ2U7IH0KKworICAgIHZv
aWQgc3dhcChGaXhlZFZlY3RvcjxUPiYgb3RoZXIpCisgICAgeworICAgICAgICBtX3N0b3JhZ2Uu
c3dhcChvdGhlci5tX3N0b3JhZ2UpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBSZWZDb3VudGVkQXJyYXk8VD4g
bV9zdG9yYWdlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEZpeGVkVmVjdG9yPGludD4pID09
IHNpemVvZihpbnQqKSk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBzd2Fw
KEZpeGVkVmVjdG9yPFQ+JiBhLCBGaXhlZFZlY3RvcjxUPiYgYikKK3sKKyAgICBhLnN3YXAoYik7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkZpeGVkVmVjdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0
Zi9SZWZDb3VudGVkQXJyYXkuaAppbmRleCA1NWNhOTgxMzEzOGIyNjIwMTAzNDk5MDdjMjU2OWZl
YzJkYjE0YTFjLi4yNDg2ZDY1MTA4ODAxZmY5MTZjODIyYmNiMTkyZThhNzVmOTM5N2FjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9SZWZDb3VudGVkQXJyYXkuaApAQCAtNTAsNiArNTAsMTEgQEAgY2xhc3MgUmVmQ291bnRl
ZEFycmF5IHsKICAgICBlbnVtIENvbW1vbkNvcHlDb25zdHJ1Y3RvclRhZyB7IENvbW1vbkNvcHlD
b25zdHJ1Y3RvciB9OwogCiBwdWJsaWM6CisgICAgdXNpbmcgaXRlcmF0b3IgPSBUKjsKKyAgICB1
c2luZyBjb25zdF9pdGVyYXRvciA9IGNvbnN0IFQqOworICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0
b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OworICAgIHVzaW5nIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+Owor
CiAgICAgUmVmQ291bnRlZEFycmF5KCkgPSBkZWZhdWx0OwogICAgIAogICAgIFJlZkNvdW50ZWRB
cnJheShjb25zdCBSZWZDb3VudGVkQXJyYXkmIG90aGVyKQpAQCAtNjEsNiArNjYsMTAgQEAgY2xh
c3MgUmVmQ291bnRlZEFycmF5IHsKICAgICAgICAgOiBSZWZDb3VudGVkQXJyYXkoQ29tbW9uQ29w
eUNvbnN0cnVjdG9yLCBvdGhlcikKICAgICB7IH0KIAorICAgIFJlZkNvdW50ZWRBcnJheShSZWZD
b3VudGVkQXJyYXkmJiBvdGhlcikKKyAgICAgICAgOiBtX2RhdGEoUHRyVHJhaXRzOjpleGNoYW5n
ZShvdGhlci5tX2RhdGEsIG51bGxwdHIpKQorICAgIHsgfQorCiAgICAgZXhwbGljaXQgUmVmQ291
bnRlZEFycmF5KHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgaWYgKCFzaXplKSB7CkBAIC0x
NjksOCArMTc4LDggQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICBzaXplX3QgYnl0ZVNp
emUoKSBjb25zdCB7IHJldHVybiBzaXplKCkgKiBzaXplb2YoVCk7IH0KICAgICAKICAgICBUKiBk
YXRhKCkgeyByZXR1cm4gUHRyVHJhaXRzOjp1bndyYXAobV9kYXRhKTsgfQotICAgIFQqIGJlZ2lu
KCkgeyByZXR1cm4gZGF0YSgpOyB9Ci0gICAgVCogZW5kKCkKKyAgICBpdGVyYXRvciBiZWdpbigp
IHsgcmV0dXJuIGRhdGEoKTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpCiAgICAgewogICAgICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTc5LDggKzE4OCwxMyBAQCBj
bGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgIH0KICAgICAKICAgICBjb25zdCBUKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+ZGF0YSgp
OyB9Ci0gICAgY29uc3QgVCogYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlZkNv
dW50ZWRBcnJheSo+KHRoaXMpLT5iZWdpbigpOyB9Ci0gICAgY29uc3QgVCogZW5kKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+ZW5kKCk7IH0KKyAg
ICBjb25zdCBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8
UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmJlZ2luKCk7IH0KKyAgICBjb25zdCBjb25zdF9pdGVy
YXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlZkNvdW50ZWRBcnJheSo+KHRo
aXMpLT5lbmQoKTsgfQorCisgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBy
ZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsg
cmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5k
KCkpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgeyByZXR1cm4g
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQogICAgIAogICAgIFQmIGF0KHNpemVf
dCBpKQogICAgIHsKQEAgLTIwMiw2ICsyMTYsMTYgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsK
ICAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0aGlzKVtzaXplKCkgLSAxXTsgfQogICAgIGNvbnN0
IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAtIDFdOyB9CiAKKyAgICB2
b2lkIGZpbGwoY29uc3QgVCYgdmFsKQorICAgIHsKKyAgICAgICAgc3RkOjpmaWxsKGJlZ2luKCks
IGVuZCgpLCB2YWwpOworICAgIH0KKworICAgIHZvaWQgc3dhcChSZWZDb3VudGVkQXJyYXkmIG90
aGVyKQorICAgIHsKKyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fZGF0YSwgb3RoZXIubV9kYXRh
KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclRyYWl0cyA9IFB0clRyYWl0
cz4KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmQ291bnRlZEFycmF5PFQsIE90aGVyVHJh
aXRzPiYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEwNGQ2Nzg5NjM4NzIzMzZhNGYxMGU4YjM4NGJlYmViMTdk
YzNlYmEuLjhiOGE2OWU4YjZlMzZkN2ZlMTIyYThmOTdhY2YwMmMzNDJkOThiYTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMS0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZlY3RvciBhbmQgdXNlIGl0IGZvciBGaXhlZE9wZXJh
bmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQx
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVy
OjpEZXN0cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rv
ck9ic2VydmVyOjp+RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkRlc3RydWN0b3JPYnNlcnZlcjo6b3BlcmF0b3I9KToKKwogMjAyMS0wNC0wMiAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdLVVJMU2NoZW1lVGFzayBy
ZWRpcmVjdCBBUEkuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZjdjZmZkZTI5
MWMyZDgyZGQxMjUxYmJlYzhjODEzMTEyN2ZiZWZlLi5jZDY3Y2U2YWZjODdhOTI5ODE4MjhiNDNl
YTUxNjU3Y2I1NWE0MTBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTQ0LDYg
KzQ0LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9FbnVtVHJhaXRzLmNw
cAogICAgIFRlc3RzL1dURi9FeHBlY3RlZC5jcHAKICAgICBUZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHAKKyAgICBUZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCiAgICAgVGVzdHMvV1RGL0Z1bmN0aW9u
LmNwcAogICAgIFRlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKICAgICBUZXN0cy9XVEYvSGFz
aE1hcC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTZlY2VmZWU2MWQ2ZDJjNjUzNzg0
MDhiZmU3ZWVmOTQ1NjY4MmU5Mi4uODFkZjdiYzliNzFmZWE2NmY1ZTE5ZTc4MTY1OTk2YTgxNTc4
N2YxMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDksNiArMTEwOSw3IEBACiAJCUUx
MjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlFMTk0RTFCRDE3
N0U1M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5
NEUxQkMxNzdFNTM0QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25z
ZS5odG1sICovOyB9OwogCQlFMzAyQkRBQTI0MDRCOTI0MDA4NjUyNzcgLyogQ29tcGFjdFJlZlB0
clR1cGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMDJCREE5MjQwNEI5MjMwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwICovOyB9
OworCQlFMzIxMDUxOTI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMTA1MTgyNjE5NzlGMzAw
MTU3QzY3IC8qIEZpeGVkVmVjdG9yLmNwcCAqLzsgfTsKIAkJRTMyNEE2RjAyMDQxQzgyMDAwQTc2
NTkzIC8qIFVuaXF1ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOThCQzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBVbmlxdWVBcnJheS5jcHAg
Ki87IH07CiAJCUUzMjVDOTA3MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3Vw
cG9ydC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MjVDOTA2MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbSAqLzsg
fTsKIAkJRTMyQjU0OTIyMjgxMEFDNDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzJCNTQ5MTIyODEwQUMwMDA4QUQ3
MDIgLyogUGFja2VkLmNwcCAqLzsgfTsKQEAgLTI5MDIsNiArMjkwMyw3IEBACiAJCUUxOTRFMUJB
MTc3RTUxNDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21E
aWRSZWNlaXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRF
MUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2Uu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyog
Q29tcGFjdFJlZlB0clR1cGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbXBhY3RSZWZQdHJUdXBsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzMjEwNTE4MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaXhlZFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMjVDOTA2MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0
dXJlU3VwcG9ydC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVTdXBw
b3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzJCNTQ5MTIyODEwQUMwMDA4
QUQ3MDIgLyogUGFja2VkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEE2RDE4MjQxMkRFMzkwMDEyQUI2RSAvKiBHcmFu
dEFjY2Vzc1RvUHJlZmVyZW5jZXNTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR3Jh
bnRBY2Nlc3NUb1ByZWZlcmVuY2VzU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQzNzAsNiArNDM3Miw3IEBACiAJCQkJMUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8q
IEVudW1UcmFpdHMuY3BwICovLAogCQkJCUFEN0M0MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBl
Y3RlZC5jcHAgKi8sCiAJCQkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0u
Y3BwICovLAorCQkJCUUzMjEwNTE4MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAg
Ki8sCiAJCQkJOTMxMENEMzYxRUY3MDhGQjAwNTBGRkUwIC8qIEZ1bmN0aW9uLmNwcCAqLywKIAkJ
CQk4M0RCNzk2NzFFRjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovLAogCQkJCTdBMzhE
N0U1MUM3NTJENUYwMDRGMTU3RCAvKiBIYXNoQ291bnRlZFNldC5jcHAgKi8sCkBAIC01MTIxLDYg
KzUxMjQsNyBAQAogCQkJCTFBRjdCMjFGMUQ2Q0QxNEQwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFEN0M0MzREMUREMkE1NEUwMDI2ODg4QiAvKiBFeHBlY3Rl
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyogRmls
ZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzIxMDUxOTI2MTk3OUYzMDAxNTdDNjcg
LyogRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxMENEMzgxRUY3MDhGQjAw
NTBGRkUwIC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCRkQyOTRDMUQ1RTZD
MUQwMDhFQzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzNE
NjMxRDFGQ0I3NjIwMDAzMkVDRDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRm
ZDlmMDc1OWIxMTZjMjI5YzkxM2E5NmEwNDNkZTFkNWY4MDIyYjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHAKQEAgLTAsMCAr
MSwyNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJN
b3ZlT25seS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRW
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9ySGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9GaXhlZFZlY3RvciwgRW1wdHkpCit7Cisg
ICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IGludFZlY3RvcjsKKyAgICBFWFBFQ1RfVFJVRShpbnRW
ZWN0b3IuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRVEoMFUsIGludFZlY3Rvci5zaXplKCkpOwor
fQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgSXRlcmF0b3IpCit7CisgICAgRml4ZWRWZWN0b3I8
dW5zaWduZWQ+IGludFZlY3Rvcig0KTsKKyAgICBpbnRWZWN0b3JbMF0gPSAxMDsKKyAgICBpbnRW
ZWN0b3JbMV0gPSAxMTsKKyAgICBpbnRWZWN0b3JbMl0gPSAxMjsKKyAgICBpbnRWZWN0b3JbM10g
PSAxMzsKKworICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6aXRlcmF0b3IgaXQgPSBpbnRWZWN0
b3IuYmVnaW4oKTsKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD46Oml0ZXJhdG9yIGVuZCA9IGlu
dFZlY3Rvci5lbmQoKTsKKyAgICBFWFBFQ1RfVFJVRShlbmQgIT0gaXQpOworCisgICAgRVhQRUNU
X0VRKDEwVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxMVUsICppdCk7CisgICAg
KytpdDsKKyAgICBFWFBFQ1RfRVEoMTJVLCAqaXQpOworICAgICsraXQ7CisgICAgRVhQRUNUX0VR
KDEzVSwgKml0KTsKKyAgICArK2l0OworCisgICAgRVhQRUNUX1RSVUUoZW5kID09IGl0KTsKK30K
KworVEVTVChXVEZfRml4ZWRWZWN0b3IsIE92ZXJsb2FkZWRPcGVyYXRvckFtcGVyc2FuZCkKK3sK
KyAgICBzdHJ1Y3QgVGVzdCB7CisgICAgcHJpdmF0ZToKKyAgICAgICAgVGVzdCogb3BlcmF0b3Im
KCkgPSBkZWxldGU7CisgICAgfTsKKworICAgIEZpeGVkVmVjdG9yPFRlc3Q+IHZlY3RvcigxKTsK
KyAgICB2ZWN0b3JbMF0gPSBUZXN0KCk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBDb3B5
KQoreworICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOworICAgIHZlYzFbMF0gPSAw
OworICAgIHZlYzFbMV0gPSAxOworICAgIHZlYzFbMl0gPSAyOworCisgICAgRml4ZWRWZWN0b3I8
dW5zaWduZWQ+IHZlYzIodmVjMSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAzVSk7Cisg
ICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAzVSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHZlYzEuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKHZlYzFbaV0sIGkpOwor
ICAgICAgICBFWFBFQ1RfRVEodmVjMltpXSwgaSk7CisgICAgfQorICAgIHZlYzFbMl0gPSA0MjsK
KyAgICBFWFBFQ1RfRVEodmVjMVsyXSwgNDJVKTsKKyAgICBFWFBFQ1RfRVEodmVjMlsyXSwgMlUp
OworfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgQ29weUFzc2lnbikKK3sKKyAgICBGaXhlZFZl
Y3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0g
MTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyOwor
ICAgIHZlYzIgPSB2ZWMxOworICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgM1UpOworICAgIEVY
UEVDVF9FUSh2ZWMyLnNpemUoKSwgM1UpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
ZWMxLnNpemUoKTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMxW2ldLCBpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworICAgIH0KKyAgICB2ZWMxWzJdID0gNDI7CisgICAg
RVhQRUNUX0VRKHZlYzFbMl0sIDQyVSk7CisgICAgRVhQRUNUX0VRKHZlYzJbMl0sIDJVKTsKK30K
KworVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmUpCit7CisgICAgRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+IHZlYzEoMyk7CisgICAgdmVjMVswXSA9IDA7CisgICAgdmVjMVsxXSA9IDE7CisgICAgdmVj
MVsyXSA9IDI7CisKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMihXVEZNb3ZlKHZlYzEp
KTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKKyAgICBFWFBFQ1RfRVEodmVjMi5z
aXplKCksIDNVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMi5zaXplKCk7ICsr
aSkKKyAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworfQorCitURVNUKFdURl9GaXhlZFZl
Y3RvciwgTW92ZUFzc2lnbikKK3sKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsK
KyAgICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKwor
ICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyOworICAgIHZlYzIgPSBXVEZNb3ZlKHZlYzEp
OworICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOworICAgIEVYUEVDVF9FUSh2ZWMyLnNp
emUoKSwgM1UpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMyLnNpemUoKTsgKytp
KQorICAgICAgICBFWFBFQ1RfRVEodmVjMltpXSwgaSk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVj
dG9yLCBTd2FwKQoreworICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOworICAgIHZl
YzFbMF0gPSAwOworICAgIHZlYzFbMV0gPSAxOworICAgIHZlYzFbMl0gPSAyOworCisgICAgRml4
ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzI7CisgICAgdmVjMi5zd2FwKHZlYzEpOworICAgIEVYUEVD
VF9FUSh2ZWMxLnNpemUoKSwgMFUpOworICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgM1UpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMyLnNpemUoKTsgKytpKQorICAgICAgICBF
WFBFQ1RfRVEodmVjMltpXSwgaSk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBJdGVyYXRv
ckZvcikKK3sKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBd
ID0gMDsKKyAgICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEuYmVnaW4oKTsgaXRlciAhPSB2
ZWMxLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgRVhQRUNUX0VRKCppdGVyLCBpbmRleCk7Cisg
ICAgICAgICsraW5kZXg7CisgICAgfQorfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgUmV2ZXJz
ZSkKK3sKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBdID0g
MDsKKyAgICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEucmJlZ2luKCk7IGl0ZXIgIT0gdmVj
MS5yZW5kKCk7ICsraXRlcikgeworICAgICAgICArK2luZGV4OworICAgICAgICBFWFBFQ1RfRVEo
Kml0ZXIsIDNVIC0gaW5kZXgpOworICAgIH0KK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIEZp
bGwpCit7CisgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEoMyk7CisgICAgdmVjMS5maWxs
KDQyKTsKKworICAgIGZvciAoYXV0byYgdmFsdWUgOiB2ZWMxKQorICAgICAgICBFWFBFQ1RfRVEo
dmFsdWUsIDQyVSk7Cit9CisKK3N0cnVjdCBEZXN0cnVjdG9yT2JzZXJ2ZXIgeworICAgIERlc3Ry
dWN0b3JPYnNlcnZlcigpID0gZGVmYXVsdDsKKworICAgIERlc3RydWN0b3JPYnNlcnZlcihib29s
KiBkZXN0cnVjdGVkKQorICAgICAgICA6IGRlc3RydWN0ZWQoZGVzdHJ1Y3RlZCkKKyAgICB7Cisg
ICAgfQorCisgICAgfkRlc3RydWN0b3JPYnNlcnZlcigpCisgICAgeworICAgICAgICBpZiAoZGVz
dHJ1Y3RlZCkKKyAgICAgICAgICAgICpkZXN0cnVjdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBE
ZXN0cnVjdG9yT2JzZXJ2ZXIoRGVzdHJ1Y3Rvck9ic2VydmVyJiYgb3RoZXIpCisgICAgICAgIDog
ZGVzdHJ1Y3RlZChvdGhlci5kZXN0cnVjdGVkKQorICAgIHsKKyAgICAgICAgb3RoZXIuZGVzdHJ1
Y3RlZCA9IG51bGxwdHI7CisgICAgfQorCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyJiBvcGVyYXRv
cj0oRGVzdHJ1Y3Rvck9ic2VydmVyJiYgb3RoZXIpCisgICAgeworICAgICAgICBkZXN0cnVjdGVk
ID0gb3RoZXIuZGVzdHJ1Y3RlZDsKKyAgICAgICAgb3RoZXIuZGVzdHJ1Y3RlZCA9IG51bGxwdHI7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBib29sKiBkZXN0cnVjdGVkIHsg
bnVsbHB0ciB9OworfTsKKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIERlc3RydWN0b3IpCit7Cisg
ICAgVmVjdG9yPGJvb2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAgICAgIEZpeGVkVmVj
dG9yPERlc3RydWN0b3JPYnNlcnZlcj4gdmVjdG9yKGZsYWdzLnNpemUoKSk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHZl
Y3RvcltpXSA9IERlc3RydWN0b3JPYnNlcnZlcigmZmxhZ3NbaV0pOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1Rf
RkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxh
Z3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVFKGZsYWdzW2ldKTsKK30KKworVEVT
VChXVEZfRml4ZWRWZWN0b3IsIERlc3RydWN0b3JBZnRlck1vdmUpCit7CisgICAgVmVjdG9yPGJv
b2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAgICAgIEZpeGVkVmVjdG9yPERlc3RydWN0
b3JPYnNlcnZlcj4gb3V0ZXJWZWN0b3I7CisgICAgICAgIHsKKyAgICAgICAgICAgIEZpeGVkVmVj
dG9yPERlc3RydWN0b3JPYnNlcnZlcj4gdmVjdG9yKGZsYWdzLnNpemUoKSk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICAgICAgdmVjdG9yW2ldID0gRGVzdHJ1Y3Rvck9ic2VydmVyKCZmbGFnc1tpXSk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICAgICAgICAgIG91dGVyVmVjdG9y
ID0gV1RGTW92ZSh2ZWN0b3IpOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFn
c1tpXSk7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7
ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZmxhZ3NbaV0pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425239</attachid>
            <date>2021-04-05 21:40:22 -0700</date>
            <delta_ts>2021-04-06 07:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224171-20210405214022.patch</filename>
            <type>text/plain</type>
            <size>69305</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZDQ3ZDQ0OTIxNzZhNTVjZjE1MDUzODEzMzEwODI0YjA5ZmZlMGVjLi5jZmY3Yjg2Mjk1NDdlYWY4
MTljNTIzODMxZDE1ZTRkNGI2NjQwODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAyMS0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZlY3RvciBhbmQgdXNlIGl0IGZvciBG
aXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBE
ZWZpbmUgRml4ZWRPcGVyYW5kczxUPiB3aGljaCB1c2VzIEZpeGVkVmVjdG9yIGZvciBpdHMgc3Rv
cmFnZS4gV2UgdXNlIEZpeGVkT3BlcmFuZHMgaW4gRlRMOjpPU1JFeGl0RGVzY3JpcHRvci4KKyAg
ICAgICAgV2UgYWxzbyByZXBsYWNlIFJlZkNvdW50ZWRBcnJheTxUPiB3aXRoIEZpeGVkVmVjdG9y
PFQ+IGlmIHRoZXkgYXJlIG5vdCByZXF1aXJpbmcgUmVmQ291bnRlZEFycmF5PFQ+J3MgcmVmLWNv
dW50aW5nCisgICAgICAgIHNlbWFudGljcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldFJhcmVDYXNlUHJv
ZmlsZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tCb3VuZGFy
aWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFuZHMuaDoKKyAgICAgICAgKEpTQzo6T3BlcmFu
ZHM6Ok9wZXJhbmRzKToKKyAgICAgICAgKiBieXRlY29kZS9PcGVyYW5kc0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6VT46OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpVPjo6
ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wZXJhbmRzPFQ+OjpkdW1wSW5Db250ZXh0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3BlcmFuZHM8VD46OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpkdW1wRXhwcmVzc2lvblJhbmdlSW5mbyk6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRl
Y29kZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZXhwcmVzc2lvbkluZm8pOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aWRlbnRpZmllcnMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmNvbnN0YW50SWRlbnRpZmllclNl
dHMpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6b3BQcm9maWxlQ29udHJvbEZs
b3dCeXRlY29kZU9mZnNldHMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvZGUuaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5oOgorICAgICAg
ICAoSlNDOjpERkc6OlBsYW46OnRpZXJVcEluTG9vcEhpZXJhcmNoeSk6CisgICAgICAgICogZnRs
L0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVyU291cmNl
RWxlbWVudHMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRWZWN0b3I6OmVu
Y29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZlY3Rvcjo6ZGVjb2RlIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oOgorCiAyMDIxLTA0LTA1ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gU2hyaW5rIHNv
bWUgb2YgVmVjdG9ycyBpbiBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNjE5OGRmNzhmYjk4NGM2ZDM3ZWQwMDIzZmZiZTkz
ODBiM2VhZjFhMC4uYzI3ZTkxZTc4YzQ1YzFiOWQ2MDY3NDJkNGMzM2FmYWE3NDU0M2M3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZlY3RvciBhbmQgdXNlIGl0
IGZvciBGaXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAg
ICAgICBUaGlzIEZpeGVkVmVjdG9yPFQ+IGlzIGEgd3JhcHBlciBhcm91bmQgUmVmQ291bnRlZEFy
cmF5PFQ+LCBidXQgdGhpcyBvZmZlcnMgVmVjdG9yLWxpa2UgY29weSAvIG1vdmUgc2VtYW50aWNz
LAorICAgICAgICBzbyB0aGF0IHdlIGNhbiB1c2UgdGhpcyBGaXhlZFZlY3RvcjxUPiBhcyBhIGRy
b3AtaW4tcmVwbGFjZW1lbnQgZm9yIGZpeGVkLXNpemVkIFZlY3RvciBmaWVsZHMuIFRoZSBwdXJw
b3NlCisgICAgICAgIG9mIHRoYXQgaXMgc2F2aW5nIG1lbW9yeSBieSByZW1vdmluZyB1bm5lY2Vz
c2FyeSBzdG9yYWdlIChGaXhlZFZlY3RvciBpcyBmaXhlZC1zaXplZCBhbGxvY2F0ZWQpIGFuZCBw
dXR0aW5nIHNpemUKKyAgICAgICAgaW50byB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpG
YXN0Qml0VmVjdG9yOjpGYXN0Qml0VmVjdG9yKToKKyAgICAgICAgKiB3dGYvRml4ZWRWZWN0b3Iu
aDogQWRkZWQuCisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpGaXhlZFZlY3Rvcik6CisgICAg
ICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpGaXhlZFZl
Y3Rvcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmJ5dGVTaXplIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6OmRhdGEpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6
YmVnaW4pOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZW5kKToKKyAgICAgICAgKFdURjo6
Rml4ZWRWZWN0b3I6OmRhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6YmVn
aW4gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJiZWdpbik6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9y
OjpyZW5kKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJiZWdpbiBjb25zdCk6CisgICAg
ICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRW
ZWN0b3I6OmF0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmF0IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yW10pOgorICAgICAgICAoV1RGOjpGaXhlZFZl
Y3Rvcjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpmaXJz
dCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpmaXJzdCBjb25zdCk6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjpsYXN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Omxhc3Qg
Y29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZmlsbCk6CisgICAgICAgIChXVEY6
OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0
b3I6OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAgICAgICAgKiB3dGYvUmVmQ291bnRl
ZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6UmVmQ291bnRlZEFycmF5
KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpmaWxsKToKKyAgICAgICAgKFdURjo6
UmVmQ291bnRlZEFycmF5Ojpzd2FwKToKKwogMjAyMS0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFNocmluayBzb21lIG9mIFZlY3RvcnMg
aW4gSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA2Y2I4OGNlN2FmNTM1NzlhOTZi
Y2E2NDc4NGIyNzMxY2E1ODI4ZmQ3Li40ZDU3ZGE1YTMwZTJkMTlmMGM4NWNiNWNkOWRiZjM3MDg1
MzM1ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSkpOwogICAgICAg
ICBhdXRvJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CiAg
ICAgICAgIGp1bXBUYWJsZS5taW4gPSAwOwotICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0
cyA9IFJlZkNvdW50ZWRBcnJheTxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKKyAgICAg
ICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtX3lpZWxk
cy5zaXplKCkgKyAxKTsKICAgICAgICAgc3RkOjpmaWxsKGp1bXBUYWJsZS5icmFuY2hPZmZzZXRz
LmJlZ2luKCksIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmVuZCgpLCAwKTsKICAgICAgICAganVt
cFRhYmxlLmFkZCgwLCBuZXh0VG9FbnRlclBvaW50Lm9mZnNldCgpKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyOGNhOWVjNWZmZGIyNWUyMWVk
NjhlMTNhYTk2YzI5OTU3ZWM0NDkwLi44M2I5ZGUyNWRiYWVkMDJjOGY2ZTdlNDQ5ZTVkZDBiNTVk
MzcyOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtNDAzLDcgKzQwMyw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgfQogCiAg
ICAgYm9vbCBzaG91bGRVcGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgPSBtX3VubGlua2Vk
Q29kZS0+d2FzQ29tcGlsZWRXaXRoVHlwZVByb2ZpbGVyT3Bjb2RlcygpIHx8IG1fdW5saW5rZWRD
b2RlLT53YXNDb21waWxlZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpOwotICAgIG1f
ZnVuY3Rpb25EZWNscyA9IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVj
dXRhYmxlPj4odW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKKyAg
ICBtX2Z1bmN0aW9uRGVjbHMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVj
dXRhYmxlPj4odW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAg
ICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVu
Y3Rpb25EZWNsKGkpOwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlKQpAQCAtNDExLDcgKzQxMSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgIG1fZnVuY3Rpb25EZWNsc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZS0+
bGluayh2bSwgdG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLCBX
VEY6Om51bGxvcHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbigpKSk7CiAgICAgfQogCi0gICAgbV9mdW5jdGlvbkV4cHJzID0gUmVmQ291bnRl
ZEFycmF5PFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9j
ay0+bnVtYmVyT2ZGdW5jdGlvbkV4cHJzKCkpOworICAgIG1fZnVuY3Rpb25FeHBycyA9IEZpeGVk
VmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9j
ay0+bnVtYmVyT2ZGdW5jdGlvbkV4cHJzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5s
aW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25FeHBycygpLCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhl
Y3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkV4cHIoaSk7CiAgICAgICAgIGlm
IChzaG91bGRVcGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUpCkBAIC04ODcsNyArODg3LDcg
QEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCi12
b2lkIENvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgUmVmQ291bnRlZEFycmF5
PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgUmVmQ291bnRlZEFycmF5
PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKQordm9pZCBDb2RlQmxv
Y2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxV
bmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRh
YmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpCiB7CiAgICAgVk0mIHZtID0gKm1fdm07CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTQ5LDcgKzk0OSw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkKIHsKICAgICBtX251
bVBhcmFtZXRlcnMgPSBuZXdWYWx1ZTsKIAotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0g
UmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4oT3B0aW9uczo6dXNlSklUKCkgPyBuZXdWYWx1
ZSA6IDApOworICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0b3I8VmFsdWVQ
cm9maWxlPihPcHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAKIENvZGVCbG9j
ayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0xNzU0LDcgKzE3
NTQsNyBAQCBDYWxsTGlua0luZm8qIENvZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNv
ZGVJbmRleChCeXRlY29kZUluZGV4IGluZGV4KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12
b2lkIENvZGVCbG9jazo6c2V0UmFyZUNhc2VQcm9maWxlcyhSZWZDb3VudGVkQXJyYXk8UmFyZUNh
c2VQcm9maWxlPiYmIHJhcmVDYXNlUHJvZmlsZXMpCit2b2lkIENvZGVCbG9jazo6c2V0UmFyZUNh
c2VQcm9maWxlcyhGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+JiYgcmFyZUNhc2VQcm9maWxl
cykKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgZW5zdXJl
SklURGF0YShsb2NrZXIpLm1fcmFyZUNhc2VQcm9maWxlcyA9IFdURk1vdmUocmFyZUNhc2VQcm9m
aWxlcyk7CkBAIC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNC
bG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBpZiAoIXVubGlu
a2VkQ29kZUJsb2NrKCktPmhhc09wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9w
UHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CisgICAgY29uc3QgRml4ZWRWZWN0
b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVubGlua2Vk
Q29kZUJsb2NrKCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBieXRlY29kZU9mZnNldHMuc2l6ZSgp
OyBpIDwgb2Zmc2V0c0xlbmd0aDsgaSsrKSB7CiAgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmls
ZV9jb250cm9sX2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2lj
IGJsb2NrLCBmaW5kaW5nIAogICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2NvbnRyb2xf
ZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMgYmxvY2su
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggM2U4YTgw
MTQ2NzQwZWQ3YTFhYzIzNDg4MmQ3MDliNGMyNTQwZmYwZS4uM2RhNDhmY2RkZGI1MzEyZDk1MjIy
MWFjODk0NGFlMzQ2MDAwZTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaApAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNp
bmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yNzcsNyArMjc3LDcgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExp
bmtJbmZvczsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgUGFja2Vk
UmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdDYWxsczsKICAgICAgICAg
U2VudGluZWxMaW5rZWRMaXN0PFBvbHltb3JwaGljQ2FsbE5vZGUsIFBhY2tlZFJhd1NlbnRpbmVs
Tm9kZTxQb2x5bW9ycGhpY0NhbGxOb2RlPj4gbV9pbmNvbWluZ1BvbHltb3JwaGljQ2FsbHM7Ci0g
ICAgICAgIFJlZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+IG1fcmFyZUNhc2VQcm9maWxl
czsKKyAgICAgICAgRml4ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlPiBtX3JhcmVDYXNlUHJvZmls
ZXM7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4gbV9wY1RvQ29k
ZU9yaWdpbk1hcDsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0
PiBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIEpJVENvZGVNYXAgbV9qaXRDb2RlTWFw
OwpAQCAtMzQxLDcgKzM0MSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CiAgICAgdm9pZCBz
ZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4pOwogCi0gICAgdm9pZCBzZXRSYXJlQ2FzZVByb2ZpbGVzKFJlZkNvdW50ZWRBcnJheTxSYXJl
Q2FzZVByb2ZpbGU+JiYpOworICAgIHZvaWQgc2V0UmFyZUNhc2VQcm9maWxlcyhGaXhlZFZlY3Rv
cjxSYXJlQ2FzZVByb2ZpbGU+JiYpOwogICAgIFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUlu
ZGV4KTsKICAgICB1bnNpZ25lZCByYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2RlSW5kZXgo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7CiAKQEAgLTk1Niw3ICs5
NTYsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHZvaWQgdXBk
YXRlQWxsVmFsdWVQcm9maWxlUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBu
dW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNh
bXBsZXNJblByb2ZpbGVzKTsKIAotICAgIHZvaWQgc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3Qg
UmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3Qg
UmVmQ291bnRlZEFycmF5PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxl
KTsKKyAgICB2b2lkIHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRl
QmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3Jp
cHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOwogCiAgICAgdm9pZCByZXBsYWNlQ29u
c3RhbnQoVmlydHVhbFJlZ2lzdGVyIHJlZywgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0xMDMy
LDcgKzEwMzIsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyBm
b3IgREZHIGNvZGUgYmxvY2tzLgogICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZUhvbGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKICNlbmRpZgotICAgIFJlZkNvdW50
ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOworICAgIEZpeGVk
VmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAKICAgICAvLyBD
b25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNf
V3JpdGVCYXJyaWVyX1Vua25vd24pOwpAQCAtMTA0MCw4ICsxMDQwLDggQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gaXQsIHNvIHdlJ3JlIHN0dWNrIHdpdGggaXQg
Zm9yIG5vdy4KICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVn
aXN0ZXJzOwogICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRz
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uOwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJp
ZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkRlY2xzOwotICAgIFJlZkNvdW50ZWRB
cnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkV4cHJzOwor
ICAgIEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1bmN0
aW9uRGVjbHM7CisgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4+IG1fZnVuY3Rpb25FeHByczsKIAogICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fYWx0
ZXJuYXRpdmU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3BlcmFuZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5o
CmluZGV4IDA4YTUwMzc3NDZjYThlNmQ4MWM0MjY3Y2M2MzcxZmQwZTdlMjZiMTIuLjUxYWVhNGU3
ODZiZWUzNTU2YTY3OGQ0YjQwYWMwNWNjZmJiMTk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGVyYW5kcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvRml4
ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKQEAgLTEzNCwzOSArMTM1LDM4IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9w
ZXJhbmQpID09IHNpemVvZih1aW50NjRfdCksICJPcGVyYW5kOjphc0JpdHMoKSByZWxpZXMgb24K
IAogZW51bSBPcGVyYW5kc0xpa2VUYWcgeyBPcGVyYW5kc0xpa2UgfTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0b3JhZ2VBcmcgPSBzdGQ6
OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIFZl
Y3RvcjxULCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4+PgogY2xhc3MgT3BlcmFuZHMgewogcHVi
bGljOgotICAgIHVzaW5nIFN0b3JhZ2UgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1l
X3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIFZlY3RvcjxULCAwLCBVbnNhZmVWZWN0b3JPdmVy
Zmxvdz4+OworICAgIHVzaW5nIFN0b3JhZ2UgPSBTdG9yYWdlQXJnOwogICAgIHVzaW5nIFJlZlR5
cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRS
ZWZlcmVuY2UsIFQmPjsKICAgICB1c2luZyBDb25zdFJlZlR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFs
X3Q8c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIGJvb2wsIGNvbnN0IFQmPjsKIAogICAgIE9wZXJh
bmRzKCkgPSBkZWZhdWx0OwogCiAgICAgZXhwbGljaXQgT3BlcmFuZHMoc2l6ZV90IG51bUFyZ3Vt
ZW50cywgc2l6ZV90IG51bUxvY2Fscywgc2l6ZV90IG51bVRtcHMpCi0gICAgICAgIDogbV9udW1B
cmd1bWVudHMobnVtQXJndW1lbnRzKQorICAgICAgICA6IG1fdmFsdWVzKG51bUFyZ3VtZW50cyAr
IG51bUxvY2FscyArIG51bVRtcHMpCisgICAgICAgICwgbV9udW1Bcmd1bWVudHMobnVtQXJndW1l
bnRzKQogICAgICAgICAsIG1fbnVtTG9jYWxzKG51bUxvY2FscykKICAgICB7Ci0gICAgICAgIHNp
emVfdCBzaXplID0gbnVtQXJndW1lbnRzICsgbnVtTG9jYWxzICsgbnVtVG1wczsKLSAgICAgICAg
bV92YWx1ZXMuZ3JvdyhzaXplKTsKICAgICAgICAgaWYgKCFXVEY6OlZlY3RvclRyYWl0czxUPjo6
bmVlZHNJbml0aWFsaXphdGlvbikKICAgICAgICAgICAgIG1fdmFsdWVzLmZpbGwoVCgpKTsKICAg
ICB9CiAKICAgICBleHBsaWNpdCBPcGVyYW5kcyhzaXplX3QgbnVtQXJndW1lbnRzLCBzaXplX3Qg
bnVtTG9jYWxzLCBzaXplX3QgbnVtVG1wcywgY29uc3QgVCYgaW5pdGlhbFZhbHVlKQotICAgICAg
ICA6IG1fbnVtQXJndW1lbnRzKG51bUFyZ3VtZW50cykKKyAgICAgICAgOiBtX3ZhbHVlcyhudW1B
cmd1bWVudHMgKyBudW1Mb2NhbHMgKyBudW1UbXBzKQorICAgICAgICAsIG1fbnVtQXJndW1lbnRz
KG51bUFyZ3VtZW50cykKICAgICAgICAgLCBtX251bUxvY2FscyhudW1Mb2NhbHMpCiAgICAgewot
ICAgICAgICBtX3ZhbHVlcy5ncm93KG51bUFyZ3VtZW50cyArIG51bUxvY2FscyArIG51bVRtcHMp
OwogICAgICAgICBtX3ZhbHVlcy5maWxsKGluaXRpYWxWYWx1ZSk7CiAgICAgfQogICAgIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgZXhwbGljaXQgT3BlcmFuZHMoT3BlcmFuZHNMaWtl
VGFnLCBjb25zdCBPcGVyYW5kczxVPiYgb3RoZXIsIGNvbnN0IFQmIGluaXRpYWxWYWx1ZSA9IFQo
KSkKLSAgICAgICAgOiBtX251bUFyZ3VtZW50cyhvdGhlci5udW1iZXJPZkFyZ3VtZW50cygpKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgZXhwbGljaXQgT3BlcmFu
ZHMoT3BlcmFuZHNMaWtlVGFnLCBjb25zdCBPcGVyYW5kczxVLCBWPiYgb3RoZXIsIGNvbnN0IFQm
IGluaXRpYWxWYWx1ZSA9IFQoKSkKKyAgICAgICAgOiBtX3ZhbHVlcyhvdGhlci5zaXplKCkpCisg
ICAgICAgICwgbV9udW1Bcmd1bWVudHMob3RoZXIubnVtYmVyT2ZBcmd1bWVudHMoKSkKICAgICAg
ICAgLCBtX251bUxvY2FscyhvdGhlci5udW1iZXJPZkxvY2FscygpKQogICAgIHsKLSAgICAgICAg
bV92YWx1ZXMuZ3JvdyhvdGhlci5zaXplKCkpOwogICAgICAgICBtX3ZhbHVlcy5maWxsKGluaXRp
YWxWYWx1ZSk7CiAgICAgfQogCkBAIC0zOTksNCArMzk5LDcgQEAgY2xhc3MgT3BlcmFuZHMgewog
ICAgIHVuc2lnbmVkIG1fbnVtTG9jYWxzIHsgMCB9OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3VzaW5nIEZpeGVkT3BlcmFuZHMgPSBPcGVyYW5kczxULCBzdGQ6OmNvbmRpdGlvbmFsX3Q8
c3RkOjppc19zYW1lX3Y8VCwgYm9vbD4sIEZhc3RCaXRWZWN0b3IsIEZpeGVkVmVjdG9yPFQ+Pj47
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wZXJhbmRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wZXJhbmRzSW5saW5lcy5oCmluZGV4IDBiMWNjMWYyZDE5N2FkMDgzNjVhOGY3ODU2MWZk
ZjY3YTdkOWVkZGQuLjU2YzIwODU4OTNjNDRmYjNhM2FjYzQzZTllZGYzNzk5NDRiMjZmZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kc0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgK
QEAgLTM4LDggKzM4LDggQEAgaW5saW5lIHZvaWQgT3BlcmFuZDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQodmlydHVhbFJlZ2lzdGVyKCkpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBPcGVyYW5kczxUPjo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+Cit2b2lkIE9wZXJhbmRzPFQsIFU+OjpkdW1wSW5Db250ZXh0KFBy
aW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIENvbW1h
UHJpbnRlciBjb21tYSgiICIpOwogICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50SW5kZXggPSBudW1i
ZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudEluZGV4LS07KSB7CkBAIC01OSw4ICs1OSw4IEBAIHZv
aWQgT3BlcmFuZHM8VD46OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9p
ZCBPcGVyYW5kczxUPjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgT3BlcmFuZHM8VCwgVT46OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoIiAiKTsKICAgICBmb3Ig
KHNpemVfdCBhcmd1bWVudEluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnRJbmRl
eC0tOykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQ
cm90b0FjY2Vzc0NoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVBy
b3RvQWNjZXNzQ2hhaW4uaAppbmRleCAwOWJmYzBiODZjNTg3OTFhYjc4OWY2NjQ1MzQ4YjMxYTBj
MDczOGY3Li5hMjliNGJmNjlkYTc0NzEzYjFjNjI4NGI1MDNhNjQxZTk2M2M3Yzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hh
aW4uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgog
I2luY2x1ZGUgIlZNLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgorI2luY2x1
ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBvbHlQcm90b0FjY2Vzc0NoCiAgICAg
c3RhdGljIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gdHJ5Q3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiB0cnlDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOwogCi0gICAgY29uc3QgUmVmQ291bnRlZEFycmF5
PFN0cnVjdHVyZUlEPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CisgICAgY29u
c3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hh
aW47IH0KIAogICAgIHZvaWQgZHVtcChTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0OwogCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vz
c0NoYWluIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBvbHlQcm90b0FjY2Vz
c0NoCiAKICAgICAvLyBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGJhc2UuIFdlIHJlbHkgb24g
QWNjZXNzQ2FzZSBwcm92aWRpbmcgaXQgZm9yIHVzLiBUaGF0IHNhaWQsIHRoaXMgZGF0YQogICAg
IC8vIHN0cnVjdHVyZSBpcyB0aWVkIHRvIHRoZSBiYXNlIHRoYXQgaXQgd2FzIGNyZWF0ZWQgd2l0
aC4KLSAgICBSZWZDb3VudGVkQXJyYXk8U3RydWN0dXJlSUQ+IG1fY2hhaW47CisgICAgRml4ZWRW
ZWN0b3I8U3RydWN0dXJlSUQ+IG1fY2hhaW47CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCA1NWY4M2Mw
NTg3NDNkYmJkMTcwZTk3NTM0YzMzNDcxMjJjODc5NGVmLi42ZGNjMjk1OWFkMDEzYzA4NmJiN2Fl
YmM0ZGJlM2Q3ZWNiMWZjMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc0OCw3ICs3NDgsNyBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvYwogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGlu
ZShjb2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0
YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMs
IGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CiAgICAgbV93YXRjaHBvaW50cyA9
IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwogICAgIGlmICghc3RhdGUud2Vha1JlZmVyZW5j
ZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gUmVmQ291bnRlZEFycmF5
PFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Cisg
ICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxs
Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0Fj
Y2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNv
ZGUuY29kZSgpLCAiXG4iKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggYmRmNWM3ZjJlN2M2ODkzZjFhOTU5ZjIy
ZmZmODk1NTg1MGRmMmE0My4uMjkyMDMyNmRjYzkxNTQ3NGIzZjFlZWI3ZjcyNWU2YWIzNGFlY2I0
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgorI2luY2x1ZGUg
PHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0xODgsNyArMTg4LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAg
IExpc3RUeXBlIG1fbGlzdDsKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IG1fc3R1YlJvdXRp
bmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4g
bV93YXRjaHBvaW50czsKLSAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+
IG1fd2Vha1JlZmVyZW5jZXM7CisgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+
IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IDNhZGY5ZTk1NGUxYzRiYmY1YjU3MTk2NDJkMjkxZTc0ZTdkMmE5ZGIuLmMx
MDYxMWM1Y2MzN2JkMmMyYzQ4NjAxMGU5ZmU1ZjBmNmZjODE0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMTU5
LDcgKzE1OSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBMaW5lQ29sdW1uRW50cnkoc2l6ZV90IGluZGV4
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3RpCiAKIHZvaWQgVW5saW5rZWRDb2Rl
QmxvY2s6OmR1bXBFeHByZXNzaW9uUmFuZ2VJbmZvKCkKIHsKLSAgICBSZWZDb3VudGVkQXJyYXk8
RXhwcmVzc2lvblJhbmdlSW5mbz4mIGV4cHJlc3Npb25JbmZvID0gbV9leHByZXNzaW9uSW5mbzsK
KyAgICBGaXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8gPSBt
X2V4cHJlc3Npb25JbmZvOwogCiAgICAgc2l6ZV90IHNpemUgPSBtX2V4cHJlc3Npb25JbmZvLnNp
emUoKTsKICAgICBkYXRhTG9nRigiVW5saW5rZWRDb2RlQmxvY2sgJXAgZXhwcmVzc2lvblJhbmdl
SW5mb1slenVdIHtcbiIsIHRoaXMsIHNpemUpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgVW5s
aW5rZWRDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBSZWZD
b3VudGVkQXJyYXk8RXhwcmVzc2lvblJhbmdlSW5mbz4mIGV4cHJlc3Npb25JbmZvID0gbV9leHBy
ZXNzaW9uSW5mbzsKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvPiYg
ZXhwcmVzc2lvbkluZm8gPSBtX2V4cHJlc3Npb25JbmZvOwogCiAgICAgaW50IGxvdyA9IDA7CiAg
ICAgaW50IGhpZ2ggPSBleHByZXNzaW9uSW5mby5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDI0ODY5Mzc0NzEx
NzhhZGVjZDZmYjZlOTZhN2I5NWIxOTI3YjdlODkuLjE1OTU1ZDNhMmY1OWQ4YjM4YzQ1YTIyMjFh
ODcyOGNjYWVmODlhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0Zp
eGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVHJpU3RhdGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05NSw3ICs5NSw3
IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiB9OwogCiBzdHJ1Y3QgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUgewotICAgIFJlZkNvdW50ZWRBcnJheTxpbnQzMl90PiBicmFuY2hP
ZmZzZXRzOworICAgIEZpeGVkVmVjdG9yPGludDMyX3Q+IGJyYW5jaE9mZnNldHM7CiAgICAgaW50
MzJfdCBtaW47CiAKICAgICBpbnQzMl90IG9mZnNldEZvclZhbHVlKGludDMyX3QgdmFsdWUsIGlu
dDMyX3QgZGVmYXVsdE9mZnNldCk7CkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hl
KCkgY29uc3QgeyByZXR1cm4gIShtX2ZlYXR1cmVzICYgTm9FdmFsQ2FjaGVGZWF0dXJlKTsgfQog
CiAgICAgYm9vbCBoYXNFeHByZXNzaW9uSW5mbygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbkluZm8u
c2l6ZSgpOyB9Ci0gICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEV4cHJlc3Npb25SYW5nZUluZm8+
JiBleHByZXNzaW9uSW5mbygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbkluZm87IH0KKyAgICBjb25z
dCBGaXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8oKSB7IHJl
dHVybiBtX2V4cHJlc3Npb25JbmZvOyB9CiAKICAgICBib29sIGhhc0NoZWNrcG9pbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNDaGVja3BvaW50czsgfQogICAgIHZvaWQgc2V0SGFzQ2hlY2twb2lu
dHMoKSB7IG1faGFzQ2hlY2twb2ludHMgPSB0cnVlOyB9CkBAIC0xNTIsMTcgKzE1MiwxNyBAQCBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc2l6ZV90IG51
bWJlck9mSWRlbnRpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJzLnNpemUoKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoaW50IGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXJzW2luZGV4XTsgfQotICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJ
ZGVudGlmaWVyPiYgaWRlbnRpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJzOyB9
CisgICAgY29uc3QgRml4ZWRWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyczsgfQogCiAgICAgQml0VmVjdG9yJiBiaXRWZWN0b3Ioc2l6
ZV90IGkpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9iaXRWZWN0
b3JzW2ldOyB9CiAKLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPFVua25v
d24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9
CisgICAgY29uc3QgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRS
ZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9CiAgICAgY29uc3QgV3Jp
dGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciByZWcp
IGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbcmVnLnRvQ29uc3RhbnRJbmRleCgp
XTsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChWaXJ0dWFsUmVnaXN0
ZXIgcmVnKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZy50b0NvbnN0YW50
SW5kZXgoKV0uZ2V0KCk7IH0KLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8U291cmNlQ29kZVJl
cHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCkgeyByZXR1
cm4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247IH0KKyAgICBjb25zdCBGaXhl
ZFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24oKSB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bjsgfQogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDb25zdGFudElkZW50aWZpZXJTZXRzKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVy
U2V0cy5zaXplKCkgOiAwOyB9Ci0gICAgY29uc3QgUmVmQ291bnRlZEFycmF5PElkZW50aWZpZXJT
ZXQ+JiBjb25zdGFudElkZW50aWZpZXJTZXRzKCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVy
biBtX3JhcmVEYXRhLT5tX2NvbnN0YW50SWRlbnRpZmllclNldHM7IH0KKyAgICBjb25zdCBGaXhl
ZFZlY3RvcjxJZGVudGlmaWVyU2V0PiYgY29uc3RhbnRJZGVudGlmaWVyU2V0cygpIHsgQVNTRVJU
KG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb25zdGFudElkZW50aWZpZXJTZXRz
OyB9CiAKICAgICAvLyBKdW1wcwogICAgIHNpemVfdCBudW1iZXJPZkp1bXBUYXJnZXRzKCkgY29u
c3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5zaXplKCk7IH0KQEAgLTIzNCw3ICsyMzQsNyBAQCBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdW5zaWdu
ZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KIAotICAgIGNvbnN0
IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3BQcm9maWxlQ29u
dHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKSBjb25zdAorICAgIGNvbnN0IEZpeGVkVmVjdG9yPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zm
c2V0cygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CiAgICAgICAg
IHJldHVybiBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRz
OwpAQCAtMzc0LDcgKzM3NCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgUGFja2VkUmVmUHRyPFN0cmluZ0ltcGw+IG1fc291cmNlVVJMRGlyZWN0aXZl
OwogICAgIFBhY2tlZFJlZlB0cjxTdHJpbmdJbXBsPiBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3Rp
dmU7CiAKLSAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9q
dW1wVGFyZ2V0czsKKyAgICBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBt
X2p1bXBUYXJnZXRzOwogICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IG1fbWV0YWRhdGE7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBtX2xpdmVuZXNz
OwpAQCAtMzg1LDEwICszODUsMTAgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICNlbmRpZgogCiAgICAgLy8gQ29uc3RhbnQgUG9vbHMKLSAgICBSZWZDb3VudGVk
QXJyYXk8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKLSAgICBSZWZDb3VudGVkQXJyYXk8V3Jp
dGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwotICAgIFJlZkNvdW50ZWRB
cnJheTxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uOwotICAgIHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IFJlZkNvdW50
ZWRBcnJheTxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+PjsKKyAgICBG
aXhlZFZlY3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOworICAgIEZpeGVkVmVjdG9yPFdy
aXRlQmFycmllcjxVbmtub3duPj4gbV9jb25zdGFudFJlZ2lzdGVyczsKKyAgICBGaXhlZFZlY3Rv
cjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uOworICAgIHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IEZpeGVkVmVjdG9y
PFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+OwogICAgIEZ1bmN0aW9u
RXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9u
VmVjdG9yIG1fZnVuY3Rpb25FeHByczsKIApAQCAtMzk2LDIyICszOTYsMjIgQEAgY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBzdHJ1Y3QgUmFyZURhdGEgewog
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICAgICAgUmVmQ291
bnRlZEFycmF5PFVubGlua2VkSGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CisgICAg
ICAgIEZpeGVkVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7
CiAKICAgICAgICAgLy8gSnVtcCBUYWJsZXMKLSAgICAgICAgUmVmQ291bnRlZEFycmF5PFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAgIFJlZkNvdW50
ZWRBcnJheTxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
OworICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hK
dW1wVGFibGVzOworICAgICAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4g
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCi0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxFeHBy
ZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9u
czsKKyAgICAgICAgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+
IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAKICAgICAgICAgc3RydWN0IFR5cGVQcm9m
aWxlckV4cHJlc3Npb25SYW5nZSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0RGl2b3Q7
CiAgICAgICAgICAgICB1bnNpZ25lZCBtX2VuZERpdm90OwogICAgICAgICB9OwogICAgICAgICBI
YXNoTWFwPHVuc2lnbmVkLCBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IG1fdHlwZVByb2Zp
bGVySW5mb01hcDsKLSAgICAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7Ci0gICAgICAgIFJl
ZkNvdW50ZWRBcnJheTxCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKLSAgICAgICAgUmVmQ291bnRl
ZEFycmF5PElkZW50aWZpZXJTZXQ+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKKyAgICAgICAg
Rml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0czsKKyAgICAgICAgRml4ZWRWZWN0b3I8Qml0VmVjdG9yPiBtX2Jp
dFZlY3RvcnM7CisgICAgICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXJTZXQ+IG1fY29uc3RhbnRJ
ZGVudGlmaWVyU2V0czsKIAogICAgICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6
IDE7CkBAIC00MjgsNyArNDI4LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKIAogICAgIE91dE9mTGluZUp1bXBUYXJnZXRzIG1fb3V0T2ZMaW5lSnVtcFRhcmdl
dHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwotICAgIFJlZkNv
dW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiBtX2V4cHJlc3Npb25JbmZvOworICAgIEZp
eGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+IG1fZXhwcmVzc2lvbkluZm87CiAKIHByb3Rl
Y3RlZDoKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApp
bmRleCBkZDFiMzNjZDc2YWE3NmY2ZTg2YWJhNzIzMDg1YTJlNzRmYzUwMTU0Li40ZWNkNmZhY2E0
ZDgyMzhhODQzYjY2NjRiZjQ5MmYxOTZkMWQ3NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApA
QCAtMzgsOCArMzgsOCBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlNvdXJjZUNv
ZGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zp
eGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjE5LDEzICsyMTksMTMg
QEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMRGlyZWN0aXZlOwogICAgICAgICBTdHJpbmcg
bV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOwotICAgICAgICBSZWZDb3VudGVkQXJy
YXk8SlNUZXh0UG9zaXRpb24+IG1fY2xhc3NGaWVsZExvY2F0aW9uczsKKyAgICAgICAgRml4ZWRW
ZWN0b3I8SlNUZXh0UG9zaXRpb24+IG1fY2xhc3NGaWVsZExvY2F0aW9uczsKICAgICAgICAgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiAgICAg
fTsKIAogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOyB9CiAKLSAgICBSZWZDb3VudGVk
QXJyYXk8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKCkgY29uc3QKKyAgICBG
aXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMoKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gJm1fcmFy
ZURhdGEtPm1fY2xhc3NGaWVsZExvY2F0aW9uczsKQEAgLTIzNiw3ICsyMzYsNyBAQCBjbGFzcyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsK
ICAgICAgICAgaWYgKGNsYXNzRmllbGRMb2NhdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fY2xhc3NGaWVsZExvY2F0aW9ucyA9
IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4oV1RGTW92ZShjbGFzc0ZpZWxkTG9jYXRp
b25zKSk7CisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9jbGFzc0ZpZWxkTG9jYXRpb25zID0g
Rml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+KFdURk1vdmUoY2xhc3NGaWVsZExvY2F0aW9ucykp
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNmFkN2Y1ZDM5OWE1MmJh
MDNlNzBmYTliY2Y1N2UwMWZmYmE5NzcwYS4uMzVkNGNkYWZjZjE2YzBiMmIwZTFjNWY1OTBiNTdh
NDY2N2JhOTE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwOTIsNyArNDA5Miw3IEBAIHN0YXRp
YyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTd2l0Y2goCiAgICAgaW50MzJfdCAoKmtleUdldHRl
cikoRXhwcmVzc2lvbk5vZGUqLCBpbnQzMl90IG1pbiwgaW50MzJfdCBtYXgpKQogewogICAgIGp1
bXBUYWJsZS5taW4gPSBtaW47Ci0gICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMgPSBSZWZDb3Vu
dGVkQXJyYXk8aW50MzJfdD4obWF4IC0gbWluICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9m
ZnNldHMgPSBGaXhlZFZlY3RvcjxpbnQzMl90PihtYXggLSBtaW4gKyAxKTsKICAgICBzdGQ6OmZp
bGwoanVtcFRhYmxlLmJyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLmJyYW5jaE9mZnNl
dHMuZW5kKCksIDApOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjbGF1c2VDb3VudDsg
KytpKSB7CiAgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBs
YWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28gCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZS5oCmluZGV4IDVhZWJiZmFkNGU1OTAyN2RmZGI4NzhlYjIwMmUzYmY5OTA5Mjg2
NmMuLjA0MWVhZDllNzkzMDAzMTMwYTFjOGJhNTNhN2EwOTEzMTM3MzI3MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBAIC0xNTEsNyArMTUxLDcgQEAgY2xhc3MgSklU
Q29kZSBmaW5hbCA6IHB1YmxpYyBEaXJlY3RKSVRDb2RlIHsKICAgICAvLwogICAgIC8vIFRoZSBr
ZXkgbWF5IG5vdCBhbHdheXMgYmUgYSB0YXJnZXQgZm9yIE9TUiBFbnRyeSBidXQgdGhlIGxpc3Qg
aW4gdGhlIHZhbHVlIGlzIGd1YXJhbnRlZWQKICAgICAvLyB0byBiZSB1c2FibGUgZm9yIE9TUiBF
bnRyeS4KLSAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJheTxCeXRlY29k
ZUluZGV4Pj4gdGllclVwSW5Mb29wSGllcmFyY2h5OworICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRl
eCwgRml4ZWRWZWN0b3I8Qnl0ZWNvZGVJbmRleD4+IHRpZXJVcEluTG9vcEhpZXJhcmNoeTsKIAog
ICAgIC8vIE1hcCBlYWNoIGJ5dGVjb2RlIG9mIENoZWNrVGllclVwQW5kT1NSRW50ZXIgdG8gaXRz
IHN0cmVhbSBpbmRleC4KICAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkPiBieXRl
Y29kZUluZGV4VG9TdHJlYW1JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5k
ZXggYWFlYTU4NGIwNjIwYzRhM2UxODQ1ZWYxYmNhOTVmYTIzM2YwMTNlOC4uMTMwOGZmNDg4MjMw
YmU2Mjk3ZjgxMTFlZjI2MDA0YzJhYmQ0YTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBQbGFuIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsYW4+IHsKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2lsbFRyeVRvVGllclVwOyB9CiAgICAgdm9pZCBzZXRXaWxsVHJ5VG9UaWVyVXAoYm9v
bCB3aWxsVHJ5VG9UaWVyVXApIHsgbV93aWxsVHJ5VG9UaWVyVXAgPSB3aWxsVHJ5VG9UaWVyVXA7
IH0KIAotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVmQ291bnRlZEFycmF5PEJ5dGVjb2Rl
SW5kZXg+PiYgdGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVyVXBJbkxvb3BI
aWVyYXJjaHk7IH0KKyAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIEZpeGVkVmVjdG9yPEJ5dGVj
b2RlSW5kZXg+PiYgdGllclVwSW5Mb29wSGllcmFyY2h5KCkgeyByZXR1cm4gbV90aWVyVXBJbkxv
b3BIaWVyYXJjaHk7IH0KICAgICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4mIHRpZXJVcEFuZE9TUkVu
dGVyQnl0ZWNvZGVzKCkgeyByZXR1cm4gbV90aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlczsgfQog
CiAgICAgZW51bSBTdGFnZSB7IFByZXBhcmluZywgQ29tcGlsaW5nLCBSZWFkeSwgQ2FuY2VsbGVk
IH07CkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxQbGFuPiB7CiAgICAgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMgbV9nbG9iYWxQcm9w
ZXJ0aWVzOwogICAgIFJlY29yZGVkU3RhdHVzZXMgbV9yZWNvcmRlZFN0YXR1c2VzOwogCi0gICAg
SGFzaE1hcDxCeXRlY29kZUluZGV4LCBSZWZDb3VudGVkQXJyYXk8Qnl0ZWNvZGVJbmRleD4+IG1f
dGllclVwSW5Mb29wSGllcmFyY2h5OworICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgRml4ZWRW
ZWN0b3I8Qnl0ZWNvZGVJbmRleD4+IG1fdGllclVwSW5Mb29wSGllcmFyY2h5OwogICAgIFZlY3Rv
cjxCeXRlY29kZUluZGV4PiBtX3RpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzOwogCiAgICAgU3Rh
Z2UgbV9zdGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmgKaW5kZXggYTY0
MWViNzRiNjFmYTQ0ZDc4MWVhNWIzOTIwNTcxNTdkYjUwNDgwNy4uNGUyNTIzNzcwMzI2MDZlMWJj
ZTIzNGIyNGU1MjY5OGJmNjFmZmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0LmgKQEAgLTY3LDYgKzY3LDkgQEAgc3RydWN0IE9TUkV4aXREZXNjcmlwdG9ySW1wbDsKIHN0
cnVjdCBPU1JFeGl0SGFuZGxlOwogCiBzdHJ1Y3QgT1NSRXhpdERlc2NyaXB0b3IgeworcHJpdmF0
ZToKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPU1JFeGl0RGVzY3JpcHRvcik7CitwdWJsaWM6
CiAgICAgT1NSRXhpdERlc2NyaXB0b3IoCiAgICAgICAgIERhdGFGb3JtYXQgcHJvZmlsZURhdGFG
b3JtYXQsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsCiAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mQXJndW1lbnRzLCB1bnNpZ25lZCBudW1iZXJPZkxvY2FscywgdW5zaWduZWQgbnVtYmVy
T2ZUbXBzKTsKQEAgLTc5LDcgKzgyLDcgQEAgc3RydWN0IE9TUkV4aXREZXNjcmlwdG9yIHsKICAg
ICBEYXRhRm9ybWF0IG1fcHJvZmlsZURhdGFGb3JtYXQ7CiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKICAgICAKLSAgICBPcGVyYW5kczxFeGl0VmFsdWU+
IG1fdmFsdWVzOworICAgIEZpeGVkT3BlcmFuZHM8RXhpdFZhbHVlPiBtX3ZhbHVlczsKICAgICBC
YWc8RXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24+IG1fbWF0ZXJpYWxpemF0aW9uczsKIAog
ICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApp
bmRleCA1OGQ4NjRkNzg4YjcyMGFiMjA1M2FiZTliMjg3OGFhOTE4YzllMzA4Li40OGJlZmJjNDg3
ZmNhMjU3MGM2NWM5MjlmOTRkMThlNmNlMWNhOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV3JpdGVCYXJyaWVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1
YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICB2b2lkIG1hcmtS
ZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpIGZpbmFsOwogCiBwcml2YXRlOgot
ICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gbV9jZWxsczsKKyAgICBG
aXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gbV9jZWxsczsKICAgICBCYWc8Q2FsbExp
bmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggNGVlYTNhNWZlNzUxZTg1YTg4Yjg1OGIwYWZkYjQ2YTRhYWRkZGFkZC4uNzcyMWRmNWE4
NGNhZGMzYTY1M2E0YmU4NTY2NzBlMmMwYjA0YzNjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtNTIwLDkgKzUyMCw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cygpCiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggPSAwOwogICAgIG1fY2FsbExpbmtJbmZv
SW5kZXggPSAwOwogCi0gICAgUmVmQ291bnRlZEFycmF5PFJhcmVDYXNlUHJvZmlsZT4gcmFyZUNh
c2VQcm9maWxlczsKKyAgICBGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+IHJhcmVDYXNlUHJv
ZmlsZXM7CiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgcmFyZUNhc2VQ
cm9maWxlcyA9IFJlZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+KG1fYnl0ZWNvZGVDb3Vu
dEhhdmluZ1Nsb3dDYXNlKTsKKyAgICAgICAgcmFyZUNhc2VQcm9maWxlcyA9IEZpeGVkVmVjdG9y
PFJhcmVDYXNlUHJvZmlsZT4obV9ieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2UpOwogICAgIAog
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSA9IDA7CiAgICAgZm9yIChW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yIGl0ZXIgPSBtX3Nsb3dDYXNlcy5iZWdpbigp
OyBpdGVyICE9IG1fc2xvd0Nhc2VzLmVuZCgpOykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCmluZGV4IDZjMTNmMTI2
MzBhMWI1OTYyOWRkOTkyYTQ5ZjNjN2FjYjhkZGIzNzYuLjJjMDdmZmFhZDdmMjA0OTQwMjVkMmZk
M2U1ZjA3NjBjOTljMWJmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBjbGFz
cyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSBmaW5hbCA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1
YlJvdXRpbmUgewogICAgIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKEFic3RyYWN0
U2xvdFZpc2l0b3ImKSBmaW5hbDsKICAgICB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5h
bChTbG90VmlzaXRvciYpIGZpbmFsOwogCi0gICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmll
cjxKU0NlbGw+PiBtX3ZhcmlhbnRzOworICAgIEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+PiBtX3ZhcmlhbnRzOwogICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiBtX2Zhc3RDb3VudHM7
CiAgICAgQmFnPFBvbHltb3JwaGljQ2FsbE5vZGU+IG1fY2FsbE5vZGVzOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
aW5kZXggYzhjMjYxNTI0M2FkOGMwYTZkZWRkMGUwZWYzNTQ1YTQ2NzQ4NzExNy4uNmRmNDY4NTBl
MmM3ZWI5Njg5OGVjNGM1N2ZjYjc3ZGQ4NzVkMmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg2LDYgKzg2
LDcgQEAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKICAgICAvLyBUaGVzZSB0eXBlcyBh
cmUgdXNlZnVsIHNpbmNlIHdlIGNhbid0IHVzZSAnPC4uLj4nIHN5bnRheCBpbiBMTEludCBvZmZz
ZXRzIGV4dHJhY3Rpb24uIGUuZy4gVmVjdG9yPGludD46Om1fZGF0YQogICAgIHVzaW5nIFZlY3Rv
ciA9IFdURjo6VmVjdG9yPGludD47CiAgICAgdXNpbmcgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bCA9IEpTQzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OworICAgIHVzaW5nIEZpeGVkVmVj
dG9yID0gV1RGOjpGaXhlZFZlY3RvcjxpbnQ+OwogICAgIHVzaW5nIFJlZkNvdW50ZWRBcnJheSA9
IFdURjo6UmVmQ291bnRlZEFycmF5PGludD47CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAzODMzN2Q3
ZDE5MDg0Y2Q1ZjcyNzc2YjU2ZGU4ZDkxYzIwZWMyOGFhLi5mZmM0ZjYyOTM5ZWNlNzQ2MmUzOTc0
MDllNzNmMWJkYzgxOGRkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBtYWNybyBm
dW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQogICAgIGFkZHAgLXByb2ZpbGVB
cmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9s
ZQogICAgIGFzc2VydChtYWNybyAob2spIGJwZ3RlcSB0MCwgMCwgb2sgZW5kKQogICAgIGJ0cHog
dDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50
VmFsdWVQcm9maWxlcyArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMKKyAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3Rv
cmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMKICAgICBidHB6IHQzLCAuYXJn
dW1lbnRQcm9maWxlRG9uZSAjIFdoZW4gd2UgY2FuJ3QgSklULCB3ZSBkb24ndCBhbGxvY2F0ZSBh
bnkgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMuCiAgICAgbXVscCBzaXplb2YgVmFsdWVQcm9maWxl
LCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQogICAgIGxzaGlm
dHAgMywgdDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2su
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZTk5Mzk0ZGNmOGQ4
NDQwYzU1ZmJiNmYzNjY3MmZjNmUyYjA3ZTlmMi4uZWEyMmQwYjFhYzdjNjA4NDFhNjgzNWQ0OWI2
YWZkZTYzMWRkMjFkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgSlNUb2tlbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotRXhwZWN0ZWQ8dHlwZW5h
bWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFyc2lu
Z0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0
aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCog
cGFyZW50U2NvcGVQcml2YXRlTmFtZXMpCitFeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJU
eXBlPjo6UGFyc2VJbm5lclJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5n
Q29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uLCBjb25zdCBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2Nh
dGlvbnMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5h
bWVzKQogewogICAgIEFTVEJ1aWxkZXIgY29udGV4dChjb25zdF9jYXN0PFZNJj4obV92bSksIG1f
cGFyc2VyQXJlbmEsIGNvbnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7CiAgICAgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IHNvdXJjZVBhcnNlTW9kZSgpOwpAQCAtMzE4MCw3ICsz
MTgwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0
UG9zaXRpb24+JiBjbGFzc0ZpZWxkTG9jYXRpb25zKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NGaWVs
ZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEZp
eGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiYgY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBU
cmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVs
ZW1lbnRzKCk7CiAgICAgY3VycmVudFNjb3BlKCktPnNldElzQ2xhc3NTY29wZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzY4ZDczZGI3YmIzMDEzMjEyM2RiNjg2
MWU0NDdhOTMwZWY3MDY2MC4uMDlhYzdjMjRkYTQ1YTRlNTY0YTA2NzA1NDEwMmU4OTk1ZjgxNzgy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0zNSw5ICszNSw5IEBA
CiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgorI2luY2x1
ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05OTIsNyArOTky
LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB+UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFy
c2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGlu
dD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9w
dCwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBSZWZDb3Vu
dGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQYXJz
aW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9
IG51bGxwdHIsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsK
IAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7
IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xl
eGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC0xNTEyLDcgKzE1MTIsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXM7CiAgICAgICAgIGludCBudW1D
b25zdGFudHM7CiAgICAgfTsKLSAgICBFeHBlY3RlZDxQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+
IHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxp
bnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFJlZkNv
dW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4qLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50
KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CisgICAgRXhwZWN0ZWQ8UGFyc2VJbm5lclJlc3Vs
dCwgU3RyaW5nPiBwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwg
T3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBj
b25zdCBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qLCBjb25zdCBQcml2YXRlTmFtZUVudmly
b25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CiAKICAgICAvLyBVc2VkIHRvIGRldGVy
bWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25NZXRhZGF0
YU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE3NDMsNyArMTc0Myw3IEBA
IGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXIm
LCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3VyY2VFbGVtZW50c01vZGUp
OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBh
cnNlQXN5bmNHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNp
bmdsZUZ1bmN0aW9uKFRyZWVCdWlsZGVyJiwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKFRyZWVCdWlsZGVyJiwgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0aW9u
PiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IHBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBj
b25zdCBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4mKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVp
bGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVM
aXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGly
ZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IG51bGxwdHIpOwogICAg
IGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwpAQCAtMjEy
OCw3ICsyMTI4LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0
IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBP
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25z
dCBSZWZDb3VudGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQor
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJz
ZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250
ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNj
b3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNz
RmllbGRMb2NhdGlvbnMpCiB7CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVyck1zZzsK
QEAgLTIyMjksNyArMjIyOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgK
ICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlID0gRXZhbENvbnRleHRUeXBlOjpO
b25lLAogICAgIERlYnVnZ2VyUGFyc2VEYXRhKiBkZWJ1Z2dlclBhcnNlRGF0YSA9IG51bGxwdHIs
CiAgICAgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFt
ZXMgPSBudWxscHRyLAotICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4q
IGNsYXNzRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAorICAgIGNvbnN0IEZpeGVkVmVjdG9yPEpT
VGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCiAgICAgYm9vbCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsKICAgICBBU1NFUlQoIXNvdXJjZS5w
cm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNTZkMWFhZDY3ZThhNjA0NzczNzE3Zjg2OWIy
NTI2NGNiZmZmZjJjMy4uZWIwNTUzYWZhNDE4YmY4ZjljZDJmNGJmMmU3M2Y5MDg5M2E3MmZlMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAt
NjAzLDcgKzYwMyw4IEBAIHB0cmRpZmZfdCBDYWNoZWRXcml0ZUJhcnJpZXJPZmZzZXRzOjpwdHJP
ZmZzZXQoKQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IElubGluZUNhcGFjaXR5ID0gMCwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyID0gQ3Jhc2hPbk92ZXJmbG93LCB0eXBlbmFtZSBNYWxs
b2MgPSBXVEY6OlZlY3Rvck1hbGxvYz4KIGNsYXNzIENhY2hlZFZlY3RvciA6IHB1YmxpYyBWYXJp
YWJsZUxlbmd0aE9iamVjdDxWZWN0b3I8U291cmNlVHlwZTxUPiwgSW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgMTYsIE1hbGxvYz4+IHsKIHB1YmxpYzoKLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U291cmNlVHlwZTxUPiwgSW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgMTYsIE1hbGxvYz4mIHZlY3RvcikKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWZWN0b3JDb250YWluZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yQ29udGFpbmVyJiB2ZWN0b3IpCiAgICAgewogICAgICAgICBtX3NpemUg
PSB2ZWN0b3Iuc2l6ZSgpOwogICAgICAgICBpZiAoIW1fc2l6ZSkKQEAgLTYxMywzOSArNjE0LDE3
IEBAIGNsYXNzIENhY2hlZFZlY3RvciA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxWZWN0
b3I8U291cmNlVHlwZTxUPiwgSW5saW5lQ2FwCiAgICAgICAgICAgICA6OkpTQzo6ZW5jb2RlKGVu
Y29kZXIsIGJ1ZmZlcltpXSwgdmVjdG9yW2ldKTsKICAgICB9CiAKLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8U291cmNlVHlwZTxUPj4mIHZl
Y3RvcikKLSAgICB7Ci0gICAgICAgIG1fc2l6ZSA9IHZlY3Rvci5zaXplKCk7Ci0gICAgICAgIGlm
ICghbV9zaXplKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBUKiBidWZmZXIgPSB0aGlz
LT50ZW1wbGF0ZSBhbGxvY2F0ZTxUPihlbmNvZGVyLCBtX3NpemUpOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAgICAgICAgICA6OkpTQzo6ZW5jb2Rl
KGVuY29kZXIsIGJ1ZmZlcltpXSwgdmVjdG9yW2ldKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZlY3Rv
cjxTb3VyY2VUeXBlPFQ+LCBJbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCAxNiwgTWFs
bG9jPiYgdmVjdG9yLCBBcmdzLi4uIGFyZ3MpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncywgdHlwZW5hbWUgVmVjdG9yQ29udGFpbmVyPgorICAgIHZvaWQgZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFZlY3RvckNvbnRhaW5lciYgdmVjdG9yLCBBcmdzLi4uIGFyZ3MpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgdmVjdG9yLnJlc2l6ZVRvRml0KG1fc2l6ZSk7CisgICAgICAgIHZlY3RvciA9IFZlY3RvckNv
bnRhaW5lcihtX3NpemUpOwogICAgICAgICBjb25zdCBUKiBidWZmZXIgPSB0aGlzLT50ZW1wbGF0
ZSBidWZmZXI8VD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsg
KytpKQogICAgICAgICAgICAgOjpKU0M6OmRlY29kZShkZWNvZGVyLCBidWZmZXJbaV0sIHZlY3Rv
cltpXSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4K
LSAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZWZDb3VudGVkQXJyYXk8U291cmNl
VHlwZTxUPj4mIHZlY3RvciwgQXJncy4uLiBhcmdzKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYg
KCFtX3NpemUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZlY3RvciA9IFJlZkNvdW50
ZWRBcnJheTxTb3VyY2VUeXBlPFQ+PihtX3NpemUpOwotICAgICAgICBjb25zdCBUKiBidWZmZXIg
PSB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4oKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAgICAgICAgOjpKU0M6OmRlY29kZShkZWNvZGVyLCBi
dWZmZXJbaV0sIHZlY3RvcltpXSwgYXJncy4uLik7Ci0gICAgfQotCi0KIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKaW5kZXggZDQ2MmU3ZDk5YTVlYTM3NmRhYjBk
MzE2ZWQ4ZmRjZWVmZGNiYzNlZC4uZDYwNjU2NWIxOWIxZDIzZWE3MjgxNzdlMzYwZDI5OTc2Njhm
OTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5VGFibGUuaCIKICNpbmNsdWRlICJXYXNtQ3JlYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiV2Fz
bUluc3RhbmNlLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwogICAgIFdyaXRlQmFycmllcjxXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNz
ZW1ibHlNZW1vcnk+IG1fbWVtb3J5OwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8
SlNXZWJBc3NlbWJseVRhYmxlPj4gbV90YWJsZXM7CisgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJy
aWVyPEpTV2ViQXNzZW1ibHlUYWJsZT4+IG1fdGFibGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZjMwYzlh
NTYxMzdiM2MzMWQzMGRiYWI1MzE5MzllYjNjODk4YTYyLi42NzNhOWU2ZGY5YjI2YWUyM2JlOTJl
ZThkMDc5MzU0YWZjMTFlYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTc0Miw2ICs3NDIsNyBAQAogCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyog
SUNVSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDNTgzQzgyNjEyN0FERDAwQzU3NTY4IC8qIFJvYmlu
SG9vZEhhc2hNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm9iaW5Ib29kSGFzaE1hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NGNzY5MDIxMTVENkJBMDA5MURFNDggLyogQ29tcGFj
dFBvaW50ZXJUdXBsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wYWN0
UG9pbnRlclR1cGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRTBGMDRGMjYx
OTcxNTcwMDQ2NDBGQyAvKiBGaXhlZFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaXhlZFZlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3
OUQgLyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0
ZW1GcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTY0RjBCMjI4MTM0Mjgw
MDFFNTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbm1vdmFibGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxOUYyRTYyM0FCOUUyMzAwQjI2MTI5IC8qIFZl
Y3Rvckhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9ySGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzOCw2ICsxMDM5LDcgQEAKIAkJCQkw
RjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJQTMz
MUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovLAogCQkJCUEzMzFEOTU5
MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmggKi8sCisJCQkJRTNFMEYwNEYyNjE5NzE1
NzAwNDY0MEZDIC8qIEZpeGVkVmVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdB
RTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBG
b3JiaWRIZWFwQWxsb2NhdGlvbi5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAv
KiBGb3J3YXJkLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGUxZmE1NDVhNDAxNzhlYTMy
MzcwODkzOTYzYmI0ZGE4ZWY1ODhlMWMuLmEzMDU5ZTliYmY2ZmNlMjAyMTcxZmM0MjcwYmQxOTQ4
Yzk0MjI5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02OSw2ICs2OSw3IEBAIHNldChXVEZf
UFVCTElDX0hFQURFUlMKICAgICBGaWxlTWV0YWRhdGEuaAogICAgIEZpbGVQcmludFN0cmVhbS5o
CiAgICAgRmlsZVN5c3RlbS5oCisgICAgRml4ZWRWZWN0b3IuaAogICAgIEZsaXBCeXRlcy5oCiAg
ICAgRm9yYmlkSGVhcEFsbG9jYXRpb24uaAogICAgIEZvcndhcmQuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rv
ci5oCmluZGV4IDk2ZGNjZTFjZGJjMzg3NGUzNjJiMzcwMGIyOGE0Zjk0NDMzODRhYzQuLjQzYjQ0
MTA0NDdiODkxMDNlYjRjYWI1MDBkYjU0Yjc5MGIzZWY2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9y
LmgKQEAgLTQ3OSw2ICs0NzksMTAgQEAgY2xhc3MgRmFzdEJpdFJlZmVyZW5jZSB7CiBjbGFzcyBG
YXN0Qml0VmVjdG9yIDogcHVibGljIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RCaXRWZWN0b3JXb3Jk
T3duZXI+IHsKIHB1YmxpYzoKICAgICBGYXN0Qml0VmVjdG9yKCkgeyB9CisgICAgZXhwbGljaXQg
RmFzdEJpdFZlY3RvcihzaXplX3QgbnVtQml0cykKKyAgICB7CisgICAgICAgIGdyb3cobnVtQml0
cyk7CisgICAgfQogICAgIAogICAgIEZhc3RCaXRWZWN0b3IoY29uc3QgRmFzdEJpdFZlY3RvciYp
ID0gZGVmYXVsdDsKICAgICBGYXN0Qml0VmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgRmFzdEJpdFZl
Y3RvciYpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZGQ5NGRiMzBj
N2ZiNTMzNzkxN2FlOTg3OGJlM2M2Y2EzZjJkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GaXhlZFZlY3Rvci5oCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZEFycmF5Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBXcmFwcGVyIGFy
b3VuZCBSZWZDb3VudGVkQXJyYXksIGZpeGVkLXNpemVkLCBtZW1vcnkgY29tcGFjdCBWZWN0b3Iu
CisvLyBDb3B5IGNvbnN0cnVjdG9yIC8gYXNzaWdubWVudCBvcGVyYXRvciB3b3JrIGRpZmZlcmVu
dGx5IGZyb20gUmVmQ291bnRlZEFycmF5OiB3b3JrcyBhcyBsaWtlIGEgVmVjdG9yLgordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK2NsYXNzIEZpeGVkVmVjdG9yIHsKK3B1YmxpYzoKKyAgICB1c2luZyBp
dGVyYXRvciA9IFQqOworICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CisgICAg
dXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47
CisgICAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRv
cjxjb25zdF9pdGVyYXRvcj47CisKKyAgICBGaXhlZFZlY3RvcigpID0gZGVmYXVsdDsKKyAgICBG
aXhlZFZlY3Rvcihjb25zdCBGaXhlZFZlY3RvciYgb3RoZXIpCisgICAgICAgIDogbV9zdG9yYWdl
KG90aGVyLm1fc3RvcmFnZS5jbG9uZSgpKQorICAgIHsgfQorICAgIEZpeGVkVmVjdG9yKEZpeGVk
VmVjdG9yJiYgb3RoZXIpID0gZGVmYXVsdDsKKworICAgIEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0o
Y29uc3QgRml4ZWRWZWN0b3ImIG90aGVyKQorICAgIHsKKyAgICAgICAgRml4ZWRWZWN0b3IgdG1w
KG90aGVyKTsKKyAgICAgICAgc3dhcCh0bXApOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShGaXhlZFZlY3RvciYmIG90aGVyKQorICAg
IHsKKyAgICAgICAgRml4ZWRWZWN0b3IgdG1wKFdURk1vdmUob3RoZXIpKTsKKyAgICAgICAgc3dh
cCh0bXApOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgZXhwbGljaXQgRml4
ZWRWZWN0b3Ioc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9zdG9yYWdlKHNpemUpCisgICAgeyB9
CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlcj4KKyAgICBleHBsaWNpdCBGaXhlZFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQorICAgICAgICA6IG1fc3RvcmFnZShv
dGhlcikKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIEZpeGVkVmVjdG9yJiBvcGVyYXRvcj0oY29uc3Qg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKKyAgICB7
CisgICAgICAgIG1fc3RvcmFnZSA9IG90aGVyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsg
fQorICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6
ZSgpOyB9CisKKyAgICBUKiBkYXRhKCkgeyByZXR1cm4gbV9zdG9yYWdlLmRhdGEoKTsgfQorICAg
IGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9zdG9yYWdlLmJlZ2luKCk7IH0KKyAgICBpdGVy
YXRvciBlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UuZW5kKCk7IH0KKworICAgIGNvbnN0IFQqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4odGhpcyktPmRhdGEo
KTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxGaXhlZFZlY3Rvcio+KHRoaXMpLT5iZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5k
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMpLT5lbmQoKTsg
fQorCisgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UucmJl
Z2luKCk7IH0KKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2Uu
cmVuZCgpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJl
bmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmVuZCgpOyB9CisKKyAgICBUJiBhdChzaXpl
X3QgaSkgeyByZXR1cm4gbV9zdG9yYWdlLmF0KGkpOyB9CisgICAgY29uc3QgVCYgYXQoc2l6ZV90
IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5hdChpKTsgfQorCisgICAgVCYgb3BlcmF0b3Jb
XShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNp
emVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQorCisgICAgVCYgZmlyc3QoKSB7IHJldHVy
biAoKnRoaXMpWzBdOyB9CisgICAgY29uc3QgVCYgZmlyc3QoKSBjb25zdCB7IHJldHVybiAoKnRo
aXMpWzBdOyB9CisgICAgVCYgbGFzdCgpIHsgcmV0dXJuICgqdGhpcylbc2l6ZSgpIC0gMV07IH0K
KyAgICBjb25zdCBUJiBsYXN0KCkgY29uc3QgeyByZXR1cm4gKCp0aGlzKVtzaXplKCkgLSAxXTsg
fQorCisgICAgdm9pZCBmaWxsKGNvbnN0IFQmIHZhbCkgeyBtX3N0b3JhZ2UuZmlsbCh2YWwpOyB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRml4ZWRWZWN0b3I8VD4mIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3N0b3JhZ2UgPT0gb3RoZXIubV9zdG9yYWdlOyB9CisKKyAgICB2b2lkIHN3
YXAoRml4ZWRWZWN0b3I8VD4mIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9zdG9yYWdlLnN3YXAo
b3RoZXIubV9zdG9yYWdlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEpT
Qzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgUmVmQ291bnRlZEFycmF5PFQ+IG1fc3Rv
cmFnZTsKK307CitzdGF0aWNfYXNzZXJ0KHNpemVvZihGaXhlZFZlY3RvcjxpbnQ+KSA9PSBzaXpl
b2YoaW50KikpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgc3dhcChGaXhl
ZFZlY3RvcjxUPiYgYSwgRml4ZWRWZWN0b3I8VD4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpGaXhlZFZlY3RvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIGIvU291cmNlL1dURi93dGYvUmVm
Q291bnRlZEFycmF5LmgKaW5kZXggZTdjYjAyNTE3YWUwYjMzZWQ4ZjIyNjQ0ZmQzNzY4NDZmZjUx
MDExOS4uYjA3OWRmNzZjMmJjOTI2NmFkMmIxOTIzMGY5ZjMxNjNhYjQzYWQ4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKKysrIGIvU291cmNlL1dURi93dGYv
UmVmQ291bnRlZEFycmF5LmgKQEAgLTY2LDYgKzY2LDEwIEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJh
eSB7CiAgICAgICAgIDogUmVmQ291bnRlZEFycmF5KENvbW1vbkNvcHlDb25zdHJ1Y3Rvciwgb3Ro
ZXIpCiAgICAgeyB9CiAKKyAgICBSZWZDb3VudGVkQXJyYXkoUmVmQ291bnRlZEFycmF5JiYgb3Ro
ZXIpCisgICAgICAgIDogbV9kYXRhKFB0clRyYWl0czo6ZXhjaGFuZ2Uob3RoZXIubV9kYXRhLCBu
dWxscHRyKSkKKyAgICB7IH0KKwogICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShzaXplX3Qg
c2l6ZSkKICAgICB7CiAgICAgICAgIGlmICghc2l6ZSkgewpAQCAtMjEyLDYgKzIxNiwxNiBAQCBj
bGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgIFQmIGxhc3QoKSB7IHJldHVybiAoKnRoaXMpW3Np
emUoKSAtIDFdOyB9CiAgICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0IHsgcmV0dXJuICgqdGhpcylb
c2l6ZSgpIC0gMV07IH0KIAorICAgIHZvaWQgZmlsbChjb25zdCBUJiB2YWwpCisgICAgeworICAg
ICAgICBzdGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CisgICAgfQorCisgICAgdm9pZCBz
d2FwKFJlZkNvdW50ZWRBcnJheSYgb3RoZXIpCisgICAgeworICAgICAgICBQdHJUcmFpdHM6OnN3
YXAobV9kYXRhLCBvdGhlci5tX2RhdGEpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyVHJhaXRzID0gUHRyVHJhaXRzPgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZD
b3VudGVkQXJyYXk8VCwgT3RoZXJUcmFpdHM+JiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDUxN2JkZDA2NDJh
MjA3NTJlNmRkODg4NGNiODI3ZDdhODg3NjNmNi4uNWM0MzM5MTk2YzU0ZTlhYWZmYjc4ZGZkNTI4
YWIzMjMwNDZhNzgyZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gSW50cm9kdWNlIEZpeGVkVmVjdG9yIGFu
ZCB1c2UgaXQgZm9yIEZpeGVkT3BlcmFuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFt
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHA6IEFkZGVkLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpE
ZXN0cnVjdG9yT2JzZXJ2ZXI6OkRlc3RydWN0b3JPYnNlcnZlcik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6On5EZXN0cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjpvcGVyYXRvcj0pOgorCiAyMDIx
LTA0LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMjY3NzYzKSBOZXR3b3JrUHJvY2VzcyBuZXZlciB0ZXJtaW5hdGVz
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZjdjZmZkZTI5MWMyZDgyZGQxMjUx
YmJlYzhjODEzMTEyN2ZiZWZlLi5jZDY3Y2U2YWZjODdhOTI5ODE4MjhiNDNlYTUxNjU3Y2I1NWE0
MTBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTQ0LDYgKzQ0LDcgQEAgc2V0
KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9FbnVtVHJhaXRzLmNwcAogICAgIFRlc3Rz
L1dURi9FeHBlY3RlZC5jcHAKICAgICBUZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKyAgICBUZXN0
cy9XVEYvRml4ZWRWZWN0b3IuY3BwCiAgICAgVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcAogICAgIFRl
c3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKICAgICBUZXN0cy9XVEYvSGFzaE1hcC5jcHAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTZlY2VmZWU2MWQ2ZDJjNjUzNzg0MDhiZmU3ZWVmOTQ1
NjY4MmU5Mi4uODFkZjdiYzliNzFmZWE2NmY1ZTE5ZTc4MTY1OTk2YTgxNTc4N2YxMiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDksNiArMTEwOSw3IEBACiAJCUUxMjIwRENBMTU1QjI4
QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRE
NEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NEUxQkMxNzdFNTM0
QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sICovOyB9
OwogCQlFMzAyQkRBQTI0MDRCOTI0MDA4NjUyNzcgLyogQ29tcGFjdFJlZlB0clR1cGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDJCREE5MjQw
NEI5MjMwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwICovOyB9OworCQlFMzIxMDUx
OTI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMTA1MTgyNjE5NzlGMzAwMTU3QzY3IC8qIEZp
eGVkVmVjdG9yLmNwcCAqLzsgfTsKIAkJRTMyNEE2RjAyMDQxQzgyMDAwQTc2NTkzIC8qIFVuaXF1
ZUFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOThCQzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBVbmlxdWVBcnJheS5jcHAgKi87IH07CiAJCUUz
MjVDOTA3MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjVDOTA2MjNFMzg3
MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbSAqLzsgfTsKIAkJRTMyQjU0
OTIyMjgxMEFDNDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzJCNTQ5MTIyODEwQUMwMDA4QUQ3MDIgLyogUGFja2Vk
LmNwcCAqLzsgfTsKQEAgLTI5MDIsNiArMjkwMyw3IEBACiAJCUUxOTRFMUJBMTc3RTUxNDUwMDlD
NEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVz
cG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRFMUJDMTc3RTUzNEEw
MDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyogQ29tcGFjdFJlZlB0
clR1cGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBhY3RS
ZWZQdHJUdXBsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjEwNTE4MjYx
OTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaXhlZFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMjVDOTA2MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzJCNTQ5MTIyODEwQUMwMDA4QUQ3MDIgLyogUGFj
a2VkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNEE2RDE4MjQxMkRFMzkwMDEyQUI2RSAvKiBHcmFudEFjY2Vzc1RvUHJl
ZmVyZW5jZXNTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhbnRBY2Nlc3NUb1By
ZWZlcmVuY2VzU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNzAs
NiArNDM3Miw3IEBACiAJCQkJMUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8qIEVudW1UcmFpdHMu
Y3BwICovLAogCQkJCUFEN0M0MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgKi8s
CiAJCQkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovLAorCQkJ
CUUzMjEwNTE4MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi8sCiAJCQkJOTMx
MENEMzYxRUY3MDhGQjAwNTBGRkUwIC8qIEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4M0RCNzk2NzFF
RjYzQjNDMDBCRkE1RTUgLyogRnVuY3Rpb24uY3BwICovLAogCQkJCTdBMzhEN0U1MUM3NTJENUYw
MDRGMTU3RCAvKiBIYXNoQ291bnRlZFNldC5jcHAgKi8sCkBAIC01MTIxLDYgKzUxMjQsNyBAQAog
CQkJCTFBRjdCMjFGMUQ2Q0QxNEQwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUFEN0M0MzREMUREMkE1NEUwMDI2ODg4QiAvKiBFeHBlY3RlZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMzIxMDUxOTI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxMENEMzgxRUY3MDhGQjAwNTBGRkUwIC8qIEZ1
bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAv
KiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzNENjMxRDFGQ0I3NjIw
MDAzMkVDRDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YWQxNDM4Yjc5MDli
YzQwZTEyYTIyNDVkMDFlYmY2ZWFjMjdlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHAKQEAgLTAsMCArMSwyNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJNb3ZlT25seS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9ySGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitURVNUKFdURl9GaXhlZFZlY3RvciwgRW1wdHkpCit7CisgICAgRml4ZWRWZWN0
b3I8aW50PiBpbnRWZWN0b3I7CisgICAgRVhQRUNUX1RSVUUoaW50VmVjdG9yLmlzRW1wdHkoKSk7
CisgICAgRVhQRUNUX0VRKDBVLCBpbnRWZWN0b3Iuc2l6ZSgpKTsKK30KKworVEVTVChXVEZfRml4
ZWRWZWN0b3IsIEl0ZXJhdG9yKQoreworICAgIEZpeGVkVmVjdG9yPGludD4gaW50VmVjdG9yKDQp
OworICAgIGludFZlY3RvclswXSA9IDEwOworICAgIGludFZlY3RvclsxXSA9IDExOworICAgIGlu
dFZlY3RvclsyXSA9IDEyOworICAgIGludFZlY3RvclszXSA9IDEzOworCisgICAgRml4ZWRWZWN0
b3I8aW50Pjo6aXRlcmF0b3IgaXQgPSBpbnRWZWN0b3IuYmVnaW4oKTsKKyAgICBGaXhlZFZlY3Rv
cjxpbnQ+OjppdGVyYXRvciBlbmQgPSBpbnRWZWN0b3IuZW5kKCk7CisgICAgRVhQRUNUX1RSVUUo
ZW5kICE9IGl0KTsKKworICAgIEVYUEVDVF9FUSgxMCwgKml0KTsKKyAgICArK2l0OworICAgIEVY
UEVDVF9FUSgxMSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxMiwgKml0KTsKKyAg
ICArK2l0OworICAgIEVYUEVDVF9FUSgxMywgKml0KTsKKyAgICArK2l0OworCisgICAgRVhQRUNU
X1RSVUUoZW5kID09IGl0KTsKK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIE92ZXJsb2FkZWRP
cGVyYXRvckFtcGVyc2FuZCkKK3sKKyAgICBzdHJ1Y3QgVGVzdCB7CisgICAgcHJpdmF0ZToKKyAg
ICAgICAgVGVzdCogb3BlcmF0b3ImKCkgPSBkZWxldGU7CisgICAgfTsKKworICAgIEZpeGVkVmVj
dG9yPFRlc3Q+IHZlY3RvcigxKTsKKyAgICB2ZWN0b3JbMF0gPSBUZXN0KCk7Cit9CisKK1RFU1Qo
V1RGX0ZpeGVkVmVjdG9yLCBDb3B5KQoreworICAgIEZpeGVkVmVjdG9yPGludD4gdmVjMSgzKTsK
KyAgICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKwor
ICAgIEZpeGVkVmVjdG9yPGludD4gdmVjMih2ZWMxKTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXpl
KCksIDMpOworICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgMyk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2ZWMxLnNpemUoKTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMxW2ld
LCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworICAgIH0KKyAgICB2ZWMxWzJd
ID0gNDI7CisgICAgRVhQRUNUX0VRKHZlYzFbMl0sIDQyKTsKKyAgICBFWFBFQ1RfRVEodmVjMlsy
XSwgMik7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBDb3B5QXNzaWduKQoreworICAgIEZp
eGVkVmVjdG9yPGludD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0g
MTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAgIEZpeGVkVmVjdG9yPGludD4gdmVjMjsKKyAgICB2
ZWMyID0gdmVjMTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDMpOworICAgIEVYUEVDVF9F
USh2ZWMyLnNpemUoKSwgMyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2ZWMxLnNpemUo
KTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMxW2ldLCBpKTsKKyAgICAgICAgRVhQRUNU
X0VRKHZlYzJbaV0sIGkpOworICAgIH0KKyAgICB2ZWMxWzJdID0gNDI7CisgICAgRVhQRUNUX0VR
KHZlYzFbMl0sIDQyKTsKKyAgICBFWFBFQ1RfRVEodmVjMlsyXSwgMik7Cit9CisKK1RFU1QoV1RG
X0ZpeGVkVmVjdG9yLCBNb3ZlKQoreworICAgIEZpeGVkVmVjdG9yPGludD4gdmVjMSgzKTsKKyAg
ICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAg
IEZpeGVkVmVjdG9yPGludD4gdmVjMihXVEZNb3ZlKHZlYzEpKTsKKyAgICBFWFBFQ1RfRVEodmVj
MS5zaXplKCksIDApOworICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgMyk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB2ZWMyLnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfRVEodmVj
MltpXSwgaSk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlQXNzaWduKQoreworICAg
IEZpeGVkVmVjdG9yPGludD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFd
ID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAgIEZpeGVkVmVjdG9yPGludD4gdmVjMjsKKyAg
ICB2ZWMyID0gV1RGTW92ZSh2ZWMxKTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDApOwor
ICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgMyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2ZWMyLnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfRVEodmVjMltpXSwgaSk7Cit9CisK
K1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBTd2FwKQoreworICAgIEZpeGVkVmVjdG9yPGludD4gdmVj
MSgzKTsKKyAgICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0g
MjsKKworICAgIEZpeGVkVmVjdG9yPGludD4gdmVjMjsKKyAgICB2ZWMyLnN3YXAodmVjMSk7Cisg
ICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwKTsKKyAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCks
IDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjMi5zaXplKCk7ICsraSkKKyAgICAg
ICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgSXRl
cmF0b3JGb3IpCit7CisgICAgRml4ZWRWZWN0b3I8aW50PiB2ZWMxKDMpOworICAgIHZlYzFbMF0g
PSAwOworICAgIHZlYzFbMV0gPSAxOworICAgIHZlYzFbMl0gPSAyOworCisgICAgaW50IGluZGV4
ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEuYmVnaW4oKTsgaXRlciAhPSB2ZWMxLmVu
ZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgRVhQRUNUX0VRKCppdGVyLCBpbmRleCk7CisgICAgICAg
ICsraW5kZXg7CisgICAgfQorfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgUmV2ZXJzZSkKK3sK
KyAgICBGaXhlZFZlY3RvcjxpbnQ+IHZlYzEoMyk7CisgICAgdmVjMVswXSA9IDA7CisgICAgdmVj
MVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICBpbnQgaW5kZXggPSAwOworICAgIGZv
ciAoYXV0byBpdGVyID0gdmVjMS5yYmVnaW4oKTsgaXRlciAhPSB2ZWMxLnJlbmQoKTsgKytpdGVy
KSB7CisgICAgICAgICsraW5kZXg7CisgICAgICAgIEVYUEVDVF9FUSgqaXRlciwgMyAtIGluZGV4
KTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBGaWxsKQoreworICAgIEZpeGVk
VmVjdG9yPGludD4gdmVjMSgzKTsKKyAgICB2ZWMxLmZpbGwoNDIpOworCisgICAgZm9yIChhdXRv
JiB2YWx1ZSA6IHZlYzEpCisgICAgICAgIEVYUEVDVF9FUSh2YWx1ZSwgNDIpOworfQorCitzdHJ1
Y3QgRGVzdHJ1Y3Rvck9ic2VydmVyIHsKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoKSA9IGRlZmF1
bHQ7CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoYm9vbCogZGVzdHJ1Y3RlZCkKKyAgICAgICAg
OiBkZXN0cnVjdGVkKGRlc3RydWN0ZWQpCisgICAgeworICAgIH0KKworICAgIH5EZXN0cnVjdG9y
T2JzZXJ2ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKGRlc3RydWN0ZWQpCisgICAgICAgICAgICAq
ZGVzdHJ1Y3RlZCA9IHRydWU7CisgICAgfQorCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKERlc3Ry
dWN0b3JPYnNlcnZlciYmIG90aGVyKQorICAgICAgICA6IGRlc3RydWN0ZWQob3RoZXIuZGVzdHJ1
Y3RlZCkKKyAgICB7CisgICAgICAgIG90aGVyLmRlc3RydWN0ZWQgPSBudWxscHRyOworICAgIH0K
KworICAgIERlc3RydWN0b3JPYnNlcnZlciYgb3BlcmF0b3I9KERlc3RydWN0b3JPYnNlcnZlciYm
IG90aGVyKQorICAgIHsKKyAgICAgICAgZGVzdHJ1Y3RlZCA9IG90aGVyLmRlc3RydWN0ZWQ7Cisg
ICAgICAgIG90aGVyLmRlc3RydWN0ZWQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgYm9vbCogZGVzdHJ1Y3RlZCB7IG51bGxwdHIgfTsKK307CisKK1RFU1Qo
V1RGX0ZpeGVkVmVjdG9yLCBEZXN0cnVjdG9yKQoreworICAgIFZlY3Rvcjxib29sPiBmbGFncygz
LCBmYWxzZSk7CisgICAgeworICAgICAgICBGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+
IHZlY3RvcihmbGFncy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2ZWN0b3JbaV0gPSBEZXN0cnVjdG9yT2Jz
ZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICB9
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAg
ICBFWFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBEZXN0
cnVjdG9yQWZ0ZXJNb3ZlKQoreworICAgIFZlY3Rvcjxib29sPiBmbGFncygzLCBmYWxzZSk7Cisg
ICAgeworICAgICAgICBGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+IG91dGVyVmVjdG9y
OworICAgICAgICB7CisgICAgICAgICAgICBGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+
IHZlY3RvcihmbGFncy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIHZlY3RvcltpXSA9IERlc3Ry
dWN0b3JPYnNlcnZlcigmZmxhZ3NbaV0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShm
bGFnc1tpXSk7CisgICAgICAgICAgICBvdXRlclZlY3RvciA9IFdURk1vdmUodmVjdG9yKTsKKyAg
ICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9U
UlVFKGZsYWdzW2ldKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="commit-queue"
          id="445109"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425278</attachid>
            <date>2021-04-06 07:56:30 -0700</date>
            <delta_ts>2021-04-06 13:54:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224171-20210406075626.patch</filename>
            <type>text/plain</type>
            <size>69446</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZDQ3ZDQ0OTIxNzZhNTVjZjE1MDUzODEzMzEwODI0YjA5ZmZlMGVjLi5mNGU0YzU2ZDgzMGIxMjkx
MDk3M2E4ZmUzODI4ZjlkYmExZTllYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAyMS0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZlY3RvciBhbmQgdXNlIGl0IGZvciBG
aXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBE
ZWZpbmUgRml4ZWRPcGVyYW5kczxUPiB3aGljaCB1c2VzIEZpeGVkVmVjdG9yIGZvciBpdHMgc3Rv
cmFnZS4gV2UgdXNlIEZpeGVkT3BlcmFuZHMgaW4gRlRMOjpPU1JFeGl0RGVzY3JpcHRvci4KKyAg
ICAgICAgV2UgYWxzbyByZXBsYWNlIFJlZkNvdW50ZWRBcnJheTxUPiB3aXRoIEZpeGVkVmVjdG9y
PFQ+IGlmIHRoZXkgYXJlIG5vdCByZXF1aXJpbmcgUmVmQ291bnRlZEFycmF5PFQ+J3MgcmVmLWNv
dW50aW5nCisgICAgICAgIHNlbWFudGljcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldFJhcmVDYXNlUHJv
ZmlsZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tCb3VuZGFy
aWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFuZHMuaDoKKyAgICAgICAgKEpTQzo6T3BlcmFu
ZHM6Ok9wZXJhbmRzKToKKyAgICAgICAgKiBieXRlY29kZS9PcGVyYW5kc0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6VT46OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpVPjo6
ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wZXJhbmRzPFQ+OjpkdW1wSW5Db250ZXh0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3BlcmFuZHM8VD46OmR1bXAgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpkdW1wRXhwcmVzc2lvblJhbmdlSW5mbyk6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRl
Y29kZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZXhwcmVzc2lvbkluZm8pOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aWRlbnRpZmllcnMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmNvbnN0YW50SWRlbnRpZmllclNl
dHMpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6b3BQcm9maWxlQ29udHJvbEZs
b3dCeXRlY29kZU9mZnNldHMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvZGUuaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5oOgorICAgICAg
ICAoSlNDOjpERkc6OlBsYW46OnRpZXJVcEluTG9vcEhpZXJhcmNoeSk6CisgICAgICAgICogZnRs
L0ZUTE9TUkV4aXQuaDoKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVyU291cmNl
RWxlbWVudHMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRWZWN0b3I6OmVu
Y29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZlY3Rvcjo6ZGVjb2RlIGNvbnN0KToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oOgorCiAyMDIxLTA0LTA1ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gU2hyaW5rIHNv
bWUgb2YgVmVjdG9ycyBpbiBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggY2E4YTdlYzkyMDBiZDFmMzYyMWFjZWE0NWM4ZWU0
OGJkMGJlNDU3Ny4uZjZiMjNjNzg3OGU1MmIzNzM0YmUzODQ1ZTFkNDNmMDYwYzVhNzgxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBGaXhlZFZlY3RvciBhbmQgdXNlIGl0
IGZvciBGaXhlZE9wZXJhbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAg
ICAgICBUaGlzIEZpeGVkVmVjdG9yPFQ+IGlzIGEgd3JhcHBlciBhcm91bmQgUmVmQ291bnRlZEFy
cmF5PFQ+LCBidXQgdGhpcyBvZmZlcnMgVmVjdG9yLWxpa2UgY29weSAvIG1vdmUgc2VtYW50aWNz
LAorICAgICAgICBzbyB0aGF0IHdlIGNhbiB1c2UgdGhpcyBGaXhlZFZlY3RvcjxUPiBhcyBhIGRy
b3AtaW4tcmVwbGFjZW1lbnQgZm9yIGZpeGVkLXNpemVkIFZlY3RvciBmaWVsZHMuIFRoZSBwdXJw
b3NlCisgICAgICAgIG9mIHRoYXQgaXMgc2F2aW5nIG1lbW9yeSBieSByZW1vdmluZyB1bm5lY2Vz
c2FyeSBzdG9yYWdlIChGaXhlZFZlY3RvciBpcyBmaXhlZC1zaXplZCBhbGxvY2F0ZWQpIGFuZCBw
dXR0aW5nIHNpemUKKyAgICAgICAgaW50byB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpG
YXN0Qml0VmVjdG9yOjpGYXN0Qml0VmVjdG9yKToKKyAgICAgICAgKiB3dGYvRml4ZWRWZWN0b3Iu
aDogQWRkZWQuCisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpGaXhlZFZlY3Rvcik6CisgICAg
ICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpGaXhlZFZl
Y3Rvcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmJ5dGVTaXplIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6OmRhdGEpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6
YmVnaW4pOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZW5kKToKKyAgICAgICAgKFdURjo6
Rml4ZWRWZWN0b3I6OmRhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6YmVn
aW4gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJiZWdpbik6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9y
OjpyZW5kKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJiZWdpbiBjb25zdCk6CisgICAg
ICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRW
ZWN0b3I6OmF0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmF0IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yW10pOgorICAgICAgICAoV1RGOjpGaXhlZFZl
Y3Rvcjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpmaXJz
dCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpmaXJzdCBjb25zdCk6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjpsYXN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Omxhc3Qg
Y29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZmlsbCk6CisgICAgICAgIChXVEY6
OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0
b3I6OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAgICAgICAgKiB3dGYvUmVmQ291bnRl
ZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJheTo6UmVmQ291bnRlZEFycmF5
KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpmaWxsKToKKyAgICAgICAgKFdURjo6
UmVmQ291bnRlZEFycmF5Ojpzd2FwKToKKwogMjAyMS0wNC0wNiAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIE5TVVJMU2Vzc2lvbiBXZWJTb2NrZXQg
Y29kZSBwYXRoIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDZjYjg4
Y2U3YWY1MzU3OWE5NmJjYTY0Nzg0YjI3MzFjYTU4MjhmZDcuLjRkNTdkYTVhMzBlMmQxOWYwYzg1
Y2I1Y2Q5ZGJmMzcwODUzMzVmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMjIw
LDcgKzIyMCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5j
bHVkaW5nVGhpcyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OlN0
YXRlKSk7CiAgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hK
dW1wVGFibGUoKTsKICAgICAgICAganVtcFRhYmxlLm1pbiA9IDA7Ci0gICAgICAgIGp1bXBUYWJs
ZS5icmFuY2hPZmZzZXRzID0gUmVmQ291bnRlZEFycmF5PGludDMyX3Q+KG1feWllbGRzLnNpemUo
KSArIDEpOworICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPGlu
dDMyX3Q+KG1feWllbGRzLnNpemUoKSArIDEpOwogICAgICAgICBzdGQ6OmZpbGwoanVtcFRhYmxl
LmJyYW5jaE9mZnNldHMuYmVnaW4oKSwganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZW5kKCksIDAp
OwogICAgICAgICBqdW1wVGFibGUuYWRkKDAsIG5leHRUb0VudGVyUG9pbnQub2Zmc2V0KCkpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV95aWVsZHMuc2l6ZSgpOyArK2kpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI4Y2E5
ZWM1ZmZkYjI1ZTIxZWQ2OGUxM2FhOTZjMjk5NTdlYzQ0OTAuLjgzYjlkZTI1ZGJhZWQwMmM4ZjZl
N2U0NDllNWRkMGI1NWQzNzI4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC00MDMsNyArNDAzLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICB9CiAKICAgICBib29sIHNob3VsZFVwZGF0ZUZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZSA9IG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhUeXBlUHJvZmlsZXJPcGNvZGVzKCkg
fHwgbV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aENvbnRyb2xGbG93UHJvZmlsZXJPcGNv
ZGVzKCk7Ci0gICAgbV9mdW5jdGlvbkRlY2xzID0gUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmll
cjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCkpOworICAgIG1fZnVuY3Rpb25EZWNscyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmll
cjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51
bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2Vk
Q29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CiAgICAgICAgIGlmIChzaG91bGRVcGRhdGVGdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUpCkBAIC00MTEsNyArNDExLDcgQEAgYm9vbCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmsKICAgICAgICAgbV9mdW5jdGlvbkRlY2xzW2ldLnNldCh2bSwgdGhpcywgdW5saW5r
ZWRFeGVjdXRhYmxlLT5saW5rKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUsIG93bmVyRXhlY3V0YWJs
ZS0+c291cmNlKCksIFdURjo6bnVsbG9wdCwgTm9JbnRyaW5zaWMsIG93bmVyRXhlY3V0YWJsZS0+
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCkpKTsKICAgICB9CiAKLSAgICBtX2Z1bmN0aW9uRXhw
cnMgPSBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4+KHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRXhwcnMoKSk7CisgICAgbV9mdW5jdGlv
bkV4cHJzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4+KHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRXhwcnMoKSk7CiAgICAgZm9yIChzaXpl
X3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkV4cHJzKCksIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogdW5saW5rZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihp
KTsKICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSkKQEAg
LTg4Nyw3ICs4ODcsNyBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBS
ZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRzLCBjb25zdCBS
ZWZDb3VudGVkQXJyYXk8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUp
Cit2b2lkIENvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgRml4ZWRWZWN0b3I8
V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRzLCBjb25zdCBGaXhlZFZlY3RvcjxTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24s
IFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSkKIHsKICAgICBWTSYgdm0gPSAq
bV92bTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05NDks
NyArOTQ5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNldE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVl
KQogewogICAgIG1fbnVtUGFyYW1ldGVycyA9IG5ld1ZhbHVlOwogCi0gICAgbV9hcmd1bWVudFZh
bHVlUHJvZmlsZXMgPSBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPihPcHRpb25zOjp1c2VK
SVQoKSA/IG5ld1ZhbHVlIDogMCk7CisgICAgbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgPSBGaXhl
ZFZlY3RvcjxWYWx1ZVByb2ZpbGU+KE9wdGlvbnM6OnVzZUpJVCgpID8gbmV3VmFsdWUgOiAwKTsK
IH0KIAogQ29kZUJsb2NrKiBDb2RlQmxvY2s6OnNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCkK
QEAgLTE3NTQsNyArMTc1NCw3IEBAIENhbGxMaW5rSW5mbyogQ29kZUJsb2NrOjpnZXRDYWxsTGlu
a0luZm9Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggaW5kZXgpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpzZXRSYXJlQ2FzZVByb2ZpbGVzKFJlZkNvdW50
ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+JiYgcmFyZUNhc2VQcm9maWxlcykKK3ZvaWQgQ29kZUJs
b2NrOjpzZXRSYXJlQ2FzZVByb2ZpbGVzKEZpeGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZT4mJiBy
YXJlQ2FzZVByb2ZpbGVzKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2Nr
KTsKICAgICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9yYXJlQ2FzZVByb2ZpbGVzID0gV1RGTW92
ZShyYXJlQ2FzZVByb2ZpbGVzKTsKQEAgLTMzODEsNyArMzM4MSw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjppbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKQogewog
ICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2soKS0+aGFzT3BQcm9maWxlQ29udHJvbEZsb3dCeXRl
Y29kZU9mZnNldHMoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgYnl0ZWNvZGVPZmZzZXRzID0gdW5saW5rZWRD
b2RlQmxvY2soKS0+b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMoKTsKKyAgICBj
b25zdCBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgYnl0ZWNvZGVPZmZz
ZXRzID0gdW5saW5rZWRDb2RlQmxvY2soKS0+b3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9m
ZnNldHMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgb2Zmc2V0c0xlbmd0aCA9IGJ5dGVjb2Rl
T2Zmc2V0cy5zaXplKCk7IGkgPCBvZmZzZXRzTGVuZ3RoOyBpKyspIHsKICAgICAgICAgLy8gQmVj
YXVzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcg
b2YgZXZlcnkgYmFzaWMgYmxvY2ssIGZpbmRpbmcgCiAgICAgICAgIC8vIHRoZSBuZXh0IG9wX3By
b2ZpbGVfY29udHJvbF9mbG93IHdpbGwgZ2l2ZSB1cyB0aGUgdGV4dCByYW5nZSBvZiBhIHNpbmds
ZSBiYXNpYyBibG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAppbmRleCAzZThhODAxNDY3NDBlZDdhMWFjMjM0ODgyZDcwOWI0YzI1NDBmZjBlLi4zZGE0OGZj
ZGRkYjUzMTJkOTUyMjIxYWM4OTQ0YWUzNDYwMDBlMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiV2F0
Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvRml4
ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21l
bnRlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTI3Nyw3ICsyNzcsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgQmFnPENhbGxMaW5r
SW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExp
bmtJbmZvLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0Nh
bGxzOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9seW1vcnBoaWNDYWxsTm9kZSwgUGFj
a2VkUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+PiBtX2luY29taW5nUG9seW1v
cnBoaWNDYWxsczsKLSAgICAgICAgUmVmQ291bnRlZEFycmF5PFJhcmVDYXNlUHJvZmlsZT4gbV9y
YXJlQ2FzZVByb2ZpbGVzOworICAgICAgICBGaXhlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGU+IG1f
cmFyZUNhc2VQcm9maWxlczsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2lu
TWFwPiBtX3BjVG9Db2RlT3JpZ2luTWFwOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0
ZXJBdE9mZnNldExpc3Q+IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICAgICAgSklUQ29kZU1h
cCBtX2ppdENvZGVNYXA7CkBAIC0zNDEsNyArMzQxLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0
KTsKICAgICB2b2lkIHNldENhbGxlZVNhdmVSZWdpc3RlcnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0Pik7CiAKLSAgICB2b2lkIHNldFJhcmVDYXNlUHJvZmlsZXMoUmVmQ291
bnRlZEFycmF5PFJhcmVDYXNlUHJvZmlsZT4mJik7CisgICAgdm9pZCBzZXRSYXJlQ2FzZVByb2Zp
bGVzKEZpeGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZT4mJik7CiAgICAgUmFyZUNhc2VQcm9maWxl
KiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5dGVjb2RlSW5kZXgpOwogICAgIHVuc2lnbmVkIHJhcmVDYXNlUHJvZmlsZUNvdW50Rm9y
Qnl0ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4KTsK
IApAQCAtOTU2LDcgKzk1Niw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
CiAgICAgdm9pZCB1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5l
c3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWdu
ZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMpOwogCi0gICAgdm9pZCBzZXRDb25zdGFudFJl
Z2lzdGVycyhjb25zdCBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29u
c3RhbnRzLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYg
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BM
ZXZlbEV4ZWN1dGFibGUpOworICAgIHZvaWQgc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgRml4
ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRzLCBjb25zdCBGaXhlZFZl
Y3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb24sIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSk7CiAKICAgICB2
b2lkIHJlcGxhY2VDb25zdGFudChWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIHsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIC8vIGZvciBERkcgY29kZSBibG9ja3MuCiAgICAgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzOwogI2VuZGlm
Ci0gICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmls
ZXM7CisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9maWxl
czsKIAogICAgIC8vIENvbnN0YW50IFBvb2wKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVn
aXN0ZXIpID09IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBSZWdpc3Rlcl9tdXN0X2Jl
X3NhbWVfc2l6ZV9hc19Xcml0ZUJhcnJpZXJfVW5rbm93bik7CkBAIC0xMDQwLDggKzEwNDAsOCBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyBpdCwgc28gd2UncmUg
c3R1Y2sgd2l0aCBpdCBmb3Igbm93LgogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+
IG1fY29uc3RhbnRSZWdpc3RlcnM7CiAgICAgVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247Ci0gICAgUmVmQ291bnRlZEFy
cmF5PFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1bmN0aW9uRGVjbHM7Ci0g
ICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1
bmN0aW9uRXhwcnM7CisgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0
YWJsZT4+IG1fZnVuY3Rpb25EZWNsczsKKyAgICBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8RnVu
Y3Rpb25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkV4cHJzOwogCiAgICAgV3JpdGVCYXJyaWVyPENv
ZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wZXJhbmRzLmgKaW5kZXggMDhhNTAzNzc0NmNhOGU2ZDgxYzQyNjdjYzYzNzFmZDBlN2Uy
NmIxMi4uNTFhZWE0ZTc4NmJlZTM1NTZhNjc4ZDRiNDBhYzA1Y2NmYmIxOTc3MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKIAorI2lu
Y2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTM0LDM5ICsxMzUsMzggQEAgc3RhdGljX2Fz
c2VydChzaXplb2YoT3BlcmFuZCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIk9wZXJhbmQ6OmFzQml0
cygpIHJlbGllcyBvbgogCiBlbnVtIE9wZXJhbmRzTGlrZVRhZyB7IE9wZXJhbmRzTGlrZSB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU3Rv
cmFnZUFyZyA9IHN0ZDo6Y29uZGl0aW9uYWxfdDxzdGQ6OmlzX3NhbWVfdjxULCBib29sPiwgRmFz
dEJpdFZlY3RvciwgVmVjdG9yPFQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93Pj4+CiBjbGFzcyBP
cGVyYW5kcyB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgU3RvcmFnZSA9IHN0ZDo6Y29uZGl0aW9uYWxf
dDxzdGQ6OmlzX3NhbWVfdjxULCBib29sPiwgRmFzdEJpdFZlY3RvciwgVmVjdG9yPFQsIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93Pj47CisgICAgdXNpbmcgU3RvcmFnZSA9IFN0b3JhZ2VBcmc7CiAg
ICAgdXNpbmcgUmVmVHlwZSA9IHN0ZDo6Y29uZGl0aW9uYWxfdDxzdGQ6OmlzX3NhbWVfdjxULCBi
b29sPiwgRmFzdEJpdFJlZmVyZW5jZSwgVCY+OwogICAgIHVzaW5nIENvbnN0UmVmVHlwZSA9IHN0
ZDo6Y29uZGl0aW9uYWxfdDxzdGQ6OmlzX3NhbWVfdjxULCBib29sPiwgYm9vbCwgY29uc3QgVCY+
OwogCiAgICAgT3BlcmFuZHMoKSA9IGRlZmF1bHQ7CiAKICAgICBleHBsaWNpdCBPcGVyYW5kcyhz
aXplX3QgbnVtQXJndW1lbnRzLCBzaXplX3QgbnVtTG9jYWxzLCBzaXplX3QgbnVtVG1wcykKLSAg
ICAgICAgOiBtX251bUFyZ3VtZW50cyhudW1Bcmd1bWVudHMpCisgICAgICAgIDogbV92YWx1ZXMo
bnVtQXJndW1lbnRzICsgbnVtTG9jYWxzICsgbnVtVG1wcykKKyAgICAgICAgLCBtX251bUFyZ3Vt
ZW50cyhudW1Bcmd1bWVudHMpCiAgICAgICAgICwgbV9udW1Mb2NhbHMobnVtTG9jYWxzKQogICAg
IHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBudW1Bcmd1bWVudHMgKyBudW1Mb2NhbHMgKyBudW1U
bXBzOwotICAgICAgICBtX3ZhbHVlcy5ncm93KHNpemUpOwogICAgICAgICBpZiAoIVdURjo6VmVj
dG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uKQogICAgICAgICAgICAgbV92YWx1ZXMu
ZmlsbChUKCkpOwogICAgIH0KIAogICAgIGV4cGxpY2l0IE9wZXJhbmRzKHNpemVfdCBudW1Bcmd1
bWVudHMsIHNpemVfdCBudW1Mb2NhbHMsIHNpemVfdCBudW1UbXBzLCBjb25zdCBUJiBpbml0aWFs
VmFsdWUpCi0gICAgICAgIDogbV9udW1Bcmd1bWVudHMobnVtQXJndW1lbnRzKQorICAgICAgICA6
IG1fdmFsdWVzKG51bUFyZ3VtZW50cyArIG51bUxvY2FscyArIG51bVRtcHMpCisgICAgICAgICwg
bV9udW1Bcmd1bWVudHMobnVtQXJndW1lbnRzKQogICAgICAgICAsIG1fbnVtTG9jYWxzKG51bUxv
Y2FscykKICAgICB7Ci0gICAgICAgIG1fdmFsdWVzLmdyb3cobnVtQXJndW1lbnRzICsgbnVtTG9j
YWxzICsgbnVtVG1wcyk7CiAgICAgICAgIG1fdmFsdWVzLmZpbGwoaW5pdGlhbFZhbHVlKTsKICAg
ICB9CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBleHBsaWNpdCBPcGVyYW5k
cyhPcGVyYW5kc0xpa2VUYWcsIGNvbnN0IE9wZXJhbmRzPFU+JiBvdGhlciwgY29uc3QgVCYgaW5p
dGlhbFZhbHVlID0gVCgpKQotICAgICAgICA6IG1fbnVtQXJndW1lbnRzKG90aGVyLm51bWJlck9m
QXJndW1lbnRzKCkpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KKyAgICBl
eHBsaWNpdCBPcGVyYW5kcyhPcGVyYW5kc0xpa2VUYWcsIGNvbnN0IE9wZXJhbmRzPFUsIFY+JiBv
dGhlciwgY29uc3QgVCYgaW5pdGlhbFZhbHVlID0gVCgpKQorICAgICAgICA6IG1fdmFsdWVzKG90
aGVyLnNpemUoKSkKKyAgICAgICAgLCBtX251bUFyZ3VtZW50cyhvdGhlci5udW1iZXJPZkFyZ3Vt
ZW50cygpKQogICAgICAgICAsIG1fbnVtTG9jYWxzKG90aGVyLm51bWJlck9mTG9jYWxzKCkpCiAg
ICAgewotICAgICAgICBtX3ZhbHVlcy5ncm93KG90aGVyLnNpemUoKSk7CiAgICAgICAgIG1fdmFs
dWVzLmZpbGwoaW5pdGlhbFZhbHVlKTsKICAgICB9CiAKQEAgLTM5OSw0ICszOTksNyBAQCBjbGFz
cyBPcGVyYW5kcyB7CiAgICAgdW5zaWduZWQgbV9udW1Mb2NhbHMgeyAwIH07CiB9OwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgRml4ZWRPcGVyYW5kcyA9IE9wZXJhbmRzPFQsIHN0ZDo6
Y29uZGl0aW9uYWxfdDxzdGQ6OmlzX3NhbWVfdjxULCBib29sPiwgRmFzdEJpdFZlY3RvciwgRml4
ZWRWZWN0b3I8VD4+PjsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKaW5kZXggMGIxY2MxZjJkMTk3YWQw
ODM2NWE4Zjc4NTYxZmRmNjdhN2Q5ZWRkZC4uNTZjMjA4NTg5M2M0NGZiM2EzYWNjNDNlOWVkZjM3
OTk0NGIyNmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
ZXJhbmRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVy
YW5kc0lubGluZXMuaApAQCAtMzgsOCArMzgsOCBAQCBpbmxpbmUgdm9pZCBPcGVyYW5kOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCh2aXJ0dWFsUmVnaXN0
ZXIoKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIE9wZXJhbmRzPFQ+OjpkdW1w
SW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgT3BlcmFuZHM8VCwgVT46OmR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0
CiB7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hKCIgIik7CiAgICAgZm9yIChzaXplX3QgYXJndW1l
bnRJbmRleCA9IG51bWJlck9mQXJndW1lbnRzKCk7IGFyZ3VtZW50SW5kZXgtLTspIHsKQEAgLTU5
LDggKzU5LDggQEAgdm9pZCBPcGVyYW5kczxUPjo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci12b2lkIE9wZXJhbmRzPFQ+OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBPcGVyYW5kczxULCBVPjo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBjb21tYSgi
ICIpOwogICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50SW5kZXggPSBudW1iZXJPZkFyZ3VtZW50cygp
OyBhcmd1bWVudEluZGV4LS07KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCmluZGV4IDA5YmZjMGI4NmM1ODc5MWFiNzg5
ZjY2NDUzNDhiMzFhMGMwNzM4ZjcuLmEyOWI0YmY2OWRhNzQ3MTNiMWM2Mjg0YjUwM2E2NDFlOTYz
YzdjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJv
dG9BY2Nlc3NDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
UHJvdG9BY2Nlc3NDaGFpbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJTdHJ1Y3R1
cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFy
cmF5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUG9seVByb3Rv
QWNjZXNzQ2hhaW4gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UG9seVByb3Rv
QWNjZXNzQ2gKICAgICBzdGF0aWMgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiB0cnlDcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHRyeUNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCk7CiAKLSAgICBjb25zdCBS
ZWZDb3VudGVkQXJyYXk8U3RydWN0dXJlSUQ+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hh
aW47IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mIGNoYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFpbjsgfQogCiAgICAgdm9pZCBkdW1wKFN0cnVjdHVyZSogYmFzZVN0cnVj
dHVyZSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAKQEAgLTgyLDcgKzgyLDcgQEAgY2xhc3Mg
UG9seVByb3RvQWNjZXNzQ2hhaW4gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UG9seVByb3RvQWNjZXNzQ2gKIAogICAgIC8vIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgYmFz
ZS4gV2UgcmVseSBvbiBBY2Nlc3NDYXNlIHByb3ZpZGluZyBpdCBmb3IgdXMuIFRoYXQgc2FpZCwg
dGhpcyBkYXRhCiAgICAgLy8gc3RydWN0dXJlIGlzIHRpZWQgdG8gdGhlIGJhc2UgdGhhdCBpdCB3
YXMgY3JlYXRlZCB3aXRoLgotICAgIFJlZkNvdW50ZWRBcnJheTxTdHJ1Y3R1cmVJRD4gbV9jaGFp
bjsKKyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4gbV9jaGFpbjsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
CmluZGV4IDU1ZjgzYzA1ODc0M2RiYmQxNzBlOTc1MzRjMzM0NzEyMmM4Nzk0ZWYuLjZkY2MyOTU5
YWQwMTNjMDg2YmI3YWViYzRkYmUzZDdlY2IxZmMwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNzQ4LDcgKzc0
OCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgbV9zdHViUm91dGluZSA9IGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01h
cmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNl
cHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKICAgICBt
X3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYgKCFzdGF0
ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBS
ZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1Jl
ZmVyZW5jZXMpKTsKKyAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9yPFdyaXRl
QmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7CiAgICAgaWYg
KFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJl
dHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCBiZGY1YzdmMmU3
YzY4OTNmMWE5NTlmMjJmZmY4OTU1ODUwZGYyYTQzLi4yOTIwMzI2ZGNjOTE1NDc0YjNmMWVlYjdm
NzI1ZTZhYjM0YWVjYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE4OCw3ICsxODgsNyBAQCBjbGFzcyBQb2x5bW9ycGhp
Y0FjY2VzcyB7CiAgICAgTGlzdFR5cGUgbV9saXN0OwogICAgIFJlZlB0cjxKSVRTdHViUm91dGlu
ZT4gbV9zdHViUm91dGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVj
dHVyZVN0dWJJbmZvPiBtX3dhdGNocG9pbnRzOwotICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJh
cnJpZXI8SlNDZWxsPj4gbV93ZWFrUmVmZXJlbmNlczsKKyAgICBGaXhlZFZlY3RvcjxXcml0ZUJh
cnJpZXI8SlNDZWxsPj4gbV93ZWFrUmVmZXJlbmNlczsKIH07CiAKIHN0cnVjdCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggM2FkZjllOTU0ZTFjNGJiZjViNTcxOTY0MmQyOTFl
NzRlN2QyYTlkYi4uYzEwNjExYzVjYzM3YmQyYzJjNDg2MDEwZTlmZTVmMGY2ZmM4MTQzMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIHZvaWQgZHVtcExpbmVDb2x1bW5FbnRy
eShzaXplX3QgaW5kZXgsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGkKIAogdm9p
ZCBVbmxpbmtlZENvZGVCbG9jazo6ZHVtcEV4cHJlc3Npb25SYW5nZUluZm8oKQogewotICAgIFJl
ZkNvdW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lvbkluZm8gPSBtX2V4
cHJlc3Npb25JbmZvOworICAgIEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+JiBleHBy
ZXNzaW9uSW5mbyA9IG1fZXhwcmVzc2lvbkluZm87CiAKICAgICBzaXplX3Qgc2l6ZSA9IG1fZXhw
cmVzc2lvbkluZm8uc2l6ZSgpOwogICAgIGRhdGFMb2dGKCJVbmxpbmtlZENvZGVCbG9jayAlcCBl
eHByZXNzaW9uUmFuZ2VJbmZvWyV6dV0ge1xuIiwgdGhpcywgc2l6ZSk7CkBAIC0xODgsNyArMTg4
LDcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVJ
bmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiYgZXhwcmVzc2lv
bkluZm8gPSBtX2V4cHJlc3Npb25JbmZvOworICAgIGNvbnN0IEZpeGVkVmVjdG9yPEV4cHJlc3Np
b25SYW5nZUluZm8+JiBleHByZXNzaW9uSW5mbyA9IG1fZXhwcmVzc2lvbkluZm87CiAKICAgICBp
bnQgbG93ID0gMDsKICAgICBpbnQgaGlnaCA9IGV4cHJlc3Npb25JbmZvLnNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5k
ZXggMjQ4NjkzNzQ3MTE3OGFkZWNkNmZiNmU5NmE3Yjk1YjE5MjdiN2U4OS4uMTU5NTVkM2EyZjU5
ZDhiMzhjNDVhMjIyMWE4NzI4Y2NhZWY4OWEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQyLDcgKzQyLDcgQEAKICNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8d3RmL0JpdFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KKyNp
bmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTk1LDcgKzk1LDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKIH07CiAK
IHN0cnVjdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSB7Ci0gICAgUmVmQ291bnRlZEFycmF5PGlu
dDMyX3Q+IGJyYW5jaE9mZnNldHM7CisgICAgRml4ZWRWZWN0b3I8aW50MzJfdD4gYnJhbmNoT2Zm
c2V0czsKICAgICBpbnQzMl90IG1pbjsKIAogICAgIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoaW50
MzJfdCB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgYWxsb3dE
aXJlY3RFdmFsQ2FjaGUoKSBjb25zdCB7IHJldHVybiAhKG1fZmVhdHVyZXMgJiBOb0V2YWxDYWNo
ZUZlYXR1cmUpOyB9CiAKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9l
eHByZXNzaW9uSW5mby5zaXplKCk7IH0KLSAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8RXhwcmVz
c2lvblJhbmdlSW5mbz4mIGV4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9leHByZXNzaW9uSW5m
bzsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+JiBleHByZXNz
aW9uSW5mbygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbkluZm87IH0KIAogICAgIGJvb2wgaGFzQ2hl
Y2twb2ludHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NoZWNrcG9pbnRzOyB9CiAgICAgdm9pZCBz
ZXRIYXNDaGVja3BvaW50cygpIHsgbV9oYXNDaGVja3BvaW50cyA9IHRydWU7IH0KQEAgLTE1Miwx
NyArMTUyLDE3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAK
ICAgICBzaXplX3QgbnVtYmVyT2ZJZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcnMuc2l6ZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcihpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcnNbaW5kZXhdOyB9Ci0gICAgY29uc3QgUmVm
Q291bnRlZEFycmF5PElkZW50aWZpZXI+JiBpZGVudGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcnM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxJZGVudGlmaWVyPiYgaWRlbnRp
ZmllcnMoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJzOyB9CiAKICAgICBCaXRWZWN0b3Im
IGJpdFZlY3RvcihzaXplX3QgaSkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVE
YXRhLT5tX2JpdFZlY3RvcnNbaV07IH0KIAotICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxXcml0
ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3Rh
bnRSZWdpc3RlcnM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93
bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnM7IH0K
ICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tyZWcudG9D
b25zdGFudEluZGV4KCldOyB9CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50
KFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNb
cmVnLnRvQ29uc3RhbnRJbmRleCgpXS5nZXQoKTsgfQotICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJh
eTxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24oKSB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsgfQor
ICAgIGNvbnN0IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50
c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOyB9CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNvbnN0YW50SWRlbnRp
ZmllclNldHMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9jb25z
dGFudElkZW50aWZpZXJTZXRzLnNpemUoKSA6IDA7IH0KLSAgICBjb25zdCBSZWZDb3VudGVkQXJy
YXk8SWRlbnRpZmllclNldD4mIGNvbnN0YW50SWRlbnRpZmllclNldHMoKSB7IEFTU0VSVChtX3Jh
cmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsgfQor
ICAgIGNvbnN0IEZpeGVkVmVjdG9yPElkZW50aWZpZXJTZXQ+JiBjb25zdGFudElkZW50aWZpZXJT
ZXRzKCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2NvbnN0YW50
SWRlbnRpZmllclNldHM7IH0KIAogICAgIC8vIEp1bXBzCiAgICAgc2l6ZV90IG51bWJlck9mSnVt
cFRhcmdldHMoKSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzLnNpemUoKTsgfQpAQCAtMjM0
LDcgKzIzNCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsg
fQogCi0gICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+
JiBvcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cygpIGNvbnN0CisgICAgY29uc3Qg
Rml4ZWRWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIG9wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3JhcmVE
YXRhKTsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dC
eXRlY29kZU9mZnNldHM7CkBAIC0zNzQsNyArMzc0LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3Vy
Y2VVUkxEaXJlY3RpdmU7CiAgICAgUGFja2VkUmVmUHRyPFN0cmluZ0ltcGw+IG1fc291cmNlTWFw
cGluZ1VSTERpcmVjdGl2ZTsKIAotICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOworICAgIEZpeGVkVmVjdG9yPEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJs
ZT4gbV9tZXRhZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IG1f
aW5zdHJ1Y3Rpb25zOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM+IG1fbGl2ZW5lc3M7CkBAIC0zODUsMTAgKzM4NSwxMCBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogI2VuZGlmCiAKICAgICAvLyBDb25zdGFudCBQb29scwot
ICAgIFJlZkNvdW50ZWRBcnJheTxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwotICAgIFJlZkNv
dW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7Ci0g
ICAgUmVmQ291bnRlZEFycmF5PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNT
b3VyY2VDb2RlUmVwcmVzZW50YXRpb247Ci0gICAgdXNpbmcgRnVuY3Rpb25FeHByZXNzaW9uVmVj
dG9yID0gUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4+OworICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CisgICAg
Rml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwor
ICAgIEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb247CisgICAgdXNpbmcgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9y
ID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPj47
CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5j
dGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlvbkV4cHJzOwogCkBAIC0zOTYsMjIgKzM5Niwy
MiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHN0cnVj
dCBSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAot
ICAgICAgICBSZWZDb3VudGVkQXJyYXk8VW5saW5rZWRIYW5kbGVySW5mbz4gbV9leGNlcHRpb25I
YW5kbGVyczsKKyAgICAgICAgRml4ZWRWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4gbV9leGNl
cHRpb25IYW5kbGVyczsKIAogICAgICAgICAvLyBKdW1wIFRhYmxlcwotICAgICAgICBSZWZDb3Vu
dGVkQXJyYXk8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKLSAg
ICAgICAgUmVmQ291bnRlZEFycmF5PFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIEZpeGVkVmVjdG9yPFVubGlua2VkU3Ry
aW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKLSAgICAgICAgUmVmQ291
bnRlZEFycmF5PEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25J
bmZvRmF0UG9zaXRpb25zOworICAgICAgICBGaXhlZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZv
OjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKIAogICAgICAgICBz
dHJ1Y3QgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlIHsKICAgICAgICAgICAgIHVuc2lnbmVk
IG1fc3RhcnREaXZvdDsKICAgICAgICAgICAgIHVuc2lnbmVkIG1fZW5kRGl2b3Q7CiAgICAgICAg
IH07CiAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5n
ZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0
czsKLSAgICAgICAgUmVmQ291bnRlZEFycmF5PEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOwotICAg
ICAgICBSZWZDb3VudGVkQXJyYXk8SWRlbnRpZmllclNldD4gbV9jb25zdGFudElkZW50aWZpZXJT
ZXRzOworICAgICAgICBGaXhlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29w
UHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzOworICAgICAgICBGaXhlZFZlY3RvcjxC
aXRWZWN0b3I+IG1fYml0VmVjdG9yczsKKyAgICAgICAgRml4ZWRWZWN0b3I8SWRlbnRpZmllclNl
dD4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogCiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50IDogMTsKQEAgLTQyOCw3ICs0MjgsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRP
ZkxpbmVKdW1wVGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURh
dGE7Ci0gICAgUmVmQ291bnRlZEFycmF5PEV4cHJlc3Npb25SYW5nZUluZm8+IG1fZXhwcmVzc2lv
bkluZm87CisgICAgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbz4gbV9leHByZXNzaW9u
SW5mbzsKIAogcHJvdGVjdGVkOgogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oCmluZGV4IGRkMWIzM2NkNzZhYTc2ZjZlODZhYmE3MjMwODVhMmU3NGZjNTAx
NTQuLjAwNDRhNjJkYzI1N2Q3YTk2ZTlmNWVhY2EwMDIxNDQ3N2YzMjIzMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oCkBAIC0zOCw4ICszOCw4IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjaW5j
bHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0y
MTksMTMgKzIxOSwxMyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkxEaXJlY3RpdmU7CiAg
ICAgICAgIFN0cmluZyBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7CiAgICAgICAgIFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7Ci0gICAgICAg
IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4gbV9jbGFzc0ZpZWxkTG9jYXRpb25zOwor
ICAgICAgICBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gbV9jbGFzc0ZpZWxkTG9jYXRpb25z
OwogICAgICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZp
cm9ubWVudDsKICAgICB9OwogCiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcj4obV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7IH0KIAot
ICAgIFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMo
KSBjb25zdAorICAgIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVs
ZExvY2F0aW9ucygpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAg
ICAgICAgIHJldHVybiAmbV9yYXJlRGF0YS0+bV9jbGFzc0ZpZWxkTG9jYXRpb25zOwpAQCAtMjM2
LDcgKzIzNiw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBpZiAoY2xhc3NGaWVsZExvY2F0aW9ucy5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9j
bGFzc0ZpZWxkTG9jYXRpb25zID0gUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0aW9uPihXVEZN
b3ZlKGNsYXNzRmllbGRMb2NhdGlvbnMpKTsKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX2Ns
YXNzRmllbGRMb2NhdGlvbnMgPSBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4oV1RGTW92ZShj
bGFzc0ZpZWxkTG9jYXRpb25zKSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA2YWQ3ZjVkMzk5YTUyYmEwM2U3MGZhOWJjZjU3ZTAxZmZiYTk3NzBhLi4zNWQ0Y2RhZmNm
MTZjMGIyYjBlMWM1ZjU5MGI1N2E0NjY3YmE5MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDA5
Miw3ICs0MDkyLDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN3aXRjaCgKICAg
ICBpbnQzMl90ICgqa2V5R2V0dGVyKShFeHByZXNzaW9uTm9kZSosIGludDMyX3QgbWluLCBpbnQz
Ml90IG1heCkpCiB7CiAgICAganVtcFRhYmxlLm1pbiA9IG1pbjsKLSAgICBqdW1wVGFibGUuYnJh
bmNoT2Zmc2V0cyA9IFJlZkNvdW50ZWRBcnJheTxpbnQzMl90PihtYXggLSBtaW4gKyAxKTsKKyAg
ICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IEZpeGVkVmVjdG9yPGludDMyX3Q+KG1heCAtIG1p
biArIDEpOwogICAgIHN0ZDo6ZmlsbChqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5iZWdpbigpLCBq
dW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5lbmQoKSwgMCk7CiAgICAgZm9yICh1aW50MzJfdCBpID0g
MDsgaSA8IGNsYXVzZUNvdW50OyArK2kpIHsKICAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhp
cyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbyAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggNWFlYmJmYWQ0ZTU5MDI3ZGZk
Yjg3OGViMjAyZTNiZjk5MDkyODY2Yy4uMDQxZWFkOWU3OTMwMDMxMzBhMWM4YmE1M2E3YTA5MTMx
MzczMjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTE1MSw3
ICsxNTEsNyBAQCBjbGFzcyBKSVRDb2RlIGZpbmFsIDogcHVibGljIERpcmVjdEpJVENvZGUgewog
ICAgIC8vCiAgICAgLy8gVGhlIGtleSBtYXkgbm90IGFsd2F5cyBiZSBhIHRhcmdldCBmb3IgT1NS
IEVudHJ5IGJ1dCB0aGUgbGlzdCBpbiB0aGUgdmFsdWUgaXMgZ3VhcmFudGVlZAogICAgIC8vIHRv
IGJlIHVzYWJsZSBmb3IgT1NSIEVudHJ5LgotICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgUmVm
Q291bnRlZEFycmF5PEJ5dGVjb2RlSW5kZXg+PiB0aWVyVXBJbkxvb3BIaWVyYXJjaHk7CisgICAg
SGFzaE1hcDxCeXRlY29kZUluZGV4LCBGaXhlZFZlY3RvcjxCeXRlY29kZUluZGV4Pj4gdGllclVw
SW5Mb29wSGllcmFyY2h5OwogCiAgICAgLy8gTWFwIGVhY2ggYnl0ZWNvZGUgb2YgQ2hlY2tUaWVy
VXBBbmRPU1JFbnRlciB0byBpdHMgc3RyZWFtIGluZGV4LgogICAgIEhhc2hNYXA8Qnl0ZWNvZGVJ
bmRleCwgdW5zaWduZWQ+IGJ5dGVjb2RlSW5kZXhUb1N0cmVhbUluZGV4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uaAppbmRleCBhYWVhNTg0YjA2MjBjNGEzZTE4NDVlZjFiY2E5NWZhMjMz
ZjAxM2U4Li4xMzA4ZmY0ODgyMzBiZTYyOTdmODExMWVmMjYwMDRjMmFiZDRhNGFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaApAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFBsYW4g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhbj4gewogICAgIGJvb2wgd2lsbFRyeVRv
VGllclVwKCkgY29uc3QgeyByZXR1cm4gbV93aWxsVHJ5VG9UaWVyVXA7IH0KICAgICB2b2lkIHNl
dFdpbGxUcnlUb1RpZXJVcChib29sIHdpbGxUcnlUb1RpZXJVcCkgeyBtX3dpbGxUcnlUb1RpZXJV
cCA9IHdpbGxUcnlUb1RpZXJVcDsgfQogCi0gICAgSGFzaE1hcDxCeXRlY29kZUluZGV4LCBSZWZD
b3VudGVkQXJyYXk8Qnl0ZWNvZGVJbmRleD4+JiB0aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSB7IHJl
dHVybiBtX3RpZXJVcEluTG9vcEhpZXJhcmNoeTsgfQorICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRl
eCwgRml4ZWRWZWN0b3I8Qnl0ZWNvZGVJbmRleD4+JiB0aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSB7
IHJldHVybiBtX3RpZXJVcEluTG9vcEhpZXJhcmNoeTsgfQogICAgIFZlY3RvcjxCeXRlY29kZUlu
ZGV4PiYgdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMoKSB7IHJldHVybiBtX3RpZXJVcEFuZE9T
UkVudGVyQnl0ZWNvZGVzOyB9CiAKICAgICBlbnVtIFN0YWdlIHsgUHJlcGFyaW5nLCBDb21waWxp
bmcsIFJlYWR5LCBDYW5jZWxsZWQgfTsKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBQbGFuIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYW4+IHsKICAgICBEZXNpcmVkR2xvYmFsUHJv
cGVydGllcyBtX2dsb2JhbFByb3BlcnRpZXM7CiAgICAgUmVjb3JkZWRTdGF0dXNlcyBtX3JlY29y
ZGVkU3RhdHVzZXM7CiAKLSAgICBIYXNoTWFwPEJ5dGVjb2RlSW5kZXgsIFJlZkNvdW50ZWRBcnJh
eTxCeXRlY29kZUluZGV4Pj4gbV90aWVyVXBJbkxvb3BIaWVyYXJjaHk7CisgICAgSGFzaE1hcDxC
eXRlY29kZUluZGV4LCBGaXhlZFZlY3RvcjxCeXRlY29kZUluZGV4Pj4gbV90aWVyVXBJbkxvb3BI
aWVyYXJjaHk7CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+IG1fdGllclVwQW5kT1NSRW50ZXJC
eXRlY29kZXM7CiAKICAgICBTdGFnZSBtX3N0YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXQuaAppbmRleCBhNjQxZWI3NGI2MWZhNDRkNzgxZWE1YjM5MjA1NzE1N2RiNTA0ODA3
Li40ZTI1MjM3NzAzMjYwNmUxYmNlMjM0YjI0ZTUyNjk4YmY2MWZmZGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaApAQCAtNjcsNiArNjcsOSBAQCBzdHJ1Y3QgT1NSRXhp
dERlc2NyaXB0b3JJbXBsOwogc3RydWN0IE9TUkV4aXRIYW5kbGU7CiAKIHN0cnVjdCBPU1JFeGl0
RGVzY3JpcHRvciB7Citwcml2YXRlOgorICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9TUkV4aXRE
ZXNjcmlwdG9yKTsKK3B1YmxpYzoKICAgICBPU1JFeGl0RGVzY3JpcHRvcigKICAgICAgICAgRGF0
YUZvcm1hdCBwcm9maWxlRGF0YUZvcm1hdCwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwK
ICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMsIHVuc2lnbmVkIG51bWJlck9mTG9j
YWxzLCB1bnNpZ25lZCBudW1iZXJPZlRtcHMpOwpAQCAtNzksNyArODIsNyBAQCBzdHJ1Y3QgT1NS
RXhpdERlc2NyaXB0b3IgewogICAgIERhdGFGb3JtYXQgbV9wcm9maWxlRGF0YUZvcm1hdDsKICAg
ICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1fdmFsdWVQcm9maWxlOwogICAgIAotICAg
IE9wZXJhbmRzPEV4aXRWYWx1ZT4gbV92YWx1ZXM7CisgICAgRml4ZWRPcGVyYW5kczxFeGl0VmFs
dWU+IG1fdmFsdWVzOwogICAgIEJhZzxFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbj4gbV9t
YXRlcmlhbGl6YXRpb25zOwogCiAgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJh
Y2tlZFJlZmVyZW5jZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5oCmluZGV4IDU4ZDg2NGQ3ODhiNzIwYWIyMDUzYWJlOWIyODc4YWE5
MThjOWUzMDguLjQ4YmVmYmM0ODdmY2EyNTcwYzY1YzkyOWY5NGQxOGU2Y2UxY2E5ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3Mg
TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRp
bmUgewogICAgIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJikg
ZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxKU0Nl
bGw+PiBtX2NlbGxzOworICAgIEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PiBtX2Nl
bGxzOwogICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA0ZWVhM2E1ZmU3NTFlODVhODhiODU4YjBhZmRiNDZh
NGFhZGRkYWRkLi43NzIxZGY1YTg0Y2FkYzNhNjUzYTRiZTg1NjY3MGUyYzBiMDRjM2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01MjAsOSArNTIwLDkgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7
CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CiAKLSAgICBSZWZDb3VudGVkQXJyYXk8UmFy
ZUNhc2VQcm9maWxlPiByYXJlQ2FzZVByb2ZpbGVzOworICAgIEZpeGVkVmVjdG9yPFJhcmVDYXNl
UHJvZmlsZT4gcmFyZUNhc2VQcm9maWxlczsKICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygp
KQotICAgICAgICByYXJlQ2FzZVByb2ZpbGVzID0gUmVmQ291bnRlZEFycmF5PFJhcmVDYXNlUHJv
ZmlsZT4obV9ieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2UpOworICAgICAgICByYXJlQ2FzZVBy
b2ZpbGVzID0gRml4ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlPihtX2J5dGVjb2RlQ291bnRIYXZp
bmdTbG93Q2FzZSk7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dD
YXNlID0gMDsKICAgICBmb3IgKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3IgaXRlciA9
IG1fc2xvd0Nhc2VzLmJlZ2luKCk7IGl0ZXIgIT0gbV9zbG93Q2FzZXMuZW5kKCk7KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmgKaW5kZXggNmMxM2YxMjYzMGExYjU5NjI5ZGQ5OTJhNDlmM2M3YWNiOGRkYjM3Ni4uMmMw
N2ZmYWFkN2YyMDQ5NDAyNWQyZmQzZTVmMDc2MGM5OWMxYmZkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApAQCAt
MTA5LDcgKzEwOSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIGZpbmFsIDog
cHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiAgICAgdm9pZCBtYXJrUmVxdWlyZWRPYmpl
Y3RzSW50ZXJuYWwoQWJzdHJhY3RTbG90VmlzaXRvciYpIGZpbmFsOwogICAgIHZvaWQgbWFya1Jl
cXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJikgZmluYWw7CiAKLSAgICBSZWZDb3Vu
dGVkQXJyYXk8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fdmFyaWFudHM7CisgICAgRml4ZWRWZWN0
b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fdmFyaWFudHM7CiAgICAgVW5pcXVlQXJyYXk8dWlu
dDMyX3Q+IG1fZmFzdENvdW50czsKICAgICBCYWc8UG9seW1vcnBoaWNDYWxsTm9kZT4gbV9jYWxs
Tm9kZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBjOGMyNjE1MjQzYWQ4YzBhNmRlZGQwZTBlZjM1NDVh
NDY3NDg3MTE3Li42ZGY0Njg1MGUyYzdlYjk2ODk4ZWM0YzU3ZmNiNzdkZDg3NWQyZDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3Igewog
ICAgIC8vIFRoZXNlIHR5cGVzIGFyZSB1c2VmdWwgc2luY2Ugd2UgY2FuJ3QgdXNlICc8Li4uPicg
c3ludGF4IGluIExMSW50IG9mZnNldHMgZXh0cmFjdGlvbi4gZS5nLiBWZWN0b3I8aW50Pjo6bV9k
YXRhCiAgICAgdXNpbmcgVmVjdG9yID0gV1RGOjpWZWN0b3I8aW50PjsKICAgICB1c2luZyBKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsID0gSlNDOjpKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD47
CisgICAgdXNpbmcgRml4ZWRWZWN0b3IgPSBXVEY6OkZpeGVkVmVjdG9yPGludD47CiAgICAgdXNp
bmcgUmVmQ291bnRlZEFycmF5ID0gV1RGOjpSZWZDb3VudGVkQXJyYXk8aW50PjsKIAogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IDM4MzM3ZDdkMTkwODRjZDVmNzI3NzZiNTZkZThkOTFjMjBlYzI4YWEuLmZm
YzRmNjI5MzllY2U3NDYyZTM5NzQwOWU3M2YxYmRjODE4ZGQwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE1NTAs
NyArMTU1MCw3IEBAIG1hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXAp
CiAgICAgYWRkcCAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mg
d2hhdCBoYXMgdGhlIHBlZXBob2xlCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAw
LCBvayBlbmQpCiAgICAgYnRweiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgUmVmQ291bnRlZEFycmF5OjptX2Rh
dGFbdDFdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMg
KyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDFdLCB0
MwogICAgIGJ0cHogdDMsIC5hcmd1bWVudFByb2ZpbGVEb25lICMgV2hlbiB3ZSBjYW4ndCBKSVQs
IHdlIGRvbid0IGFsbG9jYXRlIGFueSBhcmd1bWVudCB2YWx1ZSBwcm9maWxlcy4KICAgICBtdWxw
IHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCBy
ZWR1Y3Rpb24hCiAgICAgbHNoaWZ0cCAzLCB0MCAjIG9mZnNldCBvZiBsYXN0IEpTVmFsdWUgYXJn
dW1lbnRzIG9uIHRoZSBzdGFjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAppbmRleCBlOTkzOTRkY2Y4ZDg0NDBjNTVmYmI2ZjM2NjcyZmM2ZTJiMDdlOWYyLi5lYTIyZDBi
MWFjN2M2MDg0MWE2ODM1ZDQ5YjZhZmRlNjMxZGQyMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBKU1Rva2VuOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+Ci1FeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5lclJlc3Vs
dCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVy
JiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBSZWZDb3Vu
dGVkQXJyYXk8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zLCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcykKK0V4cGVjdGVkPHR5
cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBh
cnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0
aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCog
cGFyZW50U2NvcGVQcml2YXRlTmFtZXMpCiB7CiAgICAgQVNUQnVpbGRlciBjb250ZXh0KGNvbnN0
X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgY29uc3RfY2FzdDxTb3VyY2VDb2RlKj4o
bV9zb3VyY2UpKTsKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gc291cmNlUGFyc2VN
b2RlKCk7CkBAIC0zMTgwLDcgKzMxODAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NGaWVs
ZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IFJl
ZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4mIGNsYXNzRmllbGRMb2NhdGlvbnMpCit0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+JiBjbGFzc0ZpZWxk
TG9jYXRpb25zKQogewogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzb3VyY2VFbGVtZW50cyA9IGNv
bnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SXND
bGFzc1Njb3BlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA3Njhk
NzNkYjdiYjMwMTMyMTIzZGI2ODYxZTQ0N2E5MzBlZjcwNjYwLi4wOWFjN2MyNGRhNDVhNGU1NjRh
MDY3MDU0MTAyZTg5OTVmODE3ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAj
aW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCIKICNpbmNsdWRlICJWYXJpYWJsZUVu
dmlyb25tZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTk5Miw3ICs5OTIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIH5QYXJzZXIoKTsK
IAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5n
Q29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51
bGxwdHIsIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29u
c3QgSWRlbnRpZmllciYsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29u
c3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFByaXZh
dGVOYW1lRW52aXJvbm1lbnQqID0gbnVsbHB0ciwgY29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9z
aXRpb24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigp
IGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTE1MTIs
NyArMTUxMiw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJl
czsKICAgICAgICAgaW50IG51bUNvbnN0YW50czsKICAgICB9OwotICAgIEV4cGVjdGVkPFBhcnNl
SW5uZXJSZXN1bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgUGFyc2lu
Z0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiwgY29uc3QgUmVmQ291bnRlZEFycmF5PEpTVGV4dFBvc2l0aW9uPiosIGNvbnN0IFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKKyAgICBFeHBl
Y3RlZDxQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmll
ciYsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiosIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKIAog
ICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJv
b2wgaXNGdW5jdGlvbk1ldGFkYXRhTm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQpA
QCAtMTc0Myw3ICsxNzQzLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFzeW5jRnVuY3Rpb25Tb3VyY2VF
bGVtZW50cyhUcmVlQnVpbGRlciYsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24s
IFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgcGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVu
dHMoVHJlZUJ1aWxkZXImLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3Vy
Y2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIHBhcnNlU2luZ2xlRnVuY3Rpb24oVHJlZUJ1aWxkZXImLCBPcHRpb25hbDxp
bnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwotICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlQ2xhc3NGaWVs
ZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBjb25zdCBSZWZDb3VudGVk
QXJyYXk8SlNUZXh0UG9zaXRpb24+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVt
ZW50cyhUcmVlQnVpbGRlciYsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiYpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRl
bWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwg
dW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNv
bnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVu
Z3RoID0gbnVsbHB0cik7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5v
dEV4cG9ydGVkIH07CkBAIC0yMTI4LDcgKzIxMjgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci1z
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNl
ckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRl
eHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFt
ZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2Nv
cGVQcml2YXRlTmFtZXMsIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxKU1RleHRQb3NpdGlvbj4qIGNs
YXNzRmllbGRMb2NhdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2Fs
bGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVu
Y3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNvbnN0IEZpeGVkVmVjdG9yPEpT
VGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsK
ICAgICBTdHJpbmcgZXJyTXNnOwpAQCAtMjIyOSw3ICsyMjI5LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUg
PSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2Vy
UGFyc2VEYXRhID0gbnVsbHB0ciwKICAgICBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIsCi0gICAgY29uc3QgUmVmQ291bnRlZEFy
cmF5PEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCisgICAg
Y29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zID0g
bnVsbHB0ciwKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlKQogewog
ICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA1NmQxYWFk
NjdlOGE2MDQ3NzM3MTdmODY5YjI1MjY0Y2JmZmZmMmMzLi5lYjA1NTNhZmE0MThiZjhmOWNkMmY0
YmYyZTczZjkwODkzYTcyZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCkBAIC02MDMsNyArNjAzLDggQEAgcHRyZGlmZl90IENhY2hlZFdyaXRl
QmFycmllck9mZnNldHM6OnB0ck9mZnNldCgpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
SW5saW5lQ2FwYWNpdHkgPSAwLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIgPSBDcmFzaE9uT3Zl
cmZsb3csIHR5cGVuYW1lIE1hbGxvYyA9IFdURjo6VmVjdG9yTWFsbG9jPgogY2xhc3MgQ2FjaGVk
VmVjdG9yIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PFZlY3RvcjxTb3VyY2VUeXBlPFQ+
LCBJbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCAxNiwgTWFsbG9jPj4gewogcHVibGlj
OgotICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTb3VyY2VU
eXBlPFQ+LCBJbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCAxNiwgTWFsbG9jPiYgdmVj
dG9yKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvckNvbnRhaW5lcj4KKyAgICB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3JDb250YWluZXImIHZlY3RvcikKICAg
ICB7CiAgICAgICAgIG1fc2l6ZSA9IHZlY3Rvci5zaXplKCk7CiAgICAgICAgIGlmICghbV9zaXpl
KQpAQCAtNjEzLDM5ICs2MTQsMTcgQEAgY2xhc3MgQ2FjaGVkVmVjdG9yIDogcHVibGljIFZhcmlh
YmxlTGVuZ3RoT2JqZWN0PFZlY3RvcjxTb3VyY2VUeXBlPFQ+LCBJbmxpbmVDYXAKICAgICAgICAg
ICAgIDo6SlNDOjplbmNvZGUoZW5jb2RlciwgYnVmZmVyW2ldLCB2ZWN0b3JbaV0pOwogICAgIH0K
IAotICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZkNvdW50ZWRBcnJh
eTxTb3VyY2VUeXBlPFQ+PiYgdmVjdG9yKQotICAgIHsKLSAgICAgICAgbV9zaXplID0gdmVjdG9y
LnNpemUoKTsKLSAgICAgICAgaWYgKCFtX3NpemUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIFQqIGJ1ZmZlciA9IHRoaXMtPnRlbXBsYXRlIGFsbG9jYXRlPFQ+KGVuY29kZXIsIG1fc2l6
ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAg
ICAgICAgIDo6SlNDOjplbmNvZGUoZW5jb2RlciwgYnVmZmVyW2ldLCB2ZWN0b3JbaV0pOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVmVjdG9yPFNvdXJjZVR5cGU8VD4sIElubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIDE2LCBNYWxsb2M+JiB2ZWN0b3IsIEFyZ3MuLi4gYXJncykgY29uc3QKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZSBWZWN0b3JDb250YWluZXI+Cisg
ICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yQ29udGFpbmVyJiB2ZWN0b3Is
IEFyZ3MuLi4gYXJncykgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9zaXplKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB2ZWN0b3IucmVzaXplVG9GaXQobV9zaXplKTsKKyAgICAg
ICAgdmVjdG9yID0gVmVjdG9yQ29udGFpbmVyKG1fc2l6ZSk7CiAgICAgICAgIGNvbnN0IFQqIGJ1
ZmZlciA9IHRoaXMtPnRlbXBsYXRlIGJ1ZmZlcjxUPigpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCiAgICAgICAgICAgICA6OkpTQzo6ZGVjb2RlKGRlY29k
ZXIsIGJ1ZmZlcltpXSwgdmVjdG9yW2ldLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJl
ZkNvdW50ZWRBcnJheTxTb3VyY2VUeXBlPFQ+PiYgdmVjdG9yLCBBcmdzLi4uIGFyZ3MpIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAoIW1fc2l6ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgdmVjdG9yID0gUmVmQ291bnRlZEFycmF5PFNvdXJjZVR5cGU8VD4+KG1fc2l6ZSk7Ci0gICAg
ICAgIGNvbnN0IFQqIGJ1ZmZlciA9IHRoaXMtPnRlbXBsYXRlIGJ1ZmZlcjxUPigpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAgICAgICAgICA6OkpT
Qzo6ZGVjb2RlKGRlY29kZXIsIGJ1ZmZlcltpXSwgdmVjdG9yW2ldLCBhcmdzLi4uKTsKLSAgICB9
Ci0KLQogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAppbmRleCBk
NDYyZTdkOTlhNWVhMzc2ZGFiMGQzMTZlZDhmZGNlZWZkY2JjM2VkLi5kNjA2NTY1YjE5YjFkMjNl
YTcyODE3N2UzNjBkMjk5NzY2OGY5NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAtMzQsOCArMzQsOCBAQAog
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgogI2luY2x1ZGUgIldhc21DcmVhdGlvbk1v
ZGUuaCIKICNpbmNsdWRlICJXYXNtSW5zdGFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJh
eS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBX
cml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgV3Jp
dGVCYXJyaWVyPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKICAgICBX
cml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7Ci0gICAgUmVmQ291bnRl
ZEFycmF5PFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+PiBtX3RhYmxlczsKKyAgICBG
aXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPj4gbV90YWJsZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDVmMzBjOWE1NjEzN2IzYzMxZDMwZGJhYjUzMTkzOWViM2M4OThhNjIuLjY3
M2E5ZTZkZjliMjZhZTIzYmU5MmVlOGQwNzkzNTRhZmMxMWVhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQyLDYgKzc0Miw3IEBACiAJCUUzQkUwOUE2
MjRBNTg1NDUwMDlERjJCNCAvKiBJQ1VIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElD
VUhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0M1ODNDODI2MTI3
QUREMDBDNTc1NjggLyogUm9iaW5Ib29kSGFzaE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSb2Jpbkhv
b2RIYXNoTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0Y3NjkwMjExNUQ2
QkEwMDkxREU0OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbXBhY3RQb2ludGVyVHVwbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTNFMEYwNEYyNjE5NzE1NzAwNDY0MEZDIC8qIEZpeGVkVmVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZpeGVkVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBTeXN0ZW1GcmVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN5c3RlbUZyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNFNjRGMEIyMjgxMzQyODAwMUU1NUI0IC8qIE5vbm1vdmFibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTm9ubW92YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5RjJFNjIz
QUI5RTIzMDBCMjYxMjkgLyogVmVjdG9ySGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWZWN0b3JIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDM4
LDYgKzEwMzksNyBAQAogCQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRT
dHJlYW0uaCAqLywKIAkJCQlBMzMxRDk1QTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5j
cHAgKi8sCiAJCQkJQTMzMUQ5NTkyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uaCAqLywK
KwkJCQlFM0UwRjA0RjI2MTk3MTU3MDA0NjQwRkMgLyogRml4ZWRWZWN0b3IuaCAqLywKIAkJCQkw
RjJCNjZBNTE3QjZCNEY3MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCiAJCQkJRkU4NkE4NzQx
RTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8sCiAJCQkJQThBNDcy
QTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5k
ZXggZTFmYTU0NWE0MDE3OGVhMzIzNzA4OTM5NjNiYjRkYThlZjU4OGUxYy4uYTMwNTllOWJiZjZm
Y2UyMDIxNzFmYzQyNzBiZDE5NDhjOTQyMjlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTY5
LDYgKzY5LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIEZpbGVNZXRhZGF0YS5oCiAg
ICAgRmlsZVByaW50U3RyZWFtLmgKICAgICBGaWxlU3lzdGVtLmgKKyAgICBGaXhlZFZlY3Rvci5o
CiAgICAgRmxpcEJ5dGVzLmgKICAgICBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oCiAgICAgRm9yd2Fy
ZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOTZkY2NlMWNkYmMzODc0ZTM2MmIzNzAwYjI4
YTRmOTQ0MzM4NGFjNC4uNDNiNDQxMDQ0N2I4OTEwM2ViNGNhYjUwMGRiNTRiNzkwYjNlZjYwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtNDc5LDYgKzQ3OSwxMCBAQCBjbGFzcyBGYXN0Qml0
UmVmZXJlbmNlIHsKIGNsYXNzIEZhc3RCaXRWZWN0b3IgOiBwdWJsaWMgRmFzdEJpdFZlY3Rvcklt
cGw8RmFzdEJpdFZlY3RvcldvcmRPd25lcj4gewogcHVibGljOgogICAgIEZhc3RCaXRWZWN0b3Io
KSB7IH0KKyAgICBleHBsaWNpdCBGYXN0Qml0VmVjdG9yKHNpemVfdCBudW1CaXRzKQorICAgIHsK
KyAgICAgICAgZ3JvdyhudW1CaXRzKTsKKyAgICB9CiAgICAgCiAgICAgRmFzdEJpdFZlY3Rvcihj
b25zdCBGYXN0Qml0VmVjdG9yJikgPSBkZWZhdWx0OwogICAgIEZhc3RCaXRWZWN0b3ImIG9wZXJh
dG9yPShjb25zdCBGYXN0Qml0VmVjdG9yJikgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWRkZDk0ZGIzMGM3ZmI1MzM3OTE3YWU5ODc4YmUzYzZjYTNmMmQzOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKQEAgLTAsMCArMSwxMzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKKy8vIFdyYXBwZXIgYXJvdW5kIFJlZkNvdW50ZWRBcnJheSwgZml4ZWQtc2l6ZWQsIG1l
bW9yeSBjb21wYWN0IFZlY3Rvci4KKy8vIENvcHkgY29uc3RydWN0b3IgLyBhc3NpZ25tZW50IG9w
ZXJhdG9yIHdvcmsgZGlmZmVyZW50bHkgZnJvbSBSZWZDb3VudGVkQXJyYXk6IHdvcmtzIGFzIGxp
a2UgYSBWZWN0b3IuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgRml4ZWRWZWN0b3Igewor
cHVibGljOgorICAgIHVzaW5nIGl0ZXJhdG9yID0gVCo7CisgICAgdXNpbmcgY29uc3RfaXRlcmF0
b3IgPSBjb25zdCBUKjsKKyAgICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNl
X2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKyAgICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0g
c3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPjsKKworICAgIEZpeGVkVmVjdG9y
KCkgPSBkZWZhdWx0OworICAgIEZpeGVkVmVjdG9yKGNvbnN0IEZpeGVkVmVjdG9yJiBvdGhlcikK
KyAgICAgICAgOiBtX3N0b3JhZ2Uob3RoZXIubV9zdG9yYWdlLmNsb25lKCkpCisgICAgeyB9Cisg
ICAgRml4ZWRWZWN0b3IoRml4ZWRWZWN0b3ImJiBvdGhlcikgPSBkZWZhdWx0OworCisgICAgRml4
ZWRWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBGaXhlZFZlY3RvciYgb3RoZXIpCisgICAgeworICAg
ICAgICBGaXhlZFZlY3RvciB0bXAob3RoZXIpOworICAgICAgICBzd2FwKHRtcCk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBGaXhlZFZlY3RvciYgb3BlcmF0b3I9KEZpeGVk
VmVjdG9yJiYgb3RoZXIpCisgICAgeworICAgICAgICBGaXhlZFZlY3RvciB0bXAoV1RGTW92ZShv
dGhlcikpOworICAgICAgICBzd2FwKHRtcCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBGaXhlZFZlY3RvcihzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBtX3N0
b3JhZ2Uoc2l6ZSkKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0
eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIGV4cGxpY2l0IEZpeGVkVmVjdG9yKGNv
bnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIpCisg
ICAgICAgIDogbV9zdG9yYWdlKG90aGVyKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgRml4ZWRWZWN0
b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlcj4mIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9zdG9yYWdlID0gb3RoZXI7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmFnZS5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X3N0b3JhZ2UuaXNFbXB0eSgpOyB9CisgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlLmJ5dGVTaXplKCk7IH0KKworICAgIFQqIGRhdGEoKSB7IHJldHVybiBtX3N0
b3JhZ2UuZGF0YSgpOyB9CisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2Uu
YmVnaW4oKTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZS5lbmQoKTsg
fQorCisgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Rml4ZWRW
ZWN0b3IqPih0aGlzKS0+ZGF0YSgpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4odGhpcyktPmJlZ2luKCk7IH0KKyAg
ICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVj
dG9yKj4odGhpcyktPmVuZCgpOyB9CisKKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsg
cmV0dXJuIG1fc3RvcmFnZS5yYmVnaW4oKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgp
IHsgcmV0dXJuIG1fc3RvcmFnZS5yZW5kKCk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5yYmVnaW4oKTsgfQorICAgIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5yZW5kKCk7
IH0KKworICAgIFQmIGF0KHNpemVfdCBpKSB7IHJldHVybiBtX3N0b3JhZ2UuYXQoaSk7IH0KKyAg
ICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmF0KGkpOyB9
CisKKyAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQorICAgIGNv
bnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CisKKyAg
ICBUJiBmaXJzdCgpIHsgcmV0dXJuICgqdGhpcylbMF07IH0KKyAgICBjb25zdCBUJiBmaXJzdCgp
IGNvbnN0IHsgcmV0dXJuICgqdGhpcylbMF07IH0KKyAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0
aGlzKVtzaXplKCkgLSAxXTsgfQorICAgIGNvbnN0IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAo
KnRoaXMpW3NpemUoKSAtIDFdOyB9CisKKyAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKSB7IG1f
c3RvcmFnZS5maWxsKHZhbCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaXhlZFZl
Y3RvcjxUPiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA9PSBvdGhlci5tX3N0b3Jh
Z2U7IH0KKworICAgIHZvaWQgc3dhcChGaXhlZFZlY3RvcjxUPiYgb3RoZXIpCisgICAgeworICAg
ICAgICBtX3N0b3JhZ2Uuc3dhcChvdGhlci5tX3N0b3JhZ2UpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBSZWZD
b3VudGVkQXJyYXk8VD4gbV9zdG9yYWdlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEZpeGVk
VmVjdG9yPGludD4pID09IHNpemVvZihpbnQqKSk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citp
bmxpbmUgdm9pZCBzd2FwKEZpeGVkVmVjdG9yPFQ+JiBhLCBGaXhlZFZlY3RvcjxUPiYgYikKK3sK
KyAgICBhLnN3YXAoYik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkZp
eGVkVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAppbmRleCBlN2NiMDI1MTdhZTBiMzNl
ZDhmMjI2NDRmZDM3Njg0NmZmNTEwMTE5Li5iMDc5ZGY3NmMyYmM5MjY2YWQyYjE5MjMwZjlmMzE2
M2FiNDNhZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaApAQCAtNjYsNiArNjYsMTAgQEAg
Y2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICAgICAgOiBSZWZDb3VudGVkQXJyYXkoQ29tbW9u
Q29weUNvbnN0cnVjdG9yLCBvdGhlcikKICAgICB7IH0KIAorICAgIFJlZkNvdW50ZWRBcnJheShS
ZWZDb3VudGVkQXJyYXkmJiBvdGhlcikKKyAgICAgICAgOiBtX2RhdGEoUHRyVHJhaXRzOjpleGNo
YW5nZShvdGhlci5tX2RhdGEsIG51bGxwdHIpKQorICAgIHsgfQorCiAgICAgZXhwbGljaXQgUmVm
Q291bnRlZEFycmF5KHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgaWYgKCFzaXplKSB7CkBA
IC0yMTIsNiArMjE2LDE2IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgVCYgbGFzdCgp
IHsgcmV0dXJuICgqdGhpcylbc2l6ZSgpIC0gMV07IH0KICAgICBjb25zdCBUJiBsYXN0KCkgY29u
c3QgeyByZXR1cm4gKCp0aGlzKVtzaXplKCkgLSAxXTsgfQogCisgICAgdm9pZCBmaWxsKGNvbnN0
IFQmIHZhbCkKKyAgICB7CisgICAgICAgIHN0ZDo6ZmlsbChiZWdpbigpLCBlbmQoKSwgdmFsKTsK
KyAgICB9CisKKyAgICB2b2lkIHN3YXAoUmVmQ291bnRlZEFycmF5JiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIFB0clRyYWl0czo6c3dhcChtX2RhdGEsIG90aGVyLm1fZGF0YSk7CisgICAgfQorCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUcmFpdHMgPSBQdHJUcmFpdHM+CiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlZkNvdW50ZWRBcnJheTxULCBPdGhlclRyYWl0cz4mIG90aGVyKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmYTBhYzFkZWY4OGE3MDkyNjRkNDI0N2M0MmNlMjJhYjE3YTE2OWU2Li5lYmM3ZWQ1
NTY0M2M1YTJhYmJlMmQ3MGE1YmJlZTU0NDg4Y2Q4NjMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDQtMDYg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRy
b2R1Y2UgRml4ZWRWZWN0b3IgYW5kIHVzZSBpdCBmb3IgRml4ZWRPcGVyYW5kcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTcxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVk
VmVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6RGVzdHJ1Y3Rvck9ic2VydmVy
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6fkRlc3RydWN0
b3JPYnNlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6
Om9wZXJhdG9yPSk6CisKIDIwMjEtMDQtMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGlubGluZSBib3ggc3VwcG9y
dCAoUmVuZGVySW5saW5lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggM2Y3Y2Zm
ZGUyOTFjMmQ4MmRkMTI1MWJiZWM4YzgxMzExMjdmYmVmZS4uY2Q2N2NlNmFmYzg3YTkyOTgxODI4
YjQzZWE1MTY1N2NiNTVhNDEwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC00
NCw2ICs0NCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvRW51bVRyYWl0
cy5jcHAKICAgICBUZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCiAgICAgVGVzdHMvV1RGL0ZpbGVTeXN0
ZW0uY3BwCisgICAgVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcAogICAgIFRlc3RzL1dURi9GdW5j
dGlvbi5jcHAKICAgICBUZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCiAgICAgVGVzdHMvV1RG
L0hhc2hNYXAuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU2ZWNlZmVlNjFkNmQyYzY1
Mzc4NDA4YmZlN2VlZjk0NTY2ODJlOTIuLjgxZGY3YmM5YjcxZmVhNjZmNWUxOWU3ODE2NTk5NmE4
MTU3ODdmMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA5LDYgKzExMDksNyBAQAog
CQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2Fj
aGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJRTE5NEUx
QkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVz
cG9uc2UuaHRtbCAqLzsgfTsKIAkJRTMwMkJEQUEyNDA0QjkyNDAwODY1Mjc3IC8qIENvbXBhY3RS
ZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyogQ29tcGFjdFJlZlB0clR1cGxlLmNwcCAq
LzsgfTsKKwkJRTMyMTA1MTkyNjE5NzlGMzAwMTU3QzY3IC8qIEZpeGVkVmVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjEwNTE4MjYxOTc5
RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi87IH07CiAJCUUzMjRBNkYwMjA0MUM4MjAw
MEE3NjU5MyAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzk4QkMwRjIwNDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXku
Y3BwICovOyB9OwogCQlFMzI1QzkwNzIzRTM4NzAyMDBCQzdEM0IgLyogUGljdHVyZUluUGljdHVy
ZVN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzI1QzkwNjIzRTM4NzAyMDBCQzdEM0IgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQubW0g
Ki87IH07CiAJCUUzMkI1NDkyMjI4MTBBQzQwMDhBRDcwMiAvKiBQYWNrZWQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyQjU0OTEyMjgxMEFDMDAw
OEFENzAyIC8qIFBhY2tlZC5jcHAgKi87IH07CkBAIC0yOTAyLDYgKzI5MDMsNyBAQAogCQlFMTk0
RTFCQTE3N0U1MTQ1MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RvcExvYWRpbmdG
cm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3Bv
bnNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRt
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMwMkJEQTkyNDA0QjkyMzAwODY1Mjc3
IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb21wYWN0UmVmUHRyVHVwbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzIxMDUxODI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRml4ZWRWZWN0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzI1QzkwNjIzRTM4NzAyMDBCQzdEM0IgLyogUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJl
U3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyQjU0OTEyMjgxMEFD
MDAwOEFENzAyIC8qIFBhY2tlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWNrZWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRBNkQxODI0MTJERTM5MDAxMkFCNkUgLyog
R3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VzU2VydmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEdyYW50QWNjZXNzVG9QcmVmZXJlbmNlc1NlcnZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00MzcwLDYgKzQzNzIsNyBAQAogCQkJCTFBRjdCMjFEMUQ2Q0QxMkUwMDhDMTI2
QyAvKiBFbnVtVHJhaXRzLmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJBNTQ3MDAyNjg4OEIgLyog
RXhwZWN0ZWQuY3BwICovLAogCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lz
dGVtLmNwcCAqLywKKwkJCQlFMzIxMDUxODI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3Iu
Y3BwICovLAogCQkJCTkzMTBDRDM2MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJODNEQjc5NjcxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk3
QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovLApAQCAtNTEy
MSw2ICs1MTI0LDcgQEAKIAkJCQkxQUY3QjIxRjFENkNEMTREMDA4QzEyNkMgLyogRW51bVRyYWl0
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDdDNDM0RDFERDJBNTRFMDAyNjg4OEIgLyogRXhw
ZWN0ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8q
IEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyMTA1MTkyNjE5NzlGMzAwMTU3
QzY3IC8qIEZpeGVkVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMTBDRDM4MUVGNzA4
RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2QkZEMjk0QzFE
NUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZmQ5ZjA3NTliMTE2YzIyOWM5MTNhOTZhMDQzZGUxZDVmODAyMmI2Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCkBAIC0w
LDAgKzEsMjY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0Zp
eGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIEVtcHR5KQor
eworICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiBpbnRWZWN0b3I7CisgICAgRVhQRUNUX1RSVUUo
aW50VmVjdG9yLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKDBVLCBpbnRWZWN0b3Iuc2l6ZSgp
KTsKK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIEl0ZXJhdG9yKQoreworICAgIEZpeGVkVmVj
dG9yPHVuc2lnbmVkPiBpbnRWZWN0b3IoNCk7CisgICAgaW50VmVjdG9yWzBdID0gMTA7CisgICAg
aW50VmVjdG9yWzFdID0gMTE7CisgICAgaW50VmVjdG9yWzJdID0gMTI7CisgICAgaW50VmVjdG9y
WzNdID0gMTM7CisKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD46Oml0ZXJhdG9yIGl0ID0gaW50
VmVjdG9yLmJlZ2luKCk7CisgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjppdGVyYXRvciBlbmQg
PSBpbnRWZWN0b3IuZW5kKCk7CisgICAgRVhQRUNUX1RSVUUoZW5kICE9IGl0KTsKKworICAgIEVY
UEVDVF9FUSgxMFUsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTFVLCAqaXQpOwor
ICAgICsraXQ7CisgICAgRVhQRUNUX0VRKDEyVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVD
VF9FUSgxM1UsICppdCk7CisgICAgKytpdDsKKworICAgIEVYUEVDVF9UUlVFKGVuZCA9PSBpdCk7
Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBPdmVybG9hZGVkT3BlcmF0b3JBbXBlcnNhbmQp
Cit7CisgICAgc3RydWN0IFRlc3QgeworICAgIHByaXZhdGU6CisgICAgICAgIFRlc3QqIG9wZXJh
dG9yJigpID0gZGVsZXRlOworICAgIH07CisKKyAgICBGaXhlZFZlY3RvcjxUZXN0PiB2ZWN0b3Io
MSk7CisgICAgdmVjdG9yWzBdID0gVGVzdCgpOworfQorCitURVNUKFdURl9GaXhlZFZlY3Rvciwg
Q29weSkKK3sKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKKyAgICB2ZWMxWzBd
ID0gMDsKKyAgICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAgIEZpeGVkVmVj
dG9yPHVuc2lnbmVkPiB2ZWMyKHZlYzEpOworICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgM1Up
OworICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgM1UpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2ZWMxLnNpemUoKTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMxW2ldLCBp
KTsKKyAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworICAgIH0KKyAgICB2ZWMxWzJdID0g
NDI7CisgICAgRVhQRUNUX0VRKHZlYzFbMl0sIDQyVSk7CisgICAgRVhQRUNUX0VRKHZlYzJbMl0s
IDJVKTsKK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIENvcHlBc3NpZ24pCit7CisgICAgRml4
ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEoMyk7CisgICAgdmVjMVswXSA9IDA7CisgICAgdmVjMVsx
XSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVj
MjsKKyAgICB2ZWMyID0gdmVjMTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDNVKTsKKyAg
ICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDNVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdmVjMS5zaXplKCk7ICsraSkgeworICAgICAgICBFWFBFQ1RfRVEodmVjMVtpXSwgaSk7Cisg
ICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAgICB9CisgICAgdmVjMVsyXSA9IDQyOwor
ICAgIEVYUEVDVF9FUSh2ZWMxWzJdLCA0MlUpOworICAgIEVYUEVDVF9FUSh2ZWMyWzJdLCAyVSk7
Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlKQoreworICAgIEZpeGVkVmVjdG9yPHVu
c2lnbmVkPiB2ZWMxKDMpOworICAgIHZlYzFbMF0gPSAwOworICAgIHZlYzFbMV0gPSAxOworICAg
IHZlYzFbMl0gPSAyOworCisgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzIoV1RGTW92ZSh2
ZWMxKSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7CisgICAgRVhQRUNUX0VRKHZl
YzIuc2l6ZSgpLCAzVSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzIuc2l6ZSgp
OyArK2kpCisgICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKK30KKworVEVTVChXVEZfRml4
ZWRWZWN0b3IsIE1vdmVBc3NpZ24pCit7CisgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEo
Myk7CisgICAgdmVjMVswXSA9IDA7CisgICAgdmVjMVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7
CisKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKKyAgICB2ZWMyID0gV1RGTW92ZSh2
ZWMxKTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKKyAgICBFWFBFQ1RfRVEodmVj
Mi5zaXplKCksIDNVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMi5zaXplKCk7
ICsraSkKKyAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworfQorCitURVNUKFdURl9GaXhl
ZFZlY3RvciwgU3dhcCkKK3sKKyAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKKyAg
ICB2ZWMxWzBdID0gMDsKKyAgICB2ZWMxWzFdID0gMTsKKyAgICB2ZWMxWzJdID0gMjsKKworICAg
IEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyOworICAgIHZlYzIuc3dhcCh2ZWMxKTsKKyAgICBF
WFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKKyAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDNV
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMi5zaXplKCk7ICsraSkKKyAgICAg
ICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgSXRl
cmF0b3JGb3IpCit7CisgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEoMyk7CisgICAgdmVj
MVswXSA9IDA7CisgICAgdmVjMVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICB1bnNp
Z25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLmJlZ2luKCk7IGl0ZXIg
IT0gdmVjMS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIEVYUEVDVF9FUSgqaXRlciwgaW5kZXgp
OworICAgICAgICArK2luZGV4OworICAgIH0KK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIFJl
dmVyc2UpCit7CisgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEoMyk7CisgICAgdmVjMVsw
XSA9IDA7CisgICAgdmVjMVsxXSA9IDE7CisgICAgdmVjMVsyXSA9IDI7CisKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLnJiZWdpbigpOyBpdGVyICE9
IHZlYzEucmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgKytpbmRleDsKKyAgICAgICAgRVhQRUNU
X0VRKCppdGVyLCAzVSAtIGluZGV4KTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9y
LCBGaWxsKQoreworICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOworICAgIHZlYzEu
ZmlsbCg0Mik7CisKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogdmVjMSkKKyAgICAgICAgRVhQRUNU
X0VRKHZhbHVlLCA0MlUpOworfQorCitzdHJ1Y3QgRGVzdHJ1Y3Rvck9ic2VydmVyIHsKKyAgICBE
ZXN0cnVjdG9yT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIo
Ym9vbCogZGVzdHJ1Y3RlZCkKKyAgICAgICAgOiBkZXN0cnVjdGVkKGRlc3RydWN0ZWQpCisgICAg
eworICAgIH0KKworICAgIH5EZXN0cnVjdG9yT2JzZXJ2ZXIoKQorICAgIHsKKyAgICAgICAgaWYg
KGRlc3RydWN0ZWQpCisgICAgICAgICAgICAqZGVzdHJ1Y3RlZCA9IHRydWU7CisgICAgfQorCisg
ICAgRGVzdHJ1Y3Rvck9ic2VydmVyKERlc3RydWN0b3JPYnNlcnZlciYmIG90aGVyKQorICAgICAg
ICA6IGRlc3RydWN0ZWQob3RoZXIuZGVzdHJ1Y3RlZCkKKyAgICB7CisgICAgICAgIG90aGVyLmRl
c3RydWN0ZWQgPSBudWxscHRyOworICAgIH0KKworICAgIERlc3RydWN0b3JPYnNlcnZlciYgb3Bl
cmF0b3I9KERlc3RydWN0b3JPYnNlcnZlciYmIG90aGVyKQorICAgIHsKKyAgICAgICAgZGVzdHJ1
Y3RlZCA9IG90aGVyLmRlc3RydWN0ZWQ7CisgICAgICAgIG90aGVyLmRlc3RydWN0ZWQgPSBudWxs
cHRyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCogZGVzdHJ1Y3Rl
ZCB7IG51bGxwdHIgfTsKK307CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBEZXN0cnVjdG9yKQor
eworICAgIFZlY3Rvcjxib29sPiBmbGFncygzLCBmYWxzZSk7CisgICAgeworICAgICAgICBGaXhl
ZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+IHZlY3RvcihmbGFncy5zaXplKCkpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICB2ZWN0b3JbaV0gPSBEZXN0cnVjdG9yT2JzZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisK
K1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBEZXN0cnVjdG9yQWZ0ZXJNb3ZlKQoreworICAgIFZlY3Rv
cjxib29sPiBmbGFncygzLCBmYWxzZSk7CisgICAgeworICAgICAgICBGaXhlZFZlY3RvcjxEZXN0
cnVjdG9yT2JzZXJ2ZXI+IG91dGVyVmVjdG9yOworICAgICAgICB7CisgICAgICAgICAgICBGaXhl
ZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+IHZlY3RvcihmbGFncy5zaXplKCkpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgICAgIHZlY3RvcltpXSA9IERlc3RydWN0b3JPYnNlcnZlcigmZmxhZ3NbaV0pOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7CisgICAgICAgICAgICBvdXRlclZl
Y3RvciA9IFdURk1vdmUodmVjdG9yKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
ZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6
ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVFKGZsYWdzW2ldKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="commit-queue"
          id="445235"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>