<?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>162485</bug_id>
          
          <creation_ts>2016-09-23 02:09:18 -0700</creation_ts>
          <short_desc>[JSC] Shrink the Math inline caches some more</short_desc>
          <delta_ts>2016-09-26 14:13:57 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1232815</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-23 02:09:18 -0700</bug_when>
    <thetext>[JSC] Shrink the Math inline caches some more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232816</commentid>
    <comment_count>1</comment_count>
      <attachid>289673</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-23 02:24:15 -0700</bug_when>
    <thetext>Created attachment 289673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232865</commentid>
    <comment_count>2</comment_count>
      <attachid>289673</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-23 09:09:59 -0700</bug_when>
    <thetext>Comment on attachment 289673
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:28
&gt; +        The inline cache average sizes on Sunspider change as follow:

Very nice.

&gt; Source/JavaScriptCore/jit/JITArithmetic.cpp:762
&gt; +    ArithProfile* arithProfile = m_codeBlock-&gt;arithProfileForPC(currentInstruction);

I think we should make JITMathIC have an ArithProfile&amp; instead of an ArithProfile* since it&apos;s no longer an optional parameter.
Maybe it&apos;s also worth having the field be on JOTMathIC instead of each individual generator?
Also, there is code in the DFG/FTL that uses airthProfileForBytecodeOffset and passes in the result to the Generator&apos;s
constructor, however, that function is around to return nullptr, so we should assert that it doesn&apos;t return nullptr
or we should require the constructor to take ArithProfile&amp; instead of ArithProfile*.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232866</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-23 09:11:55 -0700</bug_when>
    <thetext>Ah, typing on a phone:
s/around/allowed
s/JOTMathIC/JITMathIC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233098</commentid>
    <comment_count>4</comment_count>
      <attachid>289738</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-23 21:17:16 -0700</bug_when>
    <thetext>Created attachment 289738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233099</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-23 21:20:06 -0700</bug_when>
    <thetext>Turns out a null ArithProfile is a legit case. It happens if DFG produces a node from a different bytecode. For example, op_dec can be lowered to ArithSub.

I did some clean up and moved ArithProfile to JITMathIC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233158</commentid>
    <comment_count>6</comment_count>
      <attachid>289763</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-24 14:58:33 -0700</bug_when>
    <thetext>Created attachment 289763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233159</commentid>
    <comment_count>7</comment_count>
      <attachid>289763</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-24 15:23:31 -0700</bug_when>
    <thetext>Comment on attachment 289763
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +         of the generators.

&quot;the generators&quot; =&gt; &quot;the math IC&quot; since you just changed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233160</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-24 15:25:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Turns out a null ArithProfile is a legit case. It happens if DFG produces a
&gt; node from a different bytecode. For example, op_dec can be lowered to
&gt; ArithSub.

Interesting. I didn&apos;t think about this situation. I wonder if it&apos;s worth it at all to have an ArithProfile for such cases, and just generate an empty IC to begin with? That may be worth it in the case where the decrement has a non-integer argument, but it will be worse in the case of an integer argument. What do you think? If it&apos;s worth it, you or me could later write a patch the just gives CodeBlock a Bag&lt;ArithProfile&gt; for such situations. This may be overkill though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233555</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-26 13:38:15 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #5)
&gt; &gt; Turns out a null ArithProfile is a legit case. It happens if DFG produces a
&gt; &gt; node from a different bytecode. For example, op_dec can be lowered to
&gt; &gt; ArithSub.
&gt; 
&gt; Interesting. I didn&apos;t think about this situation. I wonder if it&apos;s worth it
&gt; at all to have an ArithProfile for such cases, and just generate an empty IC
&gt; to begin with? That may be worth it in the case where the decrement has a
&gt; non-integer argument, but it will be worse in the case of an integer
&gt; argument. What do you think? If it&apos;s worth it, you or me could later write a
&gt; patch the just gives CodeBlock a Bag&lt;ArithProfile&gt; for such situations. This
&gt; may be overkill though.

I think you are right, creating an ArithProfile in those cases should yield better codegen. We could populate it from the children&apos;s prediction and update when the prediction were optimistic. Alternatively, we could start with the case that got us into UntypedUse and observe the fast cases on the fly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233558</commentid>
    <comment_count>10</comment_count>
      <attachid>289864</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-26 13:41:55 -0700</bug_when>
    <thetext>Created attachment 289864
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233568</commentid>
    <comment_count>11</comment_count>
      <attachid>289864</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 14:13:52 -0700</bug_when>
    <thetext>Comment on attachment 289864
Patch for landing

Clearing flags on attachment: 289864

Committed r206392: &lt;http://trac.webkit.org/changeset/206392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233569</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 14:13:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289673</attachid>
            <date>2016-09-23 02:24:15 -0700</date>
            <delta_ts>2016-09-23 21:17:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162485-20160923022123.patch</filename>
            <type>text/plain</type>
            <size>22509</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjIzZWZjNWY2MGY3YTUxN2IxZGUzZGI1Y2NhZjMxYTQ2N2UyZTI1Li5iZjVlZmQ3ZWVmNDI3YjEz
YjM3OTczNjJkNzk2YTVmN2Q1YTg4Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNi0wOS0yMyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gU2hyaW5rIHRoZSBNYXRoIGlubGluZSBjYWNoZXMgc29t
ZSBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI0ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFwcGxpZXMgc29tZSBsZXNzb25zIGxlYXJudCBmcm9tIG9wX25lZ2F0ZQorICAg
ICAgICB0byBzaHJpbmsgdGhlIGdlbmVyYXRlZCBhc20gb2YgdGhlIHByZXZpb3VzIDMgaW5saW5l
CisgICAgICAgIGNhY2hlcy4KKworICAgICAgICBJbiBvcmRlciBvZiBpbXBvcnRhbmNlOgorICAg
ICAgICAtV2UgZG8gbm90IG5lZWQgdG8gcGFzcyB0aGUgcG9pbnRlciB0byBBcml0aFByb2ZpbGUK
KyAgICAgICAgIG9uIHRoZSBzbG93IHBhdGguIFdlIGNhbiBqdXN0IGdldCB0aGUgcHJvZmlsZSBv
dXQKKyAgICAgICAgIG9mIHRoZSBnZW5lcmF0b3JzLgorICAgICAgICAgVGhpcyBzYXZlcyB1cyBm
cm9tIG1hdGVyaWFsaXppbmcgYSA2NGJpdHMgdmFsdWUKKyAgICAgICAgIGluIGEgcmVnaXN0ZXIg
YmVmb3JlIHRoZSBjYWxsIG9uIHRoZSBzbG93IHBhdGguCisgICAgICAgIC1XZSBjYW4gcmVtb3Zl
IGEgYnVuY2ggb2YgbW92IGJ5IHNldHRpbmcgdXAgdGhlIHJlZ2lzdGVycworICAgICAgICAgaW4g
dGhlIHdheSB0aGUgc2xvdyBwYXRoIG5lZWRzIHRoZW0uCisgICAgICAgICBUaGUgc2xvdyBwYXRo
IG1ha2VzIGEgZnVuY3Rpb24gY2FsbHMgd2l0aCB0aGUgaW5wdXQKKyAgICAgICAgIGFzIHNlY29u
ZCBhbmQgdGhpcmQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgaW4KKyAgICAgICAg
IHRoZSAicmV0dXJuIHJlZ2lzdGVyIi4gQnkgdXNpbmcgdGhvc2UgYXMgdGFyZ2V0IHdoZW4KKyAg
ICAgICAgIGxvYWRpbmcvc3RvcmluZyBmcm9tIHRoZSBzdGFjaywgd2UgcmVtb3ZlIDMgbW92IHBl
ciBzbG93IHBhdGguCisgICAgICAgIC1XaGVuIHBlcmZvcm1pbmcgaW50ZWdlciBhZGQsIHdlIGNh
biBzZXQgdGhlIHJlc3VsdCBkaXJlY3RseSBpbgorICAgICAgICAgdGhlIG91dHB1dCByZWdpc3Rl
ciBpZiB0aGF0IGRvZXMgbm90IHRyYXNoZXMgb25lIG9mIHRoZSBpbnB1dAorICAgICAgICAgcmVn
aXN0ZXIuIFRoaXMgcmVtb3ZlcyBvbmUgbW92IHBlciBpbnRlZ2VyIGFkZC4KKworICAgICAgICBU
aGUgaW5saW5lIGNhY2hlIGF2ZXJhZ2Ugc2l6ZXMgb24gU3Vuc3BpZGVyIGNoYW5nZSBhcyBmb2xs
b3c6CisgICAgICAgIC1BZGRzOiAxNDcuNTczMDk5LT4xMzEuNTU1NTU2ICh+MTAlKQorICAgICAg
ICAtTXVsczogMTg2Ljg4MjM1My0+MTcwLjk5MTU5NyAofjglKQorICAgICAgICAtU3ViczogMTM5
LjEyNzkwNy0+MTIxLjUyMzI1NiAofjEyJSkKKworICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJh
dG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0
aElDU2xvdyk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjpjYWxsT3BlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKwogMjAxNi0wOS0yMiAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgYW4g
aW5saW5lIGNhY2hlIHRvIGdlbmVyYXRlIG9wX25lZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggMWI3NTg1Y2RmOWVlMTZkYjgwNzg0ZWE4NTZhNGY0ZDBlMDFhMjAyNS4uYTE0YTg1NmEw
N2JkMjVhYWQ3Y2NlMGQzYjg0MGVlMjczZWVjZGZjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC03NjIsNyArNzYyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpBcnAsIEpTVmFsdWVSZWdz
LCBKU1ZhbHVlUmVncywgQXJpdGhQcm9maWxlKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKQXJwLCBKU1ZhbHVlUmVncywgSlNW
YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzLCBBcml0aFByb2ZpbGUqKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkosIEpTVmFsdWVSZWdz
LCBKU1ZhbHVlUmVncywgSlNWYWx1ZVJlZ3MpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkFycE1pYywgSlNWYWx1ZVJlZ3MsIEpT
VmFsdWVSZWdzLCBKU1ZhbHVlUmVncywgQXJpdGhQcm9maWxlKiwgVHJ1c3RlZEltbVB0cik7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpNaWMsIEpTVmFsdWVSZWdzLCBKU1ZhbHVlUmVncywgVHJ1c3RlZEltbVB0cik7CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKTWlj
LCBKU1ZhbHVlUmVncywgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSkpBcCwgaW50LCBHUFJSZWcsIEdQUlJlZywgQXJyYXlQcm9maWxlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKaW5kZXggYjE2NjIxYTE5MmMw
OGNjODcwZDE1MThmZTVkODI2OTQ2YzUzNGZlZC4uY2RhZjMxYTA4YjcwYmJjYTMwNmU2Yjc1Zjhh
M2JlZDQxN2UwYzM4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2Vu
ZXJhdG9yLmNwcApAQCAtNTQsMTMgKzU0LDE5IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRB
ZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAg
ICAgICAgIGlmICghbV9yaWdodE9wZXJhbmQuaXNDb25zdEludDMyKCkpCiAgICAgICAgICAgICBz
dGF0ZS5zbG93UGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RJbnQzMihtX3JpZ2h0KSk7
CiAKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBtX3NjcmF0Y2hHUFI7CiAgICAgICAgIGlmICht
X2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8IG1fcmlnaHRPcGVyYW5kLmlzQ29uc3RJbnQz
MigpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YXIgPSBtX2xlZnRPcGVyYW5kLmlzQ29u
c3RJbnQzMigpID8gbV9yaWdodCA6IG1fbGVmdDsKICAgICAgICAgICAgIGludDMyX3QgY29uc3RW
YWx1ZSA9IG1fbGVmdE9wZXJhbmQuaXNDb25zdEludDMyKCkgPyBtX2xlZnRPcGVyYW5kLmFzQ29u
c3RJbnQzMigpIDogbV9yaWdodE9wZXJhbmQuYXNDb25zdEludDMyKCk7Ci0gICAgICAgICAgICBz
dGF0ZS5zbG93UGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpP
dmVyZmxvdywgdmFyLnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdFZhbHVl
KSwgbV9zY3JhdGNoR1BSKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RhdGUuc2xv
d1BhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3cs
IG1fcmlnaHQucGF5bG9hZEdQUigpLCBtX2xlZnQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIp
KTsKLSAgICAgICAgaml0LmJveEludDMyKG1fc2NyYXRjaEdQUiwgbV9yZXN1bHQpOworICAgICAg
ICAgICAgaWYgKHZhci5wYXlsb2FkR1BSKCkgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQorICAg
ICAgICAgICAgICAgIHNjcmF0Y2ggPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgICAgICAg
ICBzdGF0ZS5zbG93UGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJz
OjpPdmVyZmxvdywgdmFyLnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdFZh
bHVlKSwgc2NyYXRjaCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fbGVm
dC5wYXlsb2FkR1BSKCkgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpICYmIG1fcmlnaHQucGF5bG9h
ZEdQUigpICE9IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkKKyAgICAgICAgICAgICAgICBzY3JhdGNo
ID0gbV9yZXN1bHQucGF5bG9hZEdQUigpOworICAgICAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1w
cy5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3csIG1fcmlnaHQu
cGF5bG9hZEdQUigpLCBtX2xlZnQucGF5bG9hZEdQUigpLCBzY3JhdGNoKSk7CisgICAgICAgIH0K
KyAgICAgICAgaml0LmJveEludDMyKHNjcmF0Y2gsIG1fcmVzdWx0KTsKICAgICAgICAgcmV0dXJu
IEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVkRmFzdFBhdGg7CiAgICAgfQogCkBAIC05
MSw5ICs5NywxMiBAQCBib29sIEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogICAgICAgICAvLyBUcnkgdG8g
ZG8gaW50VmFyICsgaW50Q29uc3RhbnQuCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RJ
bnQzMiA9IGppdC5icmFuY2hJZk5vdEludDMyKHZhcik7CiAKLSAgICAgICAgc2xvd1BhdGhKdW1w
TGlzdC5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3csIHZhci5w
YXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkp
LCBtX3NjcmF0Y2hHUFIpKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBtX3NjcmF0Y2hHUFI7
CisgICAgICAgIGlmICh2YXIucGF5bG9hZEdQUigpICE9IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkK
KyAgICAgICAgICAgIHNjcmF0Y2ggPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgICAgIHNs
b3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6Ok92ZXJm
bG93LCB2YXIucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OkltbTMyKGNvbnN0T3ByLmFzQ29u
c3RJbnQzMigpKSwgc2NyYXRjaCkpOwogCi0gICAgICAgIGppdC5ib3hJbnQzMihtX3NjcmF0Y2hH
UFIsIG1fcmVzdWx0KTsKKyAgICAgICAgaml0LmJveEludDMyKHNjcmF0Y2gsIG1fcmVzdWx0KTsK
ICAgICAgICAgZW5kSnVtcExpc3QuYXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAgICAgIGlmICgh
aml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKSB7CkBAIC0xMjIsOSArMTMxLDEyIEBAIGJvb2wg
SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0CiAgICAgICAgIGxlZnROb3RJbnQgPSBqaXQuYnJhbmNoSWZOb3RJ
bnQzMihtX2xlZnQpOwogICAgICAgICByaWdodE5vdEludCA9IGppdC5icmFuY2hJZk5vdEludDMy
KG1fcmlnaHQpOwogCi0gICAgICAgIHNsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hB
ZGQzMihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LCBtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9sZWZ0
LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKSk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0g
bV9zY3JhdGNoR1BSOworICAgICAgICBpZiAobV9sZWZ0LnBheWxvYWRHUFIoKSAhPSBtX3Jlc3Vs
dC5wYXlsb2FkR1BSKCkgJiYgbV9yaWdodC5wYXlsb2FkR1BSKCkgIT0gbV9yZXN1bHQucGF5bG9h
ZEdQUigpKQorICAgICAgICAgICAgc2NyYXRjaCA9IG1fcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAg
ICAgICAgc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVy
czo6T3ZlcmZsb3csIG1fcmlnaHQucGF5bG9hZEdQUigpLCBtX2xlZnQucGF5bG9hZEdQUigpLCBz
Y3JhdGNoKSk7CiAKLSAgICAgICAgaml0LmJveEludDMyKG1fc2NyYXRjaEdQUiwgbV9yZXN1bHQp
OworICAgICAgICBqaXQuYm94SW50MzIoc2NyYXRjaCwgbV9yZXN1bHQpOwogICAgICAgICBlbmRK
dW1wTGlzdC5hcHBlbmQoaml0Lmp1bXAoKSk7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNzgwYmNhOTM4ZmQxMGVmYjFmMjc1ZjQ1ODNkYjg0
MWVlYjRjM2ZmOC4uODM5MzIwYmI5ZjJlODUwMDIwZjUzZmRkZTYxNjMxYWI3ZmM5NGZjOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC03MzUsOSAr
NzM1LDkgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0
b3I+KiBtYXRoSUMsIEluc3RydWN0aW9uKiBjdXJyZW4KIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGNvcGllZEluc3RydWN0aW9u
KGN1cnJlbnRJbnN0cnVjdGlvbikpOwotICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1
ZVJlZ3MocmVnVDApOwotICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QxKTsKLSAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDIpOwor
ICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEpOworICAgIEpTVmFs
dWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QyKTsKKyAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
cmVnVDM7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2Vsc2UKQEAgLTc0OSwx
MCArNzQ5LDYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5l
cmF0b3I+KiBtYXRoSUMsIEluc3RydWN0aW9uKiBjdXJyZW4KICAgICBGUFJSZWcgc2NyYXRjaEZQ
UiA9IGZwUmVnVDI7CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bnVsbHB0cjsKLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQotICAgICAgICBhcml0aFBy
b2ZpbGUgPSBtX2NvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yUEMoY3VycmVudEluc3RydWN0aW9u
KTsKLQogICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwogICAg
IFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CiAKQEAgLTc2Myw2
ICs3NTksNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVy
YXRvcj4qIG1hdGhJQywgSW5zdHJ1Y3Rpb24qIGN1cnJlbgogCiAgICAgUkVMRUFTRV9BU1NFUlQo
IWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKKyAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hcml0aFByb2ZpbGVG
b3JQQyhjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgIG1hdGhJQy0+bV9nZW5lcmF0b3IgPSBHZW5l
cmF0b3IobGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJp
Z2h0UmVncywgZnBSZWdUMCwgZnBSZWdUMSwgc2NyYXRjaEdQUiwgc2NyYXRjaEZQUiwgYXJpdGhQ
cm9maWxlKTsKICAgICAKICAgICBBU1NFUlQoIShHZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRWYWxp
ZENvbnN0YW50KGxlZnRPcGVyYW5kKSAmJiBHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRD
b25zdGFudChyaWdodE9wZXJhbmQpKSk7CkBAIC03ODQsNyArNzgxLDcgQEAgdm9pZCBKSVQ6OmVt
aXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIEluc3RydWN0
aW9uKiBjdXJyZW4KICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBsZWZ0
UmVncyk7CiAgICAgICAgIGVsc2UgaWYgKHJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpCiAgICAgICAg
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmlnaHRSZWdzKTsKLSAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZSkKKyAgICAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgbGVmdFJl
Z3MsIHJpZ2h0UmVncywgYXJpdGhQcm9maWxlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihub25Qcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0UmVncywg
cmlnaHRSZWdzKTsKQEAgLTg1OSw5ICs4NTYsOSBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3co
SklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgSW5zdHJ1Y3Rpb24qIGN1cnJlbgog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5k
VHlwZXMoY29waWVkSW5zdHJ1Y3Rpb24oY3VycmVudEluc3RydWN0aW9uKSk7Ci0gICAgSlNWYWx1
ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7Ci0gICAgSlNWYWx1ZVJlZ3Mgcmln
aHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEpOwotICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVl
UmVncyhyZWdUMSk7CisgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDIpOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAj
ZWxzZQogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjdXJyZW50SW5z
dHJ1Y3Rpb24pOwogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKTsKQEAgLTg4OSwxMSArODg2LDEyIEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhK
SVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBJbnN0cnVjdGlvbiogY3VycmVuCiAj
ZW5kaWYKIAogICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgQXJpdGhQ
cm9maWxlJiBhcml0aFByb2ZpbGUgPSAqbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1
cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hv
dWxkU2xvd1BhdGhSZXBhdGNoKQotICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0VK
SkFycE1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBsZWZ0UmVncywg
cmlnaHRSZWdzLCAmYXJpdGhQcm9maWxlLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwotICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbihiaXR3aXNlX2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRUpKTWljPihwcm9maWxl
ZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0
ZWRJbW1QdHIobWF0aElDKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQXJpdGhQcm9m
aWxlJiBhcml0aFByb2ZpbGUgPSAqbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJl
bnRJbnN0cnVjdGlvbik7CiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbihwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0
UmVncywgcmlnaHRSZWdzLCAmYXJpdGhQcm9maWxlKTsKKyAgICAgICAgfQogICAgIH0gZWxzZQog
ICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bihiaXR3aXNlX2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRUpKTWljPihyZXBhdGNoRnVuY3Rpb24pLCBy
ZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDQ1MTBhOWI2YmZhN2U1
YmU5MDk0YWQyYzFjMmI1NzFlYzU0MTI4NzYuLmUzOWViNTQyZjFhNjZmMDVjMzViNzYyZjdkNzYy
NzQyYzY4NTQxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC00
NDgsMTQgKzQ0OCw2IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkFycCBvcGVyCiAgICAgcmV0dXJuIGNhbGw7
CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKSkFycE1pYyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUsIFRydXN0ZWRJbW1QdHIgbWF0aElDKQotewotICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGFyaXRoUHJvZmlsZSksIG1hdGhJ
Qyk7Ci0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRp
b24pOwotICAgIHNldHVwUmVzdWx0cyhyZXN1bHQpOwotICAgIHJldHVybiBjYWxsOwotfQotCiBB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSk1pYyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJl
Z3MgYXJnLCBUcnVzdGVkSW1tUHRyIG1hdGhJQykKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnLCBtYXRoSUMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggZDhiZGMxMDgxNjNhNWJmOTQzYzA1ZDAzOGI4ZDEwMzFhOTUyYjlj
OS4uZjFiMDVkYmZkMzZjNTBjMzcwZWQ2YzY4ZmM4MzFkZjhmMmYxOGFiNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMzA5LDcgKzIzMDksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIHJldHVybiBwcm9maWxlZEFkZChleGVjLCBl
bmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBKSVRBZGRJQyogYWRkSUMpCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKiBhZGRJQykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTIz
MTcsNiArMjMxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVBZGRQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywKICAgICBKU1ZhbHVlIG9wMSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKTsKIAorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
YWRkSUMtPm1fZ2VuZXJhdG9yLmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2Zp
bGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAgICAg
YXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRp
bWl6ZTsKQEAgLTIzMzIsOCArMjMzMywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEpJVEFkZElDKikKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBKSVRBZGRJQyogYWRkSUMpCiB7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Cisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5tX2dlbmVyYXRvci5hcml0aFByb2ZpbGUoKTsK
ICAgICByZXR1cm4gcHJvZmlsZWRBZGQoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJp
dGhQcm9maWxlKTsKIH0KIApAQCAtMjQ0NSwxMSArMjQ1MCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSgogICAgIHJldHVybiBwcm9maWxlZE11bCgqdm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsIGFyaXRoUHJvZmlsZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUsIEpJVE11bElDKiBtdWxJQykKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgSklUTXVsSUMqIG11bElDKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCisgICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+bV9nZW5lcmF0b3IuYXJpdGhQcm9maWxlKCk7CiAgICAg
YXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFy
aWFudCA9IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplOwogICAgIG11bElDLT5n
ZW5lcmF0ZU91dE9mTGluZSgqdm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlh
bnQpOwpAQCAtMjQ2MSwxMSArMjQ2NywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAg
cmV0dXJuIHByb2ZpbGVkTXVsKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJp
dGhQcm9maWxlLCBmYWxzZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSwgSklUTXVsSUMqKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11
bElDKiBtdWxJQykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbXVsSUMtPm1fZ2VuZXJhdG9yLmFyaXRoUHJvZmlsZSgpOwogICAgIHJldHVybiBw
cm9maWxlZE11bCgqdm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGFyaXRoUHJvZmls
ZSk7CiB9CiAKQEAgLTI2MjcsMTEgKzI2MzQsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGUK
ICAgICByZXR1cm4gdW5wcm9maWxlZFN1Yigqdm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRP
cDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3Vi
UHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
LCBKSVRTdWJJQyogc3ViSUMpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKiBzdWJJQykK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKIAorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3Vi
SUMtPm1fZ2VuZXJhdG9yLmFyaXRoUHJvZmlsZSgpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2
ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1
ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKICAgICBzdWJJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoKnZt
LCBleGVjLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKQEAgLTI2NDMsMTEgKzI2
NTEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlBy
b2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBwcm9maWxlZFN1Yigq
dm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGFyaXRoUHJvZmlsZSwgZmFsc2UpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmls
ZWROb09wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEpJ
VFN1YklDKikKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQ
cm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyogc3ViSUMpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5tX2dl
bmVyYXRvci5hcml0aFByb2ZpbGUoKTsKICAgICByZXR1cm4gcHJvZmlsZWRTdWIoKnZtLCBleGVj
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDY3MjY0MDc0ZWU0N2NiMTUxNjFk
YjA5MjdiNDNmZjc4MDgzYTVjN2YuLjkzNWM0ZmFiMTlkMmQ3NzlhNTBlYjRlNzdmMzUxODYxYjIx
MWEzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0x
NDgsNyArMTQ4LDYgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9K
SVRPcGVyYXRpb25fRUpKQXApKEV4ZWNTdGF0ZSosIEVuY29kZWQKIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkJ5KShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKSikoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkpBcnAp
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQXJpdGhQcm9maWxl
Kik7Ci10eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlv
bl9FSkpBcnBNaWMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QXJpdGhQcm9maWxlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJB
VElPTiAqSl9KSVRPcGVyYXRpb25fRUpKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
dm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRUpzc1opKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgaW50MzJfdCk7CkBAIC00MjksMTUg
KzQyOCwxNSBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbmRleFN0cmluZyhF
eGVjU3RhdGUqLCBpbnQzMl90KTsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUFkZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxl
KikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiwgSklUQWRkSUMq
KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQWRkUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSosIEpJVEFkZElD
KikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRO
b09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFk
ZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZUFkZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJ
VE11bElDKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiwgSklU
TXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSosIEpJ
VE11bElDKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJv
ZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFu
ZCk7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJv
ZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwgQXJpdGhQcm9maWxlKik7
CkBAIC00NDcsOCArNDQ2LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZVN1YihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGUKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0
aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6
ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRo
UHJvZmlsZSosIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0
aFByb2ZpbGUqLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1
YklDKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRF
Uk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJM
b2coRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289738</attachid>
            <date>2016-09-23 21:17:16 -0700</date>
            <delta_ts>2016-09-24 14:58:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162485-20160923211424.patch</filename>
            <type>text/plain</type>
            <size>68035</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjIzZWZjNWY2MGY3YTUxN2IxZGUzZGI1Y2NhZjMxYTQ2N2UyZTI1Li5iZjVlZmQ3ZWVmNDI3YjEz
