<?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>238918</bug_id>
          
          <creation_ts>2022-04-06 19:08:35 -0700</creation_ts>
          <short_desc>[JSC] DFG / FTL should be aware of JSString&apos;s String replacement</short_desc>
          <delta_ts>2022-04-10 22:07:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zolkarnainhashim73</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1859117</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-06 19:08:35 -0700</bug_when>
    <thetext>[JSC] JSString::value should return String instead of reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859118</commentid>
    <comment_count>1</comment_count>
      <attachid>456881</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-06 19:09:30 -0700</bug_when>
    <thetext>Created attachment 456881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859381</commentid>
    <comment_count>2</comment_count>
      <attachid>456955</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-07 12:38:34 -0700</bug_when>
    <thetext>Created attachment 456955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859555</commentid>
    <comment_count>3</comment_count>
    <who name="Zolkarnain bin hashim">zolkarnainhashim73</who>
    <bug_when>2022-04-07 18:53:01 -0700</bug_when>
    <thetext>Slick</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859561</commentid>
    <comment_count>4</comment_count>
      <attachid>457004</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-07 19:30:05 -0700</bug_when>
    <thetext>Created attachment 457004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860170</commentid>
    <comment_count>5</comment_count>
      <attachid>457004</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-04-10 16:57:05 -0700</bug_when>
    <thetext>Comment on attachment 457004
Patch

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

Nice. r=me

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:3795
&gt; +        ASSERT(node-&gt;arrayMode().type() != Array::String);

Can we put this in DFGValidate? That is the more canonical place to put such things.

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1341
&gt; +        ASSERT(node-&gt;arrayMode().type() != Array::String);

ditto. I think just putting it in Validate is the right way

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2524
&gt; +    string-&gt;value(globalObject);

why not call JSRopeString-&gt;resolveRope here?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4775
&gt; +        ASSERT(m_node-&gt;arrayMode().type() != Array::String);

ditto about validation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860207</commentid>
    <comment_count>6</comment_count>
      <attachid>457004</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-10 21:50:50 -0700</bug_when>
    <thetext>Comment on attachment 457004
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:3795
&gt;&gt; +        ASSERT(node-&gt;arrayMode().type() != Array::String);
&gt; 
&gt; Can we put this in DFGValidate? That is the more canonical place to put such things.

Done. Nice

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1341
&gt;&gt; +        ASSERT(node-&gt;arrayMode().type() != Array::String);
&gt; 
&gt; ditto. I think just putting it in Validate is the right way

Ditto.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2524
&gt;&gt; +    string-&gt;value(globalObject);
&gt; 
&gt; why not call JSRopeString-&gt;resolveRope here?

Sounds good. Changed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4775
&gt;&gt; +        ASSERT(m_node-&gt;arrayMode().type() != Array::String);
&gt; 
&gt; ditto about validation

Nice, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860208</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-10 21:57:45 -0700</bug_when>
    <thetext>Committed r292697 (249489@trunk): &lt;https://commits.webkit.org/249489@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860209</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-10 22:07:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/91547350&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456881</attachid>
            <date>2022-04-06 19:09:30 -0700</date>
            <delta_ts>2022-04-07 12:38:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238918-20220406190929.patch</filename>
            <type>text/plain</type>
            <size>26589</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDRjODVjZjJiZTA3OWVjN2Y3NTllOWM4Zjk2YzU5YzRkNDgxYjUwLi5lZDFiZDUwOTY3YTMwNjY2
YWRhYjU4OWMyYzE2NjhmOTgxYmRmZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMi0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEpTU3RyaW5nOjp2YWx1ZSBzaG91bGQgcmV0dXJuIFN0cmluZyBp
bnN0ZWFkIG9mIHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4OTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBmaW5hbGx5IHNvbHZlcyBhIGxvdCBvZiBHQyBpc3N1ZXMgd2hlcmUg
dGhlIG93bmVyIGdvZXMgYXdheSB3aGlsZSB1c2luZyBzdHJpbmcuCisgICAgICAgIFRCRAorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1wbCk6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgICogcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6anNNYXBIYXNoSW1wbCk6CisgICAgICAgICogcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6bmFtZSk6
CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAg
KEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAg
KiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6dG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmltcG9ydE1v
ZHVsZSk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
U3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpjb21wdXRlTmV4dCk6CisgICAgICAgICogcnVudGltZS9KU1JlbW90ZUZ1
bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpK
U1N0cmluZzo6dmFsdWUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgor
ICAgICAgICAoSlNDOjpqc1N0cmluZyk6CisgICAgICAgIChKU0M6OmNvbXBhcmVCaWdJbnRUb090
aGVyUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6Y29tcGFyZUJpZ0ludDMyVG9PdGhlclByaW1p
dGl2ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAg
KEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVu
dGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisKIDIwMjItMDQtMDYgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbCBTdHJ1Y3R1cmU6OmdldCBpbnN0
ZWFkIG9mIFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5IG9uIHRoZSBtdXRhdG9yIHRocmVhZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFjMjA0YzM4MDg5ZmM4YmEyOWIxZmU2NWI4ZDQyNzE5MzNmMDA2NzguLmM3
MTFhNWZjZmJjNjU4YzAyYmQ0MzBlZGUzNTc2N2RjNGMzYWQ0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEpTU3RyaW5nOjp2YWx1ZSBzaG91bGQgcmV0dXJuIFN0cmluZyBp
bnN0ZWFkIG9mIHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4OTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
OjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKToKKwogMjAyMi0wNC0wNiAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2Ug
U1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCgpIGNyZWF0ZSBhbiBJbWFnZUJ1ZmZlciBj
b21wYXRpYmxlIHdpdGggdGhlIGRlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCA1YTZiZmJlMDZhYzk0NTI4ODRiZTI2MzA2Zjc5N2Q5Zjc5ZDhlMzIxLi5lMDIx
OWUzYWFmZjNjZTY4ZmRjZGZlNzMwMWI5ODU4M2IzNWRiNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtMTcyOSw3ICsxNzI5LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5
T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAgICAg
ICYmIHNyYzEtPmlzVGVtcG9yYXJ5KCkKICAgICAgICAgICAgICYmIHNyYzItPnZpcnR1YWxSZWdp
c3RlcigpLmlzQ29uc3RhbnQoKQogICAgICAgICAgICAgJiYgbV9jb2RlQmxvY2stPmNvbnN0YW50
UmVnaXN0ZXIoc3JjMi0+dmlydHVhbFJlZ2lzdGVyKCkpLmdldCgpLmlzU3RyaW5nKCkpIHsKLSAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhc1N0cmluZyhtX2NvZGVCbG9jay0+Y29u
c3RhbnRSZWdpc3RlcihzcmMyLT52aXJ0dWFsUmVnaXN0ZXIoKSkuZ2V0KCkpLT50cnlHZXRWYWx1
ZSgpOworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gYXNTdHJpbmcobV9jb2RlQmxvY2stPmNv
bnN0YW50UmVnaXN0ZXIoc3JjMi0+dmlydHVhbFJlZ2lzdGVyKCkpLmdldCgpKS0+dHJ5R2V0VmFs
dWUoKTsKICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAidW5kZWZpbmVkIikgewogICAgICAgICAg
ICAgICAgIHJld2luZCgpOwogICAgICAgICAgICAgICAgIE9wVHlwZW9mSXNVbmRlZmluZWQ6OmVt
aXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCmluZGV4IDE5OGFlOTE5OTJiNTE4OTc4ZDgyYTBkNDdlNTI2ZTFhNjc1
NWQ2NzkuLjZkNGQxMmVhM2JlZGM5N2Q5MzlhNDNmZmU3OGVlY2NmNDBkYmI1NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjUxNSw2ICsyNTE1
LDE1IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZXNvbHZlUm9wZSwgU3Ry
aW5nSW1wbCosIChKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgcmV0dXJuIHN0cmluZy0+dmFsdWUo
Z2xvYmFsT2JqZWN0KS5pbXBsKCk7CiB9CiAKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25SZXNvbHZlUm9wZUF0b20sIEF0b21TdHJpbmdJbXBsKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIHN0cmluZy0+dG9BdG9tU3RyaW5nKGdsb2JhbE9i
amVjdCkuaW1wbCgpOworfQorCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3Ry
aW5nVmFsdWVPZiwgSlNTdHJpbmcqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CkBAIC0yNjg1LDcgKzI2OTQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3U3ltYm9sV2l0aFN0cmluZ0Rlc2NyaXB0aW9uLCBTeW1ib2wqLCAoSlNHbAog
ICAgIFN0cmluZyBzdHJpbmcgPSBkZXNjcmlwdGlvbi0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIHJldHVybiBTeW1i
b2w6OmNyZWF0ZVdpdGhEZXNjcmlwdGlvbih2bSwgc3RyaW5nKTsKKyAgICByZXR1cm4gU3ltYm9s
OjpjcmVhdGVXaXRoRGVzY3JpcHRpb24odm0sIFdURk1vdmUoc3RyaW5nKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdTeW1ib2xXaXRoRGVzY3JpcHRpb24sIFN5
bWJvbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkRGVzY3JpcHRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAppbmRleCBmYmQ2ZDA5ZTQ2NzI1Zjk3M2JiZTg3ZDg2OGJmYzk0MDFkZTlhNzI2Li4wOGQwZGM4
NTJmMzZiOTFkMDgzYWE1OTRkMWM3NjQwYWUyNWQ5Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjM0LDYgKzIzNCw3IEBAIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uRW5zdXJlRG91YmxlLCBjaGFyKiwgKFZNKiwgSlNDZWxsKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzLCBj
aGFyKiwgKFZNKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25FbnN1cmVBcnJheVN0b3JhZ2UsIGNoYXIqLCAoVk0qLCBKU0NlbGwqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVSb3BlLCBTdHJpbmdJbXBsKiwgKEpTR2xv
YmFsT2JqZWN0KiwgSlNTdHJpbmcqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblJlc29sdmVSb3BlQXRvbSwgQXRvbVN0cmluZ0ltcGwqLCAoSlNHbG9iYWxPYmplY3QqLCBK
U1N0cmluZyopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nLCBKU1N0cmluZyosIChWTSosIGludDMyX3QpKTsKIAogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25TdHJpbmdTdWJzdHIsIEpTQ2VsbCosIChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCosIGludDMyX3QsIGludDMyX3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYjBmZTBkN2U3YTU3NzRmNzc4
MTRkOTgzNWQzOTYyMThjZjM1MzkyNS4uYzEwMmY4YzFjN2Q3YTRlODM5ZDUxOTAwNWFhYjAyNTI1
NmFjMTU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTgzNTYsMTYgKzgzNTYsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc3Rv
cmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5hcnJheU1v
ZGUoKS50eXBlKCkpIHsKLSAgICBjYXNlIEFycmF5OjpTdHJpbmc6CisgICAgY2FzZSBBcnJheTo6
U3RyaW5nOiB7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHN0b3JhZ2VSZWcpOworCisgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzdG9yYWdlUmVnKSk7CisgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVy
bywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmZsYWdzT2Zm
c2V0KCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9t
KCkpKSk7CiAgICAgICAgIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hJZlJvcGVTdHJp
bmdJbXBsKHN0b3JhZ2VSZWcpLAotICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJhdGlvblJlc29s
dmVSb3BlLCBzdG9yYWdlUmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZykp
OworICAgICAgICAgICAgICAgIHNsb3dDYXNlcywKKyAgICAgICAgICAgICAgICB0aGlzLCBvcGVy
YXRpb25SZXNvbHZlUm9wZUF0b20sIHN0b3JhZ2VSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlUmVnLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBzdG9yYWdlUmVn
KTsKICAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgZGVmYXVsdDogewogICAgICAgICBhdXRv
IHR5cGVkQXJyYXlUeXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBmZmI4
MzVjNjQwMTRiYTk5MDRiNzU2YjI3NGY0YmI3ODJmZTdmY2Y2Li43ZjcwNjQxMWQ5ODIyZDQyY2Uw
ZmUyZWFiYTg4MjAyZTEyY2MwN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC00NzcyLDE2ICs0NzcyLDIzIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkg
PT0gQXJyYXk6OlN0cmluZykgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgYXRvbVBhdGggPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKIAogICAgICAgICAgICAgTFZhbHVlIGZhc3RSZXN1bHRWYWx1ZSA9IG1f
b3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CiAgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc1JvcGVTdHJpbmcoY2Vs
bCwgbV9ub2RlLT5jaGlsZDEoKSksIHJhcmVseShzbG93UGF0aCksIHVzdWFsbHkoY29udGludWF0
aW9uKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNSb3BlU3RyaW5nKGNlbGwsIG1fbm9k
ZS0+Y2hpbGQxKCkpLCByYXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5KGF0b21QYXRoKSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGF0b21QYXRoLCBzbG93UGF0aCk7CisgICAgICAgICAgICBt
X291dC5icmFuY2goCisgICAgICAgICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAorICAgICAg
ICAgICAgICAgICAgICBtX291dC5sb2FkMzIoZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLlN0cmlu
Z0ltcGxfaGFzaEFuZEZsYWdzKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQz
MihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkpKSwKKyAgICAgICAgICAgICAgICByYXJlbHkoc2xv
d1BhdGgpLCB1bnN1cmUoY29udGludWF0aW9uKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvblJlc29sdmVSb3BlLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBj
ZWxsKSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9u
KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblJlc29sdmVSb3BlQXRvbSwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgY2VsbCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKaW5kZXggOGY1MzIzNDdhNjNm
ZWQ5MzBjNTY1ZjdmNjkwZWYxOWRhNjlkMmQ2OC4uODA4NGQ3NzE3NDhjYWY0MzI1YTczNWU1N2M0
MmRlMmU5OTdiZGM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGFzaE1hcEltcGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGFzaE1hcEltcGxJbmxpbmVzLmgKQEAgLTkzLDcgKzkzLDcgQEAgQUxXQVlTX0lOTElORSB1aW50
MzJfdCBqc01hcEhhc2hJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
SlNWYWwKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB3dGZTdHJp
bmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFN0cmlu
ZyB3dGZTdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoZXhwZWN0aW9uID09IEV4Y2VwdGlvbkV4cGVjdGF0aW9uOjpDYW5U
aHJvdykKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFVJTlRfTUFYKTsK
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcAppbmRleCAwMWJjMDg2YWY4NDk4MGY4NmEwNGJiMmFkZDliNThhMTRk
YmU2MTg5Li40NGY5ZjJhYjA0NzU0NmI4MTM0NzM1YjMzZjI3NzU4MzJkZDQzOGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApA
QCAtODIsMTQgKzgyLDE0IEBAIHZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbklt
cGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiBERUZJTkVfVklTSVRfQ0hJTERS
RU5fV0lUSF9NT0RJRklFUihKU19FWFBPUlRfUFJJVkFURSwgSW50ZXJuYWxGdW5jdGlvbik7CiAK
LWNvbnN0IFN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZSgpCitTdHJpbmcgSW50ZXJuYWxG
dW5jdGlvbjo6bmFtZSgpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gbV9vcmlnaW5hbE5h
bWUtPnRyeUdldFZhbHVlKCk7CiAgICAgQVNTRVJUKG5hbWUpOyAvLyBtX29yaWdpbmFsTmFtZSB3
YXMgYnVpbHQgZnJvbSBhIFN0cmluZywgYW5kIGhlbmNlLCB0aGVyZSBpcyBubyByb3BlIHRvIHJl
c29sdmUuCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLWNvbnN0IFN0cmluZyBJbnRlcm5hbEZ1bmN0
aW9uOjpkaXNwbGF5TmFtZShWTSYgdm0pCitTdHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6ZGlzcGxh
eU5hbWUoVk0mIHZtKQogewogICAgIEpTVmFsdWUgZGlzcGxheU5hbWUgPSBnZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKICAgICAKQEAgLTEyMyw5ICsxMjMsOSBA
QCBDYWxsRGF0YSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2Vs
bCkKICAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKIH0KIAotY29uc3QgU3RyaW5nIEludGVybmFs
RnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYgdm0pCitTdHJpbmcgSW50ZXJuYWxG
dW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiB2bSkKIHsKLSAgICBjb25zdCBTdHJp
bmcgZXhwbGljaXROYW1lID0gZGlzcGxheU5hbWUodm0pOworICAgIFN0cmluZyBleHBsaWNpdE5h
bWUgPSBkaXNwbGF5TmFtZSh2bSk7CiAgICAgCiAgICAgaWYgKCFleHBsaWNpdE5hbWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IGE1YjgzNTU4YWM0NjNjYTJk
Y2Q4NDYzOTM4MWY0NmYxODJjYzBkYzguLmJjMjk4MThjOWIzMDQ3NDUzZjczMzczM2Q0ZGUzNDdk
YTBiYzRlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU5fV0lU
SF9NT0RJRklFUihKU19FWFBPUlRfUFJJVkFURSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBj
b25zdCBTdHJpbmcmIG5hbWUoKTsKLSAgICBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWUoVk0mKTsK
LSAgICBjb25zdCBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoKTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUoVk0mKTsK
KyAgICBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJik7CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgIHsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCmluZGV4IGVjNzc4NThiY2Q5NDFhZTJhNmUzNGQyZGJm
MTVjNjgzYWQ2ZmM3NTMuLjUxZGRmZTRjNTRiMWY4NjQwZGM3MzJmZjVmMTk2NWM3MmIzYzM2ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5o
CkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBK
U0Z1bmN0aW9uIHsKICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzKCkgeyByZXR1
cm4gbV9ib3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8gYmUg
bXV0YXRlZCEKICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgSlNTdHJpbmcqIG5hbWVNYXlCZU51bGwoKSB7IHJldHVybiBtX25hbWVNYXlCZU51bGwuZ2V0
KCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHJpbmcoKQorICAgIFN0cmluZyBuYW1lU3Ry
aW5nKCkKICAgICB7CiAgICAgICAgIGlmICghbV9uYW1lTWF5QmVOdWxsKQogICAgICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA3OTI2NzYzY2Q1NjVkZWJiMWEwYjFjOWNmMTdm
ZDMwOTIxNDQ4NjZhLi4zN2VjYjI1MzUwZDUyYThjZjdjYmE1ZTAwNDdiYThkNTVhZWQ3ODRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKQEAgLTgzOSw3ICs4MzksNyBAQCBpbmxpbmUgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0b1By
ZWZlcnJlZFByaW1pdGl2ZVR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgICAgICBy
ZXR1cm4gTm9QcmVmZXJlbmNlOwogICAgIH0KIAotICAgIFN0cmluZ0ltcGwqIGhpbnRTdHJpbmcg
PSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkuaW1wbCgpOworICAgIFN0cmlu
ZyBoaW50U3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE5vUHJlZmVyZW5jZSk7CiAKICAgICBpZiAoV1RG
OjplcXVhbChoaW50U3RyaW5nLCAiZGVmYXVsdCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGUzZjAzYTRjMDhmODQ2OTNiMTY0
NDBmODFhN2NlYTdkNjg4ZWRhY2MuLjA3ZTcyY2YzOTcyNGFhNzEzOTg3NzJmZmU2M2E0NzkyZjZj
NGQ4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxv
YWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVM
b2FkZXI6OmltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHByb21pc2UtPnJlamVjdFdpdGhDYXVnaHRFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHByb21pc2UtPnJlamVjdChnbG9iYWxPYmplY3QsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwg
bWFrZVN0cmluZygiQ291bGQgbm90IGltcG9ydCB0aGUgbW9kdWxlICciLCBtb2R1bGVOYW1lU3Ry
aW5nLCAiJy4iKSkpOworICAgIHByb21pc2UtPnJlamVjdChnbG9iYWxPYmplY3QsIGNyZWF0ZUVy
cm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQgbm90IGltcG9ydCB0aGUgbW9kdWxl
ICciLCBXVEZNb3ZlKG1vZHVsZU5hbWVTdHJpbmcpLCAiJy4iKSkpOwogICAgIHJldHVybiBwcm9t
aXNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09O
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CmluZGV4IGJmOTA2YTI3ZjgzNTk3MGM4NTU5OTBkMDUyYjNkZTNjNjk4YWFhZDQuLjg4YTdlMjU0
YmVmMGM0NDA2OTlkMDczYjdkNGNiZjgzNzIyMjkyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zNzEsNyArMzcxLDcgQEAgU3RyaW5naWZp
ZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShT
dHJpbmdCdWlsZGVyJgogICAgIH0KIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShtX2dsb2Jh
bE9iamVjdCk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVl
KG1fZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3Ry
aW5naWZ5RmFpbGVkKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKHN0
cmluZyk7CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmNwcAppbmRleCA1MjUwOWJiNmU0NzIxNDMwYTJhYjEwY2QzMzg2YmU0MzFhZWI2MzQ4Li5iZTg3
Y2ZlZmU3NWQwN2ZkMDQ2OWJhYjJjN2IzODBmOTZiYTYwN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5j
cHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBKU1N0cmluZyogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
Ojpjb21wdXRlTmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKGluZGV4IDwgZW5kU3RydWN0dXJlUHJvcGVy
dHlJbmRleCgpICYmIGJhc2UtPnN0cnVjdHVyZUlEKCkgPT0gY2FjaGVkU3RydWN0dXJlSUQoKSkK
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGF1dG8gaWQgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCBuYW1lLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAg
IGF1dG8gaWQgPSBuYW1lLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKGJh
c2UtPmhhc0VudW1lcmFibGVQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkKSkKICAgICAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UmVtb3RlRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVtb3Rl
RnVuY3Rpb24uaAppbmRleCA4YTJmM2NhMmI0MWIyM2NkZGIxNWZkN2RkMWYxOGNmNmEzNzNkNzY4
Li4wYjI3YjIwMmRkNDc3MTliNzU0NzQ4ODUxYTUzY2U0Y2NiN2EwMDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JlbW90ZUZ1bmN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZW1vdGVGdW5jdGlvbi5oCkBAIC01OCw3ICs1
OCw3IEBAIGNsYXNzIEpTUmVtb3RlRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7
CiAgICAgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gbV90YXJnZXRGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEpTR2xvYmFsT2JqZWN0KiB0YXJnZXRHbG9iYWxPYmplY3QoKSB7IHJl
dHVybiB0YXJnZXRGdW5jdGlvbigpLT5nbG9iYWxPYmplY3QoKTsgfQogICAgIEpTU3RyaW5nKiBu
YW1lTWF5QmVOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lTWF5QmVOdWxsLmdldCgpOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBuYW1lU3RyaW5nKCkKKyAgICBTdHJpbmcgbmFtZVN0cmluZygpCiAg
ICAgewogICAgICAgICBpZiAoIW1fbmFtZU1heUJlTnVsbCkKICAgICAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5k
ZXggNzUwYjg3NjI2NmJiMDJiMjJlZjk5ZTMyMTAxY2UxODAxZGU4NjFiYy4uMDA3OTJlMTZjN2Fl
NmI2MDA5YTc4ZWU3MWNmYTZjYTgzNWRjM2I2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCkBAIC0xOTYsNyArMTk2LDcgQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgdmlld1dpdGhV
bmRlcmx5aW5nU3RyaW5nKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICBpbmxpbmUgYm9v
bCBlcXVhbChKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiBvdGhlcikgY29uc3Q7Ci0gICAgY29u
c3QgU3RyaW5nJiB2YWx1ZShKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIFN0cmluZyB2YWx1
ZShKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIGlubGluZSBjb25zdCBTdHJpbmcmIHRyeUdl
dFZhbHVlKGJvb2wgYWxsb2NhdGlvbkFsbG93ZWQgPSB0cnVlKSBjb25zdDsKICAgICBjb25zdCBT
dHJpbmdJbXBsKiBnZXRWYWx1ZUltcGwoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmdJbXBsKiB0
cnlHZXRWYWx1ZUltcGwoKSBjb25zdDsKQEAgLTgzMCw3ICs4MzAsNyBAQCBBTFdBWVNfSU5MSU5F
IFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gSlNTdHJpbmc6OnRvRXhpc3RpbmdBdG9tU3RyaW5nKEpT
R2xvYmFsT2JqZQogICAgIHJldHVybiBBdG9tU3RyaW5nSW1wbDo6bG9va1VwKHZhbHVlSW50ZXJu
YWwoKS5pbXBsKCkpOwogfQogCi1pbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6dmFsdWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK2lubGluZSBTdHJpbmcgSlNTdHJp
bmc6OnZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYg
Y29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykKICAgICAgICAgdm0oKS52ZXJpZnlDYW5HQygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDMwZDA4
MWQwY2UzY2JhYjU0MDlmZGY3NDk4YmExZTUxNTJlMTUzYmQuLjI3ZmNhN2YwYWY0ZjQxYzEwNzVh
Mzc3NzdjZjUzMWU1YzY1MDgyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmgKQEAgLTEwMyw5ICsxMDMsOSBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBq
c1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHUxLAog
ICAgICAgICByZXR1cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUodm0sIGpzU3RyaW5nKHZtLCB1MSks
IHMyKTsKIAogICAgIEFTU0VSVCghczItPmlzUm9wZSgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHUy
ID0gczItPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgU3RyaW5nIHUyID0gczItPnZhbHVlKGds
b2JhbE9iamVjdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBTdHJpbmcg
bmV3U3RyaW5nID0gdHJ5TWFrZVN0cmluZyh1MSwgdTIpOworICAgIFN0cmluZyBuZXdTdHJpbmcg
PSB0cnlNYWtlU3RyaW5nKHUxLCBXVEZNb3ZlKHUyKSk7CiAgICAgaWYgKCFuZXdTdHJpbmcpIHsK
ICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzNiw5ICsxMzYsOSBAQCBBTFdBWVNfSU5MSU5FIEpT
U3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyog
czEsIGNvbgogICAgICAgICByZXR1cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUodm0sIHMxLCBqc1N0
cmluZyh2bSwgdTIpKTsKIAogICAgIEFTU0VSVCghczEtPmlzUm9wZSgpKTsKLSAgICBjb25zdCBT
dHJpbmcmIHUxID0gczEtPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgU3RyaW5nIHUxID0gczEt
PnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAg
ICBTdHJpbmcgbmV3U3RyaW5nID0gdHJ5TWFrZVN0cmluZyh1MSwgdTIpOworICAgIFN0cmluZyBu
ZXdTdHJpbmcgPSB0cnlNYWtlU3RyaW5nKFdURk1vdmUodTEpLCB1Mik7CiAgICAgaWYgKCFuZXdT
dHJpbmcpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwOSw3ICszMDksNyBAQCBBTFdBWVNf
SU5MSU5FIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVCaWdJbnRUb090aGVyUHJp
bWl0aXZlKEpTR2xvYmFsTwogICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAg
ICBTdHJpbmcgc3RyaW5nID0gYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6OkNvbXBhcmlz
b25SZXN1bHQ6OlVuZGVmaW5lZCk7Ci0gICAgICAgIEpTVmFsdWUgYmlnSW50VmFsdWUgPSBKU0Jp
Z0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBzdHJpbmcpOworICAgICAgICBKU1Zh
bHVlIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShzdHJpbmcpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNC
aWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7CiAgICAgICAgIGlmICghYmlnSW50
VmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVu
ZGVmaW5lZDsKQEAgLTM0OSw3ICszNDksNyBAQCBBTFdBWVNfSU5MSU5FIEpTQmlnSW50OjpDb21w
YXJpc29uUmVzdWx0IGNvbXBhcmVCaWdJbnQzMlRvT3RoZXJQcmltaXRpdmUoSlNHbG9iYQogICAg
IGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBTdHJpbmcgc3RyaW5nID0gYXNT
dHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7
Ci0gICAgICAgIEpTVmFsdWUgYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQo
Z2xvYmFsT2JqZWN0LCBzdHJpbmcpOworICAgICAgICBKU1ZhbHVlIGJpZ0ludFZhbHVlID0gSlNC
aWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdHJpbmcpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1
bHQ6OlVuZGVmaW5lZCk7CiAgICAgICAgIGlmICghYmlnSW50VmFsdWUpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKaW5kZXggMWQx
OTJhMzdiMWVhYTA5YjIwNWZmOGRiZTM3NGY5ZDFmMjA3MGMzZS4uYTkxZDIwZmYzYjAwMDE1YmE5
MjJmOGNjY2E1MGI1MDk1ZTVjZGVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBpbmxpbmUg
SlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTU3RyaW5nKgogICAgIFN0cmluZyBpbnB1dCA9IHN0cmluZy0+dmFsdWUoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkodm0sIGdsb2Jh
bE9iamVjdCwgc3RyaW5nLCBpbnB1dCwgcmVnRXhwLCBzdGFydE9mZnNldCwgaWdub3JlZFJlc3Vs
dCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlUmVnRXhwTWF0Y2hlc0Fy
cmF5KHZtLCBnbG9iYWxPYmplY3QsIHN0cmluZywgV1RGTW92ZShpbnB1dCksIHJlZ0V4cCwgc3Rh
cnRPZmZzZXQsIGlnbm9yZWRSZXN1bHQpKTsKIH0KIEpTQXJyYXkqIGNyZWF0ZUVtcHR5UmVnRXhw
TWF0Y2hlc0FycmF5KEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBSZWdFeHAqKTsKIFN0cnVj
dHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCmluZGV4IDYxZGNmNTNlMmQ5YTgzNGJhMjY2MzJkNzc5YTQ2YTg4ODhhYjg2ZTcuLjMw
MjMxNGY5ODQxZWE3NzQxZWQ0NWNjYzU5Y2FlZDFlOTQzZDUyMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNzA5LDcgKzcw
OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNS
ZXBsYWNlUmVnRXhwRW1wdHlTdHIsIEpTQ2VsbCosCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICBTdHJpbmcgc291cmNlID0gdGhpc1ZhbHVlLT52
YWx1ZShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZW1vdmVVc2luZ1Jl
Z0V4cFNlYXJjaCh2bSwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIHNvdXJjZSwgcmVnRXhwKSk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVtb3ZlVXNpbmdSZWdFeHBTZWFy
Y2godm0sIGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBXVEZNb3ZlKHNvdXJjZSksIHJlZ0V4cCkp
OwogICAgIH0KIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBTdHJpbmcgbG93ZXJjYXNlZFN0cmluZyA9IHMu
Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOwogICAgIGlmIChsb3dlcmNhc2VkU3Ry
aW5nLmltcGwoKSA9PSBzLmltcGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
VmFsKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgbG93ZXJjYXNlZFN0cmluZykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgV1RGTW92ZShsb3dlcmNhc2VkU3RyaW5n
KSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN0cmluZ1Byb3RvRnVuY1RvVXBw
ZXJDYXNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQpAQCAtMTUwMiw3ICsxNTAyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN0cmlu
Z1Byb3RvRnVuY1RvVXBwZXJDYXNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBT
dHJpbmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2Fs
ZSgpOwogICAgIGlmICh1cHBlcmNhc2VkU3RyaW5nLmltcGwoKSA9PSBzLmltcGwoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgdXBwZXJjYXNlZFN0cmluZykpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2
bSwgV1RGTW92ZSh1cHBlcmNhc2VkU3RyaW5nKSkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjZkOGY5Zjc0ZDcw
NDk0OTYyYzMwNzY2OWFkN2U4OTg5NDg2MjIxYi4uYTRiZTI5NzkwZTFlYzljYzY0N2ZhODFmODM4
ZDViZmY1ZmU3MmJhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihzeW1ib2xDb25zdHJ1Y3RvckZvciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhCiAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmluZ0tleS0+dmFsdWUoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIHZtLnN5bWJv
bFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cmluZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCB2bS5zeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktl
eShXVEZNb3ZlKHN0cmluZykpKSk7CiB9CiAKIGNvbnN0IEFTQ0lJTGl0ZXJhbCBTeW1ib2xLZXlG
b3JUeXBlRXJyb3IgeyAiU3ltYm9sLmtleUZvciByZXF1aXJlcyB0aGF0IHRoZSBmaXJzdCBhcmd1
bWVudCBiZSBhIHN5bWJvbCJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCmluZGV4IGE3NDY2Yzk3MjRmNGQ5MDk5MzI1MzEzMGFiZjExZjhjMTE4MGFiODEu
LjhjOWZlMjJkMGZiYWRiODdmODViOTAxZjIwYjUxYWQ3NjRkMzA4ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTMxNTAsNyArMzE1MCw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4sIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgU3RyaW5nIGZ1bmN0aW9uVGV4dCA9IGFzU3RyaW5n
KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgU291cmNlQ29k
ZSBzb3VyY2UgPSBtYWtlU291cmNlKGZ1bmN0aW9uVGV4dCwgeyB9KTsKKyAgICBTb3VyY2VDb2Rl
IHNvdXJjZSA9IG1ha2VTb3VyY2UoV1RGTW92ZShmdW5jdGlvblRleHQpLCB7IH0pOwogICAgIEpT
RnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVj
dXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb28iX3MpLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkt
Pmxpbmsodm0sIG51bGxwdHIsIHNvdXJjZSksIGdsb2JhbE9iamVjdCk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGZ1bmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggNTdkMGI2NDk5ODVmZTA2YzI3NDg1YmE3YmY2YmY3ODFm
MjQyODc4Ny4uZWZhMjUyOGZmYmJiNGU3YjlhM2VlYzFjNTI2YmMyZmNlOGRhYjA3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yNzIs
NyArMjcyLDEwIEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNh
ZmVFdmFsKEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIEpTU3RyCiAgICAgaWYgKCFjb250ZW50U2Vj
dXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRlbnRTZWN1cml0eVBvbGlj
eS0+YWxsb3dFdmFsKG9iamVjdCwgTG9nVG9Db25zb2xlOjpObywgc291cmNlID8gc291cmNlLT50
cnlHZXRWYWx1ZSgpIDogU3RyaW5nVmlldygpKTsKKyAgICBTdHJpbmcgc291cmNlU3RyaW5nOwor
ICAgIGlmIChzb3VyY2UpCisgICAgICAgIHNvdXJjZVN0cmluZyA9IHNvdXJjZS0+dHJ5R2V0VmFs
dWUoKTsKKyAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPmFsbG93RXZhbChvYmplY3QsIExvZ1Rv
Q29uc29sZTo6Tm8sIHNvdXJjZVN0cmluZyk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjp3
aWxsUmVtb3ZlRnJvbVdpbmRvd1Byb3h5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456955</attachid>
            <date>2022-04-07 12:38:34 -0700</date>
            <delta_ts>2022-04-07 19:30:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238918-20220407123833.patch</filename>
            <type>text/plain</type>
            <size>52939</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDRjODVjZjJiZTA3OWVjN2Y3NTllOWM4Zjk2YzU5YzRkNDgxYjUwLi4xZmQ0YTkzZWE4NTA3NGYx