YjM3OTczNjJkNzk2YTVmN2Q1YTg4Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNi0wOS0yMyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gU2hyaW5rIHRoZSBNYXRoIGlubGluZSBjYWNoZXMgc29t
ZSBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI0ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFwcGxpZXMgc29tZSBsZXNzb25zIGxlYXJudCBmcm9tIG9wX25lZ2F0ZQorICAg
ICAgICB0byBzaHJpbmsgdGhlIGdlbmVyYXRlZCBhc20gb2YgdGhlIHByZXZpb3VzIDMgaW5saW5l
CisgICAgICAgIGNhY2hlcy4KKworICAgICAgICBJbiBvcmRlciBvZiBpbXBvcnRhbmNlOgorICAg
ICAgICAtV2UgZG8gbm90IG5lZWQgdG8gcGFzcyB0aGUgcG9pbnRlciB0byBBcml0aFByb2ZpbGUK
KyAgICAgICAgIG9uIHRoZSBzbG93IHBhdGguIFdlIGNhbiBqdXN0IGdldCB0aGUgcHJvZmlsZSBv
dXQKKyAgICAgICAgIG9mIHRoZSBnZW5lcmF0b3JzLgorICAgICAgICAgVGhpcyBzYXZlcyB1cyBm
cm9tIG1hdGVyaWFsaXppbmcgYSA2NGJpdHMgdmFsdWUKKyAgICAgICAgIGluIGEgcmVnaXN0ZXIg
YmVmb3JlIHRoZSBjYWxsIG9uIHRoZSBzbG93IHBhdGguCisgICAgICAgIC1XZSBjYW4gcmVtb3Zl
IGEgYnVuY2ggb2YgbW92IGJ5IHNldHRpbmcgdXAgdGhlIHJlZ2lzdGVycworICAgICAgICAgaW4g
dGhlIHdheSB0aGUgc2xvdyBwYXRoIG5lZWRzIHRoZW0uCisgICAgICAgICBUaGUgc2xvdyBwYXRo
IG1ha2VzIGEgZnVuY3Rpb24gY2FsbHMgd2l0aCB0aGUgaW5wdXQKKyAgICAgICAgIGFzIHNlY29u
ZCBhbmQgdGhpcmQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgaW4KKyAgICAgICAg
IHRoZSAicmV0dXJuIHJlZ2lzdGVyIi4gQnkgdXNpbmcgdGhvc2UgYXMgdGFyZ2V0IHdoZW4KKyAg
ICAgICAgIGxvYWRpbmcvc3RvcmluZyBmcm9tIHRoZSBzdGFjaywgd2UgcmVtb3ZlIDMgbW92IHBl
ciBzbG93IHBhdGguCisgICAgICAgIC1XaGVuIHBlcmZvcm1pbmcgaW50ZWdlciBhZGQsIHdlIGNh
biBzZXQgdGhlIHJlc3VsdCBkaXJlY3RseSBpbgorICAgICAgICAgdGhlIG91dHB1dCByZWdpc3Rl
ciBpZiB0aGF0IGRvZXMgbm90IHRyYXNoZXMgb25lIG9mIHRoZSBpbnB1dAorICAgICAgICAgcmVn
aXN0ZXIuIFRoaXMgcmVtb3ZlcyBvbmUgbW92IHBlciBpbnRlZ2VyIGFkZC4KKworICAgICAgICBU
aGUgaW5saW5lIGNhY2hlIGF2ZXJhZ2Ugc2l6ZXMgb24gU3Vuc3BpZGVyIGNoYW5nZSBhcyBmb2xs
b3c6CisgICAgICAgIC1BZGRzOiAxNDcuNTczMDk5LT4xMzEuNTU1NTU2ICh+MTAlKQorICAgICAg
ICAtTXVsczogMTg2Ljg4MjM1My0+MTcwLjk5MTU5NyAofjglKQorICAgICAgICAtU3ViczogMTM5
LjEyNzkwNy0+MTIxLjUyMzI1NiAofjEyJSkKKworICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJh
dG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0
aElDU2xvdyk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjpjYWxsT3BlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKwogMjAxNi0wOS0yMiAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgYW4g
aW5saW5lIGNhY2hlIHRvIGdlbmVyYXRlIG9wX25lZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAzMDExYmM1NzI2NTM4NGUx
YjgwODg5ZDhhNjFiOTJhMGUyZTA5ZmEzLi5lMDI1MTYzOGUzYTNkNTA3MjU1N2RmOGJjZTBmZDVj
ZDAwYmVhYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA5LTIzICBCZW5qYW1pbiBQb3Vs
YWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbSlNDXSBTaHJpbmsgdGhlIE1h
dGggaW5saW5lIGNhY2hlcyBzb21lIG1vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MjQ4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0JhZy5oOgorICAgICAgICBEb24ndCBjb3B5IHRoZSBh
cmd1bWVudHMgYmVmb3JlIGluaXRpYWxpemluZyB0aGUgbm9kZXMuCisKIDIwMTYtMDktMjIgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGZW5jZXMgb24geDg2IHNo
b3VsZCBiZSBhIGxvdCBjaGVhcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Bcml0aFByb2ZpbGUuY3BwCmluZGV4IDYxNTQzMDY2NjQ2YjZhMmZiNjBiNWEyZTBhZmE2ZDBi
ODhhZWIwZGQuLjFmYTdjNzk4OTRiZGU5NmJmNDMxZWNjNDhhOGU2NmJlMDMwNzYxODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIGJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0RG91YmxlKCkgY29u
c3QKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQ
cm9maWxlOjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KQordm9pZCBBcml0aFByb2Zp
bGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNo
b3VsZEVtaXRTZXREb3VibGUoKSkKICAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1
Mk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpO
b25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09m
Qml0cygpKSk7CkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0
U2V0Tm9uTnVtYmVyKCkgY29uc3QKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7
CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0Tm9uTnVtYmVyKENDYWxsSGVscGVycyYg
aml0KQordm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXROb25OdW1iZXIoQ0NhbGxIZWxwZXJzJiBq
aXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXROb25OdW1iZXIoKSkKICAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOb25OdW1i
ZXIpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAppbmRleCA3YTZl
ZTVkMmVhYWZkMjJlOTc0MTJhZGY0OWVhMDEyMTJiMTI2NTI0Li40MGZhZDFiZTNiYWE0MzQ4NmU5
OGEwM2NkMDRkNTU0ODc2ZWQ0ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oCkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxvdyk7IH0KICAg
ICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUyT3ZlcmZsb3cp
OyB9CiAKLSAgICB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgeyByZXR1cm4gJm1fYml0czsgfQorICAg
IGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBjb25zdCB7IHJldHVybiAmbV9iaXRzOyB9CiAK
ICAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0yMTUsMTAg
KzIxNSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCiAgICAgYm9v
bCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7Ci0gICAgdm9pZCBlbWl0U2V0RG91YmxlKEND
YWxsSGVscGVycyYpOworICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25z
dDsKICAgICAKICAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1i
ZXIoQ0NhbGxIZWxwZXJzJik7CisgICAgdm9pZCBlbWl0U2V0Tm9uTnVtYmVyKENDYWxsSGVscGVy
cyYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWJlcigpIGNvbnN0OwogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggZjAwZDk4YzMwNjlmMTMwZWI5MDI4Y2I3M2VlYTAxYWQ4MDcyNTJk
NS4uN2M5YjVjMmJhNmQ2ZDQyN2QwNzk3YjJhZjQ4MThkYjkzZjg5OTE2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMwMDAsMjQgKzMwMDAs
MjQgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1YkluZm8oQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBtX3N0dWJJbmZvcy5hZGQoYWNjZXNzVHlwZSk7CiB9
CiAKLUpJVEFkZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElDKCkKK0pJVEFkZElDKiBDb2RlQmxv
Y2s6OmFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewotICAgIHJldHVy
biBtX2FkZElDcy5hZGQoKTsKKyAgICByZXR1cm4gbV9hZGRJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7
CiB9CiAKLUpJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKCkKK0pJVE11bElDKiBDb2Rl
QmxvY2s6OmFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewotICAgIHJl
dHVybiBtX211bElDcy5hZGQoKTsKKyAgICByZXR1cm4gbV9tdWxJQ3MuYWRkKGFyaXRoUHJvZmls
ZSk7CiB9CiAKLUpJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKCkKK0pJVFN1YklDKiBD
b2RlQmxvY2s6OmFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewotICAg
IHJldHVybiBtX3N1YklDcy5hZGQoKTsKKyAgICByZXR1cm4gbV9zdWJJQ3MuYWRkKGFyaXRoUHJv
ZmlsZSk7CiB9CiAKLUpJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKCkKK0pJVE5lZ0lD
KiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewot
ICAgIHJldHVybiBtX25lZ0lDcy5hZGQoKTsKKyAgICByZXR1cm4gbV9uZWdJQ3MuYWRkKGFyaXRo
UHJvZmlsZSk7CiB9CiAKIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmZpbmRTdHViSW5m
byhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggYTZmNTkwMzFiY2NjZGQ3MTJhNTk5NTViN2ZjMzc4Y2VhMTRiNzg5
Yi4uYWNhZjA5ZTJkODc1MThlZmVhMTk2NTYyZTVlNWVlYjNlNWU1YmM2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjQzLDEwICsyNDMsMTAgQEAg
cHVibGljOgogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFk
ZFN0dWJJbmZvKEFjY2Vzc1R5cGUpOwotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQygpOwotICAg
IEpJVE11bElDKiBhZGRKSVRNdWxJQygpOwotICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQygpOwot
ICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQygpOworICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhB
cml0aFByb2ZpbGUqKTsKKyAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKik7
CisgICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOworICAgIEpJVFN1YklD
KiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKICAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+
OjppdGVyYXRvciBzdHViSW5mb0JlZ2luKCkgeyByZXR1cm4gbV9zdHViSW5mb3MuYmVnaW4oKTsg
fQogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIHN0dWJJbmZvRW5kKCkgeyBy
ZXR1cm4gbV9zdHViSW5mb3MuZW5kKCk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggOGFhODJmYTNmYmM1YzljZmQwYTE3
NjY2MjMzZDI4Y2YwMmU2ZTA3Ny4uMmU2MjhmOWU1YWY0Y2E2NTUxMzkzNDA5NGE3ZjU1OTVjNDQz
NGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTM0MjQsNyArMzQyNCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZUFkZChOb2RlKiBub2RlKQogICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsK
ICNlbmRpZgogCi0gICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJ
VEFkZElDKCk7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2ppdC5ncmFwaCgp
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsK
KyAgICBKSVRBZGRJQyogYWRkSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUQWRkSUMoYXJp
dGhQcm9maWxlKTsKICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVl
QWRkT3B0aW1pemU7CiAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25W
YWx1ZUFkZDsKICAgICAKQEAgLTM1MDAsOCArMzUwMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJCiAjZW5kaWYKIAogICAgIEJveDxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+IGFkZElDR2VuZXJh
dGlvblN0YXRlID0gQm94PE1hdGhJQ0dlbmVyYXRpb25TdGF0ZT46OmNyZWF0ZSgpOwotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9j
a0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7Ci0gICAgbWF0aElDLT5tX2dl
bmVyYXRvciA9IEdlbmVyYXRvcihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCByZXN1bHRSZWdz
LCBsZWZ0UmVncywgcmlnaHRSZWdzLCBsZWZ0RlBSLCByaWdodEZQUiwgc2NyYXRjaEdQUiwgc2Ny
YXRjaEZQUiwgYXJpdGhQcm9maWxlKTsKKyAgICBtYXRoSUMtPm1fZ2VuZXJhdG9yID0gR2VuZXJh
dG9yKGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQsIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdo
dFJlZ3MsIGxlZnRGUFIsIHJpZ2h0RlBSLCBzY3JhdGNoR1BSLCBzY3JhdGNoRlBSKTsKIAogICAg
IGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyA9IGZhbHNlOwogICAgIGJvb2wgZ2VuZXJhdGVkSW5s
aW5lID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZShtX2ppdCwgKmFkZElDR2VuZXJhdGlvblN0YXRl
LCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKQEAgLTQwOTMsNyArNDA5Myw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlKiBub2RlKQogICAgICAgICBib29sIG5lZWRz
U2NyYXRjaEZQUlJlZyA9IHRydWU7CiAjZW5kaWYKIAotICAgICAgICBKSVRTdWJJQyogc3ViSUMg
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoKTsKKyAgICAgICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKKyAgICAgICAgSklUU3ViSUMqIHN1YklDID0g
bV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGF1
dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAg
ICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAg
ICAgCkBAIC00MzU1LDcgKzQzNTYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNdWwoTm9kZSogbm9kZSkKICAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVl
OwogICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CiAjZW5kaWYKLSAgICAg
ICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKCk7CisK
KyAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2ppdC5ncmFwaCgpLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKKyAgICAg
ICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVNdWxPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZU11bDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWY1Y2MzOTdhNGU2ZmQ2MDY0ZTI3YjM2NWE2ZTVjODRh
YTM1ZjE4ZS4uMDBlYzVmNTdjOTI3ZDMwOWFhNTMyZmY5ZDVhYmM0NDJjYTE4MDdjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTU1Myw3
ICsxNTUzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKCkKICAgICB7
Ci0gICAgICAgIEpJVEFkZElDKiBhZGRJQyA9IGNvZGVCbG9jaygpLT5hZGRKSVRBZGRJQygpOwor
ICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fZnRsU3RhdGUuZ3JhcGguYmFz
ZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0aFByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsK
KyAgICAgICAgSklUQWRkSUMqIGFkZElDID0gY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVBZGRPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZUFkZDsKICAgICAgICAgY29tcGlsZU1hdGhJQyhhZGRJQywgcmVwYXRjaGluZ0Z1
bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMTU5MywxMCArMTU5NCw5IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgICAgICAgICAgICAgIEJveDxNYXRoSUNHZW5lcmF0aW9uU3Rh
dGU+IG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSA9IEJveDxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+Ojpj
cmVhdGUoKTsKLSAgICAgICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN0
YXRlLT5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5h
cml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNv
ZGVJbmRleCk7CiAgICAgICAgICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRv
cihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkp
LAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpLCBwYXJhbXMuZnBTY3JhdGNoKDApLAotICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMuZnBTY3JhdGNoKDEpLCBwYXJhbXMuZ3BTY3JhdGNoKDApLCBJbnZh
bGlkRlBSUmVnLCBhcml0aFByb2ZpbGUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZnBT
Y3JhdGNoKDEpLCBwYXJhbXMuZ3BTY3JhdGNoKDApLCBJbnZhbGlkRlBSUmVnKTsKIAogICAgICAg
ICAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIGJvb2wgZ2VuZXJhdGVkSW5saW5lID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZShqaXQsICpt
YXRoSUNHZW5lcmF0aW9uU3RhdGUsIHNob3VsZEVtaXRQcm9maWxpbmcpOwpAQCAtMTcyNCw3ICsx
NzI0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgSklUU3ViSUMqIHN1YklDID0gY29kZUJsb2NrKCktPmFkZEpJVFN1YklD
KCk7CisgICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fZnRsU3RhdGUu
Z3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0
aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KTsKKyAgICAgICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IGNvZGVCbG9jaygpLT5hZGRK
SVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICAgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgICAgIGNvbXBpbGVN
YXRoSUMoc3ViSUMsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
QEAgLTE4MTgsNyArMTgxOSw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IFVudHlwZWRVc2U6IHsKLSAgICAgICAgICAgIEpJVE11bElDKiBtdWxJQyA9IGNvZGVCbG9jaygp
LT5hZGRKSVRNdWxJQygpOworICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICBKSVRNdWxJQyogbXVsSUMgPSBjb2Rl
QmxvY2soKS0+YWRkSklUTXVsSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgICAgIGF1dG8gcmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAgICAgICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CiAgICAgICAg
ICAgICBjb21waWxlTWF0aElDKG11bElDLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAxYjc1ODVjZGY5ZWUxNmRi
ODA3ODRlYTg1NmE0ZjRkMGUwMWEyMDI1Li5hMTRhODU2YTA3YmQyNWFhZDdjY2UwZDNiODQwZWUy
NzNlZWNkZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTc2Miw3ICs3NjIsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSkFycCwgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVSZWdzLCBBcml0aFBy
b2ZpbGUqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSkpBcnAsIEpTVmFsdWVSZWdzLCBKU1ZhbHVlUmVncywgSlNWYWx1ZVJlZ3Ms
IEFyaXRoUHJvZmlsZSopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKSiwgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVSZWdzLCBKU1ZhbHVl
UmVncyk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUpKQXJwTWljLCBKU1ZhbHVlUmVncywgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVSZWdz
LCBBcml0aFByb2ZpbGUqLCBUcnVzdGVkSW1tUHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSk1pYywgSlNWYWx1ZVJlZ3MsIEpT
VmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpNaWMsIEpTVmFsdWVSZWdzLCBKU1ZhbHVl
UmVncywgSlNWYWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkFwLCBpbnQsIEdQUlJlZywg
R1BSUmVnLCBBcnJheVByb2ZpbGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQWRkR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QWRkR2VuZXJhdG9yLmNwcAppbmRleCBiMTY2MjFhMTkyYzA4Y2M4NzBkMTUxOGZlNWQ4MjY5NDZj
NTM0ZmVkLi42MjdhZjI3ODdlMGI2OGEzZGQwZWIzOTIzNDFiZjUyZDRiNTQwMTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCwxNCAr
MzQsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRB
ZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRv
cjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9i
c2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwogICAgIE9ic2VydmVkVHlwZSByaHMgPSBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKTsKLSAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAg
bGhzID0gbV9hcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOwotICAgICAgICByaHMgPSBt
X2FyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgaWYgKGFyaXRoUHJvZmlsZSkg
eworICAgICAgICBsaHMgPSBhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOworICAgICAg
ICByaHMgPSBhcml0aFByb2ZpbGUtPnJoc09ic2VydmVkVHlwZSgpOwogICAgIH0KIAogICAgIGlm
IChsaHMuaXNPbmx5Tm9uTnVtYmVyKCkgJiYgcmhzLmlzT25seU5vbk51bWJlcigpKQpAQCAtNTQs
MjAgKzU0LDI2IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVy
YXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgICAgIGlmICghbV9yaWdo
dE9wZXJhbmQuaXNDb25zdEludDMyKCkpCiAgICAgICAgICAgICBzdGF0ZS5zbG93UGF0aEp1bXBz
LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RJbnQzMihtX3JpZ2h0KSk7CiAKKyAgICAgICAgR1BSUmVn
IHNjcmF0Y2ggPSBtX3NjcmF0Y2hHUFI7CiAgICAgICAgIGlmIChtX2xlZnRPcGVyYW5kLmlzQ29u
c3RJbnQzMigpIHx8IG1fcmlnaHRPcGVyYW5kLmlzQ29uc3RJbnQzMigpKSB7CiAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyB2YXIgPSBtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpID8gbV9yaWdo
dCA6IG1fbGVmdDsKICAgICAgICAgICAgIGludDMyX3QgY29uc3RWYWx1ZSA9IG1fbGVmdE9wZXJh
bmQuaXNDb25zdEludDMyKCkgPyBtX2xlZnRPcGVyYW5kLmFzQ29uc3RJbnQzMigpIDogbV9yaWdo
dE9wZXJhbmQuYXNDb25zdEludDMyKCk7Ci0gICAgICAgICAgICBzdGF0ZS5zbG93UGF0aEp1bXBz
LmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgdmFyLnBheWxv
YWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdFZhbHVlKSwgbV9zY3JhdGNoR1BSKSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQo
aml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3csIG1fcmlnaHQucGF5bG9hZEdQ
UigpLCBtX2xlZnQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpKTsKLSAgICAgICAgaml0LmJv
eEludDMyKG1fc2NyYXRjaEdQUiwgbV9yZXN1bHQpOworICAgICAgICAgICAgaWYgKHZhci5wYXls
b2FkR1BSKCkgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQorICAgICAgICAgICAgICAgIHNjcmF0
Y2ggPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBzdGF0ZS5zbG93UGF0aEp1
bXBzLmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgdmFyLnBh
eWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdFZhbHVlKSwgc2NyYXRjaCkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fbGVmdC5wYXlsb2FkR1BSKCkgIT0g
bV9yZXN1bHQucGF5bG9hZEdQUigpICYmIG1fcmlnaHQucGF5bG9hZEdQUigpICE9IG1fcmVzdWx0
LnBheWxvYWRHUFIoKSkKKyAgICAgICAgICAgICAgICBzY3JhdGNoID0gbV9yZXN1bHQucGF5bG9h
ZEdQUigpOworICAgICAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5j
aEFkZDMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3csIG1fcmlnaHQucGF5bG9hZEdQUigpLCBtX2xl
ZnQucGF5bG9hZEdQUigpLCBzY3JhdGNoKSk7CisgICAgICAgIH0KKyAgICAgICAgaml0LmJveElu
dDMyKHNjcmF0Y2gsIG1fcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJl
c3VsdDo6R2VuZXJhdGVkRmFzdFBhdGg7CiAgICAgfQogCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lu
bGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBM
aXN0LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVEFkZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
ZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNv
bnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcp
CiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NF
UlQobV9zY3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpAQCAtOTEsOSArOTcsMTIg
QEAgYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgLy8gVHJ5IHRvIGRvIGludFZhciAr
IGludENvbnN0YW50LgogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90SW50MzIgPSBqaXQu
YnJhbmNoSWZOb3RJbnQzMih2YXIpOwogCi0gICAgICAgIHNsb3dQYXRoSnVtcExpc3QuYXBwZW5k
KGppdC5icmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LCB2YXIucGF5bG9hZEdQUigp
LCBDQ2FsbEhlbHBlcnM6OkltbTMyKGNvbnN0T3ByLmFzQ29uc3RJbnQzMigpKSwgbV9zY3JhdGNo
R1BSKSk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gbV9zY3JhdGNoR1BSOworICAgICAgICBp
ZiAodmFyLnBheWxvYWRHUFIoKSAhPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpCisgICAgICAgICAg
ICBzY3JhdGNoID0gbV9yZXN1bHQucGF5bG9hZEdQUigpOworICAgICAgICBzbG93UGF0aEp1bXBM
aXN0LmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgdmFyLnBh
eWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdE9wci5hc0NvbnN0SW50MzIoKSks
IHNjcmF0Y2gpKTsKIAotICAgICAgICBqaXQuYm94SW50MzIobV9zY3JhdGNoR1BSLCBtX3Jlc3Vs
dCk7CisgICAgICAgIGppdC5ib3hJbnQzMihzY3JhdGNoLCBtX3Jlc3VsdCk7CiAgICAgICAgIGVu
ZEp1bXBMaXN0LmFwcGVuZChqaXQuanVtcCgpKTsKIAogICAgICAgICBpZiAoIWppdC5zdXBwb3J0
c0Zsb2F0aW5nUG9pbnQoKSkgewpAQCAtMTIyLDkgKzEzMSwxMiBAQCBib29sIEpJVEFkZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdAogICAgICAgICBsZWZ0Tm90SW50ID0gaml0LmJyYW5jaElmTm90SW50MzIobV9sZWZ0
KTsKICAgICAgICAgcmlnaHROb3RJbnQgPSBqaXQuYnJhbmNoSWZOb3RJbnQzMihtX3JpZ2h0KTsK
IAotICAgICAgICBzbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxI
ZWxwZXJzOjpPdmVyZmxvdywgbV9yaWdodC5wYXlsb2FkR1BSKCksIG1fbGVmdC5wYXlsb2FkR1BS
KCksIG1fc2NyYXRjaEdQUikpOworICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IG1fc2NyYXRjaEdQ
UjsKKyAgICAgICAgaWYgKG1fbGVmdC5wYXlsb2FkR1BSKCkgIT0gbV9yZXN1bHQucGF5bG9hZEdQ
UigpICYmIG1fcmlnaHQucGF5bG9hZEdQUigpICE9IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkKKyAg
ICAgICAgICAgIHNjcmF0Y2ggPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgICAgIHNsb3dQ
YXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93
LCBtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9sZWZ0LnBheWxvYWRHUFIoKSwgc2NyYXRjaCkpOwog
Ci0gICAgICAgIGppdC5ib3hJbnQzMihtX3NjcmF0Y2hHUFIsIG1fcmVzdWx0KTsKKyAgICAgICAg
aml0LmJveEludDMyKHNjcmF0Y2gsIG1fcmVzdWx0KTsKICAgICAgICAgZW5kSnVtcExpc3QuYXBw
ZW5kKGppdC5qdW1wKCkpOwogCiAKQEAgLTE2Miw5ICsxNzQsOSBAQCBib29sIEpJVEFkZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdAogCiAgICAgLy8gRG8gZG91YmxlVmFyICsgZG91YmxlVmFyLgogICAgIGppdC5hZGRE
b3VibGUobV9yaWdodEZQUiwgbV9sZWZ0RlBSKTsKLSAgICBpZiAobV9hcml0aFByb2ZpbGUgJiYg
c2hvdWxkRW1pdFByb2ZpbGluZykKLSAgICAgICAgbV9hcml0aFByb2ZpbGUtPmVtaXRTZXREb3Vi
bGUoaml0KTsKLSAgICAgICAgCisgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKQorICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRTZXREb3VibGUoaml0KTsKKwogICAg
IGppdC5ib3hEb3VibGUobV9sZWZ0RlBSLCBtX3Jlc3VsdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCmluZGV4IDQ3MzY0
M2YyNDRlZDBhYzRiYjk2MmNhOTViNGJhY2JiM2U4MjYyNzguLjZmOTI5OTA0NTU3ZTBmMTFiNWZk
YWU0Y2M5MWVhMzUzZjEzZmVlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQWRkR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
ZGRHZW5lcmF0b3IuaApAQCAtNDMsOCArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBKSVRBZGRHZW5l
cmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQsIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZCwKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1Zh
bHVlUmVncyByaWdodCwKLSAgICAgICAgRlBSUmVnIGxlZnRGUFIsIEZQUlJlZyByaWdodEZQUiwg
R1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBzY3JhdGNoRlBSLAotICAgICAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCisgICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJS
ZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUikKICAgICAg
ICAgOiBtX2xlZnRPcGVyYW5kKGxlZnRPcGVyYW5kKQogICAgICAgICAsIG1fcmlnaHRPcGVyYW5k
KHJpZ2h0T3BlcmFuZCkKICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCkBAIC01NCwxOCArNTMs
MTUgQEAgcHVibGljOgogICAgICAgICAsIG1fcmlnaHRGUFIocmlnaHRGUFIpCiAgICAgICAgICwg
bV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpCiAgICAgICAgICwgbV9zY3JhdGNoRlBSKHNjcmF0Y2hG
UFIpCi0gICAgICAgICwgbV9hcml0aFByb2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFu
ZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdl
bmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYpOwotICAg
IGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlz
dCwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29u
c3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQotICAgIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogcHJpdmF0
ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOwpAQCAtNzcsNyArNzMsNiBAQCBw
cml2YXRlOgogICAgIEZQUlJlZyBtX3JpZ2h0RlBSOwogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7
CiAgICAgRlBSUmVnIG1fc2NyYXRjaEZQUjsKLSAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9m
aWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljLmNwcAppbmRleCA3ODBiY2E5MzhmZDEwZWZiMWYyNzVmNDU4M2RiODQx
ZWViNGMzZmY4Li41NWIxZTJiOGZlOWJhNmFjYTc2MDNiMzk5NWVjZTEyYmRhNTYxYmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ2OSw3ICs0
NjksOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9
IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQygpOworICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7
CisgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRo
UHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIG5lZ2F0ZUlDKTsKICAgICBlbWl0TWF0aElDRmFzdChuZWdhdGVJQywgY3VycmVudEluc3Ry
dWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0
ZSk7CiB9CkBAIC02NjQsNyArNjY1LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3BlcmFuZFR5
cGVzIGdldE9wZXJhbmRUeXBlcyhJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklU
OjplbWl0X29wX2FkZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJ
VEFkZElDKiBhZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQygpOworICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJl
bnRJbnN0cnVjdGlvbik7CisgICAgSklUQWRkSUMqIGFkZElDID0gbV9jb2RlQmxvY2stPmFkZEpJ
VEFkZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGFkZElDKTsKICAgICBlbWl0TWF0aElDRmFzdChhZGRJQywgY3VycmVu
dEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZUFk
ZCk7CiB9CkBAIC02OTksOCArNzAxLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVu
YXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICBh
dXRvIGlubGluZVN0YXJ0ID0gbGFiZWwoKTsKICNlbmRpZgogCi0gICAgQXJpdGhQcm9maWxlJiBh
cml0aFByb2ZpbGUgPSAqYml0d2lzZV9jYXN0PEFyaXRoUHJvZmlsZSo+KCZjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBtYXRoSUMtPm1fZ2VuZXJhdG9yID0gR2VuZXJhdG9y
KHJlc3VsdFJlZ3MsIHNyY1JlZ3MsIHNjcmF0Y2hHUFIsIGFyaXRoUHJvZmlsZSk7CisgICAgbWF0
aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRvcihyZXN1bHRSZWdzLCBzcmNSZWdzLCBzY3JhdGNo
R1BSKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCwgc3JjUmVncyk7CiAK
QEAgLTcwOCw5ICs3MDksMTAgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0
aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKIAogICAgIGJvb2wg
Z2VuZXJhdGVkSW5saW5lQ29kZSA9IG1hdGhJQy0+Z2VuZXJhdGVJbmxpbmUoKnRoaXMsIG1hdGhJ
Q0dlbmVyYXRpb25TdGF0ZSk7CiAgICAgaWYgKCFnZW5lcmF0ZWRJbmxpbmVDb2RlKSB7Ci0gICAg
ICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIHNyY1JlZ3MsICZhcml0aFByb2ZpbGUpOwot
ICAgICAgICBlbHNlCisgICAgICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAg
ICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJv
ZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIHNyY1JlZ3MsIGFyaXRoUHJvZmlsZSk7Cisg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub25Qcm9maWxlZEZ1bmN0
aW9uLCByZXN1bHRSZWdzLCBzcmNSZWdzKTsKICAgICB9IGVsc2UKICAgICAgICAgYWRkU2xvd0Nh
c2UobWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoSnVtcHMpOwpAQCAtNzM1LDkgKzczNyw5
IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiog
bWF0aElDLCBJbnN0cnVjdGlvbiogY3VycmVuCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIE9w
ZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRJbnN0cnVjdGlvbihjdXJy
ZW50SW5zdHJ1Y3Rpb24pKTsKLSAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QwKTsKLSAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7
Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QyKTsKKyAgICBK
U1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxKTsKKyAgICBKU1ZhbHVlUmVn
cyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1Qz
OwogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBSZWdUMjsKICNlbHNlCkBAIC03NDksMTAgKzc1
MSw2IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9y
PiogbWF0aElDLCBJbnN0cnVjdGlvbiogY3VycmVuCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBm
cFJlZ1QyOwogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxw
dHI7Ci0gICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgYXJpdGhQcm9maWxl
ID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0K
ICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKICAgICBTbmlw
cGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOwogCkBAIC03NjMsNyArNzYx
LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIEluc3RydWN0aW9uKiBjdXJyZW4KIAogICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0
T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwogCi0gICAgbWF0
aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRvcihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCBy
ZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzY3JhdGNo
R1BSLCBzY3JhdGNoRlBSLCBhcml0aFByb2ZpbGUpOworICAgIG1hdGhJQy0+bV9nZW5lcmF0b3Ig
PSBHZW5lcmF0b3IobGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCwgcmVzdWx0UmVncywgbGVmdFJl
Z3MsIHJpZ2h0UmVncywgZnBSZWdUMCwgZnBSZWdUMSwgc2NyYXRjaEdQUiwgc2NyYXRjaEZQUik7
CiAgICAgCiAgICAgQVNTRVJUKCEoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFu
dChsZWZ0T3BlcmFuZCkgJiYgR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQo
cmlnaHRPcGVyYW5kKSkpOwogICAgIApAQCAtNzg0LDkgKzc4MiwxMCBAQCB2b2lkIEpJVDo6ZW1p
dE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgSW5zdHJ1Y3Rp
b24qIGN1cnJlbgogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRS
ZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByaWdodFJlZ3MpOwotICAgICAgICBpZiAo
YXJpdGhQcm9maWxlKQorICAgICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAg
ICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hcml0aFBy
b2ZpbGVGb3JQQyhjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBhcml0
aFByb2ZpbGUpOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihub25Qcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmln
aHRSZWdzKTsKICAgICB9IGVsc2UKICAgICAgICAgYWRkU2xvd0Nhc2UobWF0aElDR2VuZXJhdGlv
blN0YXRlLnNsb3dQYXRoSnVtcHMpOwpAQCAtODIzLDExICs4MjIsMTIgQEAgdm9pZCBKSVQ6OmVt
aXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnQKICNlbmRpZgogCiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewot
ICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJpdHdpc2VfY2FzdDxBcml0aFBy
b2ZpbGUqPigmY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGlmICht
YXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoKQogICAgICAgICAgICAg
bWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVpbnRl
cnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24p
LCByZXN1bHRSZWdzLCBzcmNSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwotICAgICAgICBl
bHNlCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBtX2NvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yUEMoY3VycmVudEluc3RydWN0aW9uKTsK
ICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIHNyY1JlZ3MsIGFyaXRoUHJvZmls
ZSk7CisgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRl
LnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJh
dGlvbl9FSk1pYz4ocmVwYXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgc3JjUmVncywgVHJ1c3Rl
ZEltbVB0cihtYXRoSUMpKTsKIApAQCAtODU5LDkgKzg1OSw5IEBAIHZvaWQgSklUOjplbWl0TWF0
aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBJbnN0cnVjdGlvbiog
Y3VycmVuCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdl
dE9wZXJhbmRUeXBlcyhjb3BpZWRJbnN0cnVjdGlvbihjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKLSAg
ICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKLSAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QyKTsKKyAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9
IEpTVmFsdWVSZWdzKHJlZ1QxKTsKKyAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVl
UmVncyhyZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QwKTsKICNlbHNlCiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGN1
cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApOwpAQCAtODg5LDExICs4ODksMTMgQEAgdm9pZCBKSVQ6OmVtaXRNYXRo
SUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIEluc3RydWN0aW9uKiBj
dXJyZW4KICNlbmRpZgogCiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAg
ICBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICptX2NvZGVCbG9jay0+YXJpdGhQcm9maWxl
Rm9yUEMoY3VycmVudEluc3RydWN0aW9uKTsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25T
dGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9u
U3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihiaXR3aXNlX2Nhc3Q8Sl9KSVRPcGVy
YXRpb25fRUpKQXJwTWljPihwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIGxl
ZnRSZWdzLCByaWdodFJlZ3MsICZhcml0aFByb2ZpbGUsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIGxlZnRS
ZWdzLCByaWdodFJlZ3MsICZhcml0aFByb2ZpbGUpOworICAgICAgICAgICAgbWF0aElDR2VuZXJh
dGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oYml0d2lzZV9jYXN0PEpfSklU
T3BlcmF0aW9uX0VKSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBs
ZWZ0UmVncywgcmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9jb2RlQmxvY2st
PmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlKTsKKyAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIGxl
ZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJvZmlsZSk7CisgICAgICAgIH0KICAgICB9IGVsc2UK
ICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0VKSk1pYz4ocmVwYXRjaEZ1bmN0aW9uKSwg
cmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsK
IApAQCAtOTg5LDcgKzk5MSw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kaXYoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+CiAKIHZvaWQgSklU
OjplbWl0X29wX211bChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJ
VE11bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRNdWxJQygpOworICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJl
bnRJbnN0cnVjdGlvbik7CisgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJ
VE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdChtdWxJQywgY3VycmVu
dEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZU11
bCk7CiB9CkBAIC0xMDA0LDcgKzEwMDcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5PgogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUU3ViSUMoKTsKKyAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQ
QyhjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIEpJVFN1YklDKiBzdWJJQyA9IG1fY29kZUJsb2Nr
LT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5h
ZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Qoc3ViSUMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZCwgb3BlcmF0aW9u
VmFsdWVTdWIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA0
NTEwYTliNmJmYTdlNWJlOTA5NGFkMmMxYzJiNTcxZWM1NDEyODc2Li5lMzllYjU0MmYxYTY2ZjA1
YzM1Yjc2MmY3ZDc2Mjc0MmM2ODU0MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaApAQCAtNDQ4LDE0ICs0NDgsNiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpBcnAgb3BlcgogICAg
IHJldHVybiBjYWxsOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpBcnBNaWMgb3BlcmF0aW9uLCBKU1Zh
bHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlLCBUcnVzdGVkSW1tUHRyIG1hdGhJQykKLXsKLSAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cihhcml0aFBy
b2ZpbGUpLCBtYXRoSUMpOwotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uKTsKLSAgICBzZXR1cFJlc3VsdHMocmVzdWx0KTsKLSAgICByZXR1cm4g
Y2FsbDsKLX0KLQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpNaWMgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1
bHQsIEpTVmFsdWVSZWdzIGFyZywgVHJ1c3RlZEltbVB0ciBtYXRoSUMpCiB7CiAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZywgbWF0aElDKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE1hdGhJQy5oCmluZGV4IDFjYTRiMWY0YTQ5ZTA5YmFlOWZjOWIxZmUxYmJiMzM4ODcyZWFk
MzUuLjM4MDZmM2E0ZjMzMmVkNGZkMTRiMzA1ZmNlZmE2MGQyY2Y1ODcyOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaApAQCAtNTMsOSArNTMsMTQgQEAgc3RydWN0IE1hdGhJ
Q0dlbmVyYXRpb25TdGF0ZSB7CiAKICNkZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMgMAogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFy
aXRoUHJvZmlsZSopPgordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIGJvb2woKmlz
UHJvZmlsZUVtcHR5KShBcml0aFByb2ZpbGUmKT4KIGNsYXNzIEpJVE1hdGhJQyB7CiBwdWJsaWM6
CisgICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6IG1f
YXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKKyAgICB7CisgICAgfQorCiAgICAgQ29kZUxvY2F0
aW9uTGFiZWwgZG9uZUxvY2F0aW9uKCkgeyByZXR1cm4gbV9pbmxpbmVTdGFydC5sYWJlbEF0T2Zm
c2V0KG1faW5saW5lU2l6ZSk7IH0KICAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93UGF0aFN0YXJ0
TG9jYXRpb24oKSB7IHJldHVybiBtX2lubGluZVN0YXJ0LmxhYmVsQXRPZmZzZXQobV9kZWx0YUZy
b21TdGFydFRvU2xvd1BhdGhTdGFydCk7IH0KICAgICBDb2RlTG9jYXRpb25DYWxsIHNsb3dQYXRo
Q2FsbExvY2F0aW9uKCkgeyByZXR1cm4gbV9pbmxpbmVTdGFydC5jYWxsQXRPZmZzZXQobV9kZWx0
YUZyb21TdGFydFRvU2xvd1BhdGhDYWxsTG9jYXRpb24pOyB9CkBAIC03Miw4ICs3Nyw4IEBAIHB1
YmxpYzoKICAgICAgICAgc3RhdGUuZmFzdFBhdGhTdGFydCA9IGppdC5sYWJlbCgpOwogICAgICAg
ICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7
CiAKLSAgICAgICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9nZW5lcmF0b3Iu
YXJpdGhQcm9maWxlKCkpIHsKLSAgICAgICAgICAgIGlmICghaXNQcm9maWxlRW1wdHkoYXJpdGhQ
cm9maWxlKSkgeworICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKKyAgICAgICAgICAgIGlm
IChpc1Byb2ZpbGVFbXB0eSgqbV9hcml0aFByb2ZpbGUpKSB7CiAgICAgICAgICAgICAgICAgLy8g
SXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qgd2Fu
dCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEgY291
cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBzbyBp
ZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4gU2Vj
b25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVyIGNv
ZGUKQEAgLTg5LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IHJlc3VsdCA9IG1fZ2VuZXJhdG9yLmdlbmVy
YXRlSW5saW5lKGppdCwgc3RhdGUpOworICAgICAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgcmVz
dWx0ID0gbV9nZW5lcmF0b3IuZ2VuZXJhdGVJbmxpbmUoaml0LCBzdGF0ZSwgbV9hcml0aFByb2Zp
bGUpOwogCiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAgICAgIGNhc2UgSklUTWF0aElD
SW5saW5lUmVzdWx0OjpHZW5lcmF0ZWRGYXN0UGF0aDogewpAQCAtMTA0LDcgKzEwOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgICAgICBjYXNlIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2Vu
ZXJhdGVGdWxsU25pcHBldDogewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
IGVuZEp1bXBMaXN0OwotICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dlbmVyYXRvci5nZW5l
cmF0ZUZhc3RQYXRoKGppdCwgZW5kSnVtcExpc3QsIHN0YXRlLnNsb3dQYXRoSnVtcHMsIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOworICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dlbmVyYXRvci5n
ZW5lcmF0ZUZhc3RQYXRoKGppdCwgZW5kSnVtcExpc3QsIHN0YXRlLnNsb3dQYXRoSnVtcHMsIG1f
YXJpdGhQcm9maWxlLCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1
bHQpIHsKICAgICAgICAgICAgICAgICBzdGF0ZS5mYXN0UGF0aEVuZCA9IGppdC5sYWJlbCgpOwog
ICAgICAgICAgICAgICAgIHN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCA9IGZhbHNlOwpAQCAt
MTkwLDcgKzE5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBlbmRKdW1wTGlzdDsgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
c2xvd1BhdGhKdW1wTGlzdDsgCiAKLSAgICAgICAgICAgIGJvb2wgZW1pdHRlZEZhc3RQYXRoID0g
bV9nZW5lcmF0b3IuZ2VuZXJhdGVGYXN0UGF0aChqaXQsIGVuZEp1bXBMaXN0LCBzbG93UGF0aEp1
bXBMaXN0LCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICAgICAgICAgIGJvb2wgZW1pdHRlZEZh
c3RQYXRoID0gbV9nZW5lcmF0b3IuZ2VuZXJhdGVGYXN0UGF0aChqaXQsIGVuZEp1bXBMaXN0LCBz
bG93UGF0aEp1bXBMaXN0LCBtX2FyaXRoUHJvZmlsZSwgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAg
ICAgICAgICAgICBpZiAoIWVtaXR0ZWRGYXN0UGF0aCkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBlbmRKdW1wTGlzdC5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0yMjQsNiAr
MjI5LDggQEAgcHVibGljOgogICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRpb25P
ZihzdGF0ZS5zbG93UGF0aFN0YXJ0KSk7CiAgICAgfQogCisgICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQorCiAjaWYgRU5BQkxF
KE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNpemUgeyAwIH07CiAg
ICAgc2l6ZV90IGNvZGVTaXplKCkgY29uc3QKQEAgLTIzNSw2ICsyNDIsNyBAQCBwdWJsaWM6CiAg
ICAgfQogI2VuZGlmCiAKKyAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBtX2NvZGU7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbV9pbmxp
bmVTdGFydDsKICAgICBpbnQzMl90IG1faW5saW5lU2l6ZTsKQEAgLTI0NCwyNCArMjUyLDM2IEBA
IHB1YmxpYzoKICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9yOwogfTsKIAotaW5saW5lIGJv
b2wgY2FuR2VuZXJhdGVXaXRoQmluYXJ5UHJvZmlsZShBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK2lubGluZSBib29sIGlzQmluYXJ5UHJvZmlsZUVtcHR5KEFyaXRoUHJvZmlsZSYgYXJpdGhQ
cm9maWxlKQogewotICAgIHJldHVybiAhYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKS5p
c0VtcHR5KCkgJiYgIWFyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwor
ICAgIHJldHVybiBhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpIHx8IGFy
aXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiB9CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRN
YXRoSUM8R2VuZXJhdG9yVHlwZSwgY2FuR2VuZXJhdGVXaXRoQmluYXJ5UHJvZmlsZT4geyB9Owor
Y2xhc3MgSklUQmluYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBp
c0JpbmFyeVByb2ZpbGVFbXB0eT4geworcHVibGljOgorICAgIEpJVEJpbmFyeU1hdGhJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlw
ZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICB7CisgICAgfQorfTsK
IAogdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5
cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVm
IEpJVEJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCiAKLWlubGluZSBi
b29sIGNhbkdlbmVyYXRlV2l0aFVuYXJ5UHJvZmlsZShBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK2lubGluZSBib29sIGlzVW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFBy
b2ZpbGUpCiB7Ci0gICAgcmV0dXJuICFhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpLmlz
RW1wdHkoKTsKKyAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKTsKIH0KIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBlPgotY2xhc3MgSklUVW5h
cnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGNhbkdlbmVyYXRlV2l0
aFVuYXJ5UHJvZmlsZT4geyB9OworY2xhc3MgSklUVW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0
aElDPEdlbmVyYXRvclR5cGUsIGlzVW5hcnlQcm9maWxlRW1wdHk+IHsKK3B1YmxpYzoKKyAgICBK
SVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICAgICAgOiBKSVRN
YXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxlKQor
ICAgIHsKKyAgICB9Cit9OwogCiB0eXBlZGVmIEpJVFVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRv
cj4gSklUTmVnSUM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TXVsR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJh
dG9yLmNwcAppbmRleCA2M2FiZjMxOWMyYjY1NWIzN2MyNzc1ZDJlYzlkNmQ2ODgwMTdjMTA4Li4w
ZGZiZjkwMGQ2NzNjYWE2MTg1NGJmZjFkMzUyYzNkMDAyNTQ4ZTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCkBAIC0zMywxNSArMzMsMTQgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0
b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUs
IGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdlIGRlZmF1bHQg
dG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlw
ZSgpLndpdGhJbnQzMigpOwogICAgIE9ic2VydmVkVHlwZSByaHMgPSBPYnNlcnZlZFR5cGUoKS53
aXRoSW50MzIoKTsKLQotICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAgICBsaHMgPSBt
X2FyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7Ci0gICAgICAgIHJocyA9IG1fYXJpdGhQ
cm9maWxlLT5yaHNPYnNlcnZlZFR5cGUoKTsKKyAgICBpZiAoYXJpdGhQcm9maWxlKSB7CisgICAg
ICAgIGxocyA9IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgICAgIHJocyA9
IGFyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCk7CiAgICAgfQogCiAgICAgaWYgKGxocy5p
c09ubHlOb25OdW1iZXIoKSAmJiByaHMuaXNPbmx5Tm9uTnVtYmVyKCkpCkBAIC04OCw3ICs4Nyw3
IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJl
c3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBi
b29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVt
cExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9z
Y3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpAQCAtMTkxLDkgKzE5MCwxMCBAQCBi
b29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogICAgIC8vIERvIGRvdWJsZVZhciAqIGRvdWJsZVZhci4K
ICAgICBqaXQubXVsRG91YmxlKG1fcmlnaHRGUFIsIG1fbGVmdEZQUik7CiAKLSAgICBpZiAoIW1f
YXJpdGhQcm9maWxlIHx8ICFzaG91bGRFbWl0UHJvZmlsaW5nKQorICAgIGlmICghc2hvdWxkRW1p
dFByb2ZpbGluZykKICAgICAgICAgaml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVzdWx0KTsK
ICAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIC8vIFRo
ZSBJbnQ1MiBvdmVyZmxvdyBjaGVjayBiZWxvdyBpbnRlbnRpb25hbGx5IG9taXRzIDFsbCA8PCA1
MSBhcyBhIHZhbGlkIG5lZ2F0aXZlIEludDUyIHZhbHVlLgogICAgICAgICAvLyBUaGVyZWZvcmUs
IHdlIHdpbGwgZ2V0IGEgZmFsc2UgcG9zaXRpdmUgaWYgdGhlIHJlc3VsdCBpcyB0aGF0IHZhbHVl
LiBUaGlzIGlzIGludGVudGlvbmFsbHkKICAgICAgICAgLy8gZG9uZSB0byBzaW1wbGlmeSB0aGUg
Y2hlY2tpbmcgYWxnb3JpdGhtLgpAQCAtMjA0LDE4ICsyMDQsMTggQEAgYm9vbCBKSVRNdWxHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90TmVnYXRpdmVaZXJvID0g
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnBheWxvYWRHUFIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobmVnYXRpdmVaZXJvQml0cykpOwogCi0gICAg
ICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6TmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxl
LT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNv
bHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZl
WmVyby5saW5rKCZqaXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29s
dXRlQWRkcmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGpp
dC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVy
b0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRk
cmVzc09mQml0cygpKSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigp
LCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6Oklt
bTMyKDUyKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6
SW1tMzIoMHg3ZmYpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
bm9JbnQ1Mk92ZXJmbG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVx
dWFsLCBtX3NjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAK
LSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxl
OjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFBy
b2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAg
ICBub0ludDUyT3ZlcmZsb3cubGluaygmaml0KTsKIAogICAgICAgICBkb25lLmxpbmsoJmppdCk7
CkBAIC0yMjYsMTggKzIyNiwxOCBAQCBib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogICAgICAgICBu
b3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFs
LCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApKSk7
CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVy
czo6Tm90RXF1YWwsIG1fcmVzdWx0LnRhZ0dQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihuZWdhdGl2ZVplcm9CaXRzID4+IDMyKSkpOwogCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSksIENDYWxsSGVs
cGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsK
KyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxl
OjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9m
aWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUg
PSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAg
ICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5v
bk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2FyaXRoUHJv
ZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAg
ICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAg
IGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQ
Uik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3Jh
dGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJl
c3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogCiAgICAgICAgIGVuZEp1bXBM
aXN0LmFwcGVuZChub0ludDUyT3ZlcmZsb3cpOwogICAgICAgICBpZiAobV9zY3JhdGNoR1BSID09
IG1fcmVzdWx0LnRhZ0dQUigpIHx8IG1fc2NyYXRjaEdQUiA9PSBtX3Jlc3VsdC5wYXlsb2FkR1BS
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaAppbmRleCAz
NzU5OTA4ZDVlNGMxYTc3MzBiMGJmNmQxY2MzYjkxNjFlYWZkODUxLi44YmI2NjJlYThjNWE0Nzdh
NzI2MjM1OTQxMzZhODNlYWIxYTZiNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDcgQEAgcHVibGljOgogCiAgICAgSklUTXVs
R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdo
dE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwg
SlNWYWx1ZVJlZ3MgcmlnaHQsCi0gICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRG
UFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUiwKLSAgICAgICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAgICAgICBGUFJSZWcgbGVmdEZQUiwg
RlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIpCiAg
ICAgICAgIDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3Bl
cmFuZChyaWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNTQsMTkg
KzUzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3JpZ2h0RlBSKHJpZ2h0RlBSKQogICAgICAg
ICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgICAgICAsIG1fc2NyYXRjaEZQUihzY3Jh
dGNoRlBSKQotICAgICAgICAsIG1fYXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpIHx8ICFt
X3JpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKTsKICAgICB9CiAKLSAgICBKSVRN
YXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlJik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBzbG93SnVtcExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0
aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUq
LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxl
ZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1Jp
Z2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJl
dHVybiByaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQogICAgIAotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7
IH0KLQogcHJpdmF0ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOwogICAgIFNu
aXBwZXRPcGVyYW5kIG1fcmlnaHRPcGVyYW5kOwpAQCAtNzcsNyArNzMsNiBAQCBwcml2YXRlOgog
ICAgIEZQUlJlZyBtX3JpZ2h0RlBSOwogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBS
UmVnIG1fc2NyYXRjaEZQUjsKLSAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE5lZ0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5l
Z0dlbmVyYXRvci5jcHAKaW5kZXggNGRlMWY2YzNiZGNmNTEwYTdiYjU3ZDI5MTA2ZjQxN2I2YTVi
ZmZjYi4uZGY5MWM0ODg4NjkxOWU3MDM1NjJmOWM2NDNkODcxNjI4YmFmNzY2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dl
bmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKG1f
c2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9
IG1fc3JjLnBheWxvYWRHUFIoKSk7CkBAIC00Miw3ICs0MiwxMCBAQCBKSVRNYXRoSUNJbmxpbmVS
ZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwg
TWF0aElDRwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQudGFnR1BSKCkpOwog
I2VuZGlmCiAKLSAgICBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRUeXBlcyA9IG1fYXJpdGhQcm9maWxl
LT5saHNPYnNlcnZlZFR5cGUoKTsKKyAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGlu
dDMyLgorICAgIE9ic2VydmVkVHlwZSBvYnNlcnZlZFR5cGVzID0gT2JzZXJ2ZWRUeXBlKCkud2l0
aEludDMyKCk7CisgICAgaWYgKGFyaXRoUHJvZmlsZSkKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9
IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghb2JzZXJ2ZWRUeXBlcy5pc0VtcHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2Vu
ZXJhdGUgYW55dGhpbmcgaWYgd2UgZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYg
KG9ic2VydmVkVHlwZXMuaXNPbmx5Tm9uTnVtYmVyKCkpCkBAIC03OSw3ICs4Miw3IEBAIEpJVE1h
dGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2Vu
ZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBM
aXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBib29sKQorYm9v
bCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEND
YWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sKQogewogICAgIEFT
U0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKICAgICBBU1NFUlQobV9z
Y3JhdGNoR1BSICE9IG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaAppbmRleCAzMGRlMmM1YzEyNmQyMDQxNmQzZjdiZjAz
ZjU3OTM4Zjg0YjU2M2UxLi4zZTkyNWU5ZDIzY2JkZTlhOTM4MmI4MDk1MDU5MjU2ZTA0NGQ5MjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTM4
LDIwICszOCwxNiBAQCBjbGFzcyBKSVROZWdHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVE5l
Z0dlbmVyYXRvcigpID0gZGVmYXVsdDsKIAotICAgIEpJVE5lZ0dlbmVyYXRvcihKU1ZhbHVlUmVn
cyByZXN1bHQsIEpTVmFsdWVSZWdzIHNyYywgR1BSUmVnIHNjcmF0Y2hHUFIsIEFyaXRoUHJvZmls
ZSYgYXJpdGhQcm9maWxlKQotICAgICAgICA6IG1fYXJpdGhQcm9maWxlKCZhcml0aFByb2ZpbGUp
Ci0gICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQorICAgIEpJVE5lZ0dlbmVyYXRvcihKU1ZhbHVl
UmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIHNyYywgR1BSUmVnIHNjcmF0Y2hHUFIpCisgICAgICAg
IDogbV9yZXN1bHQocmVzdWx0KQogICAgICAgICAsIG1fc3JjKHNyYykKICAgICAgICAgLCBtX3Nj
cmF0Y2hHUFIoc2NyYXRjaEdQUikKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmKTsK
LSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVt
cExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7Ci0KLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CisgICAgSklUTWF0
aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9m
aWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKLSAgICBBcml0aFBy
b2ZpbGUqIG1fYXJpdGhQcm9maWxlIHsgbnVsbHB0ciB9OwogICAgIEpTVmFsdWVSZWdzIG1fcmVz
dWx0OwogICAgIEpTVmFsdWVSZWdzIG1fc3JjOwogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBkOGJkYzEw
ODE2M2E1YmY5NDNjMDVkMDM4YjhkMTAzMWE5NTJiOWM5Li5jNzlmZmVjMjQ1MjBlMTQzNWY5ZDE3
ZGQ3NGMzMjhkZGE5NThhZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTIyOTAsMTEgKzIyOTAsMTEgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZQogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAgIEpT
VmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogCi0gICAgQVNTRVJUKGFy
aXRoUHJvZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3Ay
KTsKLQogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZXhlYywgb3AxLCBvcDIpOwotICAgIGFy
aXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgIGlmIChhcml0aFByb2ZpbGUp
IHsKKyAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKKyAg
ICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgfQogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjMwOSw3ICsyMzA5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICByZXR1cm4gcHJvZmlsZWRBZGQoZXhlYywgZW5j
b2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgSklUQWRkSUMqIGFkZElDKQorRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyogYWRkSUMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yMzE3
LDggKzIzMTcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgSlNWYWx1ZSBvcDEgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMik7CiAKLSAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKLSAgICBhcml0
aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOworICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIGlmIChhcml0aFByb2Zp
bGUpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9P
cHRpbWl6ZTsKICAgICBhZGRJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoKnZtLCBleGVjLT5jb2RlQmxv
Y2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKIApAQCAtMjMyNywxMyArMjMyOCwxOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsCiAjZW5kaWYKICAgICAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
QWRkKGV4ZWMsIG9wMSwgb3AyKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVz
dWx0KTsKKyAgICBpZiAoYXJpdGhQcm9maWxlKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2Vy
dmVSZXN1bHQocmVzdWx0KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2Zp
bGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBK
SVRBZGRJQyopCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
UHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqIGFkZElDKQogeworICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOworCisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJp
dGhQcm9maWxlKCk7CiAgICAgcmV0dXJuIHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsIGFyaXRoUHJvZmlsZSk7CiB9CiAKQEAgLTIzNDYsNyArMjM1Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKCiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMik7CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVl
QWRkTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJ
Qy0+bV9nZW5lcmF0b3IuYXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUt
Pm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGFkZElDLT5nZW5lcmF0ZU91dE9mTGlu
ZSgqdm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yMzg5
LDcgKzIzOTUsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxl
ZE11bChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgIEpTVmFsdWUgb3AxID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpOwogCi0gICAgaWYgKHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBl
cykKKyAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcykK
ICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKIAogICAg
IGRvdWJsZSBhID0gb3AxLnRvTnVtYmVyKGV4ZWMpOwpAQCAtMjQwMCw3ICsyNDA2LDggQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwoVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwogICAgIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAqIGIpOwotICAg
IGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgIGlmIChhcml0aFByb2Zp
bGUpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtMjQyNiw3ICsyNDMzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFs
dWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11
bElDLT5tX2dlbmVyYXRvci5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmls
ZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKCp2bSwg
ZXhlYy0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI0NDUsMTIgKzI0
NTIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFBy
b2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICByZXR1cm4gcHJvZmlsZWRNdWwo
KnZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRp
bWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBKSVRNdWxJQyog
bXVsSUMpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJv
ZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKiBtdWxJQykKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKIAotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CisgICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgaWYgKGFy
aXRoUHJvZmlsZSkKKyAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAg
ICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09w
dGltaXplOwogICAgIG11bElDLT5nZW5lcmF0ZU91dE9mTGluZSgqdm0sIGV4ZWMtPmNvZGVCbG9j
aygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yNDYxLDExICsyNDcwLDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1cm4gcHJvZmlsZWRNdWwoKnZtLCBleGVjLCBlbmNv
ZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUsIGZhbHNlKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBKSVRNdWxJQyopCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqIG11bElDKQogewogICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCisg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CiAg
ICAgcmV0dXJuIHByb2ZpbGVkTXVsKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
YXJpdGhQcm9maWxlKTsKIH0KIApAQCAtMjQ4NCwxMyArMjQ5NCwxMyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTmVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVgogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxl
ZE5lZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKLSAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQp
OwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBpZiAoYXJpdGhQ
cm9maWxlKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CiAgICAg
ZG91YmxlIG51bWJlciA9IG9wZXJhbmQudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwpAQCAtMjUxNSw5ICsyNTI1LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGUKICAg
ICAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQp
OwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+bV9nZW5lcmF0b3Iu
YXJpdGhQcm9maWxlKCk7Ci0gICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7Ci0gICAgYXJpdGhQcm9m
aWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKSkKKyAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNl
cnZlTEhTKG9wZXJhbmQpOwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91dE9mTGluZSh2bSwgZXhlYy0+
Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQpOwogCiAjaWYgRU5BQkxF
KE1BVEhfSUNfU1RBVFMpCkBAIC0yNTM4LDkgKzI1NDcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZAogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVy
YW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPm1fZ2VuZXJh
dG9yLmFyaXRoUHJvZmlsZSgpOwotICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwotICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUodm0sIGV4
ZWMtPmNvZGVCbG9jaygpLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiAKICNpZiBFTkFCTEUoTUFU
SF9JQ19TVEFUUykKQEAgLTI1NzIsNyArMjU4MCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
CiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNW
YWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKLSAgICBpZiAoc2hvdWxk
T2JzZXJ2ZUxIU0FuZFJIU1R5cGVzKQorICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkT2Jz
ZXJ2ZUxIU0FuZFJIU1R5cGVzKQogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRS
SFMob3AxLCBvcDIpOwogCiAgICAgZG91YmxlIGEgPSBvcDEudG9OdW1iZXIoZXhlYyk7CkBAIC0y
NTgzLDcgKzI1OTEsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9m
aWxlZFN1YihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihhIC0gYik7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7
CisgICAgaWYgKGFyaXRoUHJvZmlsZSkKKyAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVz
dWx0KHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBA
IC0yNjA4LDcgKzI2MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgYXV0byBub25PcHRpbWl6ZVZh
cmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemU7Ci0gICAgaWYgKEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPm1fZ2VuZXJhdG9yLmFyaXRoUHJvZmlsZSgpKQorICAg
IGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkK
ICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBzdWJJQy0+Z2Vu
ZXJhdGVPdXRPZkxpbmUoKnZtLCBleGVjLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50
KTsKIApAQCAtMjYyNywxMiArMjYzNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZQogICAg
IHJldHVybiB1bnByb2ZpbGVkU3ViKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9m
aWxlZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEpJ
VFN1YklDKiBzdWJJQykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqIHN1YklDKQogewog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogCi0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKKyAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAg
ICBpZiAoYXJpdGhQcm9maWxlKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRS
SFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJQcm9m
aWxlZE5vT3B0aW1pemU7CiAgICAgc3ViSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKCp2bSwgZXhlYy0+
Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI2NDMsMTEgKzI2NTQsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVk
T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBwcm9maWxlZFN1Yigqdm0sIGV4
ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGFyaXRoUHJvZmlsZSwgZmFsc2UpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09w
dGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEpJVFN1YklD
KikKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxl
ZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyogc3ViSUMpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CiAKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2Zp
bGUoKTsKICAgICByZXR1cm4gcHJvZmlsZWRTdWIoKnZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCBhcml0aFByb2ZpbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCmluZGV4IDY3MjY0MDc0ZWU0N2NiMTUxNjFkYjA5MjdiNDNmZjc4MDgzYTVj
N2YuLjkzNWM0ZmFiMTlkMmQ3NzlhNTBlYjRlNzdmMzUxODYxYjIxMWEzZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNDgsNyArMTQ4LDYgQEAgdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKQXAp
KEV4ZWNTdGF0ZSosIEVuY29kZWQKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJ
T04gKkpfSklUT3BlcmF0aW9uX0VKSkJ5KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09Q
RVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkpBcnApKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQXJpdGhQcm9maWxlKik7Ci10eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkpBcnBNaWMpKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQXJpdGhQcm9maWxlKiwgdm9p
ZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRp
b25fRUpKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZv
aWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0
aW9uX0VKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwogdHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzc1opKEV4ZWNT
dGF0ZSosIEpTU3RyaW5nKiwgaW50MzJfdCk7CkBAIC00MjksMTUgKzQyOCwxNSBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbmRleFN0cmluZyhFeGVjU3RhdGUqLCBpbnQzMl90
KTsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0
aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09w
dGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSosIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0
aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vT3B0aW1p
emUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ay
LCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgV1RGX0lOVEVS
TkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2Zp
bGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiwgSklUTXVsSUMqKSBXVEZfSU5URVJO
QUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmls
ZWROb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSosIEpJVE11bElDKikgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2Zp
bGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEpJVE11bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwgQXJpdGhQcm9maWxlKik7CkBAIC00NDcsOCArNDQ2LDgg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YihFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0
aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJ
QyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSosIEpJVFN1YklD
KikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqLCBKSVRTdWJJ
QyopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFM
OworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVk
Tm9PcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2coRXhlY1N0YXRlKikgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlj
a2VuTG9nKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAppbmRleCA1YTMyM2MzN2NhZGU1NzMwNDdkMjEwNzM5
ZGU0OTVmMmRjYTJhZmI2Li43OTVjMjc1ODRjMDQyMDZkYjEyOTQyNTVjY2VhMzFlOWZiY2NhZDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCkBA
IC0zMywxNCArMzMsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJl
c3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBN
YXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1
YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewog
ICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBl
IGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwogICAgIE9ic2VydmVkVHlwZSByaHMg
PSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKLSAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsK
LSAgICAgICAgbGhzID0gbV9hcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOwotICAgICAg
ICByaHMgPSBtX2FyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgaWYgKGFyaXRo
UHJvZmlsZSkgeworICAgICAgICBsaHMgPSBhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgp
OworICAgICAgICByaHMgPSBhcml0aFByb2ZpbGUtPnJoc09ic2VydmVkVHlwZSgpOwogICAgIH0K
IAogICAgIGlmIChsaHMuaXNPbmx5Tm9uTnVtYmVyKCkgJiYgcmhzLmlzT25seU5vbk51bWJlcigp
KQpAQCAtNzgsNyArNzgsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9y
OjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklU
U3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xv
d1BhdGhKdW1wTGlzdCwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRTdWJHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1
bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0
UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKQEAgLTEy
OSw4ICsxMjksOCBAQCBib29sIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogICAgIHJpZ2h0V2FzSW50ZWdl
ci5saW5rKCZqaXQpOwogCiAgICAgaml0LnN1YkRvdWJsZShtX3JpZ2h0RlBSLCBtX2xlZnRGUFIp
OwotICAgIGlmIChtX2FyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKQotICAgICAg
ICBtX2FyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShqaXQpOworICAgIGlmIChhcml0aFByb2Zp
bGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZykKKyAgICAgICAgYXJpdGhQcm9maWxlLT5lbWl0U2V0
RG91YmxlKGppdCk7CiAKICAgICBqaXQuYm94RG91YmxlKG1fbGVmdEZQUiwgbV9yZXN1bHQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRleCBjODI3
NmI3NWMyMGZhZTZkODQ0NTMxNDFmNzFiNjU4MjNkNmJhODBmLi5mMzAwMTY2NWQ2ZTljZWYwOWRi
YjU5NDRmMDcxMGJiY2RhNzkwOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN1YkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3ViR2VuZXJhdG9yLmgKQEAgLTQyLDggKzQyLDcgQEAgcHVibGljOgogCiAgICAgSklUU3ViR2Vu
ZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdodE9w
ZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNW
YWx1ZVJlZ3MgcmlnaHQsCi0gICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIs
IEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUiwKLSAgICAgICAgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAgICAgICBGUFJSZWcgbGVmdEZQUiwgRlBS
UmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIpCiAgICAg
ICAgIDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3BlcmFu
ZChyaWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNTMsMTcgKzUy
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3JpZ2h0RlBSKHJpZ2h0RlBSKQogICAgICAgICAs
IG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgICAgICAsIG1fc2NyYXRjaEZQUihzY3JhdGNo
RlBSKQotICAgICAgICAsIG1fYXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKICAgICB7IH0KIAot
ICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBN
YXRoSUNHZW5lcmF0aW9uU3RhdGUmKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7
CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYs
IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOworICAgIGJvb2wg
Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBl
bmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29u
c3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRp
YyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChT
bmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KLQogcHJpdmF0ZToK
ICAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOwogICAgIFNuaXBwZXRPcGVyYW5kIG1f
cmlnaHRPcGVyYW5kOwpAQCAtNzQsNyArNzAsNiBAQCBwcml2YXRlOgogICAgIEZQUlJlZyBtX3Jp
Z2h0RlBSOwogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1fc2NyYXRjaEZQ
UjsKLSAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9CYWcuaCBiL1NvdXJjZS9XVEYvd3Rm
L0JhZy5oCmluZGV4IDUyMDQwYzUwMzM1NTQ1MjcwMTJhZGE1YjA0NThiMWU4Mjc3NmRhODIuLjAx
ZWNhNzQ3Mjc3YjgzMjc4NDU1YWZhYzE2ODY1Yzg3NDJiYTI0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0JhZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0JhZy5oCkBAIC0zNyw4ICszNyw4
IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgTm9kZShBcmdz
Li4uIGFyZ3MpCi0gICAgICAgICAgICA6IG1faXRlbShhcmdzLi4uKQorICAgICAgICBOb2RlKEFy
Z3MmJi4uLiBhcmdzKQorICAgICAgICAgICAgOiBtX2l0ZW0oc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC04MSw5ICs4MSw5IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAg
ICBUKiBhZGQoQXJncy4uLiBhcmdzKQorICAgIFQqIGFkZChBcmdzJiYuLi4gYXJncykKICAgICB7
Ci0gICAgICAgIE5vZGUqIG5ld05vZGUgPSBuZXcgTm9kZShhcmdzLi4uKTsKKyAgICAgICAgTm9k
ZSogbmV3Tm9kZSA9IG5ldyBOb2RlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAg
ICAgIG5ld05vZGUtPm1fbmV4dCA9IG1faGVhZDsKICAgICAgICAgbV9oZWFkID0gbmV3Tm9kZTsK
ICAgICAgICAgcmV0dXJuICZuZXdOb2RlLT5tX2l0ZW07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289763</attachid>
            <date>2016-09-24 14:58:33 -0700</date>
            <delta_ts>2016-09-26 13:41:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162485-20160924145538.patch</filename>
            <type>text/plain</type>
            <size>70921</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjIzZWZjNWY2MGY3YTUxN2IxZGUzZGI1Y2NhZjMxYTQ2N2UyZTI1Li5iZjVlZmQ3ZWVmNDI3YjEz
YjM3OTczNjJkNzk2YTVmN2Q1YTg4Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNi0wOS0yMyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gU2hyaW5rIHRoZSBNYXRoIGlubGluZSBjYWNoZXMgc29t
ZSBtb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI0ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFwcGxpZXMgc29tZSBsZXNzb25zIGxlYXJudCBmcm9tIG9wX25lZ2F0ZQorICAg
ICAgICB0byBzaHJpbmsgdGhlIGdlbmVyYXRlZCBhc20gb2YgdGhlIHByZXZpb3VzIDMgaW5saW5l
CisgICAgICAgIGNhY2hlcy4KKworICAgICAgICBJbiBvcmRlciBvZiBpbXBvcnRhbmNlOgorICAg
ICAgICAtV2UgZG8gbm90IG5lZWQgdG8gcGFzcyB0aGUgcG9pbnRlciB0byBBcml0aFByb2ZpbGUK
KyAgICAgICAgIG9uIHRoZSBzbG93IHBhdGguIFdlIGNhbiBqdXN0IGdldCB0aGUgcHJvZmlsZSBv
dXQKKyAgICAgICAgIG9mIHRoZSBnZW5lcmF0b3JzLgorICAgICAgICAgVGhpcyBzYXZlcyB1cyBm
cm9tIG1hdGVyaWFsaXppbmcgYSA2NGJpdHMgdmFsdWUKKyAgICAgICAgIGluIGEgcmVnaXN0ZXIg
YmVmb3JlIHRoZSBjYWxsIG9uIHRoZSBzbG93IHBhdGguCisgICAgICAgIC1XZSBjYW4gcmVtb3Zl
IGEgYnVuY2ggb2YgbW92IGJ5IHNldHRpbmcgdXAgdGhlIHJlZ2lzdGVycworICAgICAgICAgaW4g
dGhlIHdheSB0aGUgc2xvdyBwYXRoIG5lZWRzIHRoZW0uCisgICAgICAgICBUaGUgc2xvdyBwYXRo
IG1ha2VzIGEgZnVuY3Rpb24gY2FsbHMgd2l0aCB0aGUgaW5wdXQKKyAgICAgICAgIGFzIHNlY29u
ZCBhbmQgdGhpcmQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgaW4KKyAgICAgICAg
IHRoZSAicmV0dXJuIHJlZ2lzdGVyIi4gQnkgdXNpbmcgdGhvc2UgYXMgdGFyZ2V0IHdoZW4KKyAg
ICAgICAgIGxvYWRpbmcvc3RvcmluZyBmcm9tIHRoZSBzdGFjaywgd2UgcmVtb3ZlIDMgbW92IHBl
ciBzbG93IHBhdGguCisgICAgICAgIC1XaGVuIHBlcmZvcm1pbmcgaW50ZWdlciBhZGQsIHdlIGNh
biBzZXQgdGhlIHJlc3VsdCBkaXJlY3RseSBpbgorICAgICAgICAgdGhlIG91dHB1dCByZWdpc3Rl
ciBpZiB0aGF0IGRvZXMgbm90IHRyYXNoZXMgb25lIG9mIHRoZSBpbnB1dAorICAgICAgICAgcmVn
aXN0ZXIuIFRoaXMgcmVtb3ZlcyBvbmUgbW92IHBlciBpbnRlZ2VyIGFkZC4KKworICAgICAgICBU
aGUgaW5saW5lIGNhY2hlIGF2ZXJhZ2Ugc2l6ZXMgb24gU3Vuc3BpZGVyIGNoYW5nZSBhcyBmb2xs
b3c6CisgICAgICAgIC1BZGRzOiAxNDcuNTczMDk5LT4xMzEuNTU1NTU2ICh+MTAlKQorICAgICAg
ICAtTXVsczogMTg2Ljg4MjM1My0+MTcwLjk5MTU5NyAofjglKQorICAgICAgICAtU3ViczogMTM5
LjEyNzkwNy0+MTIxLjUyMzI1NiAofjEyJSkKKworICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJh
dG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0
aElDU2xvdyk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjpjYWxsT3BlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKwogMjAxNi0wOS0yMiAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgYW4g
aW5saW5lIGNhY2hlIHRvIGdlbmVyYXRlIG9wX25lZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAzMDExYmM1NzI2NTM4NGUx
YjgwODg5ZDhhNjFiOTJhMGUyZTA5ZmEzLi5lMDI1MTYzOGUzYTNkNTA3MjU1N2RmOGJjZTBmZDVj
ZDAwYmVhYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA5LTIzICBCZW5qYW1pbiBQb3Vs
YWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbSlNDXSBTaHJpbmsgdGhlIE1h
dGggaW5saW5lIGNhY2hlcyBzb21lIG1vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MjQ4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0JhZy5oOgorICAgICAgICBEb24ndCBjb3B5IHRoZSBh
cmd1bWVudHMgYmVmb3JlIGluaXRpYWxpemluZyB0aGUgbm9kZXMuCisKIDIwMTYtMDktMjIgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGZW5jZXMgb24geDg2IHNo
b3VsZCBiZSBhIGxvdCBjaGVhcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Bcml0aFByb2ZpbGUuY3BwCmluZGV4IDYxNTQzMDY2NjQ2YjZhMmZiNjBiNWEyZTBhZmE2ZDBi
ODhhZWIwZGQuLjFmYTdjNzk4OTRiZGU5NmJmNDMxZWNjNDhhOGU2NmJlMDMwNzYxODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIGJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0RG91YmxlKCkgY29u
c3QKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQ
cm9maWxlOjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KQordm9pZCBBcml0aFByb2Zp
bGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNo
b3VsZEVtaXRTZXREb3VibGUoKSkKICAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1
Mk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpO
b25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09m
Qml0cygpKSk7CkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0
U2V0Tm9uTnVtYmVyKCkgY29uc3QKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7
CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0Tm9uTnVtYmVyKENDYWxsSGVscGVycyYg
aml0KQordm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXROb25OdW1iZXIoQ0NhbGxIZWxwZXJzJiBq
aXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXROb25OdW1iZXIoKSkKICAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOb25OdW1i
ZXIpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAppbmRleCA3YTZl
ZTVkMmVhYWZkMjJlOTc0MTJhZGY0OWVhMDEyMTJiMTI2NTI0Li40MGZhZDFiZTNiYWE0MzQ4NmU5
OGEwM2NkMDRkNTU0ODc2ZWQ0ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oCkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxvdyk7IH0KICAg
ICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUyT3ZlcmZsb3cp
OyB9CiAKLSAgICB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgeyByZXR1cm4gJm1fYml0czsgfQorICAg
IGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBjb25zdCB7IHJldHVybiAmbV9iaXRzOyB9CiAK
ICAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC0yMTUsMTAg
KzIxNSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCiAgICAgYm9v
bCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7Ci0gICAgdm9pZCBlbWl0U2V0RG91YmxlKEND
YWxsSGVscGVycyYpOworICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25z
dDsKICAgICAKICAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1i
ZXIoQ0NhbGxIZWxwZXJzJik7CisgICAgdm9pZCBlbWl0U2V0Tm9uTnVtYmVyKENDYWxsSGVscGVy
cyYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWJlcigpIGNvbnN0OwogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggZjAwZDk4YzMwNjlmMTMwZWI5MDI4Y2I3M2VlYTAxYWQ4MDcyNTJk
NS4uN2M5YjVjMmJhNmQ2ZDQyN2QwNzk3YjJhZjQ4MThkYjkzZjg5OTE2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMwMDAsMjQgKzMwMDAs
MjQgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1YkluZm8oQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBtX3N0dWJJbmZvcy5hZGQoYWNjZXNzVHlwZSk7CiB9
CiAKLUpJVEFkZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElDKCkKK0pJVEFkZElDKiBDb2RlQmxv
Y2s6OmFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewotICAgIHJldHVy
biBtX2FkZElDcy5hZGQoKTsKKyAgICByZXR1cm4gbV9hZGRJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7
CiB9CiAKLUpJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKCkKK0pJVE11bElDKiBDb2Rl
QmxvY2s6OmFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewotICAgIHJl
dHVybiBtX211bElDcy5hZGQoKTsKKyAgICByZXR1cm4gbV9tdWxJQ3MuYWRkKGFyaXRoUHJvZmls
ZSk7CiB9CiAKLUpJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKCkKK0pJVFN1YklDKiBD
b2RlQmxvY2s6OmFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewotICAg
IHJldHVybiBtX3N1YklDcy5hZGQoKTsKKyAgICByZXR1cm4gbV9zdWJJQ3MuYWRkKGFyaXRoUHJv
ZmlsZSk7CiB9CiAKLUpJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKCkKK0pJVE5lZ0lD
KiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewot
ICAgIHJldHVybiBtX25lZ0lDcy5hZGQoKTsKKyAgICByZXR1cm4gbV9uZWdJQ3MuYWRkKGFyaXRo
UHJvZmlsZSk7CiB9CiAKIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmZpbmRTdHViSW5m
byhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggYTZmNTkwMzFiY2NjZGQ3MTJhNTk5NTViN2ZjMzc4Y2VhMTRiNzg5
Yi4uYWNhZjA5ZTJkODc1MThlZmVhMTk2NTYyZTVlNWVlYjNlNWU1YmM2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjQzLDEwICsyNDMsMTAgQEAg
cHVibGljOgogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFk
ZFN0dWJJbmZvKEFjY2Vzc1R5cGUpOwotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQygpOwotICAg
IEpJVE11bElDKiBhZGRKSVRNdWxJQygpOwotICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQygpOwot
ICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQygpOworICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhB
cml0aFByb2ZpbGUqKTsKKyAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKik7
CisgICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOworICAgIEpJVFN1YklD
KiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKICAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+
OjppdGVyYXRvciBzdHViSW5mb0JlZ2luKCkgeyByZXR1cm4gbV9zdHViSW5mb3MuYmVnaW4oKTsg
fQogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIHN0dWJJbmZvRW5kKCkgeyBy
ZXR1cm4gbV9zdHViSW5mb3MuZW5kKCk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggOGFhODJmYTNmYmM1YzljZmQwYTE3
NjY2MjMzZDI4Y2YwMmU2ZTA3Ny4uMmU2MjhmOWU1YWY0Y2E2NTUxMzkzNDA5NGE3ZjU1OTVjNDQz
NGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTM0MjQsNyArMzQyNCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZUFkZChOb2RlKiBub2RlKQogICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsK
ICNlbmRpZgogCi0gICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJ
VEFkZElDKCk7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2ppdC5ncmFwaCgp
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsK
KyAgICBKSVRBZGRJQyogYWRkSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUQWRkSUMoYXJp
dGhQcm9maWxlKTsKICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVl
QWRkT3B0aW1pemU7CiAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25W
YWx1ZUFkZDsKICAgICAKQEAgLTM1MDAsOCArMzUwMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJCiAjZW5kaWYKIAogICAgIEJveDxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+IGFkZElDR2VuZXJh
dGlvblN0YXRlID0gQm94PE1hdGhJQ0dlbmVyYXRpb25TdGF0ZT46OmNyZWF0ZSgpOwotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9j
a0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7Ci0gICAgbWF0aElDLT5tX2dl
bmVyYXRvciA9IEdlbmVyYXRvcihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCByZXN1bHRSZWdz
LCBsZWZ0UmVncywgcmlnaHRSZWdzLCBsZWZ0RlBSLCByaWdodEZQUiwgc2NyYXRjaEdQUiwgc2Ny
YXRjaEZQUiwgYXJpdGhQcm9maWxlKTsKKyAgICBtYXRoSUMtPm1fZ2VuZXJhdG9yID0gR2VuZXJh
dG9yKGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQsIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdo
dFJlZ3MsIGxlZnRGUFIsIHJpZ2h0RlBSLCBzY3JhdGNoR1BSLCBzY3JhdGNoRlBSKTsKIAogICAg
IGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyA9IGZhbHNlOwogICAgIGJvb2wgZ2VuZXJhdGVkSW5s
aW5lID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZShtX2ppdCwgKmFkZElDR2VuZXJhdGlvblN0YXRl
LCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKQEAgLTQwOTMsNyArNDA5Myw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlKiBub2RlKQogICAgICAgICBib29sIG5lZWRz
U2NyYXRjaEZQUlJlZyA9IHRydWU7CiAjZW5kaWYKIAotICAgICAgICBKSVRTdWJJQyogc3ViSUMg
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoKTsKKyAgICAgICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKKyAgICAgICAgSklUU3ViSUMqIHN1YklDID0g
bV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGF1
dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAg
ICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAg
ICAgCkBAIC00MzU1LDcgKzQzNTYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNdWwoTm9kZSogbm9kZSkKICAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVl
OwogICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CiAjZW5kaWYKLSAgICAg
ICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKCk7CisK
KyAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2ppdC5ncmFwaCgpLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKKyAgICAg
ICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVNdWxPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZU11bDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWY1Y2MzOTdhNGU2ZmQ2MDY0ZTI3YjM2NWE2ZTVjODRh
YTM1ZjE4ZS4uMDBlYzVmNTdjOTI3ZDMwOWFhNTMyZmY5ZDVhYmM0NDJjYTE4MDdjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTU1Myw3
ICsxNTUzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKCkKICAgICB7
Ci0gICAgICAgIEpJVEFkZElDKiBhZGRJQyA9IGNvZGVCbG9jaygpLT5hZGRKSVRBZGRJQygpOwor
ICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fZnRsU3RhdGUuZ3JhcGguYmFz
ZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0aFByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsK
KyAgICAgICAgSklUQWRkSUMqIGFkZElDID0gY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVBZGRPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZUFkZDsKICAgICAgICAgY29tcGlsZU1hdGhJQyhhZGRJQywgcmVwYXRjaGluZ0Z1
bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMTU5MywxMCArMTU5NCw5IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgICAgICAgICAgICAgIEJveDxNYXRoSUNHZW5lcmF0aW9uU3Rh
dGU+IG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSA9IEJveDxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+Ojpj
cmVhdGUoKTsKLSAgICAgICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN0
YXRlLT5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5h
cml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNv
ZGVJbmRleCk7CiAgICAgICAgICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRv
cihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkp
LAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpLCBwYXJhbXMuZnBTY3JhdGNoKDApLAotICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMuZnBTY3JhdGNoKDEpLCBwYXJhbXMuZ3BTY3JhdGNoKDApLCBJbnZh
bGlkRlBSUmVnLCBhcml0aFByb2ZpbGUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZnBT
Y3JhdGNoKDEpLCBwYXJhbXMuZ3BTY3JhdGNoKDApLCBJbnZhbGlkRlBSUmVnKTsKIAogICAgICAg
ICAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIGJvb2wgZ2VuZXJhdGVkSW5saW5lID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZShqaXQsICpt
YXRoSUNHZW5lcmF0aW9uU3RhdGUsIHNob3VsZEVtaXRQcm9maWxpbmcpOwpAQCAtMTcyNCw3ICsx
NzI0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgSklUU3ViSUMqIHN1YklDID0gY29kZUJsb2NrKCktPmFkZEpJVFN1YklD
KCk7CisgICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fZnRsU3RhdGUu
Z3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0
aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KTsKKyAgICAgICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IGNvZGVCbG9jaygpLT5hZGRK
SVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICAgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgICAgIGNvbXBpbGVN
YXRoSUMoc3ViSUMsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
QEAgLTE4MTgsNyArMTgxOSw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IFVudHlwZWRVc2U6IHsKLSAgICAgICAgICAgIEpJVE11bElDKiBtdWxJQyA9IGNvZGVCbG9jaygp
LT5hZGRKSVRNdWxJQygpOworICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICBKSVRNdWxJQyogbXVsSUMgPSBjb2Rl
QmxvY2soKS0+YWRkSklUTXVsSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgICAgIGF1dG8gcmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAgICAgICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CiAgICAgICAg
ICAgICBjb21waWxlTWF0aElDKG11bElDLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAxYjc1ODVjZGY5ZWUxNmRi
ODA3ODRlYTg1NmE0ZjRkMGUwMWEyMDI1Li5hMTRhODU2YTA3YmQyNWFhZDdjY2UwZDNiODQwZWUy
NzNlZWNkZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTc2Miw3ICs3NjIsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSkFycCwgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVSZWdzLCBBcml0aFBy
b2ZpbGUqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSkpBcnAsIEpTVmFsdWVSZWdzLCBKU1ZhbHVlUmVncywgSlNWYWx1ZVJlZ3Ms
IEFyaXRoUHJvZmlsZSopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKSiwgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVSZWdzLCBKU1ZhbHVl
UmVncyk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUpKQXJwTWljLCBKU1ZhbHVlUmVncywgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVSZWdz
LCBBcml0aFByb2ZpbGUqLCBUcnVzdGVkSW1tUHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSk1pYywgSlNWYWx1ZVJlZ3MsIEpT
VmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpNaWMsIEpTVmFsdWVSZWdzLCBKU1ZhbHVl
UmVncywgSlNWYWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkFwLCBpbnQsIEdQUlJlZywg
R1BSUmVnLCBBcnJheVByb2ZpbGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQWRkR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QWRkR2VuZXJhdG9yLmNwcAppbmRleCBiMTY2MjFhMTkyYzA4Y2M4NzBkMTUxOGZlNWQ4MjY5NDZj
NTM0ZmVkLi42MjdhZjI3ODdlMGI2OGEzZGQwZWIzOTIzNDFiZjUyZDRiNTQwMTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCwxNCAr
MzQsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRB
ZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRv
cjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9i
c2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwogICAgIE9ic2VydmVkVHlwZSByaHMgPSBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKTsKLSAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAg
bGhzID0gbV9hcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOwotICAgICAgICByaHMgPSBt
X2FyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgaWYgKGFyaXRoUHJvZmlsZSkg
eworICAgICAgICBsaHMgPSBhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOworICAgICAg
ICByaHMgPSBhcml0aFByb2ZpbGUtPnJoc09ic2VydmVkVHlwZSgpOwogICAgIH0KIAogICAgIGlm
IChsaHMuaXNPbmx5Tm9uTnVtYmVyKCkgJiYgcmhzLmlzT25seU5vbk51bWJlcigpKQpAQCAtNTQs
MjAgKzU0LDI2IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVy
YXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgICAgIGlmICghbV9yaWdo
dE9wZXJhbmQuaXNDb25zdEludDMyKCkpCiAgICAgICAgICAgICBzdGF0ZS5zbG93UGF0aEp1bXBz
LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RJbnQzMihtX3JpZ2h0KSk7CiAKKyAgICAgICAgR1BSUmVn
IHNjcmF0Y2ggPSBtX3NjcmF0Y2hHUFI7CiAgICAgICAgIGlmIChtX2xlZnRPcGVyYW5kLmlzQ29u
c3RJbnQzMigpIHx8IG1fcmlnaHRPcGVyYW5kLmlzQ29uc3RJbnQzMigpKSB7CiAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyB2YXIgPSBtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpID8gbV9yaWdo
dCA6IG1fbGVmdDsKICAgICAgICAgICAgIGludDMyX3QgY29uc3RWYWx1ZSA9IG1fbGVmdE9wZXJh
bmQuaXNDb25zdEludDMyKCkgPyBtX2xlZnRPcGVyYW5kLmFzQ29uc3RJbnQzMigpIDogbV9yaWdo
dE9wZXJhbmQuYXNDb25zdEludDMyKCk7Ci0gICAgICAgICAgICBzdGF0ZS5zbG93UGF0aEp1bXBz
LmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgdmFyLnBheWxv
YWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdFZhbHVlKSwgbV9zY3JhdGNoR1BSKSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQo
aml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3csIG1fcmlnaHQucGF5bG9hZEdQ
UigpLCBtX2xlZnQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpKTsKLSAgICAgICAgaml0LmJv
eEludDMyKG1fc2NyYXRjaEdQUiwgbV9yZXN1bHQpOworICAgICAgICAgICAgaWYgKHZhci5wYXls
b2FkR1BSKCkgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQorICAgICAgICAgICAgICAgIHNjcmF0
Y2ggPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBzdGF0ZS5zbG93UGF0aEp1
bXBzLmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgdmFyLnBh
eWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdFZhbHVlKSwgc2NyYXRjaCkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fbGVmdC5wYXlsb2FkR1BSKCkgIT0g
bV9yZXN1bHQucGF5bG9hZEdQUigpICYmIG1fcmlnaHQucGF5bG9hZEdQUigpICE9IG1fcmVzdWx0
LnBheWxvYWRHUFIoKSkKKyAgICAgICAgICAgICAgICBzY3JhdGNoID0gbV9yZXN1bHQucGF5bG9h
ZEdQUigpOworICAgICAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5j
aEFkZDMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3csIG1fcmlnaHQucGF5bG9hZEdQUigpLCBtX2xl
ZnQucGF5bG9hZEdQUigpLCBzY3JhdGNoKSk7CisgICAgICAgIH0KKyAgICAgICAgaml0LmJveElu
dDMyKHNjcmF0Y2gsIG1fcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJl
c3VsdDo6R2VuZXJhdGVkRmFzdFBhdGg7CiAgICAgfQogCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lu
bGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBM
aXN0LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVEFkZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
ZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNv
bnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcp
CiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NF
UlQobV9zY3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpAQCAtOTEsOSArOTcsMTIg
QEAgYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgLy8gVHJ5IHRvIGRvIGludFZhciAr
IGludENvbnN0YW50LgogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90SW50MzIgPSBqaXQu
YnJhbmNoSWZOb3RJbnQzMih2YXIpOwogCi0gICAgICAgIHNsb3dQYXRoSnVtcExpc3QuYXBwZW5k
KGppdC5icmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LCB2YXIucGF5bG9hZEdQUigp
LCBDQ2FsbEhlbHBlcnM6OkltbTMyKGNvbnN0T3ByLmFzQ29uc3RJbnQzMigpKSwgbV9zY3JhdGNo
R1BSKSk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gbV9zY3JhdGNoR1BSOworICAgICAgICBp
ZiAodmFyLnBheWxvYWRHUFIoKSAhPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpCisgICAgICAgICAg
ICBzY3JhdGNoID0gbV9yZXN1bHQucGF5bG9hZEdQUigpOworICAgICAgICBzbG93UGF0aEp1bXBM
aXN0LmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgdmFyLnBh
eWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdE9wci5hc0NvbnN0SW50MzIoKSks
IHNjcmF0Y2gpKTsKIAotICAgICAgICBqaXQuYm94SW50MzIobV9zY3JhdGNoR1BSLCBtX3Jlc3Vs
dCk7CisgICAgICAgIGppdC5ib3hJbnQzMihzY3JhdGNoLCBtX3Jlc3VsdCk7CiAgICAgICAgIGVu
ZEp1bXBMaXN0LmFwcGVuZChqaXQuanVtcCgpKTsKIAogICAgICAgICBpZiAoIWppdC5zdXBwb3J0
c0Zsb2F0aW5nUG9pbnQoKSkgewpAQCAtMTIyLDkgKzEzMSwxMiBAQCBib29sIEpJVEFkZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdAogICAgICAgICBsZWZ0Tm90SW50ID0gaml0LmJyYW5jaElmTm90SW50MzIobV9sZWZ0
KTsKICAgICAgICAgcmlnaHROb3RJbnQgPSBqaXQuYnJhbmNoSWZOb3RJbnQzMihtX3JpZ2h0KTsK
IAotICAgICAgICBzbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxI
ZWxwZXJzOjpPdmVyZmxvdywgbV9yaWdodC5wYXlsb2FkR1BSKCksIG1fbGVmdC5wYXlsb2FkR1BS
KCksIG1fc2NyYXRjaEdQUikpOworICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IG1fc2NyYXRjaEdQ
UjsKKyAgICAgICAgaWYgKG1fbGVmdC5wYXlsb2FkR1BSKCkgIT0gbV9yZXN1bHQucGF5bG9hZEdQ
UigpICYmIG1fcmlnaHQucGF5bG9hZEdQUigpICE9IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkKKyAg
ICAgICAgICAgIHNjcmF0Y2ggPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgICAgIHNsb3dQ
YXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93
LCBtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9sZWZ0LnBheWxvYWRHUFIoKSwgc2NyYXRjaCkpOwog
Ci0gICAgICAgIGppdC5ib3hJbnQzMihtX3NjcmF0Y2hHUFIsIG1fcmVzdWx0KTsKKyAgICAgICAg
aml0LmJveEludDMyKHNjcmF0Y2gsIG1fcmVzdWx0KTsKICAgICAgICAgZW5kSnVtcExpc3QuYXBw
ZW5kKGppdC5qdW1wKCkpOwogCiAKQEAgLTE2Miw5ICsxNzQsOSBAQCBib29sIEpJVEFkZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdAogCiAgICAgLy8gRG8gZG91YmxlVmFyICsgZG91YmxlVmFyLgogICAgIGppdC5hZGRE
b3VibGUobV9yaWdodEZQUiwgbV9sZWZ0RlBSKTsKLSAgICBpZiAobV9hcml0aFByb2ZpbGUgJiYg
c2hvdWxkRW1pdFByb2ZpbGluZykKLSAgICAgICAgbV9hcml0aFByb2ZpbGUtPmVtaXRTZXREb3Vi
bGUoaml0KTsKLSAgICAgICAgCisgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKQorICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRTZXREb3VibGUoaml0KTsKKwogICAg
IGppdC5ib3hEb3VibGUobV9sZWZ0RlBSLCBtX3Jlc3VsdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCmluZGV4IDQ3MzY0
M2YyNDRlZDBhYzRiYjk2MmNhOTViNGJhY2JiM2U4MjYyNzguLjZmOTI5OTA0NTU3ZTBmMTFiNWZk
YWU0Y2M5MWVhMzUzZjEzZmVlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQWRkR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
ZGRHZW5lcmF0b3IuaApAQCAtNDMsOCArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBKSVRBZGRHZW5l
cmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQsIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZCwKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1Zh
bHVlUmVncyByaWdodCwKLSAgICAgICAgRlBSUmVnIGxlZnRGUFIsIEZQUlJlZyByaWdodEZQUiwg
R1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBzY3JhdGNoRlBSLAotICAgICAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCisgICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJS
ZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUikKICAgICAg
ICAgOiBtX2xlZnRPcGVyYW5kKGxlZnRPcGVyYW5kKQogICAgICAgICAsIG1fcmlnaHRPcGVyYW5k
KHJpZ2h0T3BlcmFuZCkKICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCkBAIC01NCwxOCArNTMs
MTUgQEAgcHVibGljOgogICAgICAgICAsIG1fcmlnaHRGUFIocmlnaHRGUFIpCiAgICAgICAgICwg
bV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpCiAgICAgICAgICwgbV9zY3JhdGNoRlBSKHNjcmF0Y2hG
UFIpCi0gICAgICAgICwgbV9hcml0aFByb2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFu
ZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdl
bmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYpOwotICAg
IGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlz
dCwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29u
c3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQotICAgIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogcHJpdmF0
ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOwpAQCAtNzcsNyArNzMsNiBAQCBw
cml2YXRlOgogICAgIEZQUlJlZyBtX3JpZ2h0RlBSOwogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7
CiAgICAgRlBSUmVnIG1fc2NyYXRjaEZQUjsKLSAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9m
aWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljLmNwcAppbmRleCA3ODBiY2E5MzhmZDEwZWZiMWYyNzVmNDU4M2RiODQx
ZWViNGMzZmY4Li41OGZkYjEwZDFkOWQyODU4M2E1MTk4ZDA2YTE5OGIxMDg2MzZkM2Y5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ2OSw3ICs0
NjksOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9
IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQygpOworICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7
CisgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRo
UHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIG5lZ2F0ZUlDKTsKICAgICBlbWl0TWF0aElDRmFzdChuZWdhdGVJQywgY3VycmVudEluc3Ry
dWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0
ZSk7CiB9CkBAIC02NjQsNyArNjY1LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3BlcmFuZFR5
cGVzIGdldE9wZXJhbmRUeXBlcyhJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklU
OjplbWl0X29wX2FkZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJ
VEFkZElDKiBhZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQygpOworICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJl
bnRJbnN0cnVjdGlvbik7CisgICAgSklUQWRkSUMqIGFkZElDID0gbV9jb2RlQmxvY2stPmFkZEpJ
VEFkZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGFkZElDKTsKICAgICBlbWl0TWF0aElDRmFzdChhZGRJQywgY3VycmVu
dEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZUFk
ZCk7CiB9CkBAIC02OTksOCArNzAxLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVu
YXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICBh
dXRvIGlubGluZVN0YXJ0ID0gbGFiZWwoKTsKICNlbmRpZgogCi0gICAgQXJpdGhQcm9maWxlJiBh
cml0aFByb2ZpbGUgPSAqYml0d2lzZV9jYXN0PEFyaXRoUHJvZmlsZSo+KCZjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBtYXRoSUMtPm1fZ2VuZXJhdG9yID0gR2VuZXJhdG9y
KHJlc3VsdFJlZ3MsIHNyY1JlZ3MsIHNjcmF0Y2hHUFIsIGFyaXRoUHJvZmlsZSk7CisgICAgbWF0
aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRvcihyZXN1bHRSZWdzLCBzcmNSZWdzLCBzY3JhdGNo
R1BSKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCwgc3JjUmVncyk7CiAK
QEAgLTcwOCw4ICs3MDksOSBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRo
SUM8R2VuZXJhdG9yPiogbWF0aElDLCBJbnN0cnVjdGlvbiogY3VycmVudAogCiAgICAgYm9vbCBn
ZW5lcmF0ZWRJbmxpbmVDb2RlID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElD
R2VuZXJhdGlvblN0YXRlKTsKICAgICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAg
ICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
cHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgc3JjUmVncywgJmFyaXRoUHJvZmlsZSk7Cisg
ICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIHNy
Y1JlZ3MsIGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24obm9uUHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgc3JjUmVncyk7CiAgICAgfSBl
bHNlCkBAIC03MzUsOSArNzM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFy
eU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIEluc3RydWN0aW9uKiBjdXJyZW4KIAogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGNv
cGllZEluc3RydWN0aW9uKGN1cnJlbnRJbnN0cnVjdGlvbikpOwotICAgIEpTVmFsdWVSZWdzIGxl
ZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwotICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9
IEpTVmFsdWVSZWdzKHJlZ1QxKTsKLSAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1
ZVJlZ3MocmVnVDIpOworICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDEpOworICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QyKTsKKyAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gcmVnVDM7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwog
I2Vsc2UKQEAgLTc0OSwxMCArNzUxLDYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIEluc3RydWN0aW9uKiBjdXJyZW4KICAgICBG
UFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbnVsbHB0cjsKLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQot
ICAgICAgICBhcml0aFByb2ZpbGUgPSBtX2NvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yUEMoY3Vy
cmVudEluc3RydWN0aW9uKTsKLQogICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVz
LmZpcnN0KCkpOwogICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQo
KSk7CiAKQEAgLTc2Myw3ICs3NjEsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmlu
YXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgSW5zdHJ1Y3Rpb24qIGN1cnJlbgogCiAgICAg
UkVMRUFTRV9BU1NFUlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlz
Q29uc3QoKSk7CiAKLSAgICBtYXRoSUMtPm1fZ2VuZXJhdG9yID0gR2VuZXJhdG9yKGxlZnRPcGVy
YW5kLCByaWdodE9wZXJhbmQsIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MsIGZwUmVn
VDAsIGZwUmVnVDEsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hGUFIsIGFyaXRoUHJvZmlsZSk7CisgICAg
bWF0aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRvcihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
LCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzY3Jh
dGNoR1BSLCBzY3JhdGNoRlBSKTsKICAgICAKICAgICBBU1NFUlQoIShHZW5lcmF0b3I6OmlzTGVm
dE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSAmJiBHZW5lcmF0b3I6OmlzUmlnaHRP
cGVyYW5kVmFsaWRDb25zdGFudChyaWdodE9wZXJhbmQpKSk7CiAgICAgCkBAIC03ODQsNyArNzgy
LDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIEluc3RydWN0aW9uKiBjdXJyZW4KICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAgIGVsc2UgaWYgKHJpZ2h0T3BlcmFuZC5p
c0NvbnN0KCkpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmlnaHRS
ZWdzKTsKLSAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSkKKyAgICAgICAgQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywgYXJp
dGhQcm9maWxlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub25Q
cm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKQEAgLTgy
Miw4ICs4MjEsOCBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2Vu
ZXJhdG9yPiogbWF0aElDLCBJbnN0cnVjdGlvbiogY3VycmVudAogICAgIGF1dG8gc2xvd1BhdGhT
dGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiaXR3aXNlX2Nhc3Q8QXJp
dGhQcm9maWxlKj4oJmN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBpZiAo
YXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBpZiAobWF0
aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAgICAgICAgICAgIG1h
dGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRUpNaWM+KHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uKSwg
cmVzdWx0UmVncywgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgZWxz
ZQpAQCAtODU5LDkgKzg1OCw5IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBJbnN0cnVjdGlvbiogY3VycmVuCiAKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3Bp
ZWRJbnN0cnVjdGlvbihjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKLSAgICBKU1ZhbHVlUmVncyBsZWZ0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKLSAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMSk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QyKTsKKyAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1Qx
KTsKKyAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMik7CisgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICNlbHNlCiAgICAg
T3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGN1cnJlbnRJbnN0cnVjdGlvbik7
CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwpA
QCAtODg4LDEyICs4ODcsMTIgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1h
dGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIEluc3RydWN0aW9uKiBjdXJyZW4KICAgICBhdXRvIHNs
b3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0gKm1fY29kZUJs
b2NrLT5hcml0aFByb2ZpbGVGb3JQQyhjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBpZiAoYXJp
dGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBpZiAobWF0aElD
R2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKLSAgICAgICAgICAgIG1hdGhJ
Q0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKGJpdHdpc2VfY2Fz
dDxKX0pJVE9wZXJhdGlvbl9FSkpBcnBNaWM+KHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uKSwgcmVz
dWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywgJmFyaXRoUHJvZmlsZSwgVHJ1c3RlZEltbVB0
cihtYXRoSUMpKTsKKyAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJhdGlvbl9FSkpNaWM+KHBy
b2ZpbGVkUmVwYXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywg
VHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbWF0aElD
R2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocHJvZmlsZWRGdW5j
dGlvbiwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywgJmFyaXRoUHJvZmlsZSk7Cisg
ICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbihwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBh
cml0aFByb2ZpbGUpOwogICAgIH0gZWxzZQogICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUu
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihiaXR3aXNlX2Nhc3Q8Sl9KSVRPcGVyYXRpb25f
RUpKTWljPihyZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdz
LCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogCkBAIC05ODksNyArOTg4LDggQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT4KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFk
ZEpJVE11bElDKCk7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2NvZGVCbG9j
ay0+YXJpdGhQcm9maWxlRm9yUEMoY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBKSVRNdWxJQyog
bXVsSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUTXVsSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2lu
c3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgbXVsSUMpOwogICAgIGVt
aXRNYXRoSUNGYXN0KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVs
UHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsKTsKIH0KQEAgLTEwMDQsNyArMTAwNCw4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+CiAKIHZvaWQgSklUOjplbWl0X29wX3N1YihJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFN1YklDKiBzdWJJQyA9IG1fY29kZUJs
b2NrLT5hZGRKSVRTdWJJQygpOworICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9j
b2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgSklU
U3ViSUMqIHN1YklDID0gbV9jb2RlQmxvY2stPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7CiAg
ICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIHN1YklDKTsK
ICAgICBlbWl0TWF0aElDRmFzdChzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDQ1MTBhOWI2YmZhN2U1YmU5MDk0YWQyYzFjMmI1NzFl
YzU0MTI4NzYuLmUzOWViNTQyZjFhNjZmMDVjMzViNzYyZjdkNzYyNzQyYzY4NTQxMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC00NDgsMTQgKzQ0OCw2IEBAIEFM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VKSkFycCBvcGVyCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKSkFycE1pYyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJn
MSwgSlNWYWx1ZVJlZ3MgYXJnMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIFRydXN0ZWRJ
bW1QdHIgbWF0aElDKQotewotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBUcnVzdGVkSW1tUHRyKGFyaXRoUHJvZmlsZSksIG1hdGhJQyk7Ci0gICAgQ2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwotICAgIHNldHVwUmVz
dWx0cyhyZXN1bHQpOwotICAgIHJldHVybiBjYWxsOwotfQotCiBBTFdBWVNfSU5MSU5FIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSk1pYyBv
cGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnLCBUcnVzdGVkSW1t
UHRyIG1hdGhJQykKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnLCBtYXRo
SUMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5kZXggMWNhNGIxZjRhNDll
MDliYWU5ZmM5YjFmZTFiYmIzMzg4NzJlYWQzNS4uMzgwNmYzYTRmMzMyZWQ0ZmQxNGIzMDVmY2Vm
YTYwZDJjZjU4NzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRN
YXRoSUMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCkBAIC01
Myw5ICs1MywxNCBAQCBzdHJ1Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRlIHsKIAogI2RlZmluZSBF
TkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBl
LCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlKik+Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYpPgog
Y2xhc3MgSklUTWF0aElDIHsKIHB1YmxpYzoKKyAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCisgICAgICAgIDogbV9hcml0aFByb2ZpbGUoYXJpdGhQcm9maWxlKQorICAg
IHsKKyAgICB9CisKICAgICBDb2RlTG9jYXRpb25MYWJlbCBkb25lTG9jYXRpb24oKSB7IHJldHVy
biBtX2lubGluZVN0YXJ0LmxhYmVsQXRPZmZzZXQobV9pbmxpbmVTaXplKTsgfQogICAgIENvZGVM
b2NhdGlvbkxhYmVsIHNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0dXJuIG1faW5saW5lU3Rh
cnQubGFiZWxBdE9mZnNldChtX2RlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aFN0YXJ0KTsgfQogICAg
IENvZGVMb2NhdGlvbkNhbGwgc2xvd1BhdGhDYWxsTG9jYXRpb24oKSB7IHJldHVybiBtX2lubGlu
ZVN0YXJ0LmNhbGxBdE9mZnNldChtX2RlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aENhbGxMb2NhdGlv
bik7IH0KQEAgLTcyLDggKzc3LDggQEAgcHVibGljOgogICAgICAgICBzdGF0ZS5mYXN0UGF0aFN0
YXJ0ID0gaml0LmxhYmVsKCk7CiAgICAgICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3Nl
bWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKIAotICAgICAgICBpZiAoQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBtX2dlbmVyYXRvci5hcml0aFByb2ZpbGUoKSkgewotICAgICAgICAgICAg
aWYgKCFpc1Byb2ZpbGVFbXB0eShhcml0aFByb2ZpbGUpKSB7CisgICAgICAgIGlmIChtX2FyaXRo
UHJvZmlsZSkgeworICAgICAgICAgICAgaWYgKGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmls
ZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCBsb29rcyBsaWtlIHRoZSBNYXRoSUMgaGFzIHll
dCB0byBleGVjdXRlLiBXZSBkb24ndCB3YW50IHRvIGVtaXQgY29kZSBpbiB0aGlzCiAgICAgICAg
ICAgICAgICAgLy8gY2FzZSBmb3IgYSBjb3VwbGUgcmVhc29ucy4gRmlyc3QsIHRoZSBvcGVyYXRp
b24gbWF5IG5ldmVyIGV4ZWN1dGUsIHNvIGlmIHdlIGRvbid0IGVtaXQKICAgICAgICAgICAgICAg
ICAvLyBjb2RlLCBpdCdzIGEgd2luLiBTZWNvbmQsIGlmIHRoZSBvcGVyYXRpb24gZG9lcyBleGVj
dXRlLCB3ZSBjYW4gZW1pdCBiZXR0ZXIgY29kZQpAQCAtODksNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
cmVzdWx0ID0gbV9nZW5lcmF0b3IuZ2VuZXJhdGVJbmxpbmUoaml0LCBzdGF0ZSk7CisgICAgICAg
IEpJVE1hdGhJQ0lubGluZVJlc3VsdCByZXN1bHQgPSBtX2dlbmVyYXRvci5nZW5lcmF0ZUlubGlu
ZShqaXQsIHN0YXRlLCBtX2FyaXRoUHJvZmlsZSk7CiAKICAgICAgICAgc3dpdGNoIChyZXN1bHQp
IHsKICAgICAgICAgY2FzZSBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlZEZhc3RQYXRo
OiB7CkBAIC0xMDQsNyArMTA5LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
SklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OiB7CiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW5kSnVtcExpc3Q7Ci0gICAgICAgICAgICBib29s
IHJlc3VsdCA9IG1fZ2VuZXJhdG9yLmdlbmVyYXRlRmFzdFBhdGgoaml0LCBlbmRKdW1wTGlzdCwg
c3RhdGUuc2xvd1BhdGhKdW1wcywgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IG1fZ2VuZXJhdG9yLmdlbmVyYXRlRmFzdFBhdGgoaml0LCBlbmRKdW1wTGlz
dCwgc3RhdGUuc2xvd1BhdGhKdW1wcywgbV9hcml0aFByb2ZpbGUsIHNob3VsZEVtaXRQcm9maWxp
bmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgIHN0YXRlLmZh
c3RQYXRoRW5kID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgc3RhdGUuc2hvdWxkU2xv
d1BhdGhSZXBhdGNoID0gZmFsc2U7CkBAIC0xOTAsNyArMTk1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVuZEp1bXBMaXN0OyAKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aEp1bXBMaXN0OyAKIAotICAgICAgICAg
ICAgYm9vbCBlbWl0dGVkRmFzdFBhdGggPSBtX2dlbmVyYXRvci5nZW5lcmF0ZUZhc3RQYXRoKGpp
dCwgZW5kSnVtcExpc3QsIHNsb3dQYXRoSnVtcExpc3QsIHNob3VsZEVtaXRQcm9maWxpbmcpOwor
ICAgICAgICAgICAgYm9vbCBlbWl0dGVkRmFzdFBhdGggPSBtX2dlbmVyYXRvci5nZW5lcmF0ZUZh
c3RQYXRoKGppdCwgZW5kSnVtcExpc3QsIHNsb3dQYXRoSnVtcExpc3QsIG1fYXJpdGhQcm9maWxl
LCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKICAgICAgICAgICAgIGlmICghZW1pdHRlZEZhc3RQYXRo
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGVuZEp1bXBMaXN0LmFwcGVu
ZChqaXQuanVtcCgpKTsKQEAgLTIyNCw2ICsyMjksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
dGFydCwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKHN0YXRlLnNsb3dQYXRoU3RhcnQpKTsKICAgICB9
CiAKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJp
dGhQcm9maWxlOyB9CisKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICBzaXplX3QgbV9n
ZW5lcmF0ZWRDb2RlU2l6ZSB7IDAgfTsKICAgICBzaXplX3QgY29kZVNpemUoKSBjb25zdApAQCAt
MjM1LDYgKzI0Miw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIEFyaXRoUHJvZmls
ZSogbV9hcml0aFByb2ZpbGU7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKICAg
ICBDb2RlTG9jYXRpb25MYWJlbCBtX2lubGluZVN0YXJ0OwogICAgIGludDMyX3QgbV9pbmxpbmVT
aXplOwpAQCAtMjQ0LDI0ICsyNTIsMzYgQEAgcHVibGljOgogICAgIEdlbmVyYXRvclR5cGUgbV9n
ZW5lcmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBjYW5HZW5lcmF0ZVdpdGhCaW5hcnlQcm9maWxl
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQoraW5saW5lIGJvb2wgaXNCaW5hcnlQcm9maWxl
RW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7Ci0gICAgcmV0dXJuICFhcml0aFBy
b2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiAhYXJpdGhQcm9maWxlLT5yaHNP
YnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5saHNPYnNl
cnZlZFR5cGUoKS5pc0VtcHR5KCkgfHwgYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlz
RW1wdHkoKTsKIH0KIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBlPgotY2xhc3MgSklU
QmluYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBjYW5HZW5lcmF0
ZVdpdGhCaW5hcnlQcm9maWxlPiB7IH07CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMg
SklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJvZmlsZUVtcHR5PiB7CitwdWJsaWM6
CisgICAgSklUQmluYXJ5TWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAg
ICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc0JpbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQ
cm9maWxlKQorICAgIHsKKyAgICB9Cit9OwogCiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJQzxKSVRB
ZGRHZW5lcmF0b3I+IEpJVEFkZElDOwogdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUTXVsR2Vu
ZXJhdG9yPiBKSVRNdWxJQzsKIHR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRv
cj4gSklUU3ViSUM7CiAKIAotaW5saW5lIGJvb2wgY2FuR2VuZXJhdGVXaXRoVW5hcnlQcm9maWxl
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQoraW5saW5lIGJvb2wgaXNVbmFyeVByb2ZpbGVF
bXB0eShBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsKLSAgICByZXR1cm4gIWFyaXRoUHJv
ZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOworICAgIHJldHVybiBhcml0aFByb2Zp
bGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwogfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdl
bmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2Vu
ZXJhdG9yVHlwZSwgY2FuR2VuZXJhdGVXaXRoVW5hcnlQcm9maWxlPiB7IH07CitjbGFzcyBKSVRV
bmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2Zp
bGVFbXB0eT4geworcHVibGljOgorICAgIEpJVFVuYXJ5TWF0aElDKEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQorICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJv
ZmlsZUVtcHR5Pihhcml0aFByb2ZpbGUpCisgICAgeworICAgIH0KK307CiAKIHR5cGVkZWYgSklU
VW5hcnlNYXRoSUM8SklUTmVnR2VuZXJhdG9yPiBKSVROZWdJQzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCmluZGV4IDYzYWJmMzE5YzJiNjU1YjM3
YzI3NzVkMmVjOWQ2ZDY4ODAxN2MxMDguLjkzYzY5ZTI5N2JhYWI2N2ZjZTM2NDIyNTczOGEzNmVh
ZTM2ZjM0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRv
ci5jcHAKQEAgLTMzLDE1ICszMywxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElD
SW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJz
JiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNl
cnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CiAgICAgT2JzZXJ2ZWRU
eXBlIHJocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwotCi0gICAgaWYgKG1fYXJpdGhQ
cm9maWxlKSB7Ci0gICAgICAgIGxocyA9IG1fYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUo
KTsKLSAgICAgICAgcmhzID0gbV9hcml0aFByb2ZpbGUtPnJoc09ic2VydmVkVHlwZSgpOworICAg
IGlmIChhcml0aFByb2ZpbGUpIHsKKyAgICAgICAgbGhzID0gYXJpdGhQcm9maWxlLT5saHNPYnNl
cnZlZFR5cGUoKTsKKyAgICAgICAgcmhzID0gYXJpdGhQcm9maWxlLT5yaHNPYnNlcnZlZFR5cGUo
KTsKICAgICB9CiAKICAgICBpZiAobGhzLmlzT25seU5vbk51bWJlcigpICYmIHJocy5pc09ubHlO
b25OdW1iZXIoKSkKQEAgLTg4LDcgKzg3LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11
bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAg
ICByZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQog
Ci1ib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGpp
dCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wg
SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
c2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wg
c2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFs
aWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIo
KSk7CkBAIC0xOTEsNyArMTkwLDcgQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAvLyBE
byBkb3VibGVWYXIgKiBkb3VibGVWYXIuCiAgICAgaml0Lm11bERvdWJsZShtX3JpZ2h0RlBSLCBt
X2xlZnRGUFIpOwogCi0gICAgaWYgKCFtX2FyaXRoUHJvZmlsZSB8fCAhc2hvdWxkRW1pdFByb2Zp
bGluZykKKyAgICBpZiAoIWFyaXRoUHJvZmlsZSB8fCAhc2hvdWxkRW1pdFByb2ZpbGluZykKICAg
ICAgICAgaml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVzdWx0KTsKICAgICBlbHNlIHsKICAg
ICAgICAgLy8gVGhlIEludDUyIG92ZXJmbG93IGNoZWNrIGJlbG93IGludGVudGlvbmFsbHkgb21p
dHMgMWxsIDw8IDUxIGFzIGEgdmFsaWQgbmVnYXRpdmUgSW50NTIgdmFsdWUuCkBAIC0yMDQsMTgg
KzIwMywxOCBAQCBib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhl
bHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogCiAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcCBub3ROZWdhdGl2ZVplcm8gPSBqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgbV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChu
ZWdhdGl2ZVplcm9CaXRzKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNv
bHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9E
b3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJl
c3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1w
KCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5v
cjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0Rv
dWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRy
ZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBqaXQu
bW92ZShtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC51
cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAg
ICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpJbW0zMigweDdmZiksIG1fc2NyYXRjaEdQUik7CiAg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub0ludDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpMZXNzVGhhbk9yRXF1YWwsIG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMHg0MzEpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAg
ICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50
NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+
YWRkcmVzc09mQml0cygpKSk7CiAgICAgICAgIG5vSW50NTJPdmVyZmxvdy5saW5rKCZqaXQpOwog
CiAgICAgICAgIGRvbmUubGluaygmaml0KTsKQEAgLTIyNiwxOCArMjI1LDE4IEBAIGJvb2wgSklU
TXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBlbmQoaml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpKTsKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFwcGVu
ZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQudGFnR1BSKCks
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5lZ2F0aXZlWmVyb0JpdHMgPj4gMzIpKSk7CiAK
LSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxl
OjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFBy
b2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVn
YXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOb25O
ZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxl
LT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBqaXQubW92ZShtX3Jlc3VsdC50YWdHUFIo
KSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJ
bW0zMig1MiAtIDMyKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVs
cGVyczo6SW1tMzIoMHg3ZmYpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm9JbnQ1Mk92ZXJmbG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1Ro
YW5PckVxdWFsLCBtX3NjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMx
KSk7CiAgICAgICAgIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyks
IENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0
cygpKSk7CiAKICAgICAgICAgZW5kSnVtcExpc3QuYXBwZW5kKG5vSW50NTJPdmVyZmxvdyk7CiAg
ICAgICAgIGlmIChtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQudGFnR1BSKCkgfHwgbV9zY3JhdGNo
R1BSID09IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE11bEdlbmVyYXRvci5oCmluZGV4IDM3NTk5MDhkNWU0YzFhNzczMGIwYmY2ZDFjYzNiOTE2
MWVhZmQ4NTEuLjhiYjY2MmVhOGM1YTQ3N2E3MjYyMzU5NDEzNmE4M2VhYjFhNmI0ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaApAQCAtNDMsOCArNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBKSVRNdWxHZW5lcmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9w
ZXJhbmQsIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCwKICAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1ZhbHVlUmVncyByaWdodCwKLSAgICAgICAgRlBS
UmVnIGxlZnRGUFIsIEZQUlJlZyByaWdodEZQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBz
Y3JhdGNoRlBSLAotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIp
CisgICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNo
R1BSLCBGUFJSZWcgc2NyYXRjaEZQUikKICAgICAgICAgOiBtX2xlZnRPcGVyYW5kKGxlZnRPcGVy
YW5kKQogICAgICAgICAsIG1fcmlnaHRPcGVyYW5kKHJpZ2h0T3BlcmFuZCkKICAgICAgICAgLCBt
X3Jlc3VsdChyZXN1bHQpCkBAIC01NCwxOSArNTMsMTYgQEAgcHVibGljOgogICAgICAgICAsIG1f
cmlnaHRGUFIocmlnaHRGUFIpCiAgICAgICAgICwgbV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpCiAg
ICAgICAgICwgbV9zY3JhdGNoRlBSKHNjcmF0Y2hGUFIpCi0gICAgICAgICwgbV9hcml0aFByb2Zp
bGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCkgfHwgIW1fcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdElu
dDMyKCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmKTsKLSAgICBib29sIGdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVt
cExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dKdW1wTGlzdCwgYm9vbCBzaG91bGRF
bWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUo
Q0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQXJpdGhQcm9maWxl
Kik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93SnVt
cExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAK
ICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFu
ZCBsZWZ0T3BlcmFuZCkgeyByZXR1cm4gbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIo
KTsgfQogICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0
T3BlcmFuZCByaWdodE9wZXJhbmQpIHsgcmV0dXJuIHJpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29u
c3RJbnQzMigpOyB9CiAgICAgCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUoKSBjb25z
dCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQotCiBwcml2YXRlOgogICAgIFNuaXBwZXRPcGVy
YW5kIG1fbGVmdE9wZXJhbmQ7CiAgICAgU25pcHBldE9wZXJhbmQgbV9yaWdodE9wZXJhbmQ7CkBA
IC03Nyw3ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgRlBSUmVnIG1fcmlnaHRGUFI7CiAgICAgR1BS
UmVnIG1fc2NyYXRjaEdQUjsKICAgICBGUFJSZWcgbV9zY3JhdGNoRlBSOwotICAgIEFyaXRoUHJv
ZmlsZSogbV9hcml0aFByb2ZpbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA0ZGUxZjZjM2Jk
Y2Y1MTBhN2JiNTdkMjkxMDZmNDE3YjZhNWJmZmNiLi5kZjkxYzQ4ODg2OTE5ZTcwMzU2MmY5YzY0
M2Q4NzE2MjhiYWY3NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE5lZ0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdH
ZW5lcmF0b3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRN
YXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhl
bHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKK0pJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0
LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKQEAgLTQyLDcg
KzQyLDEwIEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQ
UiAhPSBtX3Jlc3VsdC50YWdHUFIoKSk7CiAjZW5kaWYKIAotICAgIE9ic2VydmVkVHlwZSBvYnNl
cnZlZFR5cGVzID0gbV9hcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOworICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCisgICAgT2JzZXJ2ZWRUeXBlIG9ic2VydmVk
VHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKKyAgICBpZiAoYXJpdGhQcm9maWxl
KQorICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUo
KTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFvYnNlcnZlZFR5cGVzLmlzRW1wdHkoKSwgIldl
IHNob3VsZCBub3QgYXR0ZW1wdCB0byBnZW5lcmF0ZSBhbnl0aGluZyBpZiB3ZSBkbyBub3QgaGF2
ZSBhIHByb2ZpbGUuIik7CiAKICAgICBpZiAob2JzZXJ2ZWRUeXBlcy5pc09ubHlOb25OdW1iZXIo
KSkKQEAgLTc5LDcgKzgyLDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVyYXRv
cjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICByZXR1cm4g
SklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJ
VE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNs
b3dQYXRoSnVtcExpc3QsIGJvb2wpCitib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExp
c3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRo
UHJvZmlsZSosIGJvb2wpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXls
b2FkR1BSKCkpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQ
UigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCmluZGV4
IDMwZGUyYzVjMTI2ZDIwNDE2ZDNmN2JmMDNmNTc5MzhmODRiNTYzZTEuLjNlOTI1ZTlkMjNjYmRl
OWE5MzgyYjgwOTUwNTkyNTZlMDQ0ZDkyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVROZWdHZW5lcmF0b3IuaApAQCAtMzgsMjAgKzM4LDE2IEBAIGNsYXNzIEpJVE5lZ0dlbmVy
YXRvciB7CiBwdWJsaWM6CiAgICAgSklUTmVnR2VuZXJhdG9yKCkgPSBkZWZhdWx0OwogCi0gICAg
SklUTmVnR2VuZXJhdG9yKEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3Mgc3JjLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi0gICAgICAgIDogbV9h
cml0aFByb2ZpbGUoJmFyaXRoUHJvZmlsZSkKLSAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCisg
ICAgSklUTmVnR2VuZXJhdG9yKEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3Mgc3JjLCBH
UFJSZWcgc2NyYXRjaEdQUikKKyAgICAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCiAgICAgICAgICwg
bV9zcmMoc3JjKQogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQog
Ci0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYs
IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYpOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5n
KTsKLQotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9h
cml0aFByb2ZpbGU7IH0KKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUo
Q0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQXJpdGhQcm9maWxl
Kik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0
aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcp
OwogCiBwcml2YXRlOgotICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFByb2ZpbGUgeyBudWxscHRy
IH07CiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7CiAgICAgSlNWYWx1ZVJlZ3MgbV9zcmM7CiAg
ICAgR1BSUmVnIG1fc2NyYXRjaEdQUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCmluZGV4IGQ4YmRjMTA4MTYzYTViZjk0M2MwNWQwMzhiOGQxMDMxYTk1MmI5
YzkuLmE2Y2YzY2FkYmNhZmIwN2I2NmQyYzRmYmU2NThkZGY3YmNlZTlhM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjI4Miw3ICsyMjgyLDcg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZEFkZChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
QWRkKGV4ZWMsIG9wMSwgb3AyKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIHByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZEFkZChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwpA
QCAtMjI5MCwxMSArMjI5MCw5IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUKICAgICBKU1ZhbHVl
IG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAotICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwot
ICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7Ci0KKyAgICBhcml0
aFByb2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0FkZChleGVjLCBvcDEsIG9wMik7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0
KHJlc3VsdCk7CisgICAgYXJpdGhQcm9maWxlLm9ic2VydmVSZXN1bHQocmVzdWx0KTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIzMDYsMTAgKzIzMDQsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGUKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiB7Ci0gICAgcmV0dXJuIHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIsIGFyaXRoUHJvZmlsZSk7CisgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7Cisg
ICAgcmV0dXJuIHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0
aFByb2ZpbGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlLCBKSVRBZGRJQyogYWRkSUMpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKiBh
ZGRJQykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTIzMTcsNiArMjMxNiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KTsKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAorICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAg
IEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJI
UyhvcDEsIG9wMik7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1
ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTIzMzIsOSArMjMzMiwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVj
U3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09w
dGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEpJVEFkZElD
KikKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxl
ZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyogYWRkSUMpCiB7Ci0gICAgcmV0dXJu
IHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGFyaXRoUHJvZmlsZSk7
CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CisKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElD
LT5hcml0aFByb2ZpbGUoKTsKKyAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKKyAgICByZXR1cm4g
cHJvZmlsZWRBZGQoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRPcHRp
bWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKiBhZGRJQykKQEAgLTIzNDYsNyArMjM1MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKCiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMik7CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlv
blZhbHVlQWRkTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBhZGRJQy0+bV9nZW5lcmF0b3IuYXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFBy
b2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGFkZElDLT5nZW5lcmF0ZU91
dE9mTGluZSgqdm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBA
IC0yMzgzLDE0ICsyMzg4LDE0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHVucHJvZmlsZWRNdWwoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEVuY29kCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihhICogYikpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE11bChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVz
ID0gdHJ1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVs
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBz
aG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQogewogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKTsKIAogICAgIGlmIChzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMpCi0gICAgICAgIGFy
aXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CisgICAgICAgIGFyaXRoUHJv
ZmlsZS5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKIAogICAgIGRvdWJsZSBhID0gb3AxLnRv
TnVtYmVyKGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0y
NDAwLDcgKzI0MDUsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9m
aWxlZE11bChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihhICogYik7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7
CisgICAgYXJpdGhQcm9maWxlLm9ic2VydmVSZXN1bHQocmVzdWx0KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTI0MjYsNyArMjQzMSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlTXVsTm9P
cHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+bV9n
ZW5lcmF0b3IuYXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2Vy
dmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMikpOwogICAgIG11bElDLT5nZW5lcmF0ZU91dE9mTGluZSgqdm0sIGV4ZWMtPmNv
ZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yNDQyLDE0ICsyNDQ3LDE3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gcHJv
ZmlsZWRNdWwoKnZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUp
OworICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOworICAgIHJldHVybiBwcm9maWxlZE11bCgqdm0s
IGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBKSVRNdWxJQyogbXVs
SUMpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmls
ZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKiBtdWxJQykKIHsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKIAorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2
ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1
ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZTsKICAgICBtdWxJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoKnZt
LCBleGVjLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKQEAgLTI0NTgsMTUgKzI0
NjYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFBy
b2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLAogICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5k
dW1wTWF0aElDU3RhdHMoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHByb2ZpbGVkTXVsKCp2bSwg
ZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxlLCBmYWxzZSk7CisgICAg
cmV0dXJuIHByb2ZpbGVkTXVsKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFy
aXRoUHJvZmlsZSwgZmFsc2UpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUsIEpJVE11bElDKikKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRN
dWxJQyogbXVsSUMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gcHJvZmlsZWRNdWwo
KnZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUpOworICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOworICAgIHJldHVybiBwcm9maWxlZE11bCgqdm0sIGV4ZWMsIGVu
Y29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQogCiBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTmVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQpCkBAIC0yNDgyLDE1ICsyNDkyLDE0IEBAIEFM
V0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWROZWdhdGUoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cigtbnVtYmVyKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHBy
b2ZpbGVkTmVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJh
bmQsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgcHJvZmlsZWROZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3BlcmFuZCwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7Ci0gICAgQVNT
RVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcGVyYW5kKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFu
ZCk7CisgICAgYXJpdGhQcm9maWxlLm9ic2VydmVMSFMob3BlcmFuZCk7CiAgICAgZG91YmxlIG51
bWJlciA9IG9wZXJhbmQudG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwpA
QCAtMjUwNCw3ICsyNTEzLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUKIAogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7Ci0gICAgcmV0dXJuIHByb2ZpbGVkTmVnYXRlKGV4ZWMsIG9wZXJhbmQsIGFyaXRoUHJv
ZmlsZSk7CisgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CisgICAgcmV0dXJuIHByb2ZpbGVkTmVn
YXRlKGV4ZWMsIG9wZXJhbmQsICphcml0aFByb2ZpbGUpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyogbmVnSUMp
CkBAIC0yNTE1LDcgKzI1MjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZQogICAgIAogICAg
IEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5tX2dlbmVyYXRvci5hcml0aFBy
b2ZpbGUoKTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFBy
b2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVMSFMob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKHZtLCBleGVj
LT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7CkBAIC0yNTM4LDkg
KzI1NDgsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVn
YXRlT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZAogCiAgICAgSlNWYWx1ZSBvcGVyYW5k
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbmVnSUMtPm1fZ2VuZXJhdG9yLmFyaXRoUHJvZmlsZSgpOwotICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5k
KTsKKyAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9m
aWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKICAgICBu
ZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUodm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBvcGVyYXRpb25B
cml0aE5lZ2F0ZSk7CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI1NjYsMTQgKzI1
NzUsMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZFN1
YihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgRW5jb2QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGEgLSBiKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQorQUxX
QVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRTdWIoVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVM
SFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
OwogICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogCiAgICAg
aWYgKHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcykKLSAgICAgICAgYXJpdGhQcm9maWxlLT5v
YnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKKyAgICAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVM
SFNBbmRSSFMob3AxLCBvcDIpOwogCiAgICAgZG91YmxlIGEgPSBvcDEudG9OdW1iZXIoZXhlYyk7
CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKQEAgLTI1ODMsNyArMjU5Miw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKICAgICAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGEgLSBi
KTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICBhcml0aFBy
b2ZpbGUub2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIApAQCAtMjU5NiwxMCArMjYwNSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJv
ZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKKyAgICBB
U1NFUlQoYXJpdGhQcm9maWxlKTsKKwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgcmV0dXJuIHByb2Zp
bGVkU3ViKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxlKTsK
KyAgICByZXR1cm4gcHJvZmlsZWRTdWIoKnZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3Ay
LCAqYXJpdGhQcm9maWxlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1Yk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqIHN1YklDKQpAQCAt
MjYwOCw3ICsyNjE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1Yk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJp
YW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IHN1YklDLT5tX2dlbmVyYXRvci5hcml0aFByb2ZpbGUoKSkKKyAgICBp
ZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCkpCiAg
ICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgc3ViSUMtPmdlbmVy
YXRlT3V0T2ZMaW5lKCp2bSwgZXhlYy0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7
CiAKQEAgLTI2MjcsMTEgKzI2MzgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGUKICAgICBy
ZXR1cm4gdW5wcm9maWxlZFN1Yigqdm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmls
ZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBKSVRT
dWJJQyogc3ViSUMpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKiBzdWJJQykKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFy
aXRoUHJvZmlsZSgpOworICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmls
ZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVy
YXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKICAgICBzdWJJQy0+Z2VuZXJhdGVPdXRP
ZkxpbmUoKnZtLCBleGVjLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKQEAgLTI2
NDAsMTUgKzI2NTMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLAogICAgIGV4ZWMtPmNvZGVC
bG9jaygpLT5kdW1wTWF0aElDU3RhdHMoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHByb2ZpbGVk
U3ViKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxlLCBmYWxz
ZSk7CisgICAgcmV0dXJuIHByb2ZpbGVkU3ViKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2Rl
ZE9wMiwgKmFyaXRoUHJvZmlsZSwgZmFsc2UpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEpJVFN1YklDKikKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBKSVRTdWJJQyogc3ViSUMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gcHJv
ZmlsZWRTdWIoKnZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUp
OworICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgp
OworICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOworICAgIHJldHVybiBwcm9maWxlZFN1Yigqdm0s
IGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQogCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZyhFeGVjU3RhdGUq
IGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDY3
MjY0MDc0ZWU0N2NiMTUxNjFkYjA5MjdiNDNmZjc4MDgzYTVjN2YuLjkzNWM0ZmFiMTlkMmQ3Nzlh
NTBlYjRlNzdmMzUxODYxYjIxMWEzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC0xNDgsNyArMTQ4LDYgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKQXApKEV4ZWNTdGF0ZSosIEVuY29kZWQK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VK
SkJ5KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5m
byopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRp
b25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJ
VE9wZXJhdGlvbl9FSkpBcnApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgQXJpdGhQcm9maWxlKik7Ci10eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFU
SU9OICpKX0pJVE9wZXJhdGlvbl9FSkpBcnBNaWMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgQXJpdGhQcm9maWxlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKTWljKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKTWljKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09Q
RVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzc1opKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgaW50
MzJfdCk7CkBAIC00MjksMTUgKzQyOCwxNSBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVG9JbmRleFN0cmluZyhFeGVjU3RhdGUqLCBpbnQzMl90KTsKIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQ
cm9maWxlKiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRo
UHJvZmlsZSosIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRk
SUMqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGlt
aXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlTXVsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxOb09w
dGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QXJpdGhQcm9maWxlKiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEFyaXRoUHJvZmlsZSosIEpJVE11bElDKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
SklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bFByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgb3BlcmFuZCk7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFu
ZCwgQXJpdGhQcm9maWxlKik7CkBAIC00NDcsOCArNDQ2LDggQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9m
aWxlZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3Vi
SUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViTm9PcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGlt
aXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSosIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRp
bWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGlt
aXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBK
SVRTdWJJQyopIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBy
b2Nlc3NUeXBlUHJvZmlsZXJMb2coRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKEV4ZWNTdGF0ZSopIFdU
Rl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3Vi
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9y
LmNwcAppbmRleCA1YTMyM2MzN2NhZGU1NzMwNDdkMjEwNzM5ZGU0OTVmMmRjYTJhZmI2Li43OTVj
Mjc1ODRjMDQyMDZkYjEyOTQyNTVjY2VhMzFlOWZiY2NhZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6
OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJ
bmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNv
bnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdlIGRlZmF1bHQgdG8g
c3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlwZSgp
LndpdGhJbnQzMigpOwogICAgIE9ic2VydmVkVHlwZSByaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRo
SW50MzIoKTsKLSAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAgbGhzID0gbV9hcml0
aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOwotICAgICAgICByaHMgPSBtX2FyaXRoUHJvZmls
ZS0+cmhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgaWYgKGFyaXRoUHJvZmlsZSkgeworICAgICAgICBs
aHMgPSBhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOworICAgICAgICByaHMgPSBhcml0
aFByb2ZpbGUtPnJoc09ic2VydmVkVHlwZSgpOwogICAgIH0KIAogICAgIGlmIChsaHMuaXNPbmx5
Tm9uTnVtYmVyKCkgJiYgcmhzLmlzT25seU5vbk51bWJlcigpKQpAQCAtNzgsNyArNzgsNyBAQCBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2Fs
bEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6
OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFT
U0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRj
aEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKQEAgLTEyOSw4ICsxMjksOCBAQCBib29sIEpJ
VFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdAogICAgIHJpZ2h0V2FzSW50ZWdlci5saW5rKCZqaXQpOwogCiAgICAg
aml0LnN1YkRvdWJsZShtX3JpZ2h0RlBSLCBtX2xlZnRGUFIpOwotICAgIGlmIChtX2FyaXRoUHJv
ZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKQotICAgICAgICBtX2FyaXRoUHJvZmlsZS0+ZW1p
dFNldERvdWJsZShqaXQpOworICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2Zp
bGluZykKKyAgICAgICAgYXJpdGhQcm9maWxlLT5lbWl0U2V0RG91YmxlKGppdCk7CiAKICAgICBq
aXQuYm94RG91YmxlKG1fbGVmdEZQUiwgbV9yZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRleCBjODI3NmI3NWMyMGZhZTZkODQ0NTMxNDFm
NzFiNjU4MjNkNmJhODBmLi5mMzAwMTY2NWQ2ZTljZWYwOWRiYjU5NDRmMDcxMGJiY2RhNzkwOTY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKQEAgLTQy
LDggKzQyLDcgQEAgcHVibGljOgogCiAgICAgSklUU3ViR2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5k
IGxlZnRPcGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCi0gICAg
ICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBG
UFJSZWcgc2NyYXRjaEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
dWxscHRyKQorICAgICAgICBGUFJSZWcgbGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcg
c2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIpCiAgICAgICAgIDogbV9sZWZ0T3BlcmFuZChs
ZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChyaWdodE9wZXJhbmQpCiAgICAg
ICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNTMsMTcgKzUyLDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBtX3JpZ2h0RlBSKHJpZ2h0RlBSKQogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNo
R1BSKQogICAgICAgICAsIG1fc2NyYXRjaEZQUihzY3JhdGNoRlBSKQotICAgICAgICAsIG1fYXJp
dGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJl
c3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUm
KTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRo
SnVtcExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRW
YWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRp
YyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KLQogcHJpdmF0ZToKICAgICBTbmlwcGV0T3BlcmFuZCBt
X2xlZnRPcGVyYW5kOwogICAgIFNuaXBwZXRPcGVyYW5kIG1fcmlnaHRPcGVyYW5kOwpAQCAtNzQs
NyArNzAsNiBAQCBwcml2YXRlOgogICAgIEZQUlJlZyBtX3JpZ2h0RlBSOwogICAgIEdQUlJlZyBt
X3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1fc2NyYXRjaEZQUjsKLSAgICBBcml0aFByb2ZpbGUq
IG1fYXJpdGhQcm9maWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9CYWcuaCBiL1NvdXJjZS9XVEYvd3RmL0JhZy5oCmluZGV4IDUyMDQwYzUw
MzM1NTQ1MjcwMTJhZGE1YjA0NThiMWU4Mjc3NmRhODIuLjAxZWNhNzQ3Mjc3YjgzMjc4NDU1YWZh
YzE2ODY1Yzg3NDJiYTI0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JhZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0JhZy5oCkBAIC0zNyw4ICszNyw4IEBAIHByaXZhdGU6CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgTm9kZShBcmdzLi4uIGFyZ3MpCi0gICAgICAgICAg
ICA6IG1faXRlbShhcmdzLi4uKQorICAgICAgICBOb2RlKEFyZ3MmJi4uLiBhcmdzKQorICAgICAg
ICAgICAgOiBtX2l0ZW0oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKQogICAgICAgICB7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC04MSw5ICs4MSw5IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBUKiBhZGQoQXJncy4uLiBhcmdz
KQorICAgIFQqIGFkZChBcmdzJiYuLi4gYXJncykKICAgICB7Ci0gICAgICAgIE5vZGUqIG5ld05v
ZGUgPSBuZXcgTm9kZShhcmdzLi4uKTsKKyAgICAgICAgTm9kZSogbmV3Tm9kZSA9IG5ldyBOb2Rl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgICAgIG5ld05vZGUtPm1fbmV4dCA9
IG1faGVhZDsKICAgICAgICAgbV9oZWFkID0gbmV3Tm9kZTsKICAgICAgICAgcmV0dXJuICZuZXdO
b2RlLT5tX2l0ZW07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289864</attachid>
            <date>2016-09-26 13:41:55 -0700</date>
            <delta_ts>2016-09-26 14:13:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-162485-20160926133859.patch</filename>
            <type>text/plain</type>
            <size>67796</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2Mzg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDE2LTA5LTI2ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbSlNDXSBTaHJpbmsgdGhlIE1hdGggaW5saW5lIGNhY2hlcyBzb21lIG1vcmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjQ4NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXBw
bGllcyBzb21lIGxlc3NvbnMgbGVhcm50IGZyb20gb3BfbmVnYXRlCisgICAgICAgIHRvIHNocmlu
ayB0aGUgZ2VuZXJhdGVkIGFzbSBvZiB0aGUgcHJldmlvdXMgMyBpbmxpbmUKKyAgICAgICAgY2Fj
aGVzLgorCisgICAgICAgIEluIG9yZGVyIG9mIGltcG9ydGFuY2U6CisgICAgICAgIC1XZSBkbyBu
b3QgbmVlZCB0byBwYXNzIHRoZSBwb2ludGVyIHRvIEFyaXRoUHJvZmlsZQorICAgICAgICAgb24g
dGhlIHNsb3cgcGF0aC4gV2UgY2FuIGp1c3QgZ2V0IHRoZSBwcm9maWxlIG91dAorICAgICAgICAg
b2YgdGhlIE1hdGggSUMuCisgICAgICAgICBUaGlzIHNhdmVzIHVzIGZyb20gbWF0ZXJpYWxpemlu
ZyBhIDY0Yml0cyB2YWx1ZQorICAgICAgICAgaW4gYSByZWdpc3RlciBiZWZvcmUgdGhlIGNhbGwg
b24gdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgLVdlIGNhbiByZW1vdmUgYSBidW5jaCBvZiBtb3Yg
Ynkgc2V0dGluZyB1cCB0aGUgcmVnaXN0ZXJzCisgICAgICAgICBpbiB0aGUgd2F5IHRoZSBzbG93
IHBhdGggbmVlZHMgdGhlbS4KKyAgICAgICAgIFRoZSBzbG93IHBhdGggbWFrZXMgYSBmdW5jdGlv
biBjYWxscyB3aXRoIHRoZSBpbnB1dAorICAgICAgICAgYXMgc2Vjb25kIGFuZCB0aGlyZCBhcmd1
bWVudHMsIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBpbgorICAgICAgICAgdGhlICJyZXR1cm4gcmVn
aXN0ZXIiLiBCeSB1c2luZyB0aG9zZSBhcyB0YXJnZXQgd2hlbgorICAgICAgICAgbG9hZGluZy9z
dG9yaW5nIGZyb20gdGhlIHN0YWNrLCB3ZSByZW1vdmUgMyBtb3YgcGVyIHNsb3cgcGF0aC4KKyAg
ICAgICAgLVdoZW4gcGVyZm9ybWluZyBpbnRlZ2VyIGFkZCwgd2UgY2FuIHNldCB0aGUgcmVzdWx0
IGRpcmVjdGx5IGluCisgICAgICAgICB0aGUgb3V0cHV0IHJlZ2lzdGVyIGlmIHRoYXQgZG9lcyBu
b3QgdHJhc2hlcyBvbmUgb2YgdGhlIGlucHV0CisgICAgICAgICByZWdpc3Rlci4gVGhpcyByZW1v
dmVzIG9uZSBtb3YgcGVyIGludGVnZXIgYWRkLgorCisgICAgICAgIFRoZSBpbmxpbmUgY2FjaGUg
YXZlcmFnZSBzaXplcyBvbiBTdW5zcGlkZXIgY2hhbmdlIGFzIGZvbGxvdzoKKyAgICAgICAgLUFk
ZHM6IDE0Ny41NzMwOTktPjEzMS41NTU1NTYgKH4xMCUpCisgICAgICAgIC1NdWxzOiAxODYuODgy
MzUzLT4xNzAuOTkxNTk3ICh+OCUpCisgICAgICAgIC1TdWJzOiAxMzkuMTI3OTA3LT4xMjEuNTIz
MjU2ICh+MTIlKQorCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBZGRH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToK
KyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE1hdGhJQ0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorCiAyMDE2LTA5LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGRlZCBSRVRVUk5fSUZfRVhDRVBUSU9OKCkgbWFjcm8gYW5k
IHVzZSBpdCBmb3IgZXhjZXB0aW9uIGNoZWNrcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMDYzODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCBib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERv
dWJsZSgpCiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi12b2lkIEFy
aXRoUHJvZmlsZTo6ZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmIGppdCkKK3ZvaWQgQXJpdGhQ
cm9maWxlOjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlm
IChzaG91bGRFbWl0U2V0RG91YmxlKCkpCiAgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6
SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSB8IEFyaXRoUHJvZmls
ZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJl
c3NPZkJpdHMoKSkpOwpAQCAtNjUsNyArNjUsNyBAQCBib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxk
RW1pdFNldE5vbk51bWJlCiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQog
Ci12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldE5vbk51bWJlcihDQ2FsbEhlbHBlcnMmIGppdCkK
K3ZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0Tm9uTnVtYmVyKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0Tm9uTnVtYmVyKCkpCiAgICAgICAgIGppdC5v
cjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTnVtYmVyKSwg
Q0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCShyZXZpc2lv
biAyMDYzODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQogICAg
IHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7
IH0KIAotICAgIHZvaWQqIGFkZHJlc3NPZkJpdHMoKSB7IHJldHVybiAmbV9iaXRzOyB9CisgICAg
Y29uc3Qgdm9pZCogYWRkcmVzc09mQml0cygpIGNvbnN0IHsgcmV0dXJuICZtX2JpdHM7IH0KIAog
ICAgIHZvaWQgb2JzZXJ2ZVJlc3VsdChKU1ZhbHVlIHZhbHVlKQogICAgIHsKQEAgLTIxNSwxMCAr
MjE1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50
NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKS4KICAgICBib29s
IHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKLSAgICB2b2lkIGVtaXRTZXREb3VibGUoQ0Nh
bGxIZWxwZXJzJik7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0
OwogICAgIAogICAgIC8vIFNldHMgTm9uTnVtYmVyLgotICAgIHZvaWQgZW1pdFNldE5vbk51bWJl
cihDQ2FsbEhlbHBlcnMmKTsKKyAgICB2b2lkIGVtaXRTZXROb25OdW1iZXIoQ0NhbGxIZWxwZXJz
JikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtYmVyKCkgY29uc3Q7CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwNjM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAwLDI0ICsz
MDAwLDI0IEBAIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmFkZFN0dWJJbmYKICAgICBy
ZXR1cm4gbV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQygpCitKSVRBZGRJQyogQ29kZUJsb2NrOjphZGRKSVRBZGRJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKLSAgICByZXR1cm4gbV9hZGRJQ3MuYWRkKCk7Cisg
ICAgcmV0dXJuIG1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRNdWxJQyogQ29k
ZUJsb2NrOjphZGRKSVRNdWxJQygpCitKSVRNdWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKLSAgICByZXR1cm4gbV9tdWxJQ3MuYWRkKCk7
CisgICAgcmV0dXJuIG1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRTdWJJQyog
Q29kZUJsb2NrOjphZGRKSVRTdWJJQygpCitKSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJ
QyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKLSAgICByZXR1cm4gbV9zdWJJQ3MuYWRk
KCk7CisgICAgcmV0dXJuIG1fc3ViSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJ
QyogQ29kZUJsb2NrOjphZGRKSVROZWdJQygpCitKSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVRO
ZWdJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKLSAgICByZXR1cm4gbV9uZWdJQ3Mu
YWRkKCk7CisgICAgcmV0dXJuIG1fbmVnSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCiBTdHJ1
Y3R1cmVTdHViSW5mbyogQ29kZUJsb2NrOjpmaW5kU3R1YkluZm8oQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMjA2Mzg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsMTAgKzI0MywxMCBAQCBwdWJsaWM6CiAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNj
ZXNzVHlwZSk7Ci0gICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKCk7Ci0gICAgSklUTXVsSUMqIGFk
ZEpJVE11bElDKCk7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKCk7Ci0gICAgSklUU3ViSUMq
IGFkZEpJVFN1YklDKCk7CisgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSop
OworICAgIEpJVE11bElDKiBhZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVROZWdJ
QyogYWRkSklUTmVnSUMoQXJpdGhQcm9maWxlKik7CisgICAgSklUU3ViSUMqIGFkZEpJVFN1YklD
KEFyaXRoUHJvZmlsZSopOwogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIHN0
dWJJbmZvQmVnaW4oKSB7IHJldHVybiBtX3N0dWJJbmZvcy5iZWdpbigpOyB9CiAgICAgQmFnPFN0
cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3Igc3R1YkluZm9FbmQoKSB7IHJldHVybiBtX3N0dWJJ
bmZvcy5lbmQoKTsgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIwNjM4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDI0LDcgKzM0MjQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9k
CiAgICAgYm9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSB0cnVlOwogI2VuZGlmCiAKLSAgICBKSVRB
ZGRJQyogYWRkSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUQWRkSUMoKTsKKyAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOworICAgIEpJVEFkZElDKiBhZGRJ
QyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1
dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsKICAgICBh
dXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwogICAgIApAQCAt
MzUwMCw4ICszNTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2Rl
KgogI2VuZGlmCiAKICAgICBCb3g8TWF0aElDR2VuZXJhdGlvblN0YXRlPiBhZGRJQ0dlbmVyYXRp
b25TdGF0ZSA9IEJveDxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+OjpjcmVhdGUoKTsKLSAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwotICAgIG1hdGhJQy0+bV9nZW5l
cmF0b3IgPSBHZW5lcmF0b3IobGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCwgcmVzdWx0UmVncywg
bGVmdFJlZ3MsIHJpZ2h0UmVncywgbGVmdEZQUiwgcmlnaHRGUFIsIHNjcmF0Y2hHUFIsIHNjcmF0
Y2hGUFIsIGFyaXRoUHJvZmlsZSk7CisgICAgbWF0aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRv
cihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRS
ZWdzLCBsZWZ0RlBSLCByaWdodEZQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEZQUik7CiAKICAgICBi
b29sIHNob3VsZEVtaXRQcm9maWxpbmcgPSBmYWxzZTsKICAgICBib29sIGdlbmVyYXRlZElubGlu
ZSA9IG1hdGhJQy0+Z2VuZXJhdGVJbmxpbmUobV9qaXQsICphZGRJQ0dlbmVyYXRpb25TdGF0ZSwg
c2hvdWxkRW1pdFByb2ZpbGluZyk7CkBAIC00MDkzLDcgKzQwOTMsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBS
UmVnID0gdHJ1ZTsKICNlbmRpZgogCi0gICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNv
ZGVCbG9jaygpLT5hZGRKSVRTdWJJQygpOworICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgpOworICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwogICAgICAgICAKQEAgLTQz
NTUsNyArNDM1Niw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QK
ICAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwogICAgICAgICBib29sIG5l
ZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CiAjZW5kaWYKLSAgICAgICAgSklUTXVsSUMqIG11bElD
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKCk7CisKKyAgICAgICAgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKKyAgICAgICAgSklUTXVsSUMqIG11bElD
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAg
IGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAg
ICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bDsKICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCShyZXZpc2lvbiAyMDYzODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NTMsNyArMTU1Myw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUFkZCgpCiAgICAgewotICAgICAgICBKSVRB
ZGRJQyogYWRkSUMgPSBjb2RlQmxvY2soKS0+YWRkSklUQWRkSUMoKTsKKyAgICAgICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEpJVEFk
ZElDKiBhZGRJQyA9IGNvZGVCbG9jaygpLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAg
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7
CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7
CiAgICAgICAgIGNvbXBpbGVNYXRoSUMoYWRkSUMsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTE1OTMsMTAgKzE1OTQsOSBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICAgICAgICAgICAgICBCb3g8TWF0aElDR2VuZXJhdGlvblN0YXRlPiBtYXRoSUNHZW5l
cmF0aW9uU3RhdGUgPSBCb3g8TWF0aElDR2VuZXJhdGlvblN0YXRlPjo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdGF0ZS0+Z3JhcGguYmFz
ZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0b3IgPSBHZW5lcmF0b3IobGVmdE9wZXJhbmQs
IHJpZ2h0T3BlcmFuZCwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1z
WzJdLmdwcigpKSwgcGFyYW1zLmZwU2NyYXRjaCgwKSwKLSAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLmZwU2NyYXRjaCgxKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSwgSW52YWxpZEZQUlJlZywgYXJp
dGhQcm9maWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZwU2NyYXRjaCgxKSwgcGFy
YW1zLmdwU2NyYXRjaCgwKSwgSW52YWxpZEZQUlJlZyk7CiAKICAgICAgICAgICAgICAgICBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBib29sIGdlbmVy
YXRlZElubGluZSA9IG1hdGhJQy0+Z2VuZXJhdGVJbmxpbmUoaml0LCAqbWF0aElDR2VuZXJhdGlv
blN0YXRlLCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKQEAgLTE3MjQsNyArMTcyNCw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IEpJVFN1YklDKiBzdWJJQyA9IGNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQygpOworICAgICAgICAg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5l
Q29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7CisgICAg
ICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBjb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQ
cm9maWxlKTsKICAgICAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWI7CiAgICAgICAgICAgICBjb21waWxlTWF0aElDKHN1YklDLCBy
ZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0xODE4LDcgKzE4
MTksOCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7
Ci0gICAgICAgICAgICBKSVRNdWxJQyogbXVsSUMgPSBjb2RlQmxvY2soKS0+YWRkSklUTXVsSUMo
KTsKKyAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgpOworICAgICAgICAgICAgSklUTXVsSUMqIG11bElDID0gY29kZUJsb2NrKCktPmFkZEpJ
VE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlv
biA9IG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwogICAgICAgICAgICAgY29tcGlsZU1h
dGhJQyhtdWxJQywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDYzODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsNyArNzYyLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpBcnAsIEpTVmFsdWVSZWdzLCBKU1ZhbHVlUmVncywgQXJp
dGhQcm9maWxlKik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUpKQXJwLCBKU1ZhbHVlUmVncywgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVS
ZWdzLCBBcml0aFByb2ZpbGUqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkosIEpTVmFsdWVSZWdzLCBKU1ZhbHVlUmVncywgSlNW
YWx1ZVJlZ3MpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKSkFycE1pYywgSlNWYWx1ZVJlZ3MsIEpTVmFsdWVSZWdzLCBKU1ZhbHVl
UmVncywgQXJpdGhQcm9maWxlKiwgVHJ1c3RlZEltbVB0cik7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpNaWMsIEpTVmFsdWVSZWdz
LCBKU1ZhbHVlUmVncywgVHJ1c3RlZEltbVB0cik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKTWljLCBKU1ZhbHVlUmVncywgSlNW
YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpBcCwgaW50LCBHUFJS
ZWcsIEdQUlJlZywgQXJyYXlQcm9maWxlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFkZEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMDYzODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDE0ICszNCwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVz
dWx0IEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRk
R2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJh
dGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAg
ICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUg
bGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CiAgICAgT2JzZXJ2ZWRUeXBlIHJocyA9
IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwotICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewot
ICAgICAgICBsaHMgPSBtX2FyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7Ci0gICAgICAg
IHJocyA9IG1fYXJpdGhQcm9maWxlLT5yaHNPYnNlcnZlZFR5cGUoKTsKKyAgICBpZiAoYXJpdGhQ
cm9maWxlKSB7CisgICAgICAgIGxocyA9IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7
CisgICAgICAgIHJocyA9IGFyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCk7CiAgICAgfQog
CiAgICAgaWYgKGxocy5pc09ubHlOb25OdW1iZXIoKSAmJiByaHMuaXNPbmx5Tm9uTnVtYmVyKCkp
CkBAIC01NCwyMCArNTQsMjYgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRv
cjo6ZwogICAgICAgICBpZiAoIW1fcmlnaHRPcGVyYW5kLmlzQ29uc3RJbnQzMigpKQogICAgICAg
ICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaElmTm90SW50MzIobV9y
aWdodCkpOwogCisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gbV9zY3JhdGNoR1BSOwogICAgICAg
ICBpZiAobV9sZWZ0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSB8fCBtX3JpZ2h0T3BlcmFuZC5pc0Nv
bnN0SW50MzIoKSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgdmFyID0gbV9sZWZ0T3BlcmFu
ZC5pc0NvbnN0SW50MzIoKSA/IG1fcmlnaHQgOiBtX2xlZnQ7CiAgICAgICAgICAgICBpbnQzMl90
IGNvbnN0VmFsdWUgPSBtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpID8gbV9sZWZ0T3BlcmFu
ZC5hc0NvbnN0SW50MzIoKSA6IG1fcmlnaHRPcGVyYW5kLmFzQ29uc3RJbnQzMigpOwotICAgICAg
ICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKENDYWxsSGVs
cGVyczo6T3ZlcmZsb3csIHZhci5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6SW1tMzIoY29u
c3RWYWx1ZSksIG1fc2NyYXRjaEdQUikpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0
YXRlLnNsb3dQYXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6Ok92
ZXJmbG93LCBtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9sZWZ0LnBheWxvYWRHUFIoKSwgbV9zY3Jh
dGNoR1BSKSk7Ci0gICAgICAgIGppdC5ib3hJbnQzMihtX3NjcmF0Y2hHUFIsIG1fcmVzdWx0KTsK
KyAgICAgICAgICAgIGlmICh2YXIucGF5bG9hZEdQUigpICE9IG1fcmVzdWx0LnBheWxvYWRHUFIo
KSkKKyAgICAgICAgICAgICAgICBzY3JhdGNoID0gbV9yZXN1bHQucGF5bG9hZEdQUigpOworICAg
ICAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKENDYWxs
SGVscGVyczo6T3ZlcmZsb3csIHZhci5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6SW1tMzIo
Y29uc3RWYWx1ZSksIHNjcmF0Y2gpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlm
IChtX2xlZnQucGF5bG9hZEdQUigpICE9IG1fcmVzdWx0LnBheWxvYWRHUFIoKSAmJiBtX3JpZ2h0
LnBheWxvYWRHUFIoKSAhPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpCisgICAgICAgICAgICAgICAg
c2NyYXRjaCA9IG1fcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgIHN0YXRlLnNsb3dQ
YXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LCBt
X3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9sZWZ0LnBheWxvYWRHUFIoKSwgc2NyYXRjaCkpOworICAg
ICAgICB9CisgICAgICAgIGppdC5ib3hJbnQzMihzY3JhdGNoLCBtX3Jlc3VsdCk7CiAgICAgICAg
IHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlZEZhc3RQYXRoOwogICAgIH0K
IAogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7
CiB9CiAKLWJvb2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQor
Ym9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwg
Ym9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0g
SW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9h
ZEdQUigpKTsKQEAgLTkxLDkgKzk3LDEyIEBAIGJvb2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKEMKICAgICAgICAgLy8gVHJ5IHRvIGRvIGludFZhciArIGludENvbnN0YW50Lgog
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90SW50MzIgPSBqaXQuYnJhbmNoSWZOb3RJbnQz
Mih2YXIpOwogCi0gICAgICAgIHNsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hBZGQz
MihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LCB2YXIucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6
OkltbTMyKGNvbnN0T3ByLmFzQ29uc3RJbnQzMigpKSwgbV9zY3JhdGNoR1BSKSk7CisgICAgICAg
IEdQUlJlZyBzY3JhdGNoID0gbV9zY3JhdGNoR1BSOworICAgICAgICBpZiAodmFyLnBheWxvYWRH
UFIoKSAhPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpCisgICAgICAgICAgICBzY3JhdGNoID0gbV9y
ZXN1bHQucGF5bG9hZEdQUigpOworICAgICAgICBzbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQu
YnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgdmFyLnBheWxvYWRHUFIoKSwgQ0Nh
bGxIZWxwZXJzOjpJbW0zMihjb25zdE9wci5hc0NvbnN0SW50MzIoKSksIHNjcmF0Y2gpKTsKIAot
ICAgICAgICBqaXQuYm94SW50MzIobV9zY3JhdGNoR1BSLCBtX3Jlc3VsdCk7CisgICAgICAgIGpp
dC5ib3hJbnQzMihzY3JhdGNoLCBtX3Jlc3VsdCk7CiAgICAgICAgIGVuZEp1bXBMaXN0LmFwcGVu
ZChqaXQuanVtcCgpKTsKIAogICAgICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQo
KSkgewpAQCAtMTIyLDkgKzEzMSwxMiBAQCBib29sIEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChDCiAgICAgICAgIGxlZnROb3RJbnQgPSBqaXQuYnJhbmNoSWZOb3RJbnQzMihtX2xl
ZnQpOwogICAgICAgICByaWdodE5vdEludCA9IGppdC5icmFuY2hJZk5vdEludDMyKG1fcmlnaHQp
OwogCi0gICAgICAgIHNsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hBZGQzMihDQ2Fs
bEhlbHBlcnM6Ok92ZXJmbG93LCBtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9sZWZ0LnBheWxvYWRH
UFIoKSwgbV9zY3JhdGNoR1BSKSk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gbV9zY3JhdGNo
R1BSOworICAgICAgICBpZiAobV9sZWZ0LnBheWxvYWRHUFIoKSAhPSBtX3Jlc3VsdC5wYXlsb2Fk
R1BSKCkgJiYgbV9yaWdodC5wYXlsb2FkR1BSKCkgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQor
ICAgICAgICAgICAgc2NyYXRjaCA9IG1fcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICAgICAgc2xv
d1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6T3ZlcmZs
b3csIG1fcmlnaHQucGF5bG9hZEdQUigpLCBtX2xlZnQucGF5bG9hZEdQUigpLCBzY3JhdGNoKSk7
CiAKLSAgICAgICAgaml0LmJveEludDMyKG1fc2NyYXRjaEdQUiwgbV9yZXN1bHQpOworICAgICAg
ICBqaXQuYm94SW50MzIoc2NyYXRjaCwgbV9yZXN1bHQpOwogICAgICAgICBlbmRKdW1wTGlzdC5h
cHBlbmQoaml0Lmp1bXAoKSk7CiAKIApAQCAtMTYyLDkgKzE3NCw5IEBAIGJvb2wgSklUQWRkR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMKIAogICAgIC8vIERvIGRvdWJsZVZhciArIGRvdWJs
ZVZhci4KICAgICBqaXQuYWRkRG91YmxlKG1fcmlnaHRGUFIsIG1fbGVmdEZQUik7Ci0gICAgaWYg
KG1fYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcpCi0gICAgICAgIG1fYXJpdGhQ
cm9maWxlLT5lbWl0U2V0RG91YmxlKGppdCk7Ci0gICAgICAgIAorICAgIGlmIChhcml0aFByb2Zp
bGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZykKKyAgICAgICAgYXJpdGhQcm9maWxlLT5lbWl0U2V0
RG91YmxlKGppdCk7CisKICAgICBqaXQuYm94RG91YmxlKG1fbGVmdEZQUiwgbV9yZXN1bHQpOwog
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFk
ZEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QWRkR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIwNjM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDcgQEAg
cHVibGljOgogCiAgICAgSklUQWRkR2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
LCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCi0gICAgICAgIEZQUlJlZyBs
ZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRj
aEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAg
ICAgICBGUFJSZWcgbGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwg
RlBSUmVnIHNjcmF0Y2hGUFIpCiAgICAgICAgIDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkK
ICAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChyaWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1
bHQocmVzdWx0KQpAQCAtNTQsMTggKzUzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3JpZ2h0
RlBSKHJpZ2h0RlBSKQogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgICAg
ICAsIG1fc2NyYXRjaEZQUihzY3JhdGNoRlBSKQotICAgICAgICAsIG1fYXJpdGhQcm9maWxlKGFy
aXRoUHJvZmlsZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc0NvbnN0
SW50MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXNDb25zdEludDMyKCkpOwogICAgIH0KIAotICAg
IEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRo
SUNHZW5lcmF0aW9uU3RhdGUmKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxw
ZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7Cisg
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBi
b29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
KSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3Rh
dGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0
T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0K
LSAgICAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXJpdGhQcm9maWxlOyB9CiAKIHByaXZhdGU6CiAgICAgU25pcHBldE9wZXJhbmQgbV9sZWZ0T3Bl
cmFuZDsKQEAgLTc3LDcgKzczLDYgQEAgcHJpdmF0ZToKICAgICBGUFJSZWcgbV9yaWdodEZQUjsK
ICAgICBHUFJSZWcgbV9zY3JhdGNoR1BSOwogICAgIEZQUlJlZyBtX3NjcmF0Y2hGUFI7Ci0gICAg
QXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZp
c2lvbiAyMDYzODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjksNyArNDY5LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX21vZChJbnN0cnVjdGlvbiosIAogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBKSVROZWdJQyogbmVnYXRlSUMgPSBt
X2NvZGVCbG9jay0+YWRkSklUTmVnSUMoKTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG1fY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhjdXJyZW50SW5zdHJ1Y3Rpb24pOwor
ICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFBy
b2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9u
LCBuZWdhdGVJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3QobmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUp
OwogfQpAQCAtNjY0LDcgKzY2NSw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wZXJhbmRUeXBl
cyBnZXRPcGUKIAogdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgSklUQWRkSUMqIGFkZElDID0gbV9jb2RlQmxvY2stPmFkZEpJVEFk
ZElDKCk7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2NvZGVCbG9jay0+YXJp
dGhQcm9maWxlRm9yUEMoY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBKSVRBZGRJQyogYWRkSUMg
PSBtX2NvZGVCbG9jay0+YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0
aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYWRkSUMpOwogICAgIGVtaXRNYXRo
SUNGYXN0KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKIH0KQEAgLTY5OSw4ICs3MDEsNyBAQCB2b2lkIEpJVDo6
ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8CiAgICAgYXV0byBpbmxpbmVTdGFydCA9IGxh
YmVsKCk7CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0gKmJpdHdp
c2VfY2FzdDxBcml0aFByb2ZpbGUqPigmY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7
Ci0gICAgbWF0aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRvcihyZXN1bHRSZWdzLCBzcmNSZWdz
LCBzY3JhdGNoR1BSLCBhcml0aFByb2ZpbGUpOworICAgIG1hdGhJQy0+bV9nZW5lcmF0b3IgPSBH
ZW5lcmF0b3IocmVzdWx0UmVncywgc3JjUmVncywgc2NyYXRjaEdQUik7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQsIHNyY1JlZ3MpOwogCkBAIC03MDgsOCArNzA5LDkgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPAogCiAgICAgYm9vbCBnZW5l
cmF0ZWRJbmxpbmVDb2RlID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2Vu
ZXJhdGlvblN0YXRlKTsKICAgICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAg
aWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ocHJv
ZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgc3JjUmVncywgJmFyaXRoUHJvZmlsZSk7CisgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsK
KyAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIHNyY1Jl
Z3MsIGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24obm9uUHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgc3JjUmVncyk7CiAgICAgfSBlbHNl
CkBAIC03MzUsOSArNzM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1h
dGhJQwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRP
cGVyYW5kVHlwZXMoY29waWVkSW5zdHJ1Y3Rpb24oY3VycmVudEluc3RydWN0aW9uKSk7Ci0gICAg
SlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7Ci0gICAgSlNWYWx1ZVJl
Z3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEpOwotICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMSk7CisgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJl
Z3MocmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUMzsKICAgICBGUFJSZWcgc2NyYXRjaEZQ
UiA9IGZwUmVnVDI7CiAjZWxzZQpAQCAtNzQ5LDEwICs3NTEsNiBAQCB2b2lkIEpJVDo6ZW1pdE1h
dGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1Qy
OwogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7Ci0g
ICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgYXJpdGhQcm9maWxlID0gbV9j
b2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0KICAgICBT
bmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKICAgICBTbmlwcGV0T3Bl
cmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOwogCkBAIC03NjMsNyArNzYxLDcgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQwogCiAgICAgUkVMRUFTRV9B
U1NFUlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7
CiAKLSAgICBtYXRoSUMtPm1fZ2VuZXJhdG9yID0gR2VuZXJhdG9yKGxlZnRPcGVyYW5kLCByaWdo
dE9wZXJhbmQsIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MsIGZwUmVnVDAsIGZwUmVn
VDEsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hGUFIsIGFyaXRoUHJvZmlsZSk7CisgICAgbWF0aElDLT5t
X2dlbmVyYXRvciA9IEdlbmVyYXRvcihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCByZXN1bHRS
ZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzY3JhdGNoR1BSLCBz
Y3JhdGNoRlBSKTsKICAgICAKICAgICBBU1NFUlQoIShHZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRW
YWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSAmJiBHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFs
aWRDb25zdGFudChyaWdodE9wZXJhbmQpKSk7CiAgICAgCkBAIC03ODQsNyArNzgyLDggQEAgdm9p
ZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQwogICAgICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmlnaHRP
cGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3Ay
LCByaWdodFJlZ3MpOwotICAgICAgICBpZiAoYXJpdGhQcm9maWxlKQorICAgICAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIGlm
IChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRS
ZWdzLCBhcml0aFByb2ZpbGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG5vblByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3Mp
OwpAQCAtODIyLDggKzgyMSw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1h
dGhJQzwKICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBp
ZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gYml0d2lzZV9jYXN0PEFyaXRoUHJvZmlsZSo+KCZjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+
YXJpdGhQcm9maWxlKCk7CisgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0
aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VKTWljPihw
cm9maWxlZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIHNyY1JlZ3MsIFRydXN0ZWRJbW1Q
dHIobWF0aElDKSk7CiAgICAgICAgIGVsc2UKQEAgLTg1OSw5ICs4NTgsOSBAQCB2b2lkIEpJVDo6
ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRJbnN0cnVjdGlvbihj
dXJyZW50SW5zdHJ1Y3Rpb24pKTsKLSAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QwKTsKLSAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MSk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QyKTsKKyAg
ICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxKTsKKyAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICNlbHNlCiAgICAgT3BlcmFuZFR5cGVzIHR5
cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgSlNWYWx1ZVJl
Z3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwpAQCAtODg4LDEyICs4ODcs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQwogICAgIGF1dG8g
c2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIGlmIChzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUgPSAqbV9jb2Rl
QmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIGlmIChh
cml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGlmIChtYXRo
SUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoKQotICAgICAgICAgICAgbWF0
aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oYml0d2lzZV9j
YXN0PEpfSklUT3BlcmF0aW9uX0VKSkFycE1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCBy
ZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCAmYXJpdGhQcm9maWxlLCBUcnVzdGVkSW1t
UHRyKG1hdGhJQykpOworICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0VKSk1pYz4o
cHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdz
LCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYXRo
SUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihwcm9maWxlZEZ1
bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCAmYXJpdGhQcm9maWxlKTsK
KyAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3Ms
IGFyaXRoUHJvZmlsZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0
ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJhdGlv
bl9FSkpNaWM+KHJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJl
Z3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CiAKQEAgLTk4OSw3ICs5ODgsOCBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiBjCiAKIHZvaWQgSklUOjplbWl0X29wX211
bChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVE11bElDKiBtdWxJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVRNdWxJQygpOworICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlv
bik7CisgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdChtdWxJQywgY3VycmVudEluc3RydWN0aW9u
LCBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZU11bCk7CiB9CkBAIC0x
MDA0LDcgKzEwMDQsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiBj
CiAKIHZvaWQgSklUOjplbWl0X29wX3N1YihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewotICAgIEpJVFN1YklDKiBzdWJJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQygpOwor
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmls
ZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgSklUU3ViSUMqIHN1YklDID0gbV9jb2Rl
QmxvY2stPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0
aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIHN1YklDKTsKICAgICBlbWl0TWF0aElDRmFzdChz
dWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkLCBvcGVy
YXRpb25WYWx1ZVN1Yik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkocmV2aXNpb24gMjA2Mzg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0OCwxNCArNDQ4LDYgQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBjYWxsOwogfQogCi1BTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSkpBcnBNaWMgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVS
ZWdzIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBU
cnVzdGVkSW1tUHRyIG1hdGhJQykKLXsKLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cihhcml0aFByb2ZpbGUpLCBtYXRoSUMpOwotICAgIENh
bGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICBz
ZXR1cFJlc3VsdHMocmVzdWx0KTsKLSAgICByZXR1cm4gY2FsbDsKLX0KLQogQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpNaWMgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZywgVHJ1
c3RlZEltbVB0ciBtYXRoSUMpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZywgbWF0aElDKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAkocmV2
aXNpb24gMjA2Mzg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsMTQgQEAgc3RydWN0IE1hdGhJQ0dlbmVyYXRpb25T
dGF0ZSB7CiAKICNkZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMgMAogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSop
PgordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIGJvb2woKmlzUHJvZmlsZUVtcHR5
KShBcml0aFByb2ZpbGUmKT4KIGNsYXNzIEpJVE1hdGhJQyB7CiBwdWJsaWM6CisgICAgSklUTWF0
aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6IG1fYXJpdGhQcm9maWxl
KGFyaXRoUHJvZmlsZSkKKyAgICB7CisgICAgfQorCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZG9u
ZUxvY2F0aW9uKCkgeyByZXR1cm4gbV9pbmxpbmVTdGFydC5sYWJlbEF0T2Zmc2V0KG1faW5saW5l
U2l6ZSk7IH0KICAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93UGF0aFN0YXJ0TG9jYXRpb24oKSB7
IHJldHVybiBtX2lubGluZVN0YXJ0LmxhYmVsQXRPZmZzZXQobV9kZWx0YUZyb21TdGFydFRvU2xv
d1BhdGhTdGFydCk7IH0KICAgICBDb2RlTG9jYXRpb25DYWxsIHNsb3dQYXRoQ2FsbExvY2F0aW9u
KCkgeyByZXR1cm4gbV9pbmxpbmVTdGFydC5jYWxsQXRPZmZzZXQobV9kZWx0YUZyb21TdGFydFRv
U2xvd1BhdGhDYWxsTG9jYXRpb24pOyB9CkBAIC03Miw4ICs3Nyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgc3RhdGUuZmFzdFBhdGhTdGFydCA9IGppdC5sYWJlbCgpOwogICAgICAgICBzaXplX3Qgc3Rh
cnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAKLSAgICAgICAg
aWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9nZW5lcmF0b3IuYXJpdGhQcm9maWxl
KCkpIHsKLSAgICAgICAgICAgIGlmICghaXNQcm9maWxlRW1wdHkoYXJpdGhQcm9maWxlKSkgewor
ICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKKyAgICAgICAgICAgIGlmIChpc1Byb2ZpbGVF
bXB0eSgqbV9hcml0aFByb2ZpbGUpKSB7CiAgICAgICAgICAgICAgICAgLy8gSXQgbG9va3MgbGlr
ZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qgd2FudCB0byBlbWl0IGNv
ZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEgY291cGxlIHJlYXNvbnMu
IEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBzbyBpZiB3ZSBkb24ndCBl
bWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4gU2Vjb25kLCBpZiB0aGUg
b3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVyIGNvZGUKQEAgLTg5LDcg
Kzk0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgSklU
TWF0aElDSW5saW5lUmVzdWx0IHJlc3VsdCA9IG1fZ2VuZXJhdG9yLmdlbmVyYXRlSW5saW5lKGpp
dCwgc3RhdGUpOworICAgICAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgcmVzdWx0ID0gbV9nZW5l
cmF0b3IuZ2VuZXJhdGVJbmxpbmUoaml0LCBzdGF0ZSwgbV9hcml0aFByb2ZpbGUpOwogCiAgICAg
ICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAgICAgIGNhc2UgSklUTWF0aElDSW5saW5lUmVzdWx0
OjpHZW5lcmF0ZWRGYXN0UGF0aDogewpAQCAtMTA0LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25p
cHBldDogewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVuZEp1bXBMaXN0
OwotICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dlbmVyYXRvci5nZW5lcmF0ZUZhc3RQYXRo
KGppdCwgZW5kSnVtcExpc3QsIHN0YXRlLnNsb3dQYXRoSnVtcHMsIHNob3VsZEVtaXRQcm9maWxp
bmcpOworICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dlbmVyYXRvci5nZW5lcmF0ZUZhc3RQ
YXRoKGppdCwgZW5kSnVtcExpc3QsIHN0YXRlLnNsb3dQYXRoSnVtcHMsIG1fYXJpdGhQcm9maWxl
LCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAg
ICAgICAgICAgICBzdGF0ZS5mYXN0UGF0aEVuZCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAg
ICAgIHN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCA9IGZhbHNlOwpAQCAtMTkwLDcgKzE5NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbmRKdW1w
TGlzdDsgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGhKdW1w
TGlzdDsgCiAKLSAgICAgICAgICAgIGJvb2wgZW1pdHRlZEZhc3RQYXRoID0gbV9nZW5lcmF0b3Iu
Z2VuZXJhdGVGYXN0UGF0aChqaXQsIGVuZEp1bXBMaXN0LCBzbG93UGF0aEp1bXBMaXN0LCBzaG91
bGRFbWl0UHJvZmlsaW5nKTsKKyAgICAgICAgICAgIGJvb2wgZW1pdHRlZEZhc3RQYXRoID0gbV9n
ZW5lcmF0b3IuZ2VuZXJhdGVGYXN0UGF0aChqaXQsIGVuZEp1bXBMaXN0LCBzbG93UGF0aEp1bXBM
aXN0LCBtX2FyaXRoUHJvZmlsZSwgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAgICAgICAgICAgICBp
ZiAoIWVtaXR0ZWRGYXN0UGF0aCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBlbmRKdW1wTGlzdC5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0yMjQsNiArMjI5LDggQEAgcHVi
bGljOgogICAgICAgICAgICAgc3RhcnQsIGxpbmtCdWZmZXIubG9jYXRpb25PZihzdGF0ZS5zbG93
UGF0aFN0YXJ0KSk7CiAgICAgfQogCisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUoKSBj
b25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQorCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RB
VFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNpemUgeyAwIH07CiAgICAgc2l6ZV90IGNv
ZGVTaXplKCkgY29uc3QKQEAgLTIzNSw2ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlm
CiAKKyAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBtX2NvZGU7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbV9pbmxpbmVTdGFydDsKICAg
ICBpbnQzMl90IG1faW5saW5lU2l6ZTsKQEAgLTI0NCwyNCArMjUyLDM2IEBAIHB1YmxpYzoKICAg
ICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9yOwogfTsKIAotaW5saW5lIGJvb2wgY2FuR2VuZXJh
dGVXaXRoQmluYXJ5UHJvZmlsZShBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK2lubGluZSBi
b29sIGlzQmluYXJ5UHJvZmlsZUVtcHR5KEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQogewot
ICAgIHJldHVybiAhYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkgJiYg
IWFyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOworICAgIHJldHVybiBh
cml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpIHx8IGFyaXRoUHJvZmlsZS5y
aHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yVHlwZT4KLWNsYXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJh
dG9yVHlwZSwgY2FuR2VuZXJhdGVXaXRoQmluYXJ5UHJvZmlsZT4geyB9OworY2xhc3MgSklUQmlu
YXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc0JpbmFyeVByb2Zp
bGVFbXB0eT4geworcHVibGljOgorICAgIEpJVEJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKKyAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQ
cm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICB7CisgICAgfQorfTsKIAogdHlwZWRlZiBK
SVRCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5cGVkZWYgSklUQmlu
YXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1h
dGhJQzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCiAKLWlubGluZSBib29sIGNhbkdlbmVy
YXRlV2l0aFVuYXJ5UHJvZmlsZShBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK2lubGluZSBi
b29sIGlzVW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7Ci0g
ICAgcmV0dXJuICFhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAg
ICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKIH0KIHRl
bXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBlPgotY2xhc3MgSklUVW5hcnlNYXRoSUMgOiBw
dWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGNhbkdlbmVyYXRlV2l0aFVuYXJ5UHJvZmls
ZT4geyB9OworY2xhc3MgSklUVW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRv
clR5cGUsIGlzVW5hcnlQcm9maWxlRW1wdHk+IHsKK3B1YmxpYzoKKyAgICBKSVRVbmFyeU1hdGhJ
QyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJh
dG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxlKQorICAgIHsKKyAgICB9
Cit9OwogCiB0eXBlZGVmIEpJVFVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4gSklUTmVnSUM7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5j
cHAJKHJldmlzaW9uIDIwNjM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVs
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE0IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5l
cmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1
bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRo
SW50MzIoKTsKICAgICBPYnNlcnZlZFR5cGUgcmhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMy
KCk7Ci0KLSAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAgbGhzID0gbV9hcml0aFBy
b2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOwotICAgICAgICByaHMgPSBtX2FyaXRoUHJvZmlsZS0+
cmhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgaWYgKGFyaXRoUHJvZmlsZSkgeworICAgICAgICBsaHMg
PSBhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOworICAgICAgICByaHMgPSBhcml0aFBy
b2ZpbGUtPnJoc09ic2VydmVkVHlwZSgpOwogICAgIH0KIAogICAgIGlmIChsaHMuaXNPbmx5Tm9u
TnVtYmVyKCkgJiYgcmhzLmlzT25seU5vbk51bWJlcigpKQpAQCAtODgsNyArODcsNyBAQCBKSVRN
YXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnCiAgICAgcmV0dXJuIEpJVE1hdGhJ
Q0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1
bXBMaXN0LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVE11bEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3Qs
IGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxp
bmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBB
U1NFUlQobV9zY3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpAQCAtMTkxLDcgKzE5
MCw3IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMKICAgICAvLyBE
byBkb3VibGVWYXIgKiBkb3VibGVWYXIuCiAgICAgaml0Lm11bERvdWJsZShtX3JpZ2h0RlBSLCBt
X2xlZnRGUFIpOwogCi0gICAgaWYgKCFtX2FyaXRoUHJvZmlsZSB8fCAhc2hvdWxkRW1pdFByb2Zp
bGluZykKKyAgICBpZiAoIWFyaXRoUHJvZmlsZSB8fCAhc2hvdWxkRW1pdFByb2ZpbGluZykKICAg
ICAgICAgaml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVzdWx0KTsKICAgICBlbHNlIHsKICAg
ICAgICAgLy8gVGhlIEludDUyIG92ZXJmbG93IGNoZWNrIGJlbG93IGludGVudGlvbmFsbHkgb21p
dHMgMWxsIDw8IDUxIGFzIGEgdmFsaWQgbmVnYXRpdmUgSW50NTIgdmFsdWUuCkBAIC0yMDQsMTgg
KzIwMywxOCBAQCBib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBD
Q2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0
cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRo
UHJvZmlsZTo6TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFy
aXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICBub3ROZWdhdGl2ZVplcm8ubGluaygmaml0
KTsKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9h
cml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2Fs
bEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkp
OwogCiAgICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BS
KTsKICAgICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJbW0zMig1MiksIG1fc2Ny
YXRjaEdQUik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwg
bV9zY3JhdGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxv
dyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNo
R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogCi0gICAgICAgIGppdC5v
cjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxv
dyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJl
c3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1Mk92ZXJm
bG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI2LDE4ICsy
MjUsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQwogICAgICAg
ICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDAp
KSk7CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnRhZ0dQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihuZWdhdGl2ZVplcm9CaXRzID4+IDMyKSkpOwogCi0gICAgICAgIGppdC5vcjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSksIENDYWxs
SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkp
KTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQ
cm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRv
bmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwot
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6
Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2FyaXRo
UHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVs
cGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAK
ICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAg
ICAgIGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRj
aEdQUik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9z
Y3JhdGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9
IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92
ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFk
ZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogCiAgICAgICAgIGVuZEp1
bXBMaXN0LmFwcGVuZChub0ludDUyT3ZlcmZsb3cpOwogICAgICAgICBpZiAobV9zY3JhdGNoR1BS
ID09IG1fcmVzdWx0LnRhZ0dQUigpIHx8IG1fc2NyYXRjaEdQUiA9PSBtX3Jlc3VsdC5wYXlsb2Fk
R1BSKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9y
LmgJKHJldmlzaW9uIDIwNjM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVs
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDcgQEAgcHVibGljOgogCiAg
ICAgSklUTXVsR2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kLCBTbmlwcGV0T3Bl
cmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJl
Z3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCi0gICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJS
ZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUiwKLSAgICAg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAgICAgICBGUFJSZWcg
bGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0
Y2hGUFIpCiAgICAgICAgIDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBt
X3JpZ2h0T3BlcmFuZChyaWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpA
QCAtNTQsMTkgKzUzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3JpZ2h0RlBSKHJpZ2h0RlBS
KQogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgICAgICAsIG1fc2NyYXRj
aEZQUihzY3JhdGNoRlBSKQotICAgICAgICAsIG1fYXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQz
MigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKTsKICAgICB9CiAK
LSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwg
TWF0aElDR2VuZXJhdGlvblN0YXRlJik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxs
SGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBzbG93SnVtcExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7Cisg
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0
aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wg
aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsg
cmV0dXJuIGxlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMg
Ym9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVy
YW5kKSB7IHJldHVybiByaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQogICAg
IAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0
aFByb2ZpbGU7IH0KLQogcHJpdmF0ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5k
OwogICAgIFNuaXBwZXRPcGVyYW5kIG1fcmlnaHRPcGVyYW5kOwpAQCAtNzcsNyArNzMsNiBAQCBw
cml2YXRlOgogICAgIEZQUlJlZyBtX3JpZ2h0RlBSOwogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7
CiAgICAgRlBSUmVnIG1fc2NyYXRjaEZQUjsKLSAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9m
aWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMDYzODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJl
c3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBN
YXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5l
Z0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1f
c2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwpAQCAtNDIsNyArNDIsMTAgQEAgSklU
TWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVyYXRvcjo6ZwogICAgIEFTU0VSVChtX3NjcmF0
Y2hHUFIgIT0gbV9yZXN1bHQudGFnR1BSKCkpOwogI2VuZGlmCiAKLSAgICBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWRUeXBlcyA9IG1fYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKTsKKyAgICAv
LyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGludDMyLgorICAgIE9ic2VydmVkVHlwZSBvYnNl
cnZlZFR5cGVzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CisgICAgaWYgKGFyaXRoUHJv
ZmlsZSkKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRU
eXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0VtcHR5KCks
ICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2UgZG8gbm90
IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5Tm9uTnVt
YmVyKCkpCkBAIC03OSw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5l
cmF0b3I6OmcKICAgICByZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxT
bmlwcGV0OwogfQogCi1ib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGJvb2wpCitib29sIEpJVE5lZ0dl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRo
SnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wpCiB7CiAgICAgQVNTRVJUKG1fc2Ny
YXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIg
IT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTmVnR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVROZWdHZW5lcmF0b3IuaAkocmV2aXNpb24gMjA2Mzg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjAg
KzM4LDE2IEBAIGNsYXNzIEpJVE5lZ0dlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUTmVnR2Vu
ZXJhdG9yKCkgPSBkZWZhdWx0OwogCi0gICAgSklUTmVnR2VuZXJhdG9yKEpTVmFsdWVSZWdzIHJl
c3VsdCwgSlNWYWx1ZVJlZ3Mgc3JjLCBHUFJSZWcgc2NyYXRjaEdQUiwgQXJpdGhQcm9maWxlJiBh
cml0aFByb2ZpbGUpCi0gICAgICAgIDogbV9hcml0aFByb2ZpbGUoJmFyaXRoUHJvZmlsZSkKLSAg
ICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCisgICAgSklUTmVnR2VuZXJhdG9yKEpTVmFsdWVSZWdz
IHJlc3VsdCwgSlNWYWx1ZVJlZ3Mgc3JjLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICAgICAgOiBt
X3Jlc3VsdChyZXN1bHQpCiAgICAgICAgICwgbV9zcmMoc3JjKQogICAgICAgICAsIG1fc2NyYXRj
aEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdl
bmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYpOwotICAg
IGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlz
dCwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKLQotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgQXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRo
KENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUq
LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiBwcml2YXRlOgotICAgIEFyaXRoUHJvZmls
ZSogbV9hcml0aFByb2ZpbGUgeyBudWxscHRyIH07CiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7
CiAgICAgSlNWYWx1ZVJlZ3MgbV9zcmM7CiAgICAgR1BSUmVnIG1fc2NyYXRjaEdQUjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MjA2Mzg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI3MCw3ICsyMjcwLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdW5wcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZXhl
Yywgb3AxLCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
cHJvZmlsZWRBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0FM
V0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yMjc4
LDExICsyMjc4LDkgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZgog
ICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAgIEpTVmFs
dWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogCi0gICAgQVNTRVJUKGFyaXRo
UHJvZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsK
LQorICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzQWRkKGV4ZWMsIG9wMSwgb3AyKTsKLSAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZVJlc3VsdChyZXN1
bHQpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjI5NCwx
MCArMjI5MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewotICAgIHJldHVybiBw
cm9maWxlZEFkZChleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUpOwor
ICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOworICAgIHJldHVybiBwcm9maWxlZEFkZChleGVjLCBl
bmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgSklUQWRkSUMqIGFkZElDKQorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1p
emUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyogYWRkSUMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0y
MzA1LDYgKzIzMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
CiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNW
YWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKKyAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJp
dGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIp
OwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxl
ZE5vT3B0aW1pemU7CkBAIC0yMzIwLDkgKzIzMjAsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2Zp
bGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBK
SVRBZGRJQyopCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
UHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqIGFkZElDKQogewotICAg
IHJldHVybiBwcm9maWxlZEFkZChleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFBy
b2ZpbGUpOworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CisgICAg
cmV0dXJuIHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFBy
b2ZpbGUpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyogYWRkSUMpCkBAIC0yMzM0LDcgKzIz
MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAgICAgSlNW
YWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKICAgICBhdXRvIG5vbk9w
dGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+bV9nZW5lcmF0b3IuYXJpdGhQcm9maWxl
KCkpCisgICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJv
ZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIp
OwogICAgIGFkZElDLT5nZW5lcmF0ZU91dE9mTGluZSgqdm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBu
b25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yMzcwLDE0ICsyMzc1LDE0IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHVucHIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGEgKiBiKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIHByb2ZpbGVkTXVsKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQorQUxXQVlT
X0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNB
bmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwog
ICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogCiAgICAgaWYg
KHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcykKLSAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNl
cnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKKyAgICAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVMSFNB
bmRSSFMob3AxLCBvcDIpOwogCiAgICAgZG91YmxlIGEgPSBvcDEudG9OdW1iZXIoZXhlYyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMzg1
LDcgKzIzOTAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9mCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihhICogYik7Ci0gICAgYXJpdGhQcm9maWxlLT5v
YnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgYXJpdGhQcm9maWxlLm9ic2VydmVSZXN1bHQocmVz
dWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTI0MTEs
NyArMjQxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmEKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5tX2dlbmVyYXRvci5hcml0aFByb2Zp
bGUoKSkKKyAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQ
cm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAg
bXVsSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKCp2bSwgZXhlYy0+Y29kZUJsb2NrKCksIG5vbk9wdGlt
aXplVmFyaWFudCk7CiAKQEAgLTI0MjcsMTQgKzI0MzIsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgcmV0dXJuIHByb2Zp
bGVkTXVsKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxlKTsK
KyAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKKyAgICByZXR1cm4gcHJvZmlsZWRNdWwoKnZtLCBl
eGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgSklUTXVsSUMqIG11bElD
KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyogbXVsSUMpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVN
dWxQcm9maWxlZE5vT3B0aW1pemU7CiAgICAgbXVsSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKCp2bSwg
ZXhlYy0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CkBAIC0yNDQzLDE1ICsyNDUx
LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmEKICAgICBleGVj
LT5jb2RlQmxvY2soKS0+ZHVtcE1hdGhJQ1N0YXRzKCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBw
cm9maWxlZE11bCgqdm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGFyaXRoUHJvZmls
ZSwgZmFsc2UpOworICAgIHJldHVybiBwcm9maWxlZE11bCgqdm0sIGV4ZWMsIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUsIGZhbHNlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBKSVRNdWxJQyopCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMiwgSklUTXVsSUMqIG11bElDKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgcmV0
dXJuIHByb2ZpbGVkTXVsKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQ
cm9maWxlKTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFBy
b2ZpbGUoKTsKKyAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKKyAgICByZXR1cm4gcHJvZmlsZWRN
dWwoKnZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0K
IAogQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZE5lZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kKQpAQCAtMjQ2Nywx
NSArMjQ3NywxNCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtbnVtYmVyKSk7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTmVnYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWROZWdh
dGUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgQXJpdGhQ
cm9maWxlJiBhcml0aFByb2ZpbGUpCiB7Ci0gICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCiAg
ICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKLSAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJpdGhQcm9maWxlLm9i
c2VydmVMSFMob3BlcmFuZCk7CiAgICAgZG91YmxlIG51bWJlciA9IG9wZXJhbmQudG9OdW1iZXIo
ZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwpAQCAtMjQ4OSw3ICsyNDk4LDggQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcgogCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsK
LSAgICByZXR1cm4gcHJvZmlsZWROZWdhdGUoZXhlYywgb3BlcmFuZCwgYXJpdGhQcm9maWxlKTsK
KyAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKKyAgICByZXR1cm4gcHJvZmlsZWROZWdhdGUoZXhl
Yywgb3BlcmFuZCwgKmFyaXRoUHJvZmlsZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykKQEAgLTI1
MDAsNyArMjUxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXIK
ICAgICAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJh
bmQpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+bV9nZW5lcmF0
b3IuYXJpdGhQcm9maWxlKCk7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJ
Qy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgYXJpdGhQ
cm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91dE9mTGlu
ZSh2bSwgZXhlYy0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQpOwpA
QCAtMjUyMyw5ICsyNTMzLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25BcgogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVy
YW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPm1fZ2VuZXJh
dG9yLmFyaXRoUHJvZmlsZSgpOwotICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwotICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUodm0sIGV4
ZWMtPmNvZGVCbG9jaygpLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiAKICNpZiBFTkFCTEUoTUFU
SF9JQ19TVEFUUykKQEAgLTI1NTAsMTQgKzI1NTksMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdW5wcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
YSAtIGIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmls
ZWRTdWIoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBi
b29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJp
dGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVz
ID0gdHJ1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1
ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKICAgICBpZiAoc2hvdWxkT2Jz
ZXJ2ZUxIU0FuZFJIU1R5cGVzKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRS
SFMob3AxLCBvcDIpOworICAgICAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyhvcDEs
IG9wMik7CiAKICAgICBkb3VibGUgYSA9IG9wMS50b051bWJlcihleGVjKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI1NjUsNyArMjU3NCw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2YKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKGEgLSBiKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1
bHQocmVzdWx0KTsKKyAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtMjU3OCwxMCArMjU4Nywx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogeworICAgIEFTU0VSVChhcml0aFByb2Zp
bGUpOworCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gcHJvZmlsZWRTdWIoKnZtLCBleGVj
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUpOworICAgIHJldHVybiBwcm9m
aWxlZFN1Yigqdm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyogc3ViSUMpCkBAIC0yNTkwLDcgKzI2MDEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFy
aWFudCA9IG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+bV9nZW5lcmF0b3IuYXJpdGhQcm9maWxlKCkpCisgICAg
aWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQog
ICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIHN1YklDLT5nZW5l
cmF0ZU91dE9mTGluZSgqdm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQp
OwogCkBAIC0yNjA5LDExICsyNjIwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmEKICAgICByZXR1cm4gdW5wcm9maWxlZFN1Yigqdm0sIGV4ZWMsIGVuY29kZWRP
cDEsIGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlLCBKSVRTdWJJQyogc3ViSUMpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1
YklDKiBzdWJJQykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEFTU0VSVChhcml0aFByb2ZpbGUp
OwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRp
bWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKICAgICBz
dWJJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoKnZtLCBleGVjLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1p
emVWYXJpYW50KTsKQEAgLTI2MjIsMTUgKzI2MzUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYQogICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kdW1wTWF0aElDU3Rh
dHMoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHByb2ZpbGVkU3ViKCp2bSwgZXhlYywgZW5jb2Rl
ZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxlLCBmYWxzZSk7CisgICAgcmV0dXJuIHByb2Zp
bGVkU3ViKCp2bSwgZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSwg
ZmFsc2UpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUsIEpJVFN1YklDKikKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyogc3ViSUMp
CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gcHJvZmlsZWRTdWIoKnZtLCBleGVjLCBl
bmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFByb2ZpbGUpOworICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUpOworICAgIHJldHVybiBwcm9maWxlZFN1Yigqdm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjA2Mzg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0OCw3ICsxNDgsNiBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9O
ICpKCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlv
bl9FSkpCeSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZh
bEluZm8qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3Bl
cmF0aW9uX0VKSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAq
Sl9KSVRPcGVyYXRpb25fRUpKQXJwKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEFyaXRoUHJvZmlsZSopOwotdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09Q
RVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKQXJwTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEFyaXRoUHJvZmlsZSosIHZvaWQqKTsKIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSk1pYykoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7CiB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSk1pYykoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKc3NaKShFeGVjU3RhdGUqLCBKU1N0cmluZyos
IGludDMyX3QpOwpAQCAtNDI5LDE1ICs0MjgsMTUgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRvSW5kZXhTdAogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqLCBKSVRBZGRJQyopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVB
ZGRQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiwgSklUQWRkSUMqKSBX
VEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0
aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQWRkTm9PcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWwoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE9w
dGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVs
SUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqLCBKSVRNdWxJ
QyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiwgSklUTXVs
SUMqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5B
TDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxl
ZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJp
dGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kKTsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqKTsKQEAg
LTQ0Nyw4ICs0NDYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVN1Yk5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBBcml0aFByb2ZpbGUqLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgQXJpdGhQcm9maWxlKiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3Vi
SUMqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNz
VHlwZVByb2ZpbGVyTG9nKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZyhFeGVjU3RhdGUqKSBXVEZfSU5U
RVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0
b3IuY3BwCShyZXZpc2lvbiAyMDYzODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0ICszMywxNCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
bGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
c3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBz
cGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCku
d2l0aEludDMyKCk7CiAgICAgT2JzZXJ2ZWRUeXBlIHJocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJ
bnQzMigpOwotICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAgICBsaHMgPSBtX2FyaXRo
UHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7Ci0gICAgICAgIHJocyA9IG1fYXJpdGhQcm9maWxl
LT5yaHNPYnNlcnZlZFR5cGUoKTsKKyAgICBpZiAoYXJpdGhQcm9maWxlKSB7CisgICAgICAgIGxo
cyA9IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgICAgIHJocyA9IGFyaXRo
UHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCk7CiAgICAgfQogCiAgICAgaWYgKGxocy5pc09ubHlO
b25OdW1iZXIoKSAmJiByaHMuaXNPbmx5Tm9uTnVtYmVyKCkpCkBAIC03OCw3ICs3OCw3IEBAIEpJ
VE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmcKICAgICByZXR1cm4gSklUTWF0
aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJVFN1Ykdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRo
SnVtcExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUU3ViR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlz
dCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2Zp
bGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAg
IEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7CkBAIC0xMjksOCAr
MTI5LDggQEAgYm9vbCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQwogICAgIHJp
Z2h0V2FzSW50ZWdlci5saW5rKCZqaXQpOwogCiAgICAgaml0LnN1YkRvdWJsZShtX3JpZ2h0RlBS
LCBtX2xlZnRGUFIpOwotICAgIGlmIChtX2FyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKQotICAgICAgICBtX2FyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShqaXQpOworICAgIGlm
IChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZykKKyAgICAgICAgYXJpdGhQcm9m
aWxlLT5lbWl0U2V0RG91YmxlKGppdCk7CiAKICAgICBqaXQuYm94RG91YmxlKG1fbGVmdEZQUiwg
bV9yZXN1bHQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2Vu
ZXJhdG9yLmgJKHJldmlzaW9uIDIwNjM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3ViR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDcgQEAgcHVibGlj
OgogCiAgICAgSklUU3ViR2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kLCBTbmlw
cGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNW
YWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCi0gICAgICAgIEZQUlJlZyBsZWZ0RlBS
LCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUiwK
LSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAgICAgICBG
UFJSZWcgbGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVn
IHNjcmF0Y2hGUFIpCiAgICAgICAgIDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAg
ICAgLCBtX3JpZ2h0T3BlcmFuZChyaWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVz
dWx0KQpAQCAtNTMsMTcgKzUyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3JpZ2h0RlBSKHJp
Z2h0RlBSKQogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgICAgICAsIG1f
c2NyYXRjaEZQUihzY3JhdGNoRlBSKQotICAgICAgICAsIG1fYXJpdGhQcm9maWxlKGFyaXRoUHJv
ZmlsZSkKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmKTsKLSAgICBib29sIGdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVt
cExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJv
ZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xv
d1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBw
ZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVy
YW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2Zp
bGU7IH0KLQogcHJpdmF0ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOwogICAg
IFNuaXBwZXRPcGVyYW5kIG1fcmlnaHRPcGVyYW5kOwpAQCAtNzQsNyArNzAsNiBAQCBwcml2YXRl
OgogICAgIEZQUlJlZyBtX3JpZ2h0RlBSOwogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAg
RlBSUmVnIG1fc2NyYXRjaEZQUjsKLSAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2Mzg4KQorKysgU291
cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0w
OS0yNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0pTQ10gU2hyaW5rIHRoZSBNYXRoIGlubGluZSBjYWNoZXMgc29tZSBtb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI0ODUKKworICAgICAgICBS
ZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAqIHd0Zi9CYWcuaDoKKyAgICAgICAg
RG9uJ3QgY29weSB0aGUgYXJndW1lbnRzIGJlZm9yZSBpbml0aWFsaXppbmcgdGhlIG5vZGVzLgor
CiAyMDE2LTA5LTI2ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4K
IAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHIgZGVsZXRlciBmdW5jdGlvbnMgc2hvdWxkIG5vdCBj
aGVjayBpZiBwb2ludGVyIGlzIG51bGwKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JhZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0JhZy5oCShyZXZpc2lvbiAyMDYzODgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9CYWcuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQCBwcml2YXRl
OgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgICAgIE5vZGUoQXJncy4uLiBhcmdzKQot
ICAgICAgICAgICAgOiBtX2l0ZW0oYXJncy4uLikKKyAgICAgICAgTm9kZShBcmdzJiYuLi4gYXJn
cykKKyAgICAgICAgICAgIDogbV9pdGVtKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikKICAg
ICAgICAgewogICAgICAgICB9CiAgICAgICAgIApAQCAtODEsOSArODEsOSBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgVCogYWRkKEFy
Z3MuLi4gYXJncykKKyAgICBUKiBhZGQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBO
b2RlKiBuZXdOb2RlID0gbmV3IE5vZGUoYXJncy4uLik7CisgICAgICAgIE5vZGUqIG5ld05vZGUg
PSBuZXcgTm9kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgICBuZXdOb2Rl
LT5tX25leHQgPSBtX2hlYWQ7CiAgICAgICAgIG1faGVhZCA9IG5ld05vZGU7CiAgICAgICAgIHJl
dHVybiAmbmV3Tm9kZS0+bV9pdGVtOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>