MzMxZWM5ZDBjNDdhNWU2NjhlYTI4Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMi0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERGRyAvIEZUTCBzaG91bGQgYmUgYXdhcmUgb2YgSlNTdHJpbmcn
cyBTdHJpbmcgcmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODkxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1wbCk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgor
ICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y2hl
Y2tBcnJheSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNTdG9yYWdlQ2hpbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0
b3JhZ2VDaGlsZEluZGV4KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hhckNvZGVBdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdCk6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVj
a0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5n
UGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6
REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudEFycmF5Q2hlY2tz
KToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZXNv
bHZlUm9wZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVT
dHJpbmdDaGFyQXRJbXBsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVN0cmluZ0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQpOgorICAgICAgICAqIHJ1bnRpbWUvSGFz
aE1hcEltcGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmpzTWFwSGFzaEltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFs
RnVuY3Rpb246Om5hbWUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5
TmFtZSk6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5
TmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgICog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OnRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
TG9hZGVyOjppbXBvcnRNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y29tcHV0ZU5leHQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNSZW1vdGVGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5o
OgorICAgICAgICAoSlNDOjpqc1N0cmluZyk6CisgICAgICAgIChKU0M6OmNvbXBhcmVCaWdJbnRU
b090aGVyUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6Y29tcGFyZUJpZ0ludDMyVG9PdGhlclBy
aW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAg
ICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElP
Tik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICog
cnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisKIDIwMjItMDQtMDYgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbCBTdHJ1Y3R1cmU6OmdldCBp
bnN0ZWFkIG9mIFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5IG9uIHRoZSBtdXRhdG9yIHRocmVh
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDBkN2M2ZmI1YmFmNzNkOGI4N2NjOTMyMmNjNmYwZWMxNjI2YmRhN2Yu
LjZjOTEzMDZiZDNiMDUwY2Q1ZDM4YjMwMzA2ZDYwMTVjMzg2M2UwYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMi0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtKU0NdIERGRyAvIEZUTCBzaG91bGQgYmUgYXdhcmUgb2YgSlNTdHJp
bmcncyBTdHJpbmcgcmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODkxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
QmFzZTo6cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbCk6CisKIDIwMjItMDQtMDcgIE1hdHQg
V29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KIAogICAgICAgICBHcmlkIGl0ZW1zIHRo
YXQgZXN0YWJsaXNoIGFuIGluZGVwZW5kZW50IGZvcm1hdHRpbmcgY29udGV4dCBzaG91bGQgbm90
IGJlIHN1YmdyaWRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA1YTZiZmJlMDZhYzk0NTI4ODRiZTI2
MzA2Zjc5N2Q5Zjc5ZDhlMzIxLi5lMDIxOWUzYWFmZjNjZTY4ZmRjZGZlNzMwMWI5ODU4M2IzNWRi
NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTcyOSw3ICsxNzI5LDcgQEAgYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjMSwgUmUKICAgICAgICAgICAgICYmIHNyYzEtPmlzVGVtcG9yYXJ5KCkKICAgICAgICAg
ICAgICYmIHNyYzItPnZpcnR1YWxSZWdpc3RlcigpLmlzQ29uc3RhbnQoKQogICAgICAgICAgICAg
JiYgbV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXIoc3JjMi0+dmlydHVhbFJlZ2lzdGVyKCkp
LmdldCgpLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBh
c1N0cmluZyhtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT52aXJ0dWFsUmVnaXN0
ZXIoKSkuZ2V0KCkpLT50cnlHZXRWYWx1ZSgpOworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0g
YXNTdHJpbmcobV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXIoc3JjMi0+dmlydHVhbFJlZ2lz
dGVyKCkpLmdldCgpKS0+dHJ5R2V0VmFsdWUoKTsKICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAi
dW5kZWZpbmVkIikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwogICAgICAgICAgICAgICAg
IE9wVHlwZW9mSXNVbmRlZmluZWQ6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCAwZjYwYjkzN2ZhZDk2NTdmMDk3NWMyMGExMDMxYzQ2ZmUyZWFhMjE0
Li5kYWQyOTIyZTJlMTI4Mjc3MGZlNTJiOTFiY2EzOWU4YzE3MzY3Y2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCkBAIC0zNzkyLDYgKzM3OTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7
CisgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6OlN0cmlu
Zyk7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xk
YWJsZVZpZXcoCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlLCBu
b2RlLT5hcnJheU1vZGUoKSk7CiAgICAgICAgIGlmICh2aWV3KQpAQCAtMzc5OSw2ICszODAwLDIy
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGNsZWFyRm9yTm9kZShub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgUmVzb2x2ZVJvcGU6IHsKKyAgICAgICAg
SlNWYWx1ZSBjaGlsZENvbnN0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAg
ICAgICAgaWYgKGNoaWxkQ29uc3QgJiYgY2hpbGRDb25zdC5pc1N0cmluZygpICYmICFhc1N0cmlu
ZyhjaGlsZENvbnN0KS0+aXNSb3BlKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
ICptX2dyYXBoLmZyZWV6ZShjaGlsZENvbnN0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5T
cGVjU3RyaW5nSWRlbnQpKSB7CisgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0
YW50Rm9sZGluZyh0cnVlKTsKKyAgICAgICAgICAgIHNldEZvck5vZGUobm9kZSwgZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjU3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjogewogICAgICAgICBjbGVhckZvck5v
ZGUobm9kZSk7CiAgICAgICAgIGJyZWFrOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKaW5kZXggNjdiMDEwYmMyZjIxZTExNTQ2ZjIxYWViOTVkZWNkOGVlOTNmZDZi
NS4uMWVmYzI1ZjViNzdlMmM1YzhlOGE3MWQ5NzM5ZTYyMjg2OWU0NGMyMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzMzgsMTQgKzEzMzgsMTUgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6Ci0gICAgICAgIGlmIChub2RlLT5hcnJheU1v
ZGUoKS50eXBlKCkgPT0gQXJyYXk6OlN0cmluZykgewotICAgICAgICAgICAgZGVmKFB1cmVWYWx1
ZShub2RlLCBub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CisgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgIT0g
QXJyYXk6OlN0cmluZyk7CiAgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihI
ZWFwTG9jYXRpb24oSW5kZXhlZFByb3BlcnR5U3RvcmFnZUxvYywgTWlzY0ZpZWxkcywgbm9kZS0+
Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisK
KyAgICBjYXNlIFJlc29sdmVSb3BlOgorICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAg
ICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5
Qnl0ZU9mZnNldExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2Rl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCmluZGV4IDI5ODVhNzZkNmJhNmM1Y2FkMzkyMDZkOWQ2MzQ3OGEzYmViZTUy
NzguLjUxZTliZWRhODZjNzIyZTVkNzJhYzhlYTg0NjQxNjYwMjU3MjhmNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CkBAIC04OTcsNiArODk3LDE1IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgY2FzZSBSZXNvbHZlUm9wZTogeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjU3RyaW5nSWRlbnQpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRl
bnRpdHkoKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBUb051bWJlcjoKICAg
ICAgICAgICAgIGNhc2UgQ2FsbE51bWJlckNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAg
aWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNCeXRlY29k
ZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBlMTJk
NGM2MmExY2I3ODAwMGVhZjJlZDFkN2FmMTU1NzU2NDU5YTJlLi41ZGRjYzc0ZWE5MTlhODEzNjQ0
ZDg3NmMxMDRlNmExMDA5MDNmNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCkBAIC01MDEsMTIgKzUwMSwxNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlOgorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBjYXNlIEdldEJ5VmFs
OgogICAgIGNhc2UgRW51bWVyYXRvckdldEJ5VmFsOgogICAgICAgICBpZiAobm9kZS0+YXJyYXlN
b2RlKCkudHlwZSgpID09IEFycmF5OjpTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgY2FzZSBSZXNvbHZlUm9wZToKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKICAgICBjYXNlIEVudW1lcmF0b3JOZXh0RXh0cmFjdE1vZGU6CiAgICAg
Y2FzZSBFbnVtZXJhdG9yTmV4dEV4dHJhY3RJbmRleDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggM2VjMjQy
ZTkwMjVmYTA5MGQ4MjNhZmFlN2UwZTRhYzc1ZGY2YTkwYS4uNTk4ODIyMjk4YzhkNTU0NWUxMWI4
YzdmZjU5ODQ5MjQ3N2NhMTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDogewogICAgICAgICAg
ICAgLy8gQ3VycmVudGx5IHdlIGhhdmUgbm8gZ29vZCB3YXkgb2YgcmVmaW5pbmcgdGhlc2UuCiAg
ICAgICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkgPT0gQXJyYXlNb2RlKEFycmF5OjpT
dHJpbmcsIEFycmF5OjpSZWFkKSk7Ci0gICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5v
ZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAg
ICAgYmxlc3NBcnJheU9wZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIG5v
ZGUtPmNoaWxkMSgpKTsgLy8gUmV3cml0ZSBjaGlsZDEgd2l0aCBSZXNvbHZlUm9wZS4KICAgICAg
ICAgICAgIGZpeEVkZ2U8S25vd25TdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTA4Myw3ICsxMDgzLDExIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBi
bGVzc0FycmF5T3BlcmF0aW9uKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSksIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAg
ICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6U3RyaW5nKSB7
CisgICAgICAgICAgICAgICAgLy8gUmV3cml0ZSBmaXJzdCBjaGlsZCB3aXRoIFJlc29sdmVSb3Bl
LgorICAgICAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVyYXRpb24obV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwgbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBibGVz
c0FycmF5T3BlcmF0aW9uKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMSksIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gbm9kZS0+YXJyYXlNb2Rl
KCk7CiAgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKQEAgLTIyMDIsNiAr
MjIwNiwxMSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBSZXNvbHZlUm9wZTogeworICAgICAg
ICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBQaGk6CiAgICAgICAgIGNhc2UgVXBz
aWxvbjoKICAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKQEAgLTM3MDUsNiArMzcxNCw5IEBAIGNs
YXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4sIEVkZ2UoYXJyYXksIENlbGxV
c2UpKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkg
PT0gQXJyYXk6OlN0cmluZykKKyAgICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUmVzb2x2ZVJvcGUsIG9yaWdpbiwgRWRn
ZShhcnJheSwgS25vd25DZWxsVXNlKSk7CisKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCiAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UsIG9yaWdpbiwKICAgICAgICAgICAgIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBLbm93bkNlbGxVc2UpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKaW5kZXggYWIxNGRiNmI1ZDk0ODI3YzQ3YWNkZjBhNTE2NWI3YjM2NzI4
ZDBmZS4uOWFjOTJmODRhOTE3MmFlYmU2ZTVjNDBlYmRlMGQyZWQ5YjVjNTE2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE5NjUsOSArMTk2NSw2IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICBib29sIGhhc1N0b3JhZ2VDaGlsZCgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6Ci0gICAgICAgIGNhc2UgU3Ry
aW5nQ2hhckNvZGVBdDoKLSAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICAgICAg
Y2FzZSBFbnVtZXJhdG9yR2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAg
IGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0yMDAwLDkgKzE5OTcsNiBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzU3RvcmFnZUNoaWxkKCkpOwogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKLSAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6Ci0gICAgICAgIGNhc2UgU3Ry
aW5nQ2hhckNvZGVBdDoKLSAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICAgICAg
Y2FzZSBFbnVtZXJhdG9yR2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAg
ICAgICByZXR1cm4gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRl
eCAxMWU0NmViMzdiN2U0NTJkOWZhYWU3ZDJmOThkN2Q2ZjA5MWY5NmNiLi44Zjg4NWI1NzA2NjUw
ZmE5NDI3MDcxZjBmNGEwMGU0MDA1YjI4NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCkBAIC0yNTEsNiArMjUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIG1hY3JvKEFycmF5aWZ5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oQXJyYXlpZnlUb1N0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVSZXN1bHRTdG9yYWdlKSBcCisgICAgbWFjcm8o
UmVzb2x2ZVJvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENvbnN0YW50U3RvcmFnZVBv
aW50ZXIsIE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oR2V0R2V0dGVyLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhHZXRTZXR0ZXIsIE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMTk4YWU5MTk5MmI1MTg5
NzhkODJhMGQ0N2U1MjZlMWE2NzU1ZDY3OS4uZGQwNTk4NGVmMzhmMjhlN2IyMmRiYWVkNjIwZjYz
YWIwZTljNDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCkBAIC0yNTE1LDYgKzI1MTUsMTYgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblJlc29sdmVSb3BlLCBTdHJpbmdJbXBsKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBy
ZXR1cm4gc3RyaW5nLT52YWx1ZShnbG9iYWxPYmplY3QpLmltcGwoKTsKIH0KIAorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVSb3BlU3RyaW5nLCBKU1N0cmluZyosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIHN0cmluZy0+dmFsdWUoZ2xvYmFs
T2JqZWN0KTsKKyAgICByZXR1cm4gc3RyaW5nOworfQorCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uU3RyaW5nVmFsdWVPZiwgSlNTdHJpbmcqLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yNjg1LDcgKzI2OTUsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3U3ltYm9sV2l0aFN0cmluZ0Rlc2NyaXB0aW9uLCBT
eW1ib2wqLCAoSlNHbAogICAgIFN0cmluZyBzdHJpbmcgPSBkZXNjcmlwdGlvbi0+dmFsdWUoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAot
ICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZVdpdGhEZXNjcmlwdGlvbih2bSwgc3RyaW5nKTsKKyAg
ICByZXR1cm4gU3ltYm9sOjpjcmVhdGVXaXRoRGVzY3JpcHRpb24odm0sIFdURk1vdmUoc3RyaW5n
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdTeW1ib2xXaXRo
RGVzY3JpcHRpb24sIFN5bWJvbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkRGVzY3JpcHRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAppbmRleCBmYmQ2ZDA5ZTQ2NzI1Zjk3M2JiZTg3ZDg2OGJmYzk0MDFk
ZTlhNzI2Li43Y2I4OTQ4YTkyYTEzMTE3NjEyNTk5MGI5NzYwNjEyZDk5YTI3YzgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjM0LDYgKzIzNCw3IEBA
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW5zdXJlRG91YmxlLCBjaGFyKiwg
KFZNKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnN1
cmVDb250aWd1b3VzLCBjaGFyKiwgKFZNKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UsIGNoYXIqLCAoVk0qLCBKU0NlbGwq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVSb3BlLCBTdHJp
bmdJbXBsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVSb3BlU3RyaW5nLCBKU1N0cmluZyosIChKU0dsb2Jh
bE9iamVjdCosIEpTU3RyaW5nKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcsIEpTU3RyaW5nKiwgKFZNKiwgaW50MzJfdCkpOwogCiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblN0cmluZ1N1YnN0ciwgSlNDZWxsKiwg
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgaW50MzJfdCwgaW50MzJfdCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAppbmRleCBiMDE1Mzg1YjRkZjA3NmY1YTlkZTYzYzUyNGYxOTZjMzEzZTM1MDZl
Li40NzRiMjZjZDdiOTU1ZDI0ZTdkODRmODQwOWVlMmUzNGE5Mjg4OTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcApAQCAtMTA3OCw2ICsxMDc4LDEwIEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBSZXNvbHZlUm9wZToKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY1N0cmluZyk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIENoZWNrSlND
YXN0OgogICAgICAgICBjYXNlIENoZWNrTm90SlNDYXN0OgogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDliNzgz
MWExMTYyMzE0M2YzYzdiOTAxYmM2M2RmMzU2ZjliOWYyM2UuLjg2MDlhNTZjZWYyYjgxMjc3YzNm
ZmU5YmMxZDQzZjJmNmJjZjUzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCkBAIC0zMjAsNiArMzIwLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGln
bm8KICAgICBjYXNlIERhdGVHZXRUaW1lOgogICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CiAgICAg
Y2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAgIGNhc2UgUmVzb2x2ZVJvcGU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGIwZmUwZDdlN2E1Nzc0Zjc3
ODE0ZDk4MzVkMzk2MjE4Y2YzNTM5MjUuLmMyNTRjOTNiYWM0ZWQxMzRhMGVjZjA5NWQ1ZDg0Y2Uy
NGI0OTIwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCkBAIC0yODc3LDExICsyODc3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldENoYXJDb2RlQXQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzdHJpbmcodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMy
T3BlcmFuZCBpbmRleCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgU3RvcmFnZU9wZXJhbmQg
c3RvcmFnZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAKICAgICBHUFJSZWcgc3RyaW5nUmVnID0g
c3RyaW5nLmdwcigpOwogICAgIEdQUlJlZyBpbmRleFJlZyA9IGluZGV4LmdwcigpOwotICAgIEdQ
UlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICAKICAgICBBU1NFUlQoc3BlY3Vs
YXRpb25DaGVja2VkKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlLCBTcGVj
U3RyaW5nKSk7CiAKQEAgLTI4OTYsMTIgKzI4OTQsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldENoYXJDb2RlQXQoTm9kZSogbm9kZSkKICAgICAvLyBMb2FkIHRoZSBjaGFyYWN0
ZXIgaW50byBzY3JhdGNoUmVnCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0
LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihT
dHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsKIAotICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgaW5kZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c09uZSwgMCksIHNjcmF0Y2hSZWcpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6ZGF0YU9mZnNldCgpKSwgc2NyYXRjaFJl
Zyk7CisgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNoUmVn
LCBpbmRleFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lLCAwKSwgc2NyYXRjaFJlZyk7CiAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgY29udDhCaXQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBpczE2
Qml0LmxpbmsoJm1faml0KTsKIAotICAgIG1faml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KHN0b3JhZ2VSZWcsIGluZGV4UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDAp
LCBzY3JhdGNoUmVnKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHNjcmF0Y2hSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOworICAg
IG1faml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2hSZWcsIGluZGV4
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIGNv
bnQ4Qml0LmxpbmsoJm1faml0KTsKIApAQCAtMjkxMiwxMCArMjkxMiw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3Bl
ZExhbWJkYTxzdGQ6CiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dy
YXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJv
cGVydHkodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAxKSk7Ci0gICAgU3RvcmFnZU9wZXJhbmQg
c3RvcmFnZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDIpKTsKICAgICBHUFJSZWcgYmFzZVJl
ZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7
Ci0gICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOwogCiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVnczsKICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTI5MzMsMTIgKzI5MzEs
MTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSog
bm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDoKICAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIg
aW50byBzY3JhdGNoUmVnCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJp
bmdJbXBsOjpmbGFnSXM4Qml0KCkpKTsKIAotICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c09uZSwgMCksIHNjcmF0Y2hSZWcpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6ZGF0YU9mZnNldCgpKSwgc2NyYXRjaFJl
Zyk7CisgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNoUmVn
LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lLCAwKSwgc2NyYXRjaFJlZyk7
CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgY29udDhCaXQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBp
czE2Qml0LmxpbmsoJm1faml0KTsKIAotICAgIG1faml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNU
d28sIDApLCBzY3JhdGNoUmVnKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHNjcmF0Y2hSZWcp
OworICAgIG1faml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2hSZWcs
IHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBzY3JhdGNoUmVnKTsK
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wIGJpZ0NoYXJhY3RlciA9CiAgICAgICAgIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc2NyYXRjaFJlZywgVHJ1c3RlZEltbTMyKG1h
eFNpbmdsZUNoYXJhY3RlclN0cmluZykpOwpAQCAtODM1NSwyOSArODM1NSwzNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKiBub2Rl
KQogICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVn
ID0gc3RvcmFnZS5ncHIoKTsKICAgICAKLSAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSkgewotICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKLSAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgp
KSwgc3RvcmFnZVJlZyk7Ci0gICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigK
LSAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hJ
ZlJvcGVTdHJpbmdJbXBsKHN0b3JhZ2VSZWcpLAotICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJh
dGlvblJlc29sdmVSb3BlLCBzdG9yYWdlUmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZykpOworICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6
OlN0cmluZyk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlUmVnLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKLSAg
ICAgICAgYnJlYWs7CisgICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPmFycmF5TW9kZSgp
LnR5cGVkQXJyYXlUeXBlKCk7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlZEFycmF5VHlwZSwgaXNU
eXBlZFZpZXcodHlwZWRBcnJheVR5cGUpKTsKIAotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgYXV0
byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7Ci0g
ICAgICAgIEFTU0VSVF9VTlVTRUQodHlwZWRBcnJheVR5cGUsIGlzVHlwZWRWaWV3KHR5cGVkQXJy
YXlUeXBlKSk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHN0b3JhZ2VSZWcpOworICAg
IGNhZ2VUeXBlZEFycmF5U3RvcmFnZShiYXNlUmVnLCBzdG9yYWdlUmVnKTsKKyAgICBzdG9yYWdl
UmVzdWx0KHN0b3JhZ2VSZWcsIG5vZGUpOworfQogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVj
dG9yKCkpLCBzdG9yYWdlUmVnKTsKLSAgICAgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKGJhc2VS
ZWcsIHN0b3JhZ2VSZWcpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVJlc29sdmVSb3BlKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKIAotICAgIHN0b3JhZ2VSZXN1bHQoc3RvcmFnZVJlZywgbm9kZSk7
CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCByZXN1bHRHUFIpOworCisg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHJlc3VsdEdQUikpOworICAgIG1faml0Lm1v
dmUoYmFzZUdQUiwgcmVzdWx0R1BSKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAg
ICAgICBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsCisgICAgICAgICAgICB0
aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZVN0cmluZywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggMDMxNWJhMjMxMjBlYzczZjE2Njg1OGMwY2JlZDU0N2I0NTE4ZDk4NC4u
OTU2NjE0YTQzNGJhMDk4MmRiMGVlZGNhYjlkZDFkZjQ1YzJiNmVmZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTQzNyw2ICsxNDM3LDcg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUFyaXRoTWluTWF4KE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVyKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVSZXNvbHZlUm9wZShOb2RlKik7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZv
clR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRl
eEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JU
eXBlZEFycmF5SXNEZXRhY2hlZElmT3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBK
SVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJv
dW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcg
c2NyYXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2M2E3ZGU5MGU1ODUxNzgzODljMDBlMDA0ZjI2ODZh
NmZjNTgwY2ZlLi40YWYwMDI1N2Y4ZmVhOWQ2MDIxYjAwNDVlNzczOTU3NWI3OGNjYmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKQEAgLTMzNDQsNiArMzM0NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUmVzb2x2ZVJv
cGU6CisgICAgICAgIGNvbXBpbGVSZXNvbHZlUm9wZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6IHsKICAgICAgICAgY29tcGlsZUNvbnN0
YW50U3RvcmFnZVBvaW50ZXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOGU5MmY5MmY3
MGYwZjk5NWQ2MjIzMTAxYzZkMmJlZjk4YTg5MGUwMC4uNDlmMGI4NWRkMWEyNjhlNTFkNTQ5YzU0
MDdiNTE4NzE4MDliODY0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00NDU4LDcgKzQ0NTgsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0SW5kZXhlZFBy
b3BlcnR5U3RvcmFnZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwor
ICAgIGNhc2UgUmVzb2x2ZVJvcGU6CisgICAgICAgIGNvbXBpbGVSZXNvbHZlUm9wZShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6IHsKICAg
ICAgICAgY29tcGlsZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIobm9kZSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtNjE2NiwxNyArNjE3MCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3Ry
aW5nQ29kZVBvaW50QXQoTm9kZSogbm9kZSkKICAgICAvLyBBbmQgQ2hlY2tBcnJheSBhbHNvIGVu
c3VyZXMgdGhhdCB0aGlzIFN0cmluZyBpcyBub3QgYSByb3BlLgogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHN0cmluZyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBTdG9yYWdlT3Bl
cmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDEodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoMyh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDQodGhpcyk7
CiAKICAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOwogICAgIEdQUlJlZyBpbmRl
eEdQUiA9IGluZGV4LmdwcigpOwotICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKICAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDNHUFIgPSBz
Y3JhdGNoMy5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDRHUFIgPSBzY3JhdGNoNC5ncHIoKTsK
IAogICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cmluZ0dQUiwgSlNT
dHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2gxR1BSKTsKICAgICBtX2ppdC5sb2FkMzIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1v
cnlPZmZzZXQoKSksIHNjcmF0Y2gyR1BSKTsKQEAgLTYxODksMTcgKzYxOTMsMTkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0NvZGVQb2ludEF0KE5vZGUqIG5vZGUpCiAKICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAKLSAgICBtX2ppdC5sb2FkOChDQ2FsbEhl
bHBlcnM6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBpbmRleEdQUiwgQ0NhbGxIZWxwZXJzOjpUaW1l
c09uZSwgMCksIHNjcmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3RyaW5nSW1wbDo6ZGF0YU9mZnNldCgpKSwgc2NyYXRjaDFH
UFIpOworICAgIG1faml0LmxvYWQ4KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gxR1BS
LCBpbmRleEdQUiwgQ0NhbGxIZWxwZXJzOjpUaW1lc09uZSwgMCksIHNjcmF0Y2gxR1BSKTsKICAg
ICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgaXMxNkJpdC5saW5rKCZtX2ppdCk7
Ci0gICAgbV9qaXQubG9hZDE2KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGlu
ZGV4R1BSLCBDQ2FsbEhlbHBlcnM6OlRpbWVzVHdvLCAwKSwgc2NyYXRjaDFHUFIpOworICAgIG1f
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBTdHJpbmdJbXBs
OjpkYXRhT2Zmc2V0KCkpLCBzY3JhdGNoNEdQUik7CisgICAgbV9qaXQubG9hZDE2KENDYWxsSGVs
cGVyczo6QmFzZUluZGV4KHNjcmF0Y2g0R1BSLCBpbmRleEdQUiwgQ0NhbGxIZWxwZXJzOjpUaW1l
c1R3bywgMCksIHNjcmF0Y2gxR1BSKTsKICAgICAvLyBUaGlzIGlzIG9rLiBpbmRleEdQUiBtdXN0
IGJlIHBvc2l0aXZlIGludDMyX3QgaGVyZSBhbmQgYWRkaW5nIDEgbmV2ZXIgY2F1c2VzIG92ZXJm
bG93IGlmIHdlIHRyZWF0IGluZGV4R1BSIGFzIHVpbnQzMl90LgogICAgIG1faml0LmFkZDMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgc2NyYXRjaDNHUFIpOwogICAg
IGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBz
Y3JhdGNoM0dQUiwgc2NyYXRjaDJHUFIpKTsKICAgICBtX2ppdC5hbmQzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigweGZmZmZmYzAwKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSKTsKICAg
ICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3Jh
dGNoMkdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkODAwKSkpOwotICAgIG1faml0
LmxvYWQxNihDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNoM0dQUiwg
Q0NhbGxIZWxwZXJzOjpUaW1lc1R3bywgMCksIHNjcmF0Y2gzR1BSKTsKKyAgICBtX2ppdC5sb2Fk
MTYoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaDRHUFIsIHNjcmF0Y2gzR1BSLCBDQ2Fs
bEhlbHBlcnM6OlRpbWVzVHdvLCAwKSwgc2NyYXRjaDNHUFIpOwogICAgIG1faml0LmFuZDMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZmZmZmZjMDApLCBzY3JhdGNoM0dQUiwgc2NyYXRj
aDJHUFIpOwogICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIHNjcmF0Y2gyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRjMDApKSk7
CiAgICAgbV9qaXQubHNoaWZ0MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTApLCBzY3Jh
dGNoMUdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCBlMTBkNjJlNDI3ZDBkODAzYWQwZTQzM2U0ZTM1
ZGUyZDJkNmYxODI3Li5jZThkNDZkZDdiZjAwYWE1OWJmOGU2Nzg1MTU0OWMzZDJmYzNmYjg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5n
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKQEAgLTI4Myw2ICsyODMsNyBAQCBjbGFzcyBUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6
CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICAgICAgICAgIGNh
c2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAgICAgICBjYXNlIFJlc29s
dmVSb3BlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldEFzSW50NTI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMzYzLDYgKzM2NCw3IEBAIGNsYXNzIFR5cGVD
aGVja0hvaXN0aW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5TGVuZ3Ro
QXNJbnQ1MjoKICAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CisgICAgICAgICAgICAgICAgY2FzZSBSZXNvbHZlUm9wZToKICAgICAgICAgICAgICAgICBjYXNl
IFBoYW50b206CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAgICAgICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBhZmEwYmY4OTJkZWU3ZDUzMWNiOGFjM2I1ODA4OWUyN2Ix
ODQzNGU4Li5kYWFjYTkyOTZiYzAyMzEzNzc5Zjk4M2Q0MTYxZmM5ZTEwZTNlNThiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yODksNiAr
Mjg5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBCb29sZWFuVG9OdW1iZXI6CiAgICAgY2FzZSBIYXNJbmRleGVkUHJvcGVydHk6CiAg
ICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2UgUmVzb2x2ZVJvcGU6
CiAgICAgY2FzZSBHZXRQcm9wZXJ0eUVudW1lcmF0b3I6CiAgICAgY2FzZSBFbnVtZXJhdG9yTmV4
dFVwZGF0ZUluZGV4QW5kTW9kZToKICAgICBjYXNlIEVudW1lcmF0b3JOZXh0RXh0cmFjdE1vZGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
ZmZiODM1YzY0MDE0YmE5OTA0Yjc1NmIyNzRmNGJiNzgyZmU3ZmNmNi4uNzQ4MTAxOWU1ZmE4Y2Jj
ZDZhNTYwODBmNWU0MDUwZmQwMWU0NmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAxNSw2ICsxMDE1LDkgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAg
ICAgICAgY29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFJlc29sdmVSb3BlOgorICAgICAgICAgICAgY29tcGlsZVJlc29s
dmVSb3BlKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaGVja0FycmF5Ogog
ICAgICAgICAgICAgY29tcGlsZUNoZWNrQXJyYXkoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
NDc2NywzNCArNDc3MCwzNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAgIHZvaWQg
Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09
IEFycmF5OjpTdHJpbmcpIHsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9v
dXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7Ci0KLSAgICAgICAgICAgIExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBt
X291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwotICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0UmVzdWx0VmFsdWUp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5icmFuY2goaXNSb3BlU3RyaW5nKGNl
bGwsIG1fbm9kZS0+Y2hpbGQxKCkpLCByYXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5KGNvbnRpbnVh
dGlvbikpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgY2VsbCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzZXRTdG9y
YWdlKG1fb3V0LmxvYWRQdHIobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNs
b3dSZXN1bHQpLCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgp
ICE9IEFycmF5OjpTdHJpbmcpOwogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
aXNUeXBlZFZpZXcobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKSwgbV9ub2Rl
LT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKTsKICAgICAgICAgTFZhbHVlIHZlY3RvciA9
IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOwog
ICAgICAgICBzZXRTdG9yYWdlKGNhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZlY3RvciwgY2Vs
bCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVJlc29sdmVSb3BlKCkKKyAgICB7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIExWYWx1ZSBzdHJpbmcgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5j
aG9yKHN0cmluZyk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzUm9wZVN0cmluZyhzdHJpbmcs
IG1fbm9kZS0+Y2hpbGQxKCkpLCByYXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5KGNvbnRpbnVhdGlv
bikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xv
d1BhdGgsIGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uUmVzb2x2ZVJv
cGVTdHJpbmcsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHN0cmluZykpOworCisgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKKworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2lu
dGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ2hlY2tBcnJheSgpCiAgICAgewpAQCAtODg3Miw3
ICs4ODc4LDYgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgIHsKICAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dTdHJpbmcobV9ncmFwaC5jaGlsZChtX25vZGUsIDApKTsKICAgICAgICAg
TFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ncmFwaC5jaGlsZChtX25vZGUsIDEpKTsKLSAgICAg
ICAgTFZhbHVlIHN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1fZ3JhcGguY2hpbGQobV9ub2RlLCAyKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgZmFzdFBhdGggPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CkBAIC04OTAzLDcgKzg5MDgsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MjQKICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgY2hhcjhCaXQgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICBt
X291dC5sb2FkOFplcm9FeHQzMihtX291dC5iYXNlSW5kZXgoCi0gICAgICAgICAgICAgICAgbV9o
ZWFwcy5jaGFyYWN0ZXJzOCwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRleCksCisgICAg
ICAgICAgICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzOCwgbV9vdXQubG9hZFB0cihzdHJpbmdJbXBs
LCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSksIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpLAogICAg
ICAgICAgICAgICAgIHByb3ZlblZhbHVlKG1fZ3JhcGguY2hpbGQobV9ub2RlLCAxKSkpKSk7CiAg
ICAgICAgIG1fb3V0Lmp1bXAoYml0c0NvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKQEAgLTg5
MTEsNyArODkxNiw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIAogICAgICAgICBMVmFs
dWUgY2hhcjE2Qml0VmFsdWUgPSBtX291dC5sb2FkMTZaZXJvRXh0MzIoCiAgICAgICAgICAgICBt
X291dC5iYXNlSW5kZXgoCi0gICAgICAgICAgICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzMTYsIHN0
b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpLAorICAgICAgICAgICAgICAgIG1faGVhcHMu
Y2hhcmFjdGVyczE2LCBtX291dC5sb2FkUHRyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1w
bF9kYXRhKSwgbV9vdXQuemVyb0V4dFB0cihpbmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVu
VmFsdWUobV9ncmFwaC5jaGlsZChtX25vZGUsIDEpKSkpOwogICAgICAgICBWYWx1ZUZyb21CbG9j
ayBjaGFyMTZCaXQgPSBtX291dC5hbmNob3IoY2hhcjE2Qml0VmFsdWUpOwogICAgICAgICBtX291
dC5icmFuY2goCkBAIC04OTkyLDcgKzg5OTcsNiBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5E
CiAKICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAg
ICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAg
IAogICAgICAgICBMVmFsdWUgc3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoYmFzZSwgbV9oZWFw
cy5KU1N0cmluZ192YWx1ZSk7CiAKQEAgLTkwMTMsNyArOTAxNyw3IEBAIElHTk9SRV9DTEFOR19X
QVJOSU5HU19FTkQKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDkyNAogICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGFyOEJpdCA9IG1fb3V0LmFu
Y2hvcigKICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKG1fb3V0LmJhc2VJbmRleCgK
LSAgICAgICAgICAgICAgICBtX2hlYXBzLmNoYXJhY3RlcnM4LCBzdG9yYWdlLCBtX291dC56ZXJv
RXh0UHRyKGluZGV4KSwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLmNoYXJhY3RlcnM4LCBtX291
dC5sb2FkUHRyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9kYXRhKSwgbV9vdXQuemVy
b0V4dFB0cihpbmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9ub2RlLT5jaGls
ZDIoKSkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAg
IApAQCAtOTAyMSw3ICs5MDI1LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAg
ICAgICAgCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoYXIxNkJpdCA9IG1fb3V0LmFuY2hvcigK
ICAgICAgICAgICAgIG1fb3V0LmxvYWQxNlplcm9FeHQzMihtX291dC5iYXNlSW5kZXgoCi0gICAg
ICAgICAgICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzMTYsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQ
dHIoaW5kZXgpLAorICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVyczE2LCBtX291dC5s
b2FkUHRyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9kYXRhKSwgbV9vdXQuemVyb0V4
dFB0cihpbmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCkBAIC05
MDQzLDcgKzkwNDcsNiBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAKICAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBp
bmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBMVmFsdWUgc3RvcmFn
ZSA9IGxvd1N0b3JhZ2UobV9ub2RlLT5jaGlsZDMoKSk7CiAKICAgICAgICAgTFZhbHVlIHN0cmlu
Z0ltcGwgPSBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwogICAg
ICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3RyaW5nSW1wbCwg
bV9oZWFwcy5TdHJpbmdJbXBsX2xlbmd0aCk7CkBAIC05MDYxLDEyICs5MDY0LDEyIEBAIElHTk9S
RV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NDkyNAogICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGFyOEJpdCA9
IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKG1fb3V0LmJh
c2VJbmRleCgKLSAgICAgICAgICAgICAgICBtX2hlYXBzLmNoYXJhY3RlcnM4LCBzdG9yYWdlLCBt
X291dC56ZXJvRXh0UHRyKGluZGV4KSwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLmNoYXJhY3Rl
cnM4LCBtX291dC5sb2FkUHRyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9kYXRhKSwg
bV9vdXQuemVyb0V4dFB0cihpbmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhpczE2Qml0LCBpc0xlYWRTdXJyb2dhdGUpOwotICAgICAg
ICBMVmFsdWUgbGVhZENoYXJhY3RlciA9IG1fb3V0LmxvYWQxNlplcm9FeHQzMihtX291dC5iYXNl
SW5kZXgobV9oZWFwcy5jaGFyYWN0ZXJzMTYsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIoaW5k
ZXgpLCBwcm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICBMVmFsdWUgbGVh
ZENoYXJhY3RlciA9IG1fb3V0LmxvYWQxNlplcm9FeHQzMihtX291dC5iYXNlSW5kZXgobV9oZWFw
cy5jaGFyYWN0ZXJzMTYsIG1fb3V0LmxvYWRQdHIoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJ
bXBsX2RhdGEpLCBtX291dC56ZXJvRXh0UHRyKGluZGV4KSwgcHJvdmVuVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSkpKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2hhcjE2Qml0ID0gbV9vdXQuYW5j
aG9yKGxlYWRDaGFyYWN0ZXIpOwogICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuYWRk
KGluZGV4LCBtX291dC5pbnQzMk9uZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5hYm92
ZU9yRXF1YWwobmV4dEluZGV4LCBsZW5ndGgpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJl
KGlzTGVhZFN1cnJvZ2F0ZSkpOwpAQCAtOTA3OSw3ICs5MDgyLDcgQEAgSUdOT1JFX0NMQU5HX1dB
Uk5JTkdTX0VORAogICAgICAgICBKU1ZhbHVlIG5leHRJbmRleFZhbHVlOwogICAgICAgICBpZiAo
aW5kZXhWYWx1ZSAmJiBpbmRleFZhbHVlLmlzSW50MzIoKSAmJiBpbmRleFZhbHVlLmFzSW50MzIo
KSAhPSBJTlQzMl9NQVgpCiAgICAgICAgICAgICBuZXh0SW5kZXhWYWx1ZSA9IGpzTnVtYmVyKGlu
ZGV4VmFsdWUuYXNJbnQzMigpICsgMSk7Ci0gICAgICAgIExWYWx1ZSB0cmFpbENoYXJhY3RlciA9
IG1fb3V0LmxvYWQxNlplcm9FeHQzMihtX291dC5iYXNlSW5kZXgobV9oZWFwcy5jaGFyYWN0ZXJz
MTYsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIobmV4dEluZGV4KSwgbmV4dEluZGV4VmFsdWUp
KTsKKyAgICAgICAgTFZhbHVlIHRyYWlsQ2hhcmFjdGVyID0gbV9vdXQubG9hZDE2WmVyb0V4dDMy
KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLmNoYXJhY3RlcnMxNiwgbV9vdXQubG9hZFB0cihzdHJp
bmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSksIG1fb3V0Lnplcm9FeHRQdHIobmV4dElu
ZGV4KSwgbmV4dEluZGV4VmFsdWUpKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVx
dWFsKG1fb3V0LmJpdEFuZCh0cmFpbENoYXJhY3RlciwgbV9vdXQuY29uc3RJbnQzMigweGZmZmZm
YzAwKSksIG1fb3V0LmNvbnN0SW50MzIoMHhkYzAwKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1
bnN1cmUoaGFzVHJhaWxTdXJyb2dhdGUpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNU
cmFpbFN1cnJvZ2F0ZSwgY29udGludWF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKaW5kZXggOGY1MzIzNDdhNjNmZWQ5MzBj
NTY1ZjdmNjkwZWYxOWRhNjlkMmQ2OC4uODA4NGQ3NzE3NDhjYWY0MzI1YTczNWU1N2M0MmRlMmU5
OTdiZGM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1h
cEltcGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1h
cEltcGxJbmxpbmVzLmgKQEAgLTkzLDcgKzkzLDcgQEAgQUxXQVlTX0lOTElORSB1aW50MzJfdCBq
c01hcEhhc2hJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNWYWwK
IAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB3dGZTdHJpbmcgPSBh
c1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFN0cmluZyB3dGZT
dHJpbmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGlm
IGNvbnN0ZXhwciAoZXhwZWN0aW9uID09IEV4Y2VwdGlvbkV4cGVjdGF0aW9uOjpDYW5UaHJvdykK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFVJTlRfTUFYKTsKICAgICAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmNwcAppbmRleCAwMWJjMDg2YWY4NDk4MGY4NmEwNGJiMmFkZDliNThhMTRkYmU2MTg5
Li40NGY5ZjJhYjA0NzU0NmI4MTM0NzM1YjMzZjI3NzU4MzJkZDQzOGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtODIs
MTQgKzgyLDE0IEBAIHZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbkltcGwoSlND
ZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiBERUZJTkVfVklTSVRfQ0hJTERSRU5fV0lU
SF9NT0RJRklFUihKU19FWFBPUlRfUFJJVkFURSwgSW50ZXJuYWxGdW5jdGlvbik7CiAKLWNvbnN0
IFN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZSgpCitTdHJpbmcgSW50ZXJuYWxGdW5jdGlv
bjo6bmFtZSgpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gbV9vcmlnaW5hbE5hbWUtPnRy
eUdldFZhbHVlKCk7CiAgICAgQVNTRVJUKG5hbWUpOyAvLyBtX29yaWdpbmFsTmFtZSB3YXMgYnVp
bHQgZnJvbSBhIFN0cmluZywgYW5kIGhlbmNlLCB0aGVyZSBpcyBubyByb3BlIHRvIHJlc29sdmUu
CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLWNvbnN0IFN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpk
aXNwbGF5TmFtZShWTSYgdm0pCitTdHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6ZGlzcGxheU5hbWUo
Vk0mIHZtKQogewogICAgIEpTVmFsdWUgZGlzcGxheU5hbWUgPSBnZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKICAgICAKQEAgLTEyMyw5ICsxMjMsOSBAQCBDYWxs
RGF0YSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCkKICAg
ICByZXR1cm4gY29uc3RydWN0RGF0YTsKIH0KIAotY29uc3QgU3RyaW5nIEludGVybmFsRnVuY3Rp
b246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYgdm0pCitTdHJpbmcgSW50ZXJuYWxGdW5jdGlv
bjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiB2bSkKIHsKLSAgICBjb25zdCBTdHJpbmcgZXhw
bGljaXROYW1lID0gZGlzcGxheU5hbWUodm0pOworICAgIFN0cmluZyBleHBsaWNpdE5hbWUgPSBk
aXNwbGF5TmFtZSh2bSk7CiAgICAgCiAgICAgaWYgKCFleHBsaWNpdE5hbWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IGE1YjgzNTU4YWM0NjNjYTJkY2Q4NDYz
OTM4MWY0NmYxODJjYzBkYzguLmJjMjk4MThjOWIzMDQ3NDUzZjczMzczM2Q0ZGUzNDdkYTBiYzRl
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU5fV0lUSF9NT0RJ
RklFUihKU19FWFBPUlRfUFJJVkFURSk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBT
dHJpbmcmIG5hbWUoKTsKLSAgICBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWUoVk0mKTsKLSAgICBj
b25zdCBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIG5hbWUoKTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUoVk0mKTsKKyAgICBT
dHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvKQogICAgIHsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5oCmluZGV4IGVjNzc4NThiY2Q5NDFhZTJhNmUzNGQyZGJmMTVjNjgz
YWQ2ZmM3NTMuLjUxZGRmZTRjNTRiMWY4NjQwZGM3MzJmZjVmMTk2NWM3MmIzYzM2ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCkBAIC01
Nyw3ICs1Nyw3IEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0
aW9uIHsKICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzKCkgeyByZXR1cm4gbV9i
b3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8gYmUgbXV0YXRl
ZCEKICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgSlNT
dHJpbmcqIG5hbWVNYXlCZU51bGwoKSB7IHJldHVybiBtX25hbWVNYXlCZU51bGwuZ2V0KCk7IH0K
LSAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHJpbmcoKQorICAgIFN0cmluZyBuYW1lU3RyaW5nKCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9uYW1lTWF5QmVOdWxsKQogICAgICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAppbmRleCA3OTI2NzYzY2Q1NjVkZWJiMWEwYjFjOWNmMTdmZDMwOTIx
NDQ4NjZhLi4zN2VjYjI1MzUwZDUyYThjZjdjYmE1ZTAwNDdiYThkNTVhZWQ3ODRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAg
LTgzOSw3ICs4MzksNyBAQCBpbmxpbmUgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0b1ByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgICAgICByZXR1cm4g
Tm9QcmVmZXJlbmNlOwogICAgIH0KIAotICAgIFN0cmluZ0ltcGwqIGhpbnRTdHJpbmcgPSBhc1N0
cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkuaW1wbCgpOworICAgIFN0cmluZyBoaW50
U3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIE5vUHJlZmVyZW5jZSk7CiAKICAgICBpZiAoV1RGOjplcXVh
bChoaW50U3RyaW5nLCAiZGVmYXVsdCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGUzZjAzYTRjMDhmODQ2OTNiMTY0NDBmODFh
N2NlYTdkNjg4ZWRhY2MuLjA3ZTcyY2YzOTcyNGFhNzEzOTg3NzJmZmU2M2E0NzkyZjZjNGQ4YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5j
cHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6
OmltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHByb21pc2UtPnJlamVjdFdpdGhDYXVnaHRFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHByb21p
c2UtPnJlamVjdChnbG9iYWxPYmplY3QsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0
cmluZygiQ291bGQgbm90IGltcG9ydCB0aGUgbW9kdWxlICciLCBtb2R1bGVOYW1lU3RyaW5nLCAi
Jy4iKSkpOworICAgIHByb21pc2UtPnJlamVjdChnbG9iYWxPYmplY3QsIGNyZWF0ZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQgbm90IGltcG9ydCB0aGUgbW9kdWxlICciLCBX
VEZNb3ZlKG1vZHVsZU5hbWVTdHJpbmcpLCAiJy4iKSkpOwogICAgIHJldHVybiBwcm9taXNlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4
IGJmOTA2YTI3ZjgzNTk3MGM4NTU5OTBkMDUyYjNkZTNjNjk4YWFhZDQuLjE5N2JhNTk5ZGM2ZjFi
NjE1MjU3YjVmYjg2ZTZiNjRlZjEwZTcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zNzEsOSArMzcxLDkgQEAgU3RyaW5naWZpZXI6OlN0
cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdC
dWlsZGVyJgogICAgIH0KIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIGNv
bnN0IFN0cmluZyYgc3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShtX2dsb2JhbE9iamVj
dCk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKG1fZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3RyaW5naWZ5
RmFpbGVkKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKHN0cmluZyk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhXVEZNb3ZlKHN0cmluZykp
OwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5jcHAKaW5kZXggNTI1MDliYjZlNDcyMTQzMGEyYWIxMGNkMzM4NmJlNDMxYWViNjM0OC4u
YmU4N2NmZWZlNzVkMDdmZDA0NjliYWIyYzdiMzgwZjk2YmE2MDdmYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgSlNTdHJpbmcqIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcjo6Y29tcHV0ZU5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChpbmRleCA8IGVuZFN0cnVjdHVyZVBy
b3BlcnR5SW5kZXgoKSAmJiBiYXNlLT5zdHJ1Y3R1cmVJRCgpID09IGNhY2hlZFN0cnVjdHVyZUlE
KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBhdXRvIGlkID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgbmFtZS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAg
ICAgICBhdXRvIGlkID0gbmFtZS0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIGlm
IChiYXNlLT5oYXNFbnVtZXJhYmxlUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZCkpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1JlbW90ZUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Jl
bW90ZUZ1bmN0aW9uLmgKaW5kZXggOGEyZjNjYTJiNDFiMjNjZGRiMTVmZDdkZDFmMThjZjZhMzcz
ZDc2OC4uMGIyN2IyMDJkZDQ3NzE5Yjc1NDc0ODg1MWE1M2NlNGNjYjdhMDA4NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSZW1vdGVGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVtb3RlRnVuY3Rpb24uaApAQCAtNTgs
NyArNTgsNyBAQCBjbGFzcyBKU1JlbW90ZUZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rp
b24gewogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIG1fdGFyZ2V0RnVu
Y3Rpb24uZ2V0KCk7IH0KICAgICBKU0dsb2JhbE9iamVjdCogdGFyZ2V0R2xvYmFsT2JqZWN0KCkg
eyByZXR1cm4gdGFyZ2V0RnVuY3Rpb24oKS0+Z2xvYmFsT2JqZWN0KCk7IH0KICAgICBKU1N0cmlu
ZyogbmFtZU1heUJlTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZU1heUJlTnVsbC5nZXQoKTsg
fQotICAgIGNvbnN0IFN0cmluZyYgbmFtZVN0cmluZygpCisgICAgU3RyaW5nIG5hbWVTdHJpbmco
KQogICAgIHsKICAgICAgICAgaWYgKCFtX25hbWVNYXlCZU51bGwpCiAgICAgICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAppbmRleCAzMGQwODFkMGNlM2NiYWI1NDA5ZmRmNzQ5OGJhMWU1MTUyZTE1M2JkLi4yN2Zj
YTdmMGFmNGY0MWMxMDc1YTM3Nzc3Y2Y1MzFlNWM2NTA4MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0xMDMsOSArMTAzLDkgQEAgQUxXQVlTX0lO
TElORSBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgU3RyaW5nJiB1MSwKICAgICAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKHZtLCBq
c1N0cmluZyh2bSwgdTEpLCBzMik7CiAKICAgICBBU1NFUlQoIXMyLT5pc1JvcGUoKSk7Ci0gICAg
Y29uc3QgU3RyaW5nJiB1MiA9IHMyLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgIFN0cmluZyB1
MiA9IHMyLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7Ci0gICAgU3RyaW5nIG5ld1N0cmluZyA9IHRyeU1ha2VTdHJpbmcodTEsIHUyKTsKKyAgICBT
dHJpbmcgbmV3U3RyaW5nID0gdHJ5TWFrZVN0cmluZyh1MSwgV1RGTW92ZSh1MikpOwogICAgIGlm
ICghbmV3U3RyaW5nKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzYsOSArMTM2LDkgQEAg
QUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNTdHJpbmcqIHMxLCBjb24KICAgICAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3Jl
YXRlKHZtLCBzMSwganNTdHJpbmcodm0sIHUyKSk7CiAKICAgICBBU1NFUlQoIXMxLT5pc1JvcGUo
KSk7Ci0gICAgY29uc3QgU3RyaW5nJiB1MSA9IHMxLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAg
IFN0cmluZyB1MSA9IHMxLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgIHNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7Ci0gICAgU3RyaW5nIG5ld1N0cmluZyA9IHRyeU1ha2VTdHJpbmcodTEsIHUy
KTsKKyAgICBTdHJpbmcgbmV3U3RyaW5nID0gdHJ5TWFrZVN0cmluZyhXVEZNb3ZlKHUxKSwgdTIp
OwogICAgIGlmICghbmV3U3RyaW5nKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDksNyAr
MzA5LDcgQEAgQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJl
QmlnSW50VG9PdGhlclByaW1pdGl2ZShKU0dsb2JhbE8KICAgICBpZiAocHJpbVZhbHVlLmlzU3Ry
aW5nKCkpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZyA9IGFzU3RyaW5nKHByaW1WYWx1ZSktPnZh
bHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
QmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOwotICAgICAgICBKU1ZhbHVlIGJp
Z0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgc3RyaW5n
KTsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0lu
dChnbG9iYWxPYmplY3QsIFdURk1vdmUoc3RyaW5nKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOwogICAg
ICAgICBpZiAoIWJpZ0ludFZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21w
YXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7CkBAIC0zNDksNyArMzQ5LDcgQEAgQUxXQVlTX0lOTElO
RSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50MzJUb090aGVyUHJpbWl0
aXZlKEpTR2xvYmEKICAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgU3Ry
aW5nIHN0cmluZyA9IGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0OjpVbmRlZmluZWQpOwotICAgICAgICBKU1ZhbHVlIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6
OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgc3RyaW5nKTsKKyAgICAgICAgSlNWYWx1ZSBi
aWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIFdURk1v
dmUoc3RyaW5nKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOwogICAgICAgICBpZiAoIWJpZ0ludFZhbHVl
KQogICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmlu
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oCmluZGV4IDFkMTkyYTM3YjFlYWEwOWIyMDVmZjhkYmUzNzRmOWQxZjIwNzBjM2UuLmE5
MWQyMGZmM2IwMDAxNWJhOTIyZjhjY2NhNTBiNTA5NWU1Y2RlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCkBAIC0yMzIsNyAr
MjMyLDcgQEAgaW5saW5lIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyoKICAgICBTdHJpbmcgaW5wdXQgPSBzdHJp
bmctPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5KHZtLCBnbG9iYWxPYmplY3QsIHN0cmluZywgaW5wdXQsIHJlZ0V4cCwgc3RhcnRPZmZz
ZXQsIGlnbm9yZWRSZXN1bHQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0
ZVJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIFdURk1vdmUoaW5w
dXQpLCByZWdFeHAsIHN0YXJ0T2Zmc2V0LCBpZ25vcmVkUmVzdWx0KSk7CiB9CiBKU0FycmF5KiBj
cmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJheShKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwg
UmVnRXhwKik7CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCA2MWRjZjUzZTJkOWE4MzRiYTI2NjMyZDc3OWE0
NmE4ODg4YWI4NmU3Li4zMDIzMTRmOTg0MWVhNzc0MWVkNDVjY2M1OWNhZWQxZTk0M2Q1MjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKQEAgLTcwOSw3ICs3MDksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyLCBKU0NlbGwqLAogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgU3RyaW5nIHNvdXJj
ZSA9IHRoaXNWYWx1ZS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2godm0sIGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBz
b3VyY2UsIHJlZ0V4cCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlbW92
ZVVzaW5nUmVnRXhwU2VhcmNoKHZtLCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgV1RGTW92ZShz
b3VyY2UpLCByZWdFeHApKTsKICAgICB9CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTE0
ODQsNyArMTQ4NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNU
b0xvd2VyQ2FzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgU3RyaW5nIGxvd2Vy
Y2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKTsKICAgICBp
ZiAobG93ZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBsKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoc1ZhbCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGxvd2VyY2FzZWRTdHJpbmcpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFdURk1vdmUo
bG93ZXJjYXNlZFN0cmluZykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJp
bmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTE1MDIsNyArMTUwMiw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiAgICAgU3RyaW5nIHVwcGVyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb1VwcGVy
Y2FzZVdpdGhvdXRMb2NhbGUoKTsKICAgICBpZiAodXBwZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0g
cy5pbXBsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc1ZhbCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHVwcGVy
Y2FzZWRTdHJpbmcpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcodm0sIFdURk1vdmUodXBwZXJjYXNlZFN0cmluZykpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDI2ZDhmOWY3NGQ3MDQ5NDk2MmMzMDc2NjlhZDdlODk4OTQ4NjIyMWIuLmE0YmUyOTc5MGUx
ZWM5Y2M2NDdmYTgxZjgzOGQ1YmZmNWZlNzJiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sQ29uc3RydWN0b3JGb3IsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAgIFN0cmluZyBzdHJpbmcgPSBzdHJpbmdLZXkt
PnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3Jl
YXRlKHZtLCB2bS5zeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzdHJpbmcpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgdm0uc3ltYm9sUmVnaXN0
cnkoKS5zeW1ib2xGb3JLZXkoV1RGTW92ZShzdHJpbmcpKSkpOwogfQogCiBjb25zdCBBU0NJSUxp
dGVyYWwgU3ltYm9sS2V5Rm9yVHlwZUVycm9yIHsgIlN5bWJvbC5rZXlGb3IgcmVxdWlyZXMgdGhh
dCB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBzeW1ib2wiX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBhNzQ2NmM5NzI0ZjRkOTA5OTMyNTMxMzBh
YmYxMWY4YzExODBhYjgxLi44YzlmZTIyZDBmYmFkYjg3Zjg1YjkwMWYyMGI1MWFkNzY0ZDMwOGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0zMTUw
LDcgKzMxNTAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DcmVhdGVCdWls
dGluLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIFN0cmluZyBmdW5jdGlv
blRleHQgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+dmFsdWUoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShmdW5jdGlvblRleHQsIHsgfSk7
CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKFdURk1vdmUoZnVuY3Rpb25UZXh0
KSwgeyB9KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBj
cmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgc291cmNlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZm9vIl9zKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3QpLT5saW5rKHZtLCBudWxscHRyLCBzb3VyY2UpLCBnbG9iYWxPYmplY3Qp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmdW5jKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDU3ZDBiNjQ5OTg1ZmUwNmMy
NzQ4NWJhN2JmNmJmNzgxZjI0Mjg3ODcuLmVmYTI1MjhmZmJiYjRlN2I5YTNlZWMxYzUyNmJjMmZj
ZThkYWIwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcApAQCAtMjcyLDcgKzI3MiwxMCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cmVwb3J0
VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBKU1N0cgogICAg
IGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250
ZW50U2VjdXJpdHlQb2xpY3ktPmFsbG93RXZhbChvYmplY3QsIExvZ1RvQ29uc29sZTo6Tm8sIHNv
dXJjZSA/IHNvdXJjZS0+dHJ5R2V0VmFsdWUoKSA6IFN0cmluZ1ZpZXcoKSk7CisgICAgU3RyaW5n
IHNvdXJjZVN0cmluZzsKKyAgICBpZiAoc291cmNlKQorICAgICAgICBzb3VyY2VTdHJpbmcgPSBz
b3VyY2UtPnRyeUdldFZhbHVlKCk7CisgICAgY29udGVudFNlY3VyaXR5UG9saWN5LT5hbGxvd0V2
YWwob2JqZWN0LCBMb2dUb0NvbnNvbGU6Ok5vLCBzb3VyY2VTdHJpbmcpOwogfQogCiB2b2lkIEpT
RE9NV2luZG93QmFzZTo6d2lsbFJlbW92ZUZyb21XaW5kb3dQcm94eSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457004</attachid>
            <date>2022-04-07 19:30:05 -0700</date>
            <delta_ts>2022-04-10 16:57:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238918-20220407193004.patch</filename>
            <type>text/plain</type>
            <size>63911</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDRjODVjZjJiZTA3OWVjN2Y3NTllOWM4Zjk2YzU5YzRkNDgxYjUwLi41MTQyYTM2ZjIwNDM4MjU2
ZWQ2M2NmY2NjNzIzNTlmYzAwNDhjMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTEgQEAKKzIwMjItMDQtMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBERkcgLyBGVEwgc2hvdWxkIGJlIGF3YXJlIG9mIEpTU3RyaW5n
J3MgU3RyaW5nIHJlcGxhY2VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg5MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZnRlciByMjg5MzU5LCBTdHJpbmcgaW4gSlNTdHJpbmcqIGNhbiBiZSBy
ZXBsYWNlZCBldmVuIGFmdGVyIGl0IGlzIHJlc29sdmVkLiBXaGVuIGF0b21pemluZyBTdHJpbmcg
aW5zaWRlIEpTU3RyaW5nKiwKKyAgICAgICAgd2UgbWF5IHJlcGxhY2UgdGhlIGV4aXN0aW5nIG9u
ZSB0byBuZXcgQXRvbVN0cmluZ0ltcGwgaWYgZGlmZmVyZW50IEF0b21TdHJpbmdJbXBsIGlzIGFs
cmVhZHkgcmVnaXN0ZXJlZCBpbiB0aGUKKyAgICAgICAgQXRvbVN0cmluZ1RhYmxlLiBIb3dldmVy
LCBERkcgLyBGVEwgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSBhc3N1bWVzIHRoYXQgU3RyaW5n
SW1wbCogaW4gSlNTdHJpbmcqIG5ldmVyIGNoYW5nZXMgYWZ0ZXIKKyAgICAgICAgcmVzb2x2aW5n
LiBBbmQgdGhpcyBpcyB3cm9uZy4KKworICAgICAgICBUaGlzIHBhdGNoIGRlY291cGxlcyBTdHJp
bmcgaGFuZGxpbmcgaW4gR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSBhcyBSZXNvbHZlUm9wZSBE
Rkcgbm9kZS4gR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSBubworICAgICAgICBsb25nZXIgaGFu
ZGxlcyBKU1N0cmluZyBhbmQgaXQgaXMgbm93IHRhaWxvcmVkIHRvIG9iamVjdCBjYXNlcy4gUmVz
b2x2ZVJvcGUgZG9lcyBub3QgZXhwb3NlIFN0cmluZ0ltcGw6Om1fZGF0YSBwb2ludGVyLAorICAg
ICAgICBhbmQgaW5zdGVhZCBpdCBrZWVwcyByZXNvbHZlZCBKU1N0cmluZyouIEFmdGVyIHRoaXMg
Y2hhbmdlLAorCisgICAgICAgICAgICBHZXRCeVZhbChTdHJpbmc6QDAsIFVudHlwZWQ6QDEsIEdl
dEluZGV4ZWRQcm9wZXJ0eShTdHJpbmc6QDApKQorCisgICAgICAgIGlzIGNoYW5nZWQgdG8KKwor
ICAgICAgICAgICAgR2V0QnlWYWwoUmVzb2x2ZVJvcGUoU3RyaW5nOkAwKSwgVW50eXBlZDpAMSkK
KworICAgICAgICBBbHNvLCB3ZSByZXZpc2l0IGFsbCB0aGUgdmFsdWUoLi4uKSBjYWxsc2l0ZXMg
KGJ5IGNoYW5naW5nIGZ1bmN0aW9uIG5hbWUpIGFuZCBlbnN1cmUgdGhhdCB3ZSBoYXZlIG5vIGNv
ZGUgYXNzdW1pbmcgU3RyaW5nCisgICAgICAgIGNhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIHJlc29s
dmluZy4KKworICAgICAgICBBL0IgdGVzdCBlbnN1cmVkIHRoYXQgdGhpcyBpcyBwZXJmLW5ldXRy
YWwuCisKKyAgICAgICAgKiBiMy9CM0dlbmVyYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6Omdl
bmVyYXRlVG9BaXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29u
c3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzU3RvcmFnZUNoaWxkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpzdG9yYWdlQ2hpbGRJbmRleCk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpT
Q19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhl
Y3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldENoYXJDb2RlQXQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQpOgorICAgICAgICAqIGRmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAg
ICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRB
cnJheUNoZWNrcyk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRJbmRl
eGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZVJlc29sdmVSb3BlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJBdEltcGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hhckNvZGVBdCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdCk6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
ICogcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6anNNYXBIYXNo
SW1wbCk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6bmFtZSk6CisgICAgICAgIChKU0M6OkludGVybmFsRnVu
Y3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Y2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dG9QcmVmZXJyZWRQcmltaXRp
dmVUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lm
aWVkVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjb21wdXRlTmV4dCk6
CisgICAgICAgICogcnVudGltZS9KU1JlbW90ZUZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
Y29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpjb21wYXJlQmln
SW50MzJUb090aGVyUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZN
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKwogMjAyMi0w
NC0wNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsIFN0
cnVjdHVyZTo6Z2V0IGluc3RlYWQgb2YgU3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkgb24gdGhl
IG11dGF0b3IgdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ3YzZmYjViYWY3M2Q4Yjg3Y2M5MzIyY2M2
ZjBlYzE2MjZiZGE3Zi4uM2YwOTE3YWJhYmRkNzdmNTc1Njc2MTY5ZGQ2OWU2ODJkY2ZkNmNlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gREZHIC8gRlRMIHNob3VsZCBiZSBh
d2FyZSBvZiBKU1N0cmluZydzIFN0cmluZyByZXBsYWNlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTE4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpyZXBvcnRWaW9sYXRp
b25Gb3JVbnNhZmVFdmFsKToKKwogMjAyMi0wNC0wNyAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ry
b3dAYXBwbGUuY29tPgogCiAgICAgICAgIEdyaWQgaXRlbXMgdGhhdCBlc3RhYmxpc2ggYW4gaW5k
ZXBlbmRlbnQgZm9ybWF0dGluZyBjb250ZXh0IHNob3VsZCBub3QgYmUgc3ViZ3JpZHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKaW5kZXggOTYyMDI5NDFiZGM0YTM0NWI3
NzMyMjQzMzljYzBhMDE0OTc4YmY3Yy4uNTQ2OGVhYTVhZDhiOGUyMmZmZjE3YWU0ZTI1YmM0MGNh
N2VjN2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcApAQCAtMTM2
LDYgKzEzNiw4IEBAIHZvaWQgZ2VuZXJhdGVUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKICAg
ICB9CiAKICAgICBsb3dlclRvQWlyKHByb2NlZHVyZSk7CisgICAgaWYgKHNob3VsZER1bXBJUihw
cm9jZWR1cmUsIEIzTW9kZSkpCisgICAgICAgIHByb2NlZHVyZS5zZXRTaG91bGREdW1wSVIoKTsK
ICAgICBwcm9jZWR1cmUuZnJlZVVubmVlZGVkQjNWYWx1ZXNBZnRlckxvd2VyaW5nKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKaW5kZXggNWE2YmZiZTA2YWM5NDUyODg0YmUyNjMwNmY3OTdkOWY3OWQ4
ZTMyMS4uZTAyMTllM2FhZmYzY2U2OGZkY2RmZTczMDFiOTg1ODNiMzVkYjRiNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKQEAgLTE3MjksNyArMTcyOSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRFcXVhbGl0eU9wSW1wbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlCiAg
ICAgICAgICAgICAmJiBzcmMxLT5pc1RlbXBvcmFyeSgpCiAgICAgICAgICAgICAmJiBzcmMyLT52
aXJ0dWFsUmVnaXN0ZXIoKS5pc0NvbnN0YW50KCkKICAgICAgICAgICAgICYmIG1fY29kZUJsb2Nr
LT5jb25zdGFudFJlZ2lzdGVyKHNyYzItPnZpcnR1YWxSZWdpc3RlcigpKS5nZXQoKS5pc1N0cmlu
ZygpKSB7Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXNTdHJpbmcobV9jb2Rl
QmxvY2stPmNvbnN0YW50UmVnaXN0ZXIoc3JjMi0+dmlydHVhbFJlZ2lzdGVyKCkpLmdldCgpKS0+
dHJ5R2V0VmFsdWUoKTsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGFzU3RyaW5nKG1fY29k
ZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKHNyYzItPnZpcnR1YWxSZWdpc3RlcigpKS5nZXQoKSkt
PnRyeUdldFZhbHVlKCk7CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInVuZGVmaW5lZCIpIHsK
ICAgICAgICAgICAgICAgICByZXdpbmQoKTsKICAgICAgICAgICAgICAgICBPcFR5cGVvZklzVW5k
ZWZpbmVkOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggMGY2MGI5MzdmYWQ5NjU3ZjA5NzVjMjBhMTAzMWM0NmZlMmVhYTIxNC4uZGFkMjkyMmUyZTEy
ODI3NzBmZTUyYjkxYmNhMzllOGMxNzM2N2NmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzc5
Miw2ICszNzkyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogeworICAgICAgICBBU1NF
UlQobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpICE9IEFycmF5OjpTdHJpbmcpOwogICAgICAgICBK
U0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KAogICAg
ICAgICAgICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSwgbm9kZS0+YXJyYXlNb2Rl
KCkpOwogICAgICAgICBpZiAodmlldykKQEAgLTM3OTksNiArMzgwMCwyMiBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICBjbGVhckZvck5vZGUobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICBjYXNlIFJlc29sdmVSb3BlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGRD
b25zdCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGls
ZENvbnN0ICYmIGNoaWxkQ29uc3QuaXNTdHJpbmcoKSAmJiAhYXNTdHJpbmcoY2hpbGRDb25zdCkt
PmlzUm9wZSgpKSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVl
emUoY2hpbGRDb25zdCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIShmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY1N0cmluZ0lkZW50
KSkgeworICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1
ZSk7CisgICAgICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgc2V0VHlwZUZvck5v
ZGUobm9kZSwgU3BlY1N0cmluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIENv
bnN0YW50U3RvcmFnZVBvaW50ZXI6IHsKICAgICAgICAgY2xlYXJGb3JOb2RlKG5vZGUpOwogICAg
ICAgICBicmVhazsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IDY3YjAxMGJjMmYyMWUxMTU0NmYyMWFlYjk1ZGVjZDhlZTkzZmQ2YjUuLjFlZmMyNWY1Yjc3
ZTJjNWM4ZThhNzFkOTczOWU2MjI4NjllNDRjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMzM4LDE0ICsxMzM4LDE1IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBHZXRJbmRleGVk
UHJvcGVydHlTdG9yYWdlOgotICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09
IEFycmF5OjpTdHJpbmcpIHsKLSAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+
YXJyYXlNb2RlKCkuYXNXb3JkKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpICE9IEFycmF5OjpTdHJpbmcp
OwogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2VMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6
eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCisgICAgY2FzZSBSZXNv
bHZlUm9wZToKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CisgICAgICAgIHJldHVybjsK
KwogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgIHJlYWQoTWlzY0Zp
ZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlwZWRBcnJheUJ5dGVPZmZzZXRMb2Ms
IE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApp
bmRleCAyOTg1YTc2ZDZiYTZjNWNhZDM5MjA2ZDlkNjM0NzhhM2JlYmU1Mjc4Li41MWU5YmVkYTg2
YzcyMmU1ZDcyYWM4ZWE4NDY0MTY2MDI1NzI4ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtODk3LDYgKzg5
NywxNSBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgUmVz
b2x2ZVJvcGU6IHsKKyAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGUgJiB+U3BlY1N0cmluZ0lkZW50KQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CisgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgICAgICBjYXNl
IENhbGxOdW1iZXJDb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjQnl0ZWNvZGVOdW1iZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTEyZDRjNjJhMWNiNzgwMDBl
YWYyZWQxZDdhZjE1NTc1NjQ1OWEyZS4uNWRkY2M3NGVhOTE5YTgxMzY0NGQ4NzZjMTA0ZTZhMTAw
OTAzZjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtNTAx
LDEyICs1MDEsMTcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEVu
dW1lcmF0b3JHZXRCeVZhbDoKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9
PSBBcnJheTo6U3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgIGNhc2UgUmVzb2x2ZVJvcGU6CisgICAgICAgIHJldHVybiB0cnVlOwor
CiAgICAgY2FzZSBFbnVtZXJhdG9yTmV4dEV4dHJhY3RNb2RlOgogICAgIGNhc2UgRW51bWVyYXRv
ck5leHRFeHRyYWN0SW5kZXg6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDNlYzI0MmU5MDI1ZmEwOTBkODIz
YWZhZTdlMGU0YWM3NWRmNmE5MGEuLjcwMDM2M2FlMzJmMmU3NTY3MTQ1MTFjMjE0ZWRhNjRlMjMw
YTRlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApA
QCAtMTAxOCw3ICsxMDE4LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgIGNhc2UgU3RyaW5nQ29kZVBvaW50QXQ6IHsKICAgICAgICAgICAgIC8vIEN1cnJlbnRs
eSB3ZSBoYXZlIG5vIGdvb2Qgd2F5IG9mIHJlZmluaW5nIHRoZXNlLgogICAgICAgICAgICAgQVNT
RVJUKG5vZGUtPmFycmF5TW9kZSgpID09IEFycmF5TW9kZShBcnJheTo6U3RyaW5nLCBBcnJheTo6
UmVhZCkpOwotICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihub2RlLT5jaGlsZDEoKSwg
bm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIGJsZXNzQXJyYXlP
cGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBub2RlLT5jaGlsZDEoKSk7
IC8vIFJld3JpdGUgY2hpbGQxIHdpdGggUmVzb2x2ZVJvcGUuCiAgICAgICAgICAgICBmaXhFZGdl
PEtub3duU3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwODMsNyAr
MTA4MywxMSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJh
dGlvbihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgICAgIGlmIChu
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OlN0cmluZykgeworICAgICAgICAgICAg
ICAgIC8vIFJld3JpdGUgZmlyc3QgY2hpbGQgd2l0aCBSZXNvbHZlUm9wZS4KKyAgICAgICAgICAg
ICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSksIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlv
bihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IG5vZGUtPmFycmF5TW9kZSgpOwogICAgICAgICAg
ICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CkBAIC0yMjA2LDYgKzIyMTAsNyBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAg
ICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2U6CisgICAgICAgIGNhc2UgUmVzb2x2ZVJvcGU6CiAgICAgICAgIGNhc2UgTGFzdE5vZGVU
eXBlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgICAgICBjYXNlIENoZWNr
VGllclVwQXRSZXR1cm46CkBAIC0zNzA1LDYgKzM3MTAsOSBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUs
IEdldEJ1dHRlcmZseSwgb3JpZ2luLCBFZGdlKGFycmF5LCBDZWxsVXNlKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCisgICAgICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpTdHJpbmcp
CisgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5C
bG9jaywgU3BlY05vbmUsIFJlc29sdmVSb3BlLCBvcmlnaW4sIEVkZ2UoYXJyYXksIEtub3duU3Ry
aW5nVXNlKSk7CisKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2UsIG9yaWdpbiwKICAgICAgICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBF
ZGdlKGFycmF5LCBLbm93bkNlbGxVc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
aW5kZXggYWIxNGRiNmI1ZDk0ODI3YzQ3YWNkZjBhNTE2NWI3YjM2NzI4ZDBmZS4uOWFjOTJmODRh
OTE3MmFlYmU2ZTVjNDBlYmRlMGQyZWQ5YjVjNTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKQEAgLTE5NjUsOSArMTk2NSw2IEBAIHN0cnVjdCBOb2RlIHsKICAgICBib29sIGhh
c1N0b3JhZ2VDaGlsZCgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAg
ICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6Ci0gICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
LSAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICAgICAgY2FzZSBFbnVtZXJhdG9y
R2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxE
aXJlY3Q6CkBAIC0yMDAwLDkgKzE5OTcsNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAg
ICBBU1NFUlQoaGFzU3RvcmFnZUNoaWxkKCkpOwogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKLSAg
ICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6Ci0gICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
LSAgICAgICAgY2FzZSBTdHJpbmdDb2RlUG9pbnRBdDoKICAgICAgICAgY2FzZSBFbnVtZXJhdG9y
R2V0QnlWYWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICByZXR1cm4gMjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxMWU0NmViMzdiN2U0
NTJkOWZhYWU3ZDJmOThkN2Q2ZjA5MWY5NmNiLi44Zjg4NWI1NzA2NjUwZmE5NDI3MDcxZjBmNGEw
MGU0MDA1YjI4NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0yNTEsNiArMjUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKEFycmF5aWZ5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXJyYXlpZnlUb1N0
cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEluZGV4ZWRQcm9wZXJ0
eVN0b3JhZ2UsIE5vZGVSZXN1bHRTdG9yYWdlKSBcCisgICAgbWFjcm8oUmVzb2x2ZVJvcGUsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENvbnN0YW50U3RvcmFnZVBvaW50ZXIsIE5vZGVSZXN1
bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oR2V0R2V0dGVyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhHZXRTZXR0ZXIsIE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMTk4YWU5MTk5MmI1MTg5NzhkODJhMGQ0N2U1MjZl
MWE2NzU1ZDY3OS4uZGQwNTk4NGVmMzhmMjhlN2IyMmRiYWVkNjIwZjYzYWIwZTljNDFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNTE1LDYg
KzI1MTUsMTYgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVSb3Bl
LCBTdHJpbmdJbXBsKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICByZXR1cm4gc3RyaW5nLT52
YWx1ZShnbG9iYWxPYmplY3QpLmltcGwoKTsKIH0KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblJlc29sdmVSb3BlU3RyaW5nLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKworICAgIHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICBy
ZXR1cm4gc3RyaW5nOworfQorCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU3Ry
aW5nVmFsdWVPZiwgSlNTdHJpbmcqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CkBAIC0yNjg1LDcgKzI2OTUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3U3ltYm9sV2l0aFN0cmluZ0Rlc2NyaXB0aW9uLCBTeW1ib2wqLCAoSlNHbAog
ICAgIFN0cmluZyBzdHJpbmcgPSBkZXNjcmlwdGlvbi0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIHJldHVybiBTeW1i
b2w6OmNyZWF0ZVdpdGhEZXNjcmlwdGlvbih2bSwgc3RyaW5nKTsKKyAgICByZXR1cm4gU3ltYm9s
OjpjcmVhdGVXaXRoRGVzY3JpcHRpb24odm0sIFdURk1vdmUoc3RyaW5nKSk7CiB9CiAKIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdTeW1ib2xXaXRoRGVzY3JpcHRpb24sIFN5
bWJvbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkRGVzY3JpcHRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAppbmRleCBmYmQ2ZDA5ZTQ2NzI1Zjk3M2JiZTg3ZDg2OGJmYzk0MDFkZTlhNzI2Li43Y2I4OTQ4
YTkyYTEzMTE3NjEyNTk5MGI5NzYwNjEyZDk5YTI3YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjM0LDYgKzIzNCw3IEBAIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uRW5zdXJlRG91YmxlLCBjaGFyKiwgKFZNKiwgSlNDZWxsKikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzLCBj
aGFyKiwgKFZNKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25FbnN1cmVBcnJheVN0b3JhZ2UsIGNoYXIqLCAoVk0qLCBKU0NlbGwqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJlc29sdmVSb3BlLCBTdHJpbmdJbXBsKiwgKEpTR2xv
YmFsT2JqZWN0KiwgSlNTdHJpbmcqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblJlc29sdmVSb3BlU3RyaW5nLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCosIEpTU3Ry
aW5nKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TaW5nbGVDaGFyYWN0
ZXJTdHJpbmcsIEpTU3RyaW5nKiwgKFZNKiwgaW50MzJfdCkpOwogCiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblN0cmluZ1N1YnN0ciwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiwgaW50MzJfdCwgaW50MzJfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRl
eCBiMDE1Mzg1YjRkZjA3NmY1YTlkZTYzYzUyNGYxOTZjMzEzZTM1MDZlLi40NzRiMjZjZDdiOTU1
ZDI0ZTdkODRmODQwOWVlMmUzNGE5Mjg4OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
MTA3OCw2ICsxMDc4LDEwIEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2Fz
ZSBSZXNvbHZlUm9wZToKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7Cisg
ICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIENoZWNrSlNDYXN0OgogICAgICAgICBj
YXNlIENoZWNrTm90SlNDYXN0OgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDliNzgzMWExMTYyMzE0M2YzYzdi
OTAxYmM2M2RmMzU2ZjliOWYyM2UuLjg2MDlhNTZjZWYyYjgxMjc3YzNmZmU5YmMxZDQzZjJmNmJj
ZjUzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CkBAIC0zMjAsNiArMzIwLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIERh
dGVHZXRUaW1lOgogICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CiAgICAgY2FzZSBEYXRhVmlld0dl
dEZsb2F0OgorICAgIGNhc2UgUmVzb2x2ZVJvcGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgY2FzZSBHZXRCdXR0ZXJmbHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGIwZmUwZDdlN2E1Nzc0Zjc3ODE0ZDk4MzVkMzk2MjE4
Y2YzNTM5MjUuLmMyNTRjOTNiYWM0ZWQxMzRhMGVjZjA5NWQ1ZDg0Y2UyNGI0OTIwZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0y
ODc3LDExICsyODc3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldENoYXJDb2Rl
QXQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmcodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBpbmRleCh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBu
b2RlLT5jaGlsZDMoKSk7CiAKICAgICBHUFJSZWcgc3RyaW5nUmVnID0gc3RyaW5nLmdwcigpOwog
ICAgIEdQUlJlZyBpbmRleFJlZyA9IGluZGV4LmdwcigpOwotICAgIEdQUlJlZyBzdG9yYWdlUmVn
ID0gc3RvcmFnZS5ncHIoKTsKICAgICAKICAgICBBU1NFUlQoc3BlY3VsYXRpb25DaGVja2VkKG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlLCBTcGVjU3RyaW5nKSk7CiAKQEAg
LTI4OTYsMTIgKzI4OTQsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldENoYXJD
b2RlQXQoTm9kZSogbm9kZSkKICAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIgaW50byBzY3JhdGNo
UmVnCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywg
U3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFn
SXM4Qml0KCkpKTsKIAotICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZVJlZywgaW5kZXhSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgMCksIHNjcmF0
Y2hSZWcpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRj
aFJlZywgU3RyaW5nSW1wbDo6ZGF0YU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CisgICAgbV9qaXQu
bG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNoUmVnLCBpbmRleFJlZywgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzT25lLCAwKSwgc2NyYXRjaFJlZyk7CiAgICAgSklUQ29tcGlsZXI6
Okp1bXAgY29udDhCaXQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBpczE2Qml0LmxpbmsoJm1faml0
KTsKIAotICAgIG1faml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VS
ZWcsIGluZGV4UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBzY3JhdGNoUmVnKTsK
KyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0
cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOworICAgIG1faml0LmxvYWQxNihN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2hSZWcsIGluZGV4UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6VGltZXNUd28sIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIGNvbnQ4Qml0LmxpbmsoJm1f
aml0KTsKIApAQCAtMjkxMiwxMCArMjkxMiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6CiB7
CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUs
IDApKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9n
cmFwaC5jaGlsZChub2RlLCAxKSk7Ci0gICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBt
X2dyYXBoLmNoaWxkKG5vZGUsIDIpKTsKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7
CiAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7Ci0gICAgR1BSUmVnIHN0
b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsK
ICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKQEAgLTI5MzMsMTIgKzI5MzEsMTQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSogbm9kZSwgY29uc3QgU2Nv
cGVkTGFtYmRhPHN0ZDoKICAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIgaW50byBzY3JhdGNoUmVn
CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNy
b0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3Ry
aW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4
Qml0KCkpKTsKIAotICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSwgMCksIHNjcmF0
Y2hSZWcpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRj
aFJlZywgU3RyaW5nSW1wbDo6ZGF0YU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CisgICAgbV9qaXQu
bG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNoUmVnLCBwcm9wZXJ0eVJlZywg
TWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lLCAwKSwgc2NyYXRjaFJlZyk7CiAgICAgSklUQ29tcGls
ZXI6Okp1bXAgY29udDhCaXQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBpczE2Qml0LmxpbmsoJm1f
aml0KTsKIAotICAgIG1faml0LmxvYWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3Jh
Z2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBzY3JhdGNo
UmVnKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hS
ZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOworICAgIG1faml0Lmxv
YWQxNihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2hSZWcsIHByb3BlcnR5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6VGltZXNUd28sIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIEpJVENvbXBp
bGVyOjpKdW1wIGJpZ0NoYXJhY3RlciA9CiAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgc2NyYXRjaFJlZywgVHJ1c3RlZEltbTMyKG1heFNpbmdsZUNoYXJhY3Rl
clN0cmluZykpOwpAQCAtODM1NSwyOSArODM1NSwzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKiBub2RlKQogICAgIEdQUlRlbXBv
cmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIo
KTsKICAgICAKLSAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewotICAgIGNh
c2UgQXJyYXk6OlN0cmluZzoKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc3RvcmFnZVJlZyk7
Ci0gICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBs
KHN0b3JhZ2VSZWcpLAotICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJhdGlvblJlc29sdmVSb3Bl
LCBzdG9yYWdlUmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZykpOworICAg
IEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6OlN0cmluZyk7CiAKLSAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBT
dHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKLSAgICAgICAgYnJlYWs7Cisg
ICAgYXV0byB0eXBlZEFycmF5VHlwZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBl
KCk7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlZEFycmF5VHlwZSwgaXNUeXBlZFZpZXcodHlwZWRB
cnJheVR5cGUpKTsKIAotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgYXV0byB0eXBlZEFycmF5VHlw
ZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQodHlwZWRBcnJheVR5cGUsIGlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlKSk7CisgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHN0b3JhZ2VSZWcpOworICAgIGNhZ2VUeXBlZEFycmF5
U3RvcmFnZShiYXNlUmVnLCBzdG9yYWdlUmVnKTsKKyAgICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VS
ZWcsIG5vZGUpOworfQogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZVJlZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzdG9yYWdl
UmVnKTsKLSAgICAgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKGJhc2VSZWcsIHN0b3JhZ2VSZWcp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVJlc29sdmVSb3BlKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKIAotICAgIHN0b3JhZ2VSZXN1bHQoc3RvcmFnZVJlZywgbm9kZSk7CisgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CisKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
U3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCByZXN1bHRHUFIpOworCisgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
ZlJvcGVTdHJpbmdJbXBsKHJlc3VsdEdQUikpOworICAgIG1faml0Lm1vdmUoYmFzZUdQUiwgcmVz
dWx0R1BSKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICBzbG93UGF0aENh
bGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsCisgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25S
ZXNvbHZlUm9wZVN0cmluZywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZUdQUikpOworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KE5vZGUqIG5vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXgg
MDMxNWJhMjMxMjBlYzczZjE2Njg1OGMwY2JlZDU0N2I0NTE4ZDk4NC4uOTU2NjE0YTQzNGJhMDk4
MmRiMGVlZGNhYjlkZDFkZjQ1YzJiNmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTQzNyw2ICsxNDM3LDcgQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUFyaXRoTWluTWF4KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVSZXNvbHZl
Um9wZShOb2RlKik7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZvclR5cGVkQXJyYXlPdXRP
ZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRleEdQUiwgR1BSUmVnIHNj
cmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNEZXRh
Y2hlZElmT3V0T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVt
cCBvdXRPZkJvdW5kcyk7CiAgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUq
LCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSLCBHUFJSZWcgc2NyYXRjaEdQUik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCA2M2E3ZGU5MGU1ODUxNzgzODljMDBlMDA0ZjI2ODZhNmZjNTgwY2ZlLi40YWYw
MDI1N2Y4ZmVhOWQ2MDIxYjAwNDVlNzczOTU3NWI3OGNjYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMzNDQs
NiArMzM0NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUmVzb2x2ZVJvcGU6CisgICAgICAgIGNv
bXBpbGVSZXNvbHZlUm9wZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENvbnN0
YW50U3RvcmFnZVBvaW50ZXI6IHsKICAgICAgICAgY29tcGlsZUNvbnN0YW50U3RvcmFnZVBvaW50
ZXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOGU5MmY5MmY3MGYwZjk5NWQ2MjIzMTAx
YzZkMmJlZjk4YTg5MGUwMC4uNmMyYThiYTM5NDliOWJiZmJiNjM0MzZhOWYzMGQyZWU1MmNjNDE2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC00NDU4LDcgKzQ0NTgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKworICAgIGNhc2UgUmVzb2x2
ZVJvcGU6CisgICAgICAgIGNvbXBpbGVSZXNvbHZlUm9wZShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6IHsKICAgICAgICAgY29tcGlsZUNv
bnN0YW50U3RvcmFnZVBvaW50ZXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE2NiwxNyAr
NjE3MCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQo
Tm9kZSogbm9kZSkKICAgICAvLyBBbmQgQ2hlY2tBcnJheSBhbHNvIGVuc3VyZXMgdGhhdCB0aGlz
IFN0cmluZyBpcyBub3QgYSByb3BlLgogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGlu
ZGV4KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRo
aXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
Myh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDQodGhpcyk7CiAKICAgICBHUFJSZWcg
c3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOwogICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4Lmdw
cigpOwotICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKICAgICBHUFJSZWcg
c2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBz
Y3JhdGNoMi5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDNHUFIgPSBzY3JhdGNoMy5ncHIoKTsK
KyAgICBHUFJSZWcgc2NyYXRjaDRHUFIgPSBzY3JhdGNoNC5ncHIoKTsKIAogICAgIG1faml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cmluZ0dQUiwgSlNTdHJpbmc6Om9mZnNldE9m
VmFsdWUoKSksIHNjcmF0Y2gxR1BSKTsKICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2gxR1BSLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSksIHNj
cmF0Y2gyR1BSKTsKQEAgLTYxODUsMjEgKzYxODksMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVN0cmluZ0NvZGVQb2ludEF0KE5vZGUqIG5vZGUpCiAgICAgc3BlY3VsYXRpb25DaGVj
ayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBzY3JhdGNoMkdQUikpOwogCiAgICAg
Ly8gTG9hZCB0aGUgY2hhcmFjdGVyIGludG8gc2NyYXRjaDFHUFIKKyAgICBtX2ppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3RyaW5nSW1wbDo6ZGF0YU9mZnNl
dCgpKSwgc2NyYXRjaDRHUFIpOwogICAgIGF1dG8gaXMxNkJpdCA9IG1faml0LmJyYW5jaFRlc3Qz
MihDQ2FsbEhlbHBlcnM6Olplcm8sIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMUdQUiwg
U3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFn
SXM4Qml0KCkpKTsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKIAotICAgIG1f
aml0LmxvYWQ4KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBD
Q2FsbEhlbHBlcnM6OlRpbWVzT25lLCAwKSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LmxvYWQ4
KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2g0R1BSLCBpbmRleEdQUiwgQ0NhbGxIZWxw
ZXJzOjpUaW1lc09uZSwgMCksIHNjcmF0Y2gxR1BSKTsKICAgICBkb25lLmFwcGVuZChtX2ppdC5q
dW1wKCkpOwogCiAgICAgaXMxNkJpdC5saW5rKCZtX2ppdCk7Ci0gICAgbV9qaXQubG9hZDE2KEND
YWxsSGVscGVyczo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBDQ2FsbEhlbHBlcnM6
OlRpbWVzVHdvLCAwKSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LmxvYWQxNihDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChzY3JhdGNoNEdQUiwgaW5kZXhHUFIsIENDYWxsSGVscGVyczo6VGltZXNU
d28sIDApLCBzY3JhdGNoMUdQUik7CiAgICAgLy8gVGhpcyBpcyBvay4gaW5kZXhHUFIgbXVzdCBi
ZSBwb3NpdGl2ZSBpbnQzMl90IGhlcmUgYW5kIGFkZGluZyAxIG5ldmVyIGNhdXNlcyBvdmVyZmxv
dyBpZiB3ZSB0cmVhdCBpbmRleEdQUiBhcyB1aW50MzJfdC4KICAgICBtX2ppdC5hZGQzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgaW5kZXhHUFIsIHNjcmF0Y2gzR1BSKTsKICAgICBk
b25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgc2Ny
YXRjaDNHUFIsIHNjcmF0Y2gyR1BSKSk7CiAgICAgbV9qaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMHhmZmZmZmMwMCksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUik7CiAgICAg
ZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRj
aDJHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZDgwMCkpKTsKLSAgICBtX2ppdC5s
b2FkMTYoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc2NyYXRjaDNHUFIsIEND
YWxsSGVscGVyczo6VGltZXNUd28sIDApLCBzY3JhdGNoM0dQUik7CisgICAgbV9qaXQubG9hZDE2
KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2g0R1BSLCBzY3JhdGNoM0dQUiwgQ0NhbGxI
ZWxwZXJzOjpUaW1lc1R3bywgMCksIHNjcmF0Y2gzR1BSKTsKICAgICBtX2ppdC5hbmQzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGZmZmZmYzAwKSwgc2NyYXRjaDNHUFIsIHNjcmF0Y2gy
R1BSKTsKICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBzY3JhdGNoMkdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkYzAwKSkpOwog
ICAgIG1faml0LmxzaGlmdDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEwKSwgc2NyYXRj
aDFHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggZTEwZDYyZTQyN2QwZDgwM2FkMGU0MzNlNGUzNWRl
MmQyZDZmMTgyNy4uY2U4ZDQ2ZGQ3YmYwMGFhNTliZjhlNjc4NTE1NDljM2QyZmMzZmI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwCkBAIC0yODMsNiArMjgzLDcgQEAgY2xhc3MgVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5Ogog
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICAgICAgICAgICAgICBjYXNl
IEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgICAgICAgICAgY2FzZSBSZXNvbHZl
Um9wZToKICAgICAgICAgICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXRBc0ludDUyOgogICAgICAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTM2Myw2ICszNjQsNyBAQCBjbGFzcyBUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFz
SW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgor
ICAgICAgICAgICAgICAgIGNhc2UgUmVzb2x2ZVJvcGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
aGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggYWZhMGJmODkyZGVlN2Q1MzFjYjhhYzNiNTgwODllMjdiMTg0
MzRlOC4uZGFhY2E5Mjk2YmMwMjMxMzc3OWY5ODNkNDE2MWZjOWUxMGUzZTU4YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjg5LDYgKzI4
OSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgQm9vbGVhblRvTnVtYmVyOgogICAgIGNhc2UgSGFzSW5kZXhlZFByb3BlcnR5OgogICAg
IGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKKyAgICBjYXNlIFJlc29sdmVSb3BlOgog
ICAgIGNhc2UgR2V0UHJvcGVydHlFbnVtZXJhdG9yOgogICAgIGNhc2UgRW51bWVyYXRvck5leHRV
cGRhdGVJbmRleEFuZE1vZGU6CiAgICAgY2FzZSBFbnVtZXJhdG9yTmV4dEV4dHJhY3RNb2RlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggYTkzYTZiYTQxNjE1
ZTA0YTgzN2M5YjljMTM0NzllODRmNTExNzlmOC4uYzJkNWE5MTFmNWEwOGQyNzZhYTk5YTE2NmE0
NjU0ODM0ZWNmY2E1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6
UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgp
IHx8IHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKICAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgp
LnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAK
LSAgICBpZiAoIXNob3VsZER1bXBEaXNhc3NlbWJseSgpICYmICFPcHRpb25zOjphc3luY0Rpc2Fz
c2VtYmx5KCkgJiYgIWdyYXBoLmNvbXBpbGF0aW9uKCkgJiYgIXN0YXRlLnByb2MtPm5lZWRzUENU
b09yaWdpbk1hcCgpKQorICAgIGlmICghc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgJiYgIXZlcmJv
c2VDb21waWxhdGlvbkVuYWJsZWQoKSAmJiAhT3B0aW9uczo6YXN5bmNEaXNhc3NlbWJseSgpICYm
ICFncmFwaC5jb21waWxhdGlvbigpICYmICFzdGF0ZS5wcm9jLT5uZWVkc1BDVG9PcmlnaW5NYXAo
KSkKICAgICAgICAgZ3JhcGguZnJlZURGR0lSQWZ0ZXJMb3dlcmluZygpOwogCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGZmYjgz
NWM2NDAxNGJhOTkwNGI3NTZiMjc0ZjRiYjc4MmZlN2ZjZjYuLjE2YzFmMzhlMTQ5MTZlMjY4OGU5
ODFhNTlmMDU4MzJiMmVlN2E4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMTUsNiArMTAxNSw5IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAg
IGNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBSZXNvbHZlUm9wZToKKyAgICAgICAgICAgIGNvbXBpbGVSZXNvbHZlUm9w
ZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICAg
ICAgICAgIGNvbXBpbGVDaGVja0FycmF5KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ3Njcs
MzQgKzQ3NzAsMzYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBp
bGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJh
eTo6U3RyaW5nKSB7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5l
d0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOwotCi0gICAgICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gbV9vdXQu
bG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKLSAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzUm9wZVN0cmluZyhjZWxsLCBt
X25vZGUtPmNoaWxkMSgpKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1YWxseShjb250aW51YXRpb24p
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uUmVzb2x2ZVJvcGUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGNlbGwpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc2V0U3RvcmFnZSht
X291dC5sb2FkUHRyKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCisgICAgICAgIEFTU0VSVChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSAhPSBB
cnJheTo6U3RyaW5nKTsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGlzVHlw
ZWRWaWV3KG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSksIG1fbm9kZS0+YXJy
YXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSk7CiAgICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBtX291
dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKICAgICAg
ICAgc2V0U3RvcmFnZShjYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCB2ZWN0b3IsIGNlbGwpKTsK
ICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVSZXNvbHZlUm9wZSgpCisgICAgeworICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOworICAgICAgICBMVmFsdWUgc3RyaW5nID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihz
dHJpbmcpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc1JvcGVTdHJpbmcoc3RyaW5nLCBtX25v
ZGUtPmNoaWxkMSgpKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1YWxseShjb250aW51YXRpb24pKTsK
KworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRo
LCBjb250aW51YXRpb24pOworCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblJlc29sdmVSb3BlU3Ry
aW5nLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBzdHJpbmcpKTsKKworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5
cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNv
bXBpbGVDaGVja0FycmF5KCkKICAgICB7CkBAIC04ODcyLDcgKzg4NzcsNiBAQCBJR05PUkVfQ0xB
TkdfV0FSTklOR1NfRU5ECiAgICAgewogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd1N0cmluZyht
X2dyYXBoLmNoaWxkKG1fbm9kZSwgMCkpOwogICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQz
MihtX2dyYXBoLmNoaWxkKG1fbm9kZSwgMSkpOwotICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxv
d1N0b3JhZ2UobV9ncmFwaC5jaGlsZChtX25vZGUsIDIpKTsKICAgICAgICAgICAgIAogICAgICAg
ICBMQmFzaWNCbG9jayBmYXN0UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNp
Y0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTg5MDMsNyArODkwNyw3IEBA
IElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkyNAogICAgICAgICBWYWx1ZUZyb21CbG9jayBjaGFy
OEJpdCA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKG1f
b3V0LmJhc2VJbmRleCgKLSAgICAgICAgICAgICAgICBtX2hlYXBzLmNoYXJhY3RlcnM4LCBzdG9y
YWdlLCBtX291dC56ZXJvRXh0UHRyKGluZGV4KSwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLmNo
YXJhY3RlcnM4LCBtX291dC5sb2FkUHRyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9k
YXRhKSwgbV9vdXQuemVyb0V4dFB0cihpbmRleCksCiAgICAgICAgICAgICAgICAgcHJvdmVuVmFs
dWUobV9ncmFwaC5jaGlsZChtX25vZGUsIDEpKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChiaXRz
Q29udGludWF0aW9uKTsKICAgICAgICAgICAgIApAQCAtODkxMSw3ICs4OTE1LDcgQEAgSUdOT1JF
X0NMQU5HX1dBUk5JTkdTX0VORAogCiAgICAgICAgIExWYWx1ZSBjaGFyMTZCaXRWYWx1ZSA9IG1f
b3V0LmxvYWQxNlplcm9FeHQzMigKICAgICAgICAgICAgIG1fb3V0LmJhc2VJbmRleCgKLSAgICAg
ICAgICAgICAgICBtX2hlYXBzLmNoYXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0
cihpbmRleCksCisgICAgICAgICAgICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzMTYsIG1fb3V0Lmxv
YWRQdHIoc3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpLCBtX291dC56ZXJvRXh0
UHRyKGluZGV4KSwKICAgICAgICAgICAgICAgICBwcm92ZW5WYWx1ZShtX2dyYXBoLmNoaWxkKG1f
bm9kZSwgMSkpKSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoYXIxNkJpdCA9IG1fb3V0LmFu
Y2hvcihjaGFyMTZCaXRWYWx1ZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKQEAgLTg5OTIsNyAr
ODk5Niw2IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKIAogICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIGluZGV4ID0g
bG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIExWYWx1ZSBzdG9yYWdlID0gbG93
U3RvcmFnZShtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBzdHJp
bmdJbXBsID0gbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKIApA
QCAtOTAxMyw3ICs5MDE2LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTI0CiAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGNoYXI4Qml0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgbV9v
dXQubG9hZDhaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAgIG1faGVh
cHMuY2hhcmFjdGVyczgsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpLAorICAgICAg
ICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVyczgsIG1fb3V0LmxvYWRQdHIoc3RyaW5nSW1wbCwg
bV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpLCBtX291dC56ZXJvRXh0UHRyKGluZGV4KSwKICAgICAg
ICAgICAgICAgICBwcm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpKTsKICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCkBAIC05MDIxLDcgKzkwMjQsNyBA
QCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAKICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgY2hhcjE2Qml0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgbV9vdXQubG9h
ZDE2WmVyb0V4dDMyKG1fb3V0LmJhc2VJbmRleCgKLSAgICAgICAgICAgICAgICBtX2hlYXBzLmNo
YXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRleCksCisgICAgICAgICAg
ICAgICAgbV9oZWFwcy5jaGFyYWN0ZXJzMTYsIG1fb3V0LmxvYWRQdHIoc3RyaW5nSW1wbCwgbV9o
ZWFwcy5TdHJpbmdJbXBsX2RhdGEpLCBtX291dC56ZXJvRXh0UHRyKGluZGV4KSwKICAgICAgICAg
ICAgICAgICBwcm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpKTsKICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogICAgICAgICAKQEAgLTkwNDMsNyArOTA0Niw2IEBAIElHTk9S
RV9DTEFOR19XQVJOSU5HU19FTkQKIAogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd1N0cmluZyht
X25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2Rl
LT5jaGlsZDIoKSk7Ci0gICAgICAgIExWYWx1ZSBzdG9yYWdlID0gbG93U3RvcmFnZShtX25vZGUt
PmNoaWxkMygpKTsKIAogICAgICAgICBMVmFsdWUgc3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIo
YmFzZSwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CiAgICAgICAgIExWYWx1ZSBsZW5ndGggPSBt
X291dC5sb2FkMzJOb25OZWdhdGl2ZShzdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfbGVu
Z3RoKTsKQEAgLTkwNjEsMTIgKzkwNjMsMTIgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTI0
CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNoYXI4Qml0ID0gbV9vdXQuYW5jaG9yKAogICAgICAg
ICAgICAgbV9vdXQubG9hZDhaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAg
ICAgIG1faGVhcHMuY2hhcmFjdGVyczgsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgp
LAorICAgICAgICAgICAgICAgIG1faGVhcHMuY2hhcmFjdGVyczgsIG1fb3V0LmxvYWRQdHIoc3Ry
aW5nSW1wbCwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpLCBtX291dC56ZXJvRXh0UHRyKGluZGV4
KSwKICAgICAgICAgICAgICAgICBwcm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpKTsKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGlzMTZCaXQsIGlzTGVhZFN1cnJvZ2F0ZSk7Ci0gICAgICAgIExWYWx1ZSBsZWFkQ2hhcmFjdGVy
ID0gbV9vdXQubG9hZDE2WmVyb0V4dDMyKG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLmNoYXJhY3Rl
cnMxNiwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRleCksIHByb3ZlblZhbHVlKG1fbm9k
ZS0+Y2hpbGQyKCkpKSk7CisgICAgICAgIExWYWx1ZSBsZWFkQ2hhcmFjdGVyID0gbV9vdXQubG9h
ZDE2WmVyb0V4dDMyKG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLmNoYXJhY3RlcnMxNiwgbV9vdXQu
bG9hZFB0cihzdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSksIG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpLCBwcm92ZW5WYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICBW
YWx1ZUZyb21CbG9jayBjaGFyMTZCaXQgPSBtX291dC5hbmNob3IobGVhZENoYXJhY3Rlcik7CiAg
ICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5hZGQoaW5kZXgsIG1fb3V0LmludDMyT25l
KTsKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmFib3ZlT3JFcXVhbChuZXh0SW5kZXgsIGxl
bmd0aCksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoaXNMZWFkU3Vycm9nYXRlKSk7CkBA
IC05MDc5LDcgKzkwODEsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgIEpT
VmFsdWUgbmV4dEluZGV4VmFsdWU7CiAgICAgICAgIGlmIChpbmRleFZhbHVlICYmIGluZGV4VmFs
dWUuaXNJbnQzMigpICYmIGluZGV4VmFsdWUuYXNJbnQzMigpICE9IElOVDMyX01BWCkKICAgICAg
ICAgICAgIG5leHRJbmRleFZhbHVlID0ganNOdW1iZXIoaW5kZXhWYWx1ZS5hc0ludDMyKCkgKyAx
KTsKLSAgICAgICAgTFZhbHVlIHRyYWlsQ2hhcmFjdGVyID0gbV9vdXQubG9hZDE2WmVyb0V4dDMy
KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLmNoYXJhY3RlcnMxNiwgc3RvcmFnZSwgbV9vdXQuemVy
b0V4dFB0cihuZXh0SW5kZXgpLCBuZXh0SW5kZXhWYWx1ZSkpOworICAgICAgICBMVmFsdWUgdHJh
aWxDaGFyYWN0ZXIgPSBtX291dC5sb2FkMTZaZXJvRXh0MzIobV9vdXQuYmFzZUluZGV4KG1faGVh
cHMuY2hhcmFjdGVyczE2LCBtX291dC5sb2FkUHRyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5n
SW1wbF9kYXRhKSwgbV9vdXQuemVyb0V4dFB0cihuZXh0SW5kZXgpLCBuZXh0SW5kZXhWYWx1ZSkp
OwogICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwobV9vdXQuYml0QW5kKHRyYWls
Q2hhcmFjdGVyLCBtX291dC5jb25zdEludDMyKDB4ZmZmZmZjMDApKSwgbV9vdXQuY29uc3RJbnQz
MigweGRjMDApKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShoYXNUcmFpbFN1cnJvZ2F0
ZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1RyYWlsU3Vycm9nYXRlLCBjb250aW51
YXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA5NDRmMDI2YzEyNzg3YzEyNjdiM2JmNzMx
MDRmMWVlODI4NWRkMjEwLi4yYjZmOTI1NDk0YzU2NzgyNWUwYzIxMjA3NjU0YzFmYWNlNjM4MTg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjc3LDYgKzI3Nyw3IEBAIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uQ3JlYXRlQmlnSW50MzIpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Vc2VCaWdJbnQzMik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbklzQmlnSW50MzIpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc0hlYXBCaWdJbnQpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DcmVhdGVOb25Sb3BlTm9uQXRvbVN0cmluZyk7CiAK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJpbnRTdGRPdXQpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25QcmludFN0ZEVycik7CkBA
IC01OTIsNiArNTkzLDggQEAgY2xhc3MgR2xvYmFsT2JqZWN0IGZpbmFsIDogcHVibGljIEpTR2xv
YmFsT2JqZWN0IHsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJpc0JpZ0ludDMyIl9zLCBmdW5j
dGlvbklzQmlnSW50MzIsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImlzSGVhcEJpZ0lu
dCJfcywgZnVuY3Rpb25Jc0hlYXBCaWdJbnQsIDEpOwogCisgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiY3JlYXRlTm9uUm9wZU5vbkF0b21TdHJpbmciX3MsIGZ1bmN0aW9uQ3JlYXRlTm9uUm9wZU5v
bkF0b21TdHJpbmcsIDEpOworCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHVtcFR5cGVzRm9y
QWxsVmFyaWFibGVzIl9zLCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyAsIDApOwog
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHJhaW5NaWNyb3Rhc2tzIl9zLCBmdW5jdGlvbkRy
YWluTWljcm90YXNrcywgMCk7CkBAIC0yNjQ4LDYgKzI2NTEsMjkgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGZ1bmN0aW9uSXNIZWFwQmlnSW50LCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqIGNhbGwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLmlzSGVhcEJpZ0ludCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvbkNyZWF0ZU5vblJvcGVOb25BdG9tU3RyaW5nLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBTdHJpbmcgc291cmNlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCBzb3VyY2UubGVuZ3RoKCkgPT0gMSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImVtcHR5
IC8gb25lLWxlbmd0aCBzdHJpbmcgY2FuIGJlIGFsd2F5cyBhdG9tIHN0cmluZyJfcyk7CisKKyAg
ICBpZiAoc291cmNlLmltcGwoKS0+aXNBdG9tKCkpIHsKKyAgICAgICAgaWYgKHNvdXJjZS5pczhC
aXQoKSkKKyAgICAgICAgICAgIHNvdXJjZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzb3VyY2UuY2hh
cmFjdGVyczgoKSwgc291cmNlLmxlbmd0aCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c291cmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHNvdXJjZS5jaGFyYWN0ZXJzMTYoKSwgc291cmNl
Lmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVCghc291cmNlLmltcGwoKS0+
aXNBdG9tKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgV1RG
TW92ZShzb3VyY2UpKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkNo
ZWNrTW9kdWxlU3ludGF4LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKaW5k
ZXggOGY1MzIzNDdhNjNmZWQ5MzBjNTY1ZjdmNjkwZWYxOWRhNjlkMmQ2OC4uODA4NGQ3NzE3NDhj
YWY0MzI1YTczNWU1N2M0MmRlMmU5OTdiZGM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKQEAgLTkzLDcgKzkzLDcgQEAgQUxX
QVlTX0lOTElORSB1aW50MzJfdCBqc01hcEhhc2hJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgSlNWYWwKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgY29uc3Qg
U3RyaW5nJiB3dGZTdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7
CisgICAgICAgIFN0cmluZyB3dGZTdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoZXhwZWN0aW9uID09IEV4Y2VwdGlvbkV4
cGVjdGF0aW9uOjpDYW5UaHJvdykKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIFVJTlRfTUFYKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCAwMWJjMDg2YWY4NDk4MGY4NmEw
NGJiMmFkZDliNThhMTRkYmU2MTg5Li40NGY5ZjJhYjA0NzU0NmI4MTM0NzM1YjMzZjI3NzU4MzJk
ZDQzOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcApAQCAtODIsMTQgKzgyLDE0IEBAIHZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6
dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiBERUZJ
TkVfVklTSVRfQ0hJTERSRU5fV0lUSF9NT0RJRklFUihKU19FWFBPUlRfUFJJVkFURSwgSW50ZXJu
YWxGdW5jdGlvbik7CiAKLWNvbnN0IFN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZSgpCitT
dHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZSgpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1l
ID0gbV9vcmlnaW5hbE5hbWUtPnRyeUdldFZhbHVlKCk7CiAgICAgQVNTRVJUKG5hbWUpOyAvLyBt
X29yaWdpbmFsTmFtZSB3YXMgYnVpbHQgZnJvbSBhIFN0cmluZywgYW5kIGhlbmNlLCB0aGVyZSBp
cyBubyByb3BlIHRvIHJlc29sdmUuCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLWNvbnN0IFN0cmlu
ZyBJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZShWTSYgdm0pCitTdHJpbmcgSW50ZXJuYWxG
dW5jdGlvbjo6ZGlzcGxheU5hbWUoVk0mIHZtKQogewogICAgIEpTVmFsdWUgZGlzcGxheU5hbWUg
PSBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKICAgICAKQEAg
LTEyMyw5ICsxMjMsOSBAQCBDYWxsRGF0YSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCogY2VsbCkKICAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKIH0KIAotY29uc3Qg
U3RyaW5nIEludGVybmFsRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYgdm0pCitT
dHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiB2bSkKIHsK
LSAgICBjb25zdCBTdHJpbmcgZXhwbGljaXROYW1lID0gZGlzcGxheU5hbWUodm0pOworICAgIFN0
cmluZyBleHBsaWNpdE5hbWUgPSBkaXNwbGF5TmFtZSh2bSk7CiAgICAgCiAgICAgaWYgKCFleHBs
aWNpdE5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IGE1
YjgzNTU4YWM0NjNjYTJkY2Q4NDYzOTM4MWY0NmYxODJjYzBkYzguLmJjMjk4MThjOWIzMDQ3NDUz
ZjczMzczM2Q0ZGUzNDdkYTBiYzRlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgY2xhc3MgSW50ZXJu
YWxGdW5jdGlvbiA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfVklT
SVRfQ0hJTERSRU5fV0lUSF9NT0RJRklFUihKU19FWFBPUlRfUFJJVkFURSk7CiAKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBjb25zdCBTdHJpbmcmIG5hbWUoKTsKLSAgICBjb25zdCBTdHJpbmcgZGlz
cGxheU5hbWUoVk0mKTsKLSAgICBjb25zdCBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKFZN
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoKTsKKyAgICBTdHJpbmcgZGlz
cGxheU5hbWUoVk0mKTsKKyAgICBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJik7CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgIHsgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCmluZGV4IGVjNzc4NThiY2Q5
NDFhZTJhNmUzNGQyZGJmMTVjNjgzYWQ2ZmM3NTMuLjUxZGRmZTRjNTRiMWY4NjQwZGM3MzJmZjVm
MTk2NWM3MmIzYzM2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBm
aW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91
bmRBcmdzKCkgeyByZXR1cm4gbV9ib3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRo
aXMgYXJyYXkgdG8gYmUgbXV0YXRlZCEKICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5KEpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgSlNTdHJpbmcqIG5hbWVNYXlCZU51bGwoKSB7IHJldHVybiBtX25h
bWVNYXlCZU51bGwuZ2V0KCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHJpbmcoKQorICAg
IFN0cmluZyBuYW1lU3RyaW5nKCkKICAgICB7CiAgICAgICAgIGlmICghbV9uYW1lTWF5QmVOdWxs
KQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA3OTI2NzYzY2Q1NjVk
ZWJiMWEwYjFjOWNmMTdmZDMwOTIxNDQ4NjZhLi4zN2VjYjI1MzUwZDUyYThjZjdjYmE1ZTAwNDdi
YThkNTVhZWQ3ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKQEAgLTgzOSw3ICs4MzksNyBAQCBpbmxpbmUgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iagogICAgICAgICByZXR1cm4gTm9QcmVmZXJlbmNlOwogICAgIH0KIAotICAgIFN0cmluZ0lt
cGwqIGhpbnRTdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkuaW1w
bCgpOworICAgIFN0cmluZyBoaW50U3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShnbG9i
YWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE5vUHJlZmVyZW5jZSk7
CiAKICAgICBpZiAoV1RGOjplcXVhbChoaW50U3RyaW5nLCAiZGVmYXVsdCIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGUzZjAz
YTRjMDhmODQ2OTNiMTY0NDBmODFhN2NlYTdkNjg4ZWRhY2MuLjA3ZTcyY2YzOTcyNGFhNzEzOTg3
NzJmZmU2M2E0NzkyZjZjNGQ4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBKU0ludGVybmFsUHJv
bWlzZSogSlNNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKUwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHByb21pc2UtPnJlamVj
dFdpdGhDYXVnaHRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSkpOwogCiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHByb21pc2UtPnJlamVjdChnbG9iYWxPYmplY3QsIGNyZWF0ZUVycm9y
KGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQgbm90IGltcG9ydCB0aGUgbW9kdWxlICci
LCBtb2R1bGVOYW1lU3RyaW5nLCAiJy4iKSkpOworICAgIHByb21pc2UtPnJlamVjdChnbG9iYWxP
YmplY3QsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQgbm90IGlt
cG9ydCB0aGUgbW9kdWxlICciLCBXVEZNb3ZlKG1vZHVsZU5hbWVTdHJpbmcpLCAiJy4iKSkpOwog
ICAgIHJldHVybiBwcm9taXNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCmluZGV4IGJmOTA2YTI3ZjgzNTk3MGM4NTU5OTBkMDUyYjNkZTNjNjk4
YWFhZDQuLjE5N2JhNTk5ZGM2ZjFiNjE1MjU3YjVmYjg2ZTZiNjRlZjEwZTcxMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zNzEsOSArMzcx
LDkgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgogICAgIH0KIAogICAgIGlmICh2YWx1ZS5pc1N0
cmluZygpKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0gYXNTdHJpbmcodmFsdWUp
LT52YWx1ZShtX2dsb2JhbE9iamVjdCk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBhc1N0cmlu
Zyh2YWx1ZSktPnZhbHVlKG1fZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgU3RyaW5naWZ5RmFpbGVkKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRRdW90
ZWRKU09OU3RyaW5nKHN0cmluZyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kUXVvdGVkSlNPTlN0
cmluZyhXVEZNb3ZlKHN0cmluZykpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVk
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKaW5kZXggNTI1MDliYjZlNDcyMTQzMGEyYWIx
MGNkMzM4NmJlNDMxYWViNjM0OC4uYmU4N2NmZWZlNzVkMDdmZDA0NjliYWIyYzdiMzgwZjk2YmE2
MDdmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgSlNTdHJpbmcq
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y29tcHV0ZU5leHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlMKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChp
bmRleCA8IGVuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXgoKSAmJiBiYXNlLT5zdHJ1Y3R1cmVJRCgp
ID09IGNhY2hlZFN0cnVjdHVyZUlEKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBhdXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbmFtZS0+dmFsdWUoZ2xv
YmFsT2JqZWN0KSk7CisgICAgICAgICAgICBhdXRvIGlkID0gbmFtZS0+dG9JZGVudGlmaWVyKGds
b2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKICAgICAgICAgICAgIGlmIChiYXNlLT5oYXNFbnVtZXJhYmxlUHJvcGVydHkoZ2xvYmFs
T2JqZWN0LCBpZCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JlbW90ZUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1JlbW90ZUZ1bmN0aW9uLmgKaW5kZXggOGEyZjNjYTJiNDFiMjNj
ZGRiMTVmZDdkZDFmMThjZjZhMzczZDc2OC4uMGIyN2IyMDJkZDQ3NzE5Yjc1NDc0ODg1MWE1M2Nl
NGNjYjdhMDA4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
ZW1vdGVGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUmVt
b3RlRnVuY3Rpb24uaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBKU1JlbW90ZUZ1bmN0aW9uIGZp
bmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbigp
IHsgcmV0dXJuIG1fdGFyZ2V0RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0dsb2JhbE9iamVjdCog
dGFyZ2V0R2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gdGFyZ2V0RnVuY3Rpb24oKS0+Z2xvYmFsT2Jq
ZWN0KCk7IH0KICAgICBKU1N0cmluZyogbmFtZU1heUJlTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZU1heUJlTnVsbC5nZXQoKTsgfQotICAgIGNvbnN0IFN0cmluZyYgbmFtZVN0cmluZygpCisg
ICAgU3RyaW5nIG5hbWVTdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX25hbWVNYXlCZU51
bGwpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCAzMGQwODFkMGNlM2NiYWI1NDA5ZmRmNzQ5
OGJhMWU1MTUyZTE1M2JkLi4yN2ZjYTdmMGFmNGY0MWMxMDc1YTM3Nzc3Y2Y1MzFlNWM2NTA4MjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0xMDMs
OSArMTAzLDkgQEAgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB1MSwKICAgICAgICAgcmV0dXJuIEpTUm9w
ZVN0cmluZzo6Y3JlYXRlKHZtLCBqc1N0cmluZyh2bSwgdTEpLCBzMik7CiAKICAgICBBU1NFUlQo
IXMyLT5pc1JvcGUoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiB1MiA9IHMyLT52YWx1ZShnbG9iYWxP
YmplY3QpOworICAgIFN0cmluZyB1MiA9IHMyLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgIHNj
b3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgU3RyaW5nIG5ld1N0cmluZyA9IHRyeU1ha2VT
dHJpbmcodTEsIHUyKTsKKyAgICBTdHJpbmcgbmV3U3RyaW5nID0gdHJ5TWFrZVN0cmluZyh1MSwg
V1RGTW92ZSh1MikpOwogICAgIGlmICghbmV3U3RyaW5nKSB7CiAgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMzYsOSArMTM2LDkgQEAgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHMxLCBjb24KICAgICAgICAgcmV0
dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKHZtLCBzMSwganNTdHJpbmcodm0sIHUyKSk7CiAKICAg
ICBBU1NFUlQoIXMxLT5pc1JvcGUoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiB1MSA9IHMxLT52YWx1
ZShnbG9iYWxPYmplY3QpOworICAgIFN0cmluZyB1MSA9IHMxLT52YWx1ZShnbG9iYWxPYmplY3Qp
OwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgU3RyaW5nIG5ld1N0cmluZyA9
IHRyeU1ha2VTdHJpbmcodTEsIHUyKTsKKyAgICBTdHJpbmcgbmV3U3RyaW5nID0gdHJ5TWFrZVN0
cmluZyhXVEZNb3ZlKHUxKSwgdTIpOwogICAgIGlmICghbmV3U3RyaW5nKSB7CiAgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMDksNyArMzA5LDcgQEAgQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6Q29t
cGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShKU0dsb2JhbE8KICAg
ICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZyA9IGFz
U3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQp
OwotICAgICAgICBKU1ZhbHVlIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50
KGdsb2JhbE9iamVjdCwgc3RyaW5nKTsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRWYWx1ZSA9IEpT
QmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIFdURk1vdmUoc3RyaW5nKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0OjpVbmRlZmluZWQpOwogICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQogICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7CkBAIC0zNDksNyAr
MzQ5LDcgQEAgQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJl
QmlnSW50MzJUb090aGVyUHJpbWl0aXZlKEpTR2xvYmEKICAgICBpZiAocHJpbVZhbHVlLmlzU3Ry
aW5nKCkpIHsKICAgICAgICAgU3RyaW5nIHN0cmluZyA9IGFzU3RyaW5nKHByaW1WYWx1ZSktPnZh
bHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
QmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOwotICAgICAgICBKU1ZhbHVlIGJp
Z0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgc3RyaW5n
KTsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0lu
dChnbG9iYWxPYmplY3QsIFdURk1vdmUoc3RyaW5nKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOwogICAg
ICAgICBpZiAoIWJpZ0ludFZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21w
YXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCmluZGV4IDFkMTkyYTM3YjFlYWEwOWIyMDVmZjhk
YmUzNzRmOWQxZjIwNzBjM2UuLmE5MWQyMGZmM2IwMDAxNWJhOTIyZjhjY2NhNTBiNTA5NWU1Y2Rl
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCkBAIC0yMzIsNyArMjMyLDcgQEAgaW5saW5lIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyoKICAg
ICBTdHJpbmcgaW5wdXQgPSBzdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KHZtLCBnbG9iYWxPYmplY3QsIHN0cmluZywgaW5w
dXQsIHJlZ0V4cCwgc3RhcnRPZmZzZXQsIGlnbm9yZWRSZXN1bHQpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJpbmcsIFdURk1vdmUoaW5wdXQpLCByZWdFeHAsIHN0YXJ0T2Zmc2V0LCBpZ25vcmVkUmVz
dWx0KSk7CiB9CiBKU0FycmF5KiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJheShKU0dsb2Jh
bE9iamVjdCosIEpTU3RyaW5nKiwgUmVnRXhwKik7CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCA2MWRjZjUz
ZTJkOWE4MzRiYTI2NjMyZDc3OWE0NmE4ODg4YWI4NmU3Li4zMDIzMTRmOTg0MWVhNzc0MWVkNDVj
Y2M1OWNhZWQxZTk0M2Q1MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTcwOSw3ICs3MDksNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3Ry
LCBKU0NlbGwqLAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
ICAgICAgICAgU3RyaW5nIHNvdXJjZSA9IHRoaXNWYWx1ZS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2godm0sIGdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBzb3VyY2UsIHJlZ0V4cCkpOworICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIHJlbW92ZVVzaW5nUmVnRXhwU2VhcmNoKHZtLCBnbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgV1RGTW92ZShzb3VyY2UpLCByZWdFeHApKTsKICAgICB9CiAKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKQEAgLTE0ODQsNyArMTQ4NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplCiAgICAgU3RyaW5nIGxvd2VyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGUoKTsKICAgICBpZiAobG93ZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBs
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc1ZhbCk7Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGxvd2VyY2FzZWRT
dHJpbmcpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcodm0sIFdURk1vdmUobG93ZXJjYXNlZFN0cmluZykpKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTE1MDIsNyArMTUw
Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2Fz
ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgU3RyaW5nIHVwcGVyY2FzZWRTdHJp
bmcgPSBzLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsKICAgICBpZiAodXBwZXJj
YXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc1ZhbCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNTdHJpbmcodm0sIHVwcGVyY2FzZWRTdHJpbmcpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFdURk1vdmUodXBwZXJjYXNl
ZFN0cmluZykpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1
bmNMb2NhbGVDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwCmluZGV4IDI2ZDhmOWY3NGQ3MDQ5NDk2MmMzMDc2NjlhZDdlODk4
OTQ4NjIyMWIuLmE0YmUyOTc5MGUxZWM5Y2M2NDdmYTgxZjgzOGQ1YmZmNWZlNzJiYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sQ29u
c3RydWN0b3JGb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAgIFN0cmlu
ZyBzdHJpbmcgPSBzdHJpbmdLZXktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCB2bS5zeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZv
cktleShzdHJpbmcpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0
ZSh2bSwgdm0uc3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoV1RGTW92ZShzdHJpbmcpKSkp
OwogfQogCiBjb25zdCBBU0NJSUxpdGVyYWwgU3ltYm9sS2V5Rm9yVHlwZUVycm9yIHsgIlN5bWJv
bC5rZXlGb3IgcmVxdWlyZXMgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBzeW1ib2wiX3Mg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBhNzQ2
NmM5NzI0ZjRkOTA5OTMyNTMxMzBhYmYxMWY4YzExODBhYjgxLi44YzlmZTIyZDBmYmFkYjg3Zjg1
YjkwMWYyMGI1MWFkNzY0ZDMwOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCkBAIC0zMTUwLDcgKzMxNTAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25DcmVhdGVCdWlsdGluLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
QwogICAgIFN0cmluZyBmdW5jdGlvblRleHQgPSBhc1N0cmluZyhjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJj
ZShmdW5jdGlvblRleHQsIHsgfSk7CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNl
KFdURk1vdmUoZnVuY3Rpb25UZXh0KSwgeyB9KTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgc291cmNlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZm9vIl9zKSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpLT5saW5rKHZtLCBudWxscHRyLCBz
b3VyY2UpLCBnbG9iYWxPYmplY3QpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmdW5j
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmlu
ZGV4IDU3ZDBiNjQ5OTg1ZmUwNmMyNzQ4NWJhN2JmNmJmNzgxZjI0Mjg3ODcuLmVmYTI1MjhmZmJi
YjRlN2I5YTNlZWMxYzUyNmJjMmZjZThkYWIwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjcyLDcgKzI3MiwxMCBAQCB2b2lkIEpT
RE9NV2luZG93QmFzZTo6cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChKU0dsb2JhbE9iamVj
dCogb2JqZWN0LCBKU1N0cgogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPmFsbG93RXZhbChvYmplY3Qs
IExvZ1RvQ29uc29sZTo6Tm8sIHNvdXJjZSA/IHNvdXJjZS0+dHJ5R2V0VmFsdWUoKSA6IFN0cmlu
Z1ZpZXcoKSk7CisgICAgU3RyaW5nIHNvdXJjZVN0cmluZzsKKyAgICBpZiAoc291cmNlKQorICAg
ICAgICBzb3VyY2VTdHJpbmcgPSBzb3VyY2UtPnRyeUdldFZhbHVlKCk7CisgICAgY29udGVudFNl
Y3VyaXR5UG9saWN5LT5hbGxvd0V2YWwob2JqZWN0LCBMb2dUb0NvbnNvbGU6Ok5vLCBzb3VyY2VT
dHJpbmcpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6d2lsbFJlbW92ZUZyb21XaW5kb3dQ
cm94eSgpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGE2ZDVkMjZhNDdjNjlhMTUzYTdlMDc4Mzc5MDNmOGU3NWJlZTc5ZDAuLmU0MGJhYzgy
MTI3MWI1ZDlmZWIzNTNhYzFiZDBhMzFiYzU5Yjc4MTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDQt
MDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBE
RkcgLyBGVEwgc2hvdWxkIGJlIGF3YXJlIG9mIEpTU3RyaW5nJ3MgU3RyaW5nIHJlcGxhY2VtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5MTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy9yZXNvbHZlLXJvcGUtZ2V0LWJ5LXZhbC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvcmVzb2x2ZS1yb3BlLXN0cmluZy1j
aGFyLWF0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAqIHN0cmVzcy9yZXNvbHZlLXJvcGUtc3RyaW5nLWNoYXItY29kZS1hdC5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJl
c3MvcmVzb2x2ZS1yb3BlLXN0cmluZy1jb2RlLXBvaW50LWF0LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorCiAyMDIyLTA0LTA2ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gU3Vic3RyaW5nIHJlc29sdmlu
ZyBzaG91bGQgY2hlY2sgOGJpdCAvIDE2Yml0IGFnYWluCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9yZXNvbHZlLXJvcGUtZ2V0LWJ5LXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc29sdmUt
cm9wZS1nZXQtYnktdmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwMDA4MWI2MTBjMmM2MDJlMGEyNDYxN2Rl
YjdlNGY1NGY3ZmFhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvbHZl
LXJvcGUtZ2V0LWJ5LXZhbC5qcwpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGhlbGxv
MCA9ICJIZWxsbyI7IC8vIEVuc3VyZSB0aGF0ICJIZWxsbyIgaXMgcmVnaXN0ZXJlZCBpbiBBdG9t
U3RyaW5nVGFibGUuCit2YXIgaGVsbG8xID0gY3JlYXRlTm9uUm9wZU5vbkF0b21TdHJpbmcoIkhl
bGxvIik7CisKK2Z1bmN0aW9uIHRlc3Qoc3RyaW5nKQoreworICAgIHZhciByZXN1bHQgPSBbIiIs
ICIiLCAiIiwgIiJdOworICAgIHZhciBvYmplY3QgPSB7IH07CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBpbmRleCA9IGkgJSA0OworICAgICAgICBy
ZXN1bHRbaW5kZXhdID0gc3RyaW5nW2luZGV4XTsKKyAgICAgICAgaWYgKGkgPT09IDUwMDApIHsK
KyAgICAgICAgICAgIC8vIEVuZm9yY2UgSlNWYWx1ZTo6dG9Qcm9wZXJ0eUtleS4gQWZ0ZXIgdGhp
cywgc3RyaW5nIGlzIGF0b21pYy4KKyAgICAgICAgICAgIG9iamVjdFtzdHJpbmddOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB2YXIgbmV3U3RyaW5nID0gY3JlYXRl
Tm9uUm9wZU5vbkF0b21TdHJpbmcoIkhlbGxvIik7CisgICAgdmFyIHJlc3VsdCA9IHRlc3QobmV3
U3RyaW5nKQorICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0gnKTsKKyAgICBzaG91bGRCZShyZXN1
bHRbMV0sICdlJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAnbCcpOworICAgIHNob3VsZEJl
KHJlc3VsdFszXSwgJ2wnKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Jlc29sdmUt
cm9wZS1zdHJpbmctY2hhci1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc29sdmUtcm9wZS1zdHJp
bmctY2hhci1hdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTQ4ZThkOWE0MDFlYmNlNmIzODc1NjMzOTA5N2I5
ZDBmNTJmMTFlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVzb2x2ZS1yb3Bl
LXN0cmluZy1jaGFyLWF0LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgaGVsbG8w
ID0gIkhlbGxvIjsgLy8gRW5zdXJlIHRoYXQgIkhlbGxvIiBpcyByZWdpc3RlcmVkIGluIEF0b21T
dHJpbmdUYWJsZS4KK3ZhciBoZWxsbzEgPSBjcmVhdGVOb25Sb3BlTm9uQXRvbVN0cmluZygiSGVs
bG8iKTsKKworZnVuY3Rpb24gdGVzdChzdHJpbmcpCit7CisgICAgdmFyIHJlc3VsdCA9IFsiIiwg
IiIsICIiLCAiIl07CisgICAgdmFyIG9iamVjdCA9IHsgfTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIGluZGV4ID0gaSAlIDQ7CisgICAgICAgIHJl
c3VsdFtpbmRleF0gPSBzdHJpbmcuY2hhckF0KGluZGV4KTsKKyAgICAgICAgaWYgKGkgPT09IDUw
MDApIHsKKyAgICAgICAgICAgIC8vIEVuZm9yY2UgSlNWYWx1ZTo6dG9Qcm9wZXJ0eUtleS4gQWZ0
ZXIgdGhpcywgc3RyaW5nIGlzIGF0b21pYy4KKyAgICAgICAgICAgIG9iamVjdFtzdHJpbmddOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB2YXIgbmV3U3RyaW5nID0g
Y3JlYXRlTm9uUm9wZU5vbkF0b21TdHJpbmcoIkhlbGxvIik7CisgICAgdmFyIHJlc3VsdCA9IHRl
c3QobmV3U3RyaW5nKQorICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0gnKTsKKyAgICBzaG91bGRC
ZShyZXN1bHRbMV0sICdlJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAnbCcpOworICAgIHNo
b3VsZEJlKHJlc3VsdFszXSwgJ2wnKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Jl
c29sdmUtcm9wZS1zdHJpbmctY2hhci1jb2RlLWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVzb2x2
ZS1yb3BlLXN0cmluZy1jaGFyLWNvZGUtYXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVmZmMwZmQ0MGU5YzBj
NjIwYmJmYWFjMWRhMWRhMjM2NWYwMTBhNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3Jlc29sdmUtcm9wZS1zdHJpbmctY2hhci1jb2RlLWF0LmpzCkBAIC0wLDAgKzEsMzIgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCit2YXIgaGVsbG8wID0gIkhlbGxvIjsgLy8gRW5zdXJlIHRoYXQgIkhlbGxvIiBp
cyByZWdpc3RlcmVkIGluIEF0b21TdHJpbmdUYWJsZS4KK3ZhciBoZWxsbzEgPSBjcmVhdGVOb25S
b3BlTm9uQXRvbVN0cmluZygiSGVsbG8iKTsKKworZnVuY3Rpb24gdGVzdChzdHJpbmcpCit7Cisg
ICAgdmFyIHJlc3VsdCA9IFswLCAwLCAwLCAwXTsKKyAgICB2YXIgb2JqZWN0ID0geyB9OworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICB2YXIgaW5kZXggPSBp
ICUgNDsKKyAgICAgICAgcmVzdWx0W2luZGV4XSA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTsK
KyAgICAgICAgaWYgKGkgPT09IDUwMDApIHsKKyAgICAgICAgICAgIC8vIEVuZm9yY2UgSlNWYWx1
ZTo6dG9Qcm9wZXJ0eUtleS4gQWZ0ZXIgdGhpcywgc3RyaW5nIGlzIGF0b21pYy4KKyAgICAgICAg
ICAgIG9iamVjdFtzdHJpbmddOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7
Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgICB2YXIgbmV3U3RyaW5nID0gY3JlYXRlTm9uUm9wZU5vbkF0b21TdHJpbmcoIkhlbGxvIik7
CisgICAgdmFyIHJlc3VsdCA9IHRlc3QobmV3U3RyaW5nKQorICAgIHNob3VsZEJlKHJlc3VsdFsw
XSwgNzIpOworICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgMTAxKTsKKyAgICBzaG91bGRCZShyZXN1
bHRbMl0sIDEwOCk7CisgICAgc2hvdWxkQmUocmVzdWx0WzNdLCAxMDgpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcmVzb2x2ZS1yb3BlLXN0cmluZy1jb2RlLXBvaW50LWF0LmpzIGIv
SlNUZXN0cy9zdHJlc3MvcmVzb2x2ZS1yb3BlLXN0cmluZy1jb2RlLXBvaW50LWF0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZjOGU0ZjA1YjRlMmRjZjI5YWY5YTJmYTIzMTgzYzllZTc4ODc1NDYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvbHZlLXJvcGUtc3RyaW5nLWNvZGUtcG9pbnQt
YXQuanMKQEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBoZWxsbzAgPSAiSGVsbG8iOyAv
LyBFbnN1cmUgdGhhdCAiSGVsbG8iIGlzIHJlZ2lzdGVyZWQgaW4gQXRvbVN0cmluZ1RhYmxlLgor
dmFyIGhlbGxvMSA9IGNyZWF0ZU5vblJvcGVOb25BdG9tU3RyaW5nKCJIZWxsbyIpOworCitmdW5j
dGlvbiB0ZXN0KHN0cmluZykKK3sKKyAgICB2YXIgcmVzdWx0ID0gWzAsIDAsIDAsIDBdOworICAg
IHZhciBvYmplY3QgPSB7IH07CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBpbmRleCA9IGkgJSA0OworICAgICAgICByZXN1bHRbaW5kZXhdID0gc3Ry
aW5nLmNvZGVQb2ludEF0KGluZGV4KTsKKyAgICAgICAgaWYgKGkgPT09IDUwMDApIHsKKyAgICAg
ICAgICAgIC8vIEVuZm9yY2UgSlNWYWx1ZTo6dG9Qcm9wZXJ0eUtleS4gQWZ0ZXIgdGhpcywgc3Ry
aW5nIGlzIGF0b21pYy4KKyAgICAgICAgICAgIG9iamVjdFtzdHJpbmddOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB2YXIgbmV3U3RyaW5nID0gY3JlYXRlTm9uUm9w
ZU5vbkF0b21TdHJpbmcoIkhlbGxvIik7CisgICAgdmFyIHJlc3VsdCA9IHRlc3QobmV3U3RyaW5n
KQorICAgIHNob3VsZEJlKHJlc3VsdFswXSwgNzIpOworICAgIHNob3VsZEJlKHJlc3VsdFsxXSwg
MTAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMl0sIDEwOCk7CisgICAgc2hvdWxkQmUocmVzdWx0
WzNdLCAxMDgpOworfQo=
</data>
<flag name="review"
          id="485470"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="485665"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>