<?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>239905</bug_id>
          
          <creation_ts>2022-04-29 11:03:41 -0700</creation_ts>
          <short_desc>Connecting to GPU process may hang if UI process sends sync message simultaneously</short_desc>
          <delta_ts>2022-05-05 06:43:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865478</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-29 11:03:41 -0700</bug_when>
    <thetext>Connecting to GPU process may hang if UI process sends sync message simultaneously</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865480</commentid>
    <comment_count>1</comment_count>
      <attachid>458598</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-29 11:07:37 -0700</bug_when>
    <thetext>Created attachment 458598
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865481</commentid>
    <comment_count>2</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-29 11:09:20 -0700</bug_when>
    <thetext>&lt;rdar://91713027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866469</commentid>
    <comment_count>3</comment_count>
      <attachid>458799</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-05-04 08:35:07 -0700</bug_when>
    <thetext>Created attachment 458799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866475</commentid>
    <comment_count>4</comment_count>
      <attachid>458801</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-05-04 08:46:42 -0700</bug_when>
    <thetext>Created attachment 458801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866647</commentid>
    <comment_count>5</comment_count>
      <attachid>458801</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-04 16:17:26 -0700</bug_when>
    <thetext>Comment on attachment 458801
Patch

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

r=me with fixes. We may want to do the same for the network process?

&gt; Source/WebKit/ChangeLog:23
&gt; +        connection initialization. Send the GPUPg connection initialization result, audit token and

Typo: GPUPg

&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:134
&gt; +    WTFLogAlways(&quot;GOT Create gpu process connection&quot;);

Should drop.

&gt; Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:374
&gt; +    WTFLogAlways(&quot;Create gpu process connection&quot;);

Should drop

&gt; Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp:132
&gt; +        if (parentConnection.ignoreInvalidMessageForTesting())

indentation is wrong

&gt; Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp:133
&gt; +            instance-&gt;connection().setIgnoreInvalidMessageForTesting();

ditto.

&gt; Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp:306
&gt; +    WTFLogAlways(&quot;Got didinitialize&quot;);

Should drop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866780</commentid>
    <comment_count>6</comment_count>
      <attachid>458858</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-05-05 01:32:23 -0700</bug_when>
    <thetext>Created attachment 458858
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866792</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-05-05 02:42:51 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 458801 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458801&amp;action=review
&gt; 
&gt; r=me with fixes. We may want to do the same for the network process?

Thanks!

I think network process, authn process and plugin process could all use this pattern.

However, I see the network process startup seems to be a bit intricate too, given the retries (?) and all. Maybe if there&apos;s no immediate need we should do it a bit later? Maybe after it is apparent that this change didn&apos;t cause any unforeseen issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866820</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-05 06:43:49 -0700</bug_when>
    <thetext>Committed r293829 (250302@main): &lt;https://commits.webkit.org/250302@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458858.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458598</attachid>
            <date>2022-04-29 11:07:37 -0700</date>
            <delta_ts>2022-05-04 08:35:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-239905-20220429210735.patch</filename>
            <type>text/plain</type>
            <size>42518</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ4NDliZTljNWU5ODlhZDkx
YzVmYzllMGRjZDVkYmJkYzljM2UyNTIuLjRhNzk0Zjg1NTkyOGVkMTRmYzA0ODMzY2FiMzAyMWU3
Y2RkMGJmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjItMDQtMjkgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW5nIHRvIEdQ
VSBwcm9jZXNzIG1heSBoYW5nIGlmIFVJIHByb2Nlc3Mgc2VuZHMgc3luYyBtZXNzYWdlIHNpbXVs
dGFuZW91c2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXSVA6CisgICAgICAgICAgLSBwb3B1bGF0ZSB0aGUgYXVkaXQgdG9rZW4gdG8gdGhlIHJlc3Vs
dC4KKyAgICAgICAgICAtIGNsZWFudXAKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmFzQ29ubmVjdGlvbklkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL0dQVVByb2Nlc3ND
b25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQ
VVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0
aW9uOjpHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3ND
b25uZWN0aW9uOjphdWRpdFRva2VuKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9u
Ojp3YWl0Rm9yRGlkSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25u
ZWN0aW9uOjpoYXNWUDlIYXJkd2FyZURlY29kZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25u
ZWN0aW9uSW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nv
bm5lY3Rpb25JbmZvOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKwogMjAyMi0wNC0yOSAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIElQQyBzdHJlYW0gc2VuZCBp
cyBzbG93IGR1ZSB0byBzZW1hcGhvcmUgc2lnbmFsIGlmIHJlY2VpdmVyIGlzIGZhc3RlciB0aGFu
IHNlbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDY1MTJjMjMyMTc1ZDBiNGU4NTcxODVhM2JmNzY5NTlm
YjUzNGU3MTcuLmU0YWEwM2Y4YzFkYzlkMDQzMTA1NzFlMDQ1MDZlOTliN2YxMDFkYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTIzMiwxMyArMjMyLDEzIEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi1SZWY8
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdl
YlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlv
bklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoR1BVUHJvY2VzcyYgZ3B1UHJvY2Vz
cywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyJiYgY29ubmVj
dGlvbklkZW50aWZpZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhncHVQcm9jZXNzLCB3ZWJQcm9jZXNzSWRlbnRpZmllciwgY29ubmVjdGlvbklkZW50aWZpZXIs
IHNlc3Npb25JRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1UHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50
aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUo
cGFyYW1ldGVycykpKTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi0gICAgOiBtX2Nvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCAqdGhpcykpCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIDogbV9jb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRp
ZmllciwgKnRoaXMpKQogICAgICwgbV9ncHVQcm9jZXNzKGdwdVByb2Nlc3MpCiAgICAgLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQogICAgICwgbV93ZWJQcm9j
ZXNzSWRlbnRpdHkoV1RGTW92ZShwYXJhbWV0ZXJzLndlYlByb2Nlc3NJZGVudGl0eSkpCkBAIC0y
NzgsNyArMjc4LDE1IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgLy8gcmVwbHkgZnJv
bSB0aGUgR1BVIHByb2Nlc3MsIHdoaWNoIHdvdWxkIGJlIHVuc2FmZS4KICAgICBtX2Nvbm5lY3Rp
b24tPnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlX
aGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4o
KTsKLQorICAgIFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIGluZm87CisjaWYgSEFW
RShBVURJVF9UT0tFTikKKyAgICAvLyBpbmZvLmF1ZGl0VG9rZW4gPSAuLi47CisjZW5kaWYKKyNp
ZiBFTkFCTEUoVlA5KQorICAgIGluZm8uaGFzVlA5SGFyZHdhcmVEZWNvZGVyID0gV2ViQ29yZTo6
dnA5SGFyZHdhcmVEZWNvZGVyQXZhaWxhYmxlKCk7CisjZW5kaWYKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpEaWRJbml0aWFsaXplKGluZm8p
LCAwKTsKKyAgICBXVEZMb2dBbHdheXMoIlNlbnQgZGlkSW50aWlhbGl6ZSIpOwogICAgICsrZ09i
amVjdENvdW50Rm9yVGVzdGluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNWYzOTc1YmYyN2Y3ZjBmYzFj
MjgxM2QxZDU3NWQ4NmI5YWUyZDcxMS4uN2JkOGU5ODQ3ODExODg5NWNhZDExZjk4YjEzY2EyZmQ5
YWM0MzNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgY2xhc3MgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcwogICAgICwgcHVibGljIFdlYkNvcmU6Ok5vd1BsYXlpbmdNYW5hZ2VyOjpD
bGllbnQKICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShHUFVQcm9jZXNzJiwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0
aWMgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShHUFVQcm9jZXNzJiwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXImJiwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZp
cnR1YWwgfkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKIAogICAgIHVzaW5nIFdlYkNvcmU6
Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGllbnQ6OndlYWtQdHJGYWN0b3J5OwpAQCAtMjEzLDcgKzIx
Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBHUFVQcm9jZXNzQ29ubmVjdGlv
blBhcmFtZXRlcnMmJik7CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNz
JiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXImJiwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwog
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ciYgcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLmNwcAppbmRleCBmOTE4YTk5NTdiMjU4NmQ4ZDYwMWNjZjMzNjg4NTJhZDcx
NTA0Njg4Li5hZTgxNzg3NDQ2MDBiYTBkOTE0Y2VlYTY0ZTFlYWQ2Y2JkNzlmOGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBAIC0xMTYsMTYgKzExNiwyNyBAQCB2
b2lkIEdQVVByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIGRpZFJlY2VpdmVHUFVQcm9jZXNzTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBHUFVQcm9jZXNzOjpjcmVhdGVHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6
QXR0YWNobWVudD4mJiwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGF0aWMgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGFzQ29ubmVjdGlvbklkZW50aWZpZXIoSVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlv
bkhhbmRsZSkKIHsKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICByZXR1cm4gSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHsgY29ubmVjdGlvbkhhbmRsZS5yZWxlYXNlKCkucmVs
ZWFzZSgpIH07CisjZWxpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciB7IGNvbm5lY3Rpb25IYW5kbGUucG9ydCgpIH07CisjZWxpZiBPUyhXSU5ET1dT
KQorICAgIHJldHVybiBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgeyBjb25uZWN0aW9uSGFu
ZGxlLmhhbmRsZSgpIH07CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciB7IH07CisjZW5kaWYKK30KKwordm9pZCBHUFVQ
cm9jZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpBdHRh
Y2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBXVEZMb2dBbHdheXMoIkdPVCBDcmVhdGUgZ3B1IHByb2Nlc3MgY29u
bmVjdGlvbiIpOworCiAgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIiVwIC0gR1BVUHJvY2Vzczo6
Y3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczogcHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJ
dTY0LCB0aGlzLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgIGF1dG8gY29ubmVjdGlvbklk
ZW50aWZpZXJzID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDb25uZWN0aW9uSWRlbnRpZmllclBh
aXIoKTsKLSAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVycykgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBhdXRv
IG5ld0Nvbm5lY3Rpb24gPSBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMs
IGlkZW50aWZpZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVycy0+c2VydmVyLCBzZXNzaW9uSUQsIFdU
Rk1vdmUocGFyYW1ldGVycykpOworICAgIGF1dG8gbmV3Q29ubmVjdGlvbiA9IEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgc2Vzc2lvbklELCBhc0Nv
bm5lY3Rpb25JZGVudGlmaWVyKFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpKSwgV1RGTW92
ZShwYXJhbWV0ZXJzKSk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgcmVmYWN0b3IgY29kZSB0byBnbyBmcm9tIFdlYlByb2Nlc3MgLT4gR1BVUHJv
Y2VzcyAtPiBVSVByb2Nlc3Mgd2hlbiBnZXRVc2VyTWVkaWEgaXMgY2FsbGVkIGluc3RlYWQgb2Yg
Z29pbmcgZnJvbSBXZWJQcm9jZXNzIC0+IFVJUHJvY2VzcyBkaXJlY3RseS4KQEAgLTE0MiwxMSAr
MTUzLDggQEAgdm9pZCBHUFVQcm9jZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW4KICAgICBBU1NFUlQoIW1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShuZXdDb25uZWN0aW9uKSk7CiAKLSAgICBH
UFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycyBjb25uZWN0aW9uUGFy
YW1ldGVyczsKLSNpZiBFTkFCTEUoVlA5KQotICAgIGNvbm5lY3Rpb25QYXJhbWV0ZXJzLmhhc1ZQ
OUhhcmR3YXJlRGVjb2RlciA9IFdlYkNvcmU6OnZwOUhhcmR3YXJlRGVjb2RlckF2YWlsYWJsZSgp
OwotI2VuZGlmCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25uZWN0aW9uSWRlbnRp
ZmllcnMtPmNsaWVudCksIFdURk1vdmUoY29ubmVjdGlvblBhcmFtZXRlcnMpKTsKKworICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgR1BVUHJvY2Vzczo6cmVtb3ZlR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggMWUwN2FkMTNhOGQ5NjBkNWVh
MzQxY2M5MmRhYjc3NmI5YWRkZGRiYy4uNWFiZTgzOTI2NDdhOWU5OWM5Mjk2NDhkZGU4ZTE5NjYz
MmQ0OGUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC0xMzksNyAr
MTM5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGlu
aXRpYWxpemVHUFVQcm9jZXNzKEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAg
dm9pZCBjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYs
IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpPiYmKTsKKyAg
ICB2b2lkIGNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkF0dGFjaG1lbnQmJiwgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBhZGRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBHUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRl
cnMmJik7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmOTBh
NDg3OWI0ZTFkMTRiODE2NzE4ZDg4MjIwYjZjMmE4YmM3MzczLi5kY2YxMTFmN2EzYzYzYjQyYTQ3
YzlhNWJlZTRlMTRhNWMwODFjOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogbWVzc2FnZXMgLT4gR1BV
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZUdQVVByb2Nlc3Moc3RydWN0
IFdlYktpdDo6R1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzKQogCi0gICAgQ3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgcGFyYW1l
dGVycykgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RydWN0IFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVycykKKyAgICBDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3Ry
dWN0IFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+
ICgpCiAKICAgICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+
ICgpCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMuaAppbmRleCBjZmVlYTE4YWVkY2I5MGQ1ZGU0YjEwZWNlZjcyMjg5OWNmMmY3N2NlLi5l
MDFkZjhhZjdmZDRlZmE1ZjBmOGY1ZmE2NDNkM2Y4N2IyNzI3MmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM1LDcgKzM1LDYgQEAgc3RydWN0IEdQVVByb2Nl
c3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoVlA5KQog
ICAgIGJvb2wgaGFzVlA5SGFyZHdhcmVEZWNvZGVyIHsgZmFsc2UgfTsKICNlbmRpZgotCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKICNpZiBFTkFC
TEUoVlA5KQpAQCAtNDYsMTUgKzQ1LDEzIEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbklu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiAgICAgewogI2lmIEVOQUJMRShWUDkpCi0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaGFzVlA5SGFyZHdhcmVEZWNvZGVyOwotICAgICAgICBkZWNvZGVyID4+IGhhc1ZQ
OUhhcmR3YXJlRGVjb2RlcjsKLSAgICAgICAgaWYgKCFoYXNWUDlIYXJkd2FyZURlY29kZXIpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGhhc1ZQOUhhcmR3YXJlRGVjb2RlciA9IGRlY29kZXIuZGVjb2RlPGJvb2w+KCk7CiAjZW5k
aWYKLQorICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoVlA5KQotICAgICAgICAgICAgV1RGTW92
ZSgqaGFzVlA5SGFyZHdhcmVEZWNvZGVyKQorICAgICAgICAgICAgKmhhc1ZQOUhhcmR3YXJlRGVj
b2RlcgogI2VuZGlmCiAgICAgICAgIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaAppbmRleCAxMTg5ZWE5ZWY1
ZDhjOWJkZWU1OGZlZTk3YzgyYTdlOTczMGZhODc5Li4zZDEyYTE2NDBiNDE0NTViM2Q1YzJjZTY5
MzM3NjU3MGJjOGE2OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaApAQCAtNDEsNiArNDEsNyBAQCBzdHJ1Y3QgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIGlnbm9yZUludmFsaWRNZXNz
YWdlRm9yVGVzdGluZyB7IGZhbHNlIH07CiAjZW5kaWYKICNpZiBIQVZFKEFVRElUX1RPS0VOKQor
ICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbjsKICAgICBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IHByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW47CiAj
ZW5kaWYKIApAQCAtNTMsMzkgKzU0LDI1IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMgewogICAgICAgICBlbmNvZGVyIDw8IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVz
dGluZzsKICNlbmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgICAgIGVuY29kZXIgPDwg
YXVkaXRUb2tlbjsKICAgICAgICAgZW5jb2RlciA8PCBwcmVzZW50aW5nQXBwbGljYXRpb25BdWRp
dFRva2VuOwogI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHk+IHdl
YlByb2Nlc3NJZGVudGl0eTsKLSAgICAgICAgZGVjb2RlciA+PiB3ZWJQcm9jZXNzSWRlbnRpdHk7
Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzc0lkZW50aXR5KQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBvdmVy
cmlkZUxhbmd1YWdlczsKLSAgICAgICAgZGVjb2RlciA+PiBvdmVycmlkZUxhbmd1YWdlczsKLSAg
ICAgICAgaWYgKCFvdmVycmlkZUxhbmd1YWdlcykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0NhcHRpdmVQb3J0YWxNb2Rl
RW5hYmxlZDsKLSAgICAgICAgZGVjb2RlciA+PiBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZDsK
LSAgICAgICAgaWYgKCFpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KKyAgICAgICAgYXV0byB3ZWJQcm9jZXNzSWRlbnRpdHkgPSBk
ZWNvZGVyLmRlY29kZTxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHk+KCk7CisgICAgICAgIGF1dG8g
b3ZlcnJpZGVMYW5ndWFnZXMgPSBkZWNvZGVyLmRlY29kZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAg
ICAgICAgYXV0byBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IGRlY29kZXIuZGVjb2RlPGJv
b2w+KCk7CiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7Ci0gICAgICAgIGRlY29kZXIg
Pj4gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOwotICAgICAgICBpZiAoIWlnbm9yZUlu
dmFsaWRNZXNzYWdlRm9yVGVzdGluZykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIGF1dG8gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nID0gZGVjb2Rlci5k
ZWNvZGU8Ym9vbD4oKTsKICNlbmRpZgotCiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICAgICAg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBwcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRv
a2VuOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByZXNlbnRpbmdBcHBsaWNhdGlvbkF1
ZGl0VG9rZW4pKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYXV0
byBhdWRpdFRva2VuID0gZGVjb2Rlci5kZWNvZGU8c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
Pj4oKTsKKyAgICAgICAgYXV0byBwcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuID0gZGVj
b2Rlci5kZWNvZGU8c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90Pj4oKTsKICNlbmRpZgorICAg
ICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICByZXR1cm4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHsK
ICAgICAgICAgICAgIFdURk1vdmUoKndlYlByb2Nlc3NJZGVudGl0eSksCkBAIC05NSw3ICs4Miw4
IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgewogICAgICAgICAgICAg
Kmlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZywKICNlbmRpZgogI2lmIEhBVkUoQVVESVRf
VE9LRU4pCi0gICAgICAgICAgICBXVEZNb3ZlKHByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9r
ZW4pLAorICAgICAgICAgICAgV1RGTW92ZSgqYXVkaXRUb2tlbiksCisgICAgICAgICAgICBXVEZN
b3ZlKCpwcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKSwKICNlbmRpZgogICAgICAgICB9
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5jcHAKaW5kZXggYWEwZTk3M2ZlODg1MjY1MjAyYzYzMWE1NjFhZDI5OTIyOTA0OGMzOC4uOTEw
NjFlNGRiNjdiMGEyOWMyNjI0ZTIyMjRmYzdkMTM0Y2RhNzFhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTM4NSwzMyArMzg1LDE2
IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgc2luZ2xldG9uKCkgPSBudWxscHRyOwogfQogCi12
b2lkIEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1By
b3h5JiB3ZWJQcm9jZXNzUHJveHksIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBHUFVQcm9jZXNzUHJveHk6OmNy
ZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5
LCBJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhZGRTZXNzaW9uKHdlYlByb2Nl
c3NQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkpOwotCisgICAgV1RGTG9nQWx3YXlzKCJDcmVhdGUg
Z3B1IHByb2Nlc3MgY29ubmVjdGlvbiIpOwogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRp
b24gYmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwgdGhp
cyk7CiAgICAgc3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKFVzZUxhenlTdG9wOjpObyk7Ci0gICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVhdGVHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigp
LCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCksIHBhcmFtZXRlcnMgfSwgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKGF1dG8mJiBp
ZGVudGlmaWVyLCBhdXRvJiYgY29ubmVjdGlvblBhcmFtZXRlcnMpIG11dGFibGUgewotICAgICAg
ICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNz
LCAiR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogR1BVUHJvY2Vzc1By
b3h5IGRlYWxsb2NhdGVkIGR1cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQiKTsKLSAgICAg
ICAgICAgIHJldHVybiByZXBseSh7IH0pOwotICAgICAgICB9Ci0KKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OkdQVVByb2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQ
cm94eS5zZXNzaW9uSUQoKSwgY29ubmVjdGlvbklkZW50aWZpZXIsIHBhcmFtZXRlcnMgfSwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHN0b3BSZXNwb25zaXZl
bmVzc1RpbWVyKCk7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikgewotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb246IGNvbm5lY3Rpb24gaWRlbnRpZmllciBpcyBlbXB0eSIpOwotICAgICAgICAgICAg
cmV0dXJuIHJlcGx5KHsgfSk7Ci0gICAgICAgIH0KLQotI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKSB8fCBPUyhXSU5ET1dTKQotICAgICAgICByZXBseShHUFVQcm9jZXNzQ29ubmVjdGlvbklu
Zm8geyBXVEZNb3ZlKCppZGVudGlmaWVyKSB9KTsKLSAgICAgICAgVU5VU0VEX1ZBUklBQkxFKHRo
aXMpOwotI2VsaWYgT1MoREFSV0lOKQotICAgICAgICBNRVNTQUdFX0NIRUNLKE1BQ0hfUE9SVF9W
QUxJRChpZGVudGlmaWVyLT5wb3J0KCkpKTsKLSAgICAgICAgcmVwbHkoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25JbmZvIHsgSVBDOjpBdHRhY2htZW50IHsgaWRlbnRpZmllci0+cG9ydCgpLCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCB9LCB0aGlzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSwg
V1RGTW92ZShjb25uZWN0aW9uUGFyYW1ldGVycykgfSk7Ci0jZWxzZQotICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwotI2VuZGlmCiAgICAgfSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKaW5kZXggMGIwZjMwZjBjZjgxYjgxY2Rh
ZmNkY2YxM2MxMGY3MDg3MThiZTU1Ny4uZDg1MjMwNmE2NjJmMzRlNGEwZmFmMjY5ZjI0NGIzZGVj
NjY5NWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEdQVVByb2Nlc3NQcm94
eSogc2luZ2xldG9uSWZDcmVhdGVkKCk7CiAgICAgfkdQVVByb2Nlc3NQcm94eSgpOwogCi0gICAg
dm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBHUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRHUFVQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGNyZWF0ZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6QXR0YWNobWVudCYmIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAK
ICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJldHVybiBtX3Rocm90
dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDQ1OTZlZGZhMjZhYTU5ZjlkOTM5
OWNmODAyMzZmMmNkNDE2ZTY1MDguLmU5NWIzMzZhYmFmNDY0YzMyYTc3NjVlNzkxMDJlY2QzYTA0
NGYxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTUxNCw3ICs1MTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpncHVQcm9jZXNzRXhpdGVkKFBy
b2Nlc3NJRCBpZGVudGlmaWVyLCBQcm9jZXNzVGVybWluYXRpb25SZQogICAgIH0KIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHksIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBJUEM6OkF0
dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogI2lmIEVOQUJMRShJUENfVEVTVElOR19B
UEkpCiAgICAgcGFyYW1ldGVycy5pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcgPSB3ZWJQ
cm9jZXNzUHJveHkuaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CkBAIC01MjIsMjQg
KzUyMiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihX
ZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgRwogCiAjaWYgSEFWRShBVURJVF9UT0tF
TikKICAgICBwYXJhbWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4gPSBjb25m
aWd1cmF0aW9uKCkucHJlc2VudGluZ0FwcGxpY2F0aW9uUHJvY2Vzc1Rva2VuKCk7CisgICAgLy9w
YXJhbWV0ZXJzLmF1ZGl0VG9rZW4gPSB0aGlzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4o
KTsgVE9ETwogI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJzLmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFi
bGVkID0gd2ViUHJvY2Vzc1Byb3h5LmNhcHRpdmVQb3J0YWxNb2RlKCkgPT0gV2ViUHJvY2Vzc1By
b3h5OjpDYXB0aXZlUG9ydGFsTW9kZTo6RW5hYmxlZDsKLQotICAgIGVuc3VyZUdQVVByb2Nlc3Mo
KS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIHBhcmFtZXRlcnMsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwYXJhbWV0ZXJzLCB3ZWJQcm9jZXNz
UHJveHkgPSBXZWFrUHRyIHsgd2ViUHJvY2Vzc1Byb3h5IH0sIHJlcGx5ID0gV1RGTW92ZShyZXBs
eSldIChhdXRvJiBjb25uZWN0aW9uSW5mbykgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChVTkxJS0VM
WSghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9uSW5mby5pZGVu
dGlmaWVyKCkpKSkgewotICAgICAgICAgICAgLy8gUmV0cnkgb24gdGhlIG5leHQgUnVuTG9vcCBp
dGVyYXRpb24gYmVjYXVzZSB3ZSBtYXkgYmUgaW5zaWRlIHRoZSBXZWJQcm9jZXNzUG9vbCBkZXN0
cnVjdG9yLgotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBXVEZNb3ZlKHdlYlBy
b2Nlc3NQcm94eSksIHBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCByZXBseSA9IFdU
Rk1vdmUocmVwbHkpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMg
JiYgd2ViUHJvY2Vzc1Byb3h5KSB7Ci0gICAgICAgICAgICAgICAgICAgIFdFQlBST0NFU1NQT09M
X1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogRmFp
bGVkIGZpcnN0IGF0dGVtcHQsIHJldHJ5aW5nIik7Ci0gICAgICAgICAgICAgICAgICAgIGVuc3Vy
ZUdQVVByb2Nlc3MoKS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigqd2ViUHJvY2Vzc1Byb3h5LCBw
YXJhbWV0ZXJzLCBXVEZNb3ZlKHJlcGx5KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHJlcGx5KHsgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICByZXBseShjb25uZWN0aW9uSW5mbyk7Ci0gICAg
fSk7CisgICAgZW5zdXJlR1BVUHJvY2VzcygpLmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKHdl
YlByb2Nlc3NQcm94eSwgV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUocGFy
YW1ldGVycykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IDRhOWE1NTQ1ZDhiZmQ4NGNlODFmOTdmODFlNjc2YmEyYzk4NjZlMzkuLmQ0
ZGEzZGE4NDQzZjZkMTNlYzJlMzBhYjI0OGJhOGJhMTNiYTdmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzYzLDcgKzM2Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdwdVByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0lEKTsKICAgICB2b2lk
IGdwdVByb2Nlc3NFeGl0ZWQoUHJvY2Vzc0lELCBQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwog
Ci0gICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBHUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVhdGVH
UFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkF0dGFjaG1lbnQmJiwg
V2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAKICAgICBHUFVQcm9j
ZXNzUHJveHkmIGVuc3VyZUdQVVByb2Nlc3MoKTsKICAgICBHUFVQcm9jZXNzUHJveHkqIGdwdVBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2dwdVByb2Nlc3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ1OGZiZTZiODE5ZWMxODJh
ZmUyMjdjYWYxZGU3NjQwMTYzODY4MTUuLmQ3NTZhM2Q2OTNmNmE0M2Y3NDNlMjA5ZWQ2ZDBlNzVj
MzM1MWRiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cApAQCAtODE5LDkgKzgxOSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0CiB9CiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6OkdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC0+Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVy
cyksIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5jcmVhdGVHUFVQcm9jZXNz
Q29ubmVjdGlvbigqdGhpcywgV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUo
cGFyYW1ldGVycykpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0RpZEZp
bmlzaExhdW5jaGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IDQ1YWI2NmY3MDVkYTc4NGNkNGFlMWU4YjViZTIxMWVhN2E5OTc1NjQuLjRjMjJkYWIx
ODBlMDgwNzU0MGY2MDJmNGU3ZTE4MDdiYTI4MTZkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00ODIsNyArNDgyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCi0gICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVhdGVHUFVQ
cm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODhhMGY4MjY1NDZlYTM0MzE5MzY0ODlmZjIw
ZWZlM2RhYjlmZTk4My4uOGZkYjBmMWY1YmIzYTI1Y2I3Njk1NjRhODE0YWJiYzExNTk0NmIwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMzQsNyArMzQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVn
YWN5UmVjZWl2ZXIgewogICAgIEdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpIC0+IChzdHJ1
Y3QgV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIGNvbm5lY3Rpb25JbmZvKSBT
eW5jaHJvbm91cwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIEdldEdQVVByb2Nlc3ND
b25uZWN0aW9uKHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyBw
YXJhbWV0ZXJzKSAtPiAoc3RydWN0IFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIGNv
bm5lY3Rpb25JbmZvKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9u
KElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGEwMTgwMjdiZDk2YmFhYWRmNjA0NDFmYjBj
NjBiOGQ1YmZkYWMxMTMuLmQ5YWYzNzgzNDQ4OWI1NDg5M2E5ZGRlYjljMzRlZWRhNGVkNDYxZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
blBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIKICNpbmNsdWRlICJM
aWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTUzLDYg
KzU2LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgpAQCAtMTA2LDExICsxMTAsMzQgQEAgc3RhdGljIHZv
aWQgbGFuZ3VhZ2VzQ2hhbmdlZCh2b2lkKiBjb250ZXh0KQogICAgIHN0YXRpY19jYXN0PEdQVVBy
b2Nlc3NDb25uZWN0aW9uKj4oY29udGV4dCktPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoKSksIHsgfSk7CiB9CiAKLUdQVVByb2Nlc3NDb25uZWN0aW9uOjpH
UFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQotI2lm
IEVOQUJMRShWUDkpCi0gICAgLCBtX2hhc1ZQOUhhcmR3YXJlRGVjb2RlcihwYXJhbWV0ZXJzLmhh
c1ZQOUhhcmR3YXJlRGVjb2RlcikKK3N0YXRpYyBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRl
cnMgZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzKCkKK3sKKyAgICBHUFVQcm9jZXNz
Q29ubmVjdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBwYXJhbWV0ZXJzLndlYlByb2Nlc3NJZGVudGl0eSA9IFByb2Nlc3NJZGVudGl0eSB7IFByb2Nl
c3NJZGVudGl0eTo6Q3VycmVudFByb2Nlc3MgfTsKKyAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlTGFu
Z3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CiAjZW5kaWYKKyAgICBy
ZXR1cm4gcGFyYW1ldGVyczsKK30KKworUmVmUHRyPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbiYgcGFyZW50Q29ubmVjdGlv
bikKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVycyA9IElQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlQ29ubmVjdGlvbklkZW50aWZpZXJQYWlyKCk7CisgICAgaWYgKCFjb25uZWN0aW9uSWRl
bnRpZmllcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcGFyZW50Q29ubmVjdGlv
bi5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVycy0+Y2xpZW50LCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlv
blBhcmFtZXRlcnMoKSksIDApOworCisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmllcnMtPnNlcnZl
cikpKTsKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgICAgICBpZiAocGFyZW50Q29u
bmVjdGlvbi5pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSkKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5jb25uZWN0aW9uKCkuc2V0SWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCk7
CisjZW5kaWYKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK0dQVVByb2Nlc3NDb25uZWN0aW9u
OjpHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXImJiBjb25u
ZWN0aW9uSWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKSkKIHsKICAg
ICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKIApAQCAtMTMzLDYgKzE2MCwxOSBAQCBHUFVQcm9jZXNz
Q29ubmVjdGlvbjo6fkdQVVByb2Nlc3NDb25uZWN0aW9uKCkKICAgICByZW1vdmVMYW5ndWFnZUNo
YW5nZU9ic2VydmVyKHRoaXMpOwogfQogCitzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IEdQ
VVByb2Nlc3NDb25uZWN0aW9uOjphdWRpdFRva2VuKCkKK3sKKyAgICBpZiAoIXdhaXRGb3JEaWRJ
bml0aWFsaXplKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1f
YXVkaXRUb2tlbjsKK30KKwordm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6aW52YWxpZGF0ZSgp
Cit7CisgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9oYXNJbml0aWFsaXpl
ZCA9IHRydWU7Cit9CisKIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpCiB7CiAgICAgYXV0byBwcm90ZWN0b3IgPSBSZWYgeyAqdGhpcyB9OwpAQCAt
MjYwLDYgKzMwMCwzNSBAQCBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOgogICAgIHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CiB9CiAKK3ZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEluaXRp
YWxpemUoc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8+JiYgaW5mbykKK3sK
KyAgICBXVEZMb2dBbHdheXMoIkdvdCBkaWRpbml0aWFsaXplIik7CisgICAgaWYgKCFpbmZvKSB7
CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2hh
c0luaXRpYWxpemVkID0gdHJ1ZTsKKyNpZiBIQVZFKEFVRElUX1RPS0VOKQorICAgIEFTU0VSVChp
bmZvLT5hdWRpdFRva2VuKTsKKyAgICBtX2F1ZGl0VG9rZW4gPSBXVEZNb3ZlKGluZm8tPmF1ZGl0
VG9rZW4pOworI2VuZGlmCisjaWYgRU5BQkxFKFZQOSkKKyAgICBtX2hhc1ZQOUhhcmR3YXJlRGVj
b2RlciA9IGluZm8tPmhhc1ZQOUhhcmR3YXJlRGVjb2RlcjsKKyNlbmRpZgorfQorCitib29sIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOjp3YWl0Rm9yRGlkSW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFt
X2hhc0luaXRpYWxpemVkKSB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9jb25uZWN0aW9uLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6R1BVUHJvY2Vzc0Nvbm5lY3Rp
b246OkRpZEluaXRpYWxpemU+KDAsIGRlZmF1bHRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFyZXN1
bHQpIHsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5pc1ZhbGlkKCk7
Cit9CisKIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVSZW1vdGVDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgdHlwZSwgY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYgYXJndW1lbnQp
CiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucHJv
Y2Vzc0RpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCh0eXBlLCBhcmd1bWVudCk7CkBAIC0z
MTYsNiArMzg1LDE0IEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmVuYWJsZVZQOURlY29k
ZXJzKGJvb2wgZW5hYmxlVlA4RGVjb2RlciwgYm9vbCBlbmFibGVWCiAgICAgbV9lbmFibGVWUDlT
V0RlY29kZXIgPSBlbmFibGVWUDlTV0RlY29kZXI7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuYWJsZVZQOURlY29kZXJzKGVuYWJs
ZVZQOERlY29kZXIsIGVuYWJsZVZQOURlY29kZXIsIGVuYWJsZVZQOVNXRGVjb2RlciksIHsgfSk7
CiB9CisKK2Jvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Omhhc1ZQOUhhcmR3YXJlRGVjb2Rlcigp
Cit7CisgICAgaWYgKCF3YWl0Rm9yRGlkSW5pdGlhbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1faGFzVlA5SGFyZHdhcmVEZWNvZGVyOworfQorCiAjZW5kaWYKIAog
dm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6dXBkYXRlTWVkaWFDb25maWd1cmF0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aAppbmRleCA0Zjg4ZTFjZGUwNWYzMzVmOTVjNzNlNWY5YzAzNWRlZmFiNGJiNDZhLi44YmUwM2Zk
NjYyZjk0MGM5NGM2N2M1MDczOTY1OTRkMjFiZGExODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC01Myw3ICs1Myw3
IEBAIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOwogY2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjsKIGNsYXNzIFdlYlBhZ2U7Ci1zdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXph
dGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvOwogc3RydWN0
IE92ZXJyaWRlU2NyZWVuRGF0YUZvclRlc3Rpbmc7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczsKIApAQCAtNjMsMTAgKzYzLDcgQEAgY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBQcm94eTsKIAogY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVQcm9jZXNzQ29ubmVjdGlvbj4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRl
KElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVQcm9jZXNzQ29ubmVjdGlv
bihjb25uZWN0aW9uSWRlbnRpZmllciwgcGFyYW1ldGVycykpOwotICAgIH0KKyAgICBzdGF0aWMg
UmVmUHRyPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uJiAgcGFy
ZW50Q29ubmVjdGlvbik7CiAgICAgfkdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgCiAgICAg
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgp
OyB9CkBAIC03NCw3ICs3MSw3IEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAg
ICAgdm9pZCBzZXRBdWRpdFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRU
b2tlbikgeyBtX2F1ZGl0VG9rZW4gPSBhdWRpdFRva2VuOyB9Ci0gICAgc3RkOjpvcHRpb25hbDxh
dWRpdF90b2tlbl90PiBhdWRpdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpdFRva2VuOyB9
CisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKCk7CiAKICAgICB2
b2lkIHNldFByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4oc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiYmKTsKICNlbmRpZgpAQCAtMTAwLDcgKzk3LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNWUDhEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA4RGVjb2Rl
cjsgfQogICAgIGJvb2wgaXNWUDlEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlVlA5RGVjb2RlcjsgfQogICAgIGJvb2wgaXNWUFNXRGVjb2RlckVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2VuYWJsZVZQOVNXRGVjb2RlcjsgfQotICAgIGJvb2wgaGFzVlA5SGFyZHdhcmVE
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWUDlIYXJkd2FyZURlY29kZXI7IH0KKyAgICBi
b29sIGhhc1ZQOUhhcmR3YXJlRGVjb2RlcigpOwogI2VuZGlmCiAKICNpZiBIQVZFKFZJU0lCSUxJ
VFlfUFJPUEFHQVRJT05fVklFVykKQEAgLTExOSw4ICsxMTYsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgYWRkQ2xpZW50KGNvbnN0IENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoY2xpZW50
KTsgfQogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KGNvbnN0IENsaWVudCYgY2xpZW50KSB7IG1fY2xp
ZW50cy5yZW1vdmUoY2xpZW50KTsgfQogCisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRl
ZmF1bHRUaW1lb3V0ID0gM19zOwogcHJpdmF0ZToKLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyJiYpOworICAgIGJvb2wgd2FpdEZvckRpZEluaXRpYWxpemUo
KTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xp
ZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKQEAgLTEz
MSw3ICsxMzEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
OwogCisgICAgLy8gTWVzc2FnZXMuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29tbWFuZChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50
Jik7CisgICAgdm9pZCBkaWRJbml0aWFsaXplKHN0ZDo6b3B0aW9uYWw8R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25JbmZvPiYmKTsKIAogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIHZv
aWQgYmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uOjpDYXRlZ29yeVR5cGUsIFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlv
bkNsaWVudDo6QXJiaXRyYXRpb25DYWxsYmFjayYmKTsKQEAgLTE0MSw3ICsxNDMsNyBAQCBwcml2
YXRlOgogICAgIC8vIFRoZSBjb25uZWN0aW9uIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBH
UFUgcHJvY2Vzcy4KICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAg
SVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7Ci0KKyAgICBib29s
IG1faGFzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW47CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDYxOGI0Mjk3MDNjYjlkZDZiNzA1MGM5N2NiNmI5MTBl
NWUzM2E5NGYuLjlmNjUyOTRjZjc3Y2JkODZmMmJlODM3ZWY0NjIxNzFmYmJkNmE1YWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjMsNiArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gV2FudHNEaXNwYXRj
aE1lc3NhZ2UgeworICAgIERpZEluaXRpYWxpemUoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkdQVVBy
b2Nlc3NDb25uZWN0aW9uSW5mbz4gaW5mbykKICAgICBEaWRSZWNlaXZlUmVtb3RlQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSB0eXBlLCBzdHJ1Y3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbW1hbmRBcmd1bWVudCBhcmd1bWVudCkKIAogI2lmIEVOQUJMRShST1VUSU5HX0FSQklU
UkFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvLmgKaW5kZXggZTJkMDI5ZjYxODI2YjA1ZjdjNDc1M2YzM2E2ZDBj
YTM4N2E2MzRjZS4uNmFhYTAzMzI1MDQ3OTE0NTVlZjkzM2M2MzQ2YTM2ZjBkNzE3ZTc2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bkluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uSW5mby5oCkBAIC0zMiw2MCArMzIsNDEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsKLSAgICBJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbjsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbjsKICNlbmRpZgotICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0Ci0gICAgewotI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQotICAgICAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGNv
bm5lY3Rpb24uZmQoKS52YWx1ZSgpKTsKLSNlbGlmIE9TKERBUldJTikKLSAgICAgICAgcmV0dXJu
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihjb25uZWN0aW9uLnBvcnQoKSk7Ci0jZWxpZiBP
UyhXSU5ET1dTKQotICAgICAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGNv
bm5lY3Rpb24uaGFuZGxlKCkpOwotI2Vsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKTsKKyNpZiBFTkFC
TEUoVlA5KQorICAgIGJvb2wgaGFzVlA5SGFyZHdhcmVEZWNvZGVyIHsgZmFsc2UgfTsKICNlbmRp
ZgotICAgIH0KLQotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciByZWxlYXNlSWRlbnRp
ZmllcigpCi0gICAgewotI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICBhdXRv
IHJldHVyblZhbHVlID0gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGNvbm5lY3Rpb24ucmVs
ZWFzZSgpLnJlbGVhc2UoKSk7Ci0jZWxzZQotICAgICAgICBhdXRvIHJldHVyblZhbHVlID0gaWRl
bnRpZmllcigpOwotI2VuZGlmCi0gICAgICAgIGNvbm5lY3Rpb24gPSB7IH07Ci0gICAgICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKLSAgICB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgewotICAgICAgICBlbmNvZGVyIDw8IGNvbm5lY3Rpb247CiAj
aWYgSEFWRShBVURJVF9UT0tFTikKICAgICAgICAgZW5jb2RlciA8PCBhdWRpdFRva2VuOwogI2Vu
ZGlmCi0gICAgICAgIGVuY29kZXIgPDwgcGFyYW1ldGVyczsKKyNpZiBFTkFCTEUoVlA5KQorICAg
ICAgICBlbmNvZGVyIDw8IGhhc1ZQOUhhcmR3YXJlRGVjb2RlcjsKKyNlbmRpZgogICAgIH0KLSAg
ICAKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvJiBpbmZvKQorCisgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NDb25uZWN0aW9uSW5m
bz4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaW5mby5jb25uZWN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8u
YXVkaXRUb2tlbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gYXVk
aXRUb2tlbiA9IGRlY29kZXIuZGVjb2RlPHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4+KCk7
CisjZW5kaWYKKyNpZiBFTkFCTEUoVlA5KQorICAgICAgICBhdXRvIGhhc1ZQOUhhcmR3YXJlRGVj
b2RlciA9IGRlY29kZXIuZGVjb2RlPGJvb2w+KCk7CisjZW5kaWYKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8geworI2lmIEhBVkUoQVVESVRfVE9LRU4p
CisgICAgICAgICAgICAgICAgKmF1ZGl0VG9rZW4sCisjZW5kaWYKKyNpZiBFTkFCTEUoVlA5KQor
ICAgICAgICAgICAgICAgICpoYXNWUDlIYXJkd2FyZURlY29kZXIsCiAjZW5kaWYKLSAgICAgICAg
c3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVy
cz4gcGFyYW1ldGVyczsKLSAgICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwotICAgICAgICBp
ZiAoIXBhcmFtZXRlcnMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGluZm8u
cGFyYW1ldGVycyA9IFdURk1vdmUoKnBhcmFtZXRlcnMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggMzk1M2U5ZWQ4MzRiOTQ4ZmY5ZTIyZTczMmRhYjA1MjUyMzU1YTZmNS4uOThm
MzgxNDlmMGI1MDVmZmIxNGY1NTFkMTkyNWQyMWRiZWFhMWMyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTI5Miw1NSArMTI5MiwxMyBAQCBXZWJMb2FkZXJT
dHJhdGVneSYgV2ViUHJvY2Vzczo6d2ViTG9hZGVyU3RyYXRlZ3koKQogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMoR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzJikKLXsKLX0KLSNlbmRpZgotCi1HUFVQcm9jZXNzQ29ubmVjdGlv
bkluZm8gV2ViUHJvY2Vzczo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQotewotICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotICAgIHBsYXRmb3JtSW5pdGlhbGl6ZUdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycyhwYXJhbWV0ZXJzKTsKLQotICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29w
ZSB1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwotCi0gICAgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25JbmZvIGNvbm5lY3Rpb25JbmZvOwotICAgIGlmICghY29ubmVjdGlvbi5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihwYXJhbWV0ZXJz
KSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OlJl
cGx5KGNvbm5lY3Rpb25JbmZvKSwgMCkpIHsKLSAgICAgICAgLy8gSWYgd2UgZmFpbGVkIHRoZSBm
aXJzdCB0aW1lLCByZXRyeSBvbmNlLiBUaGUgYXR0YWNobWVudCBtYXkgaGF2ZSBiZWNvbWUgaW52
YWxpZAotICAgICAgICAvLyBiZWZvcmUgaXQgd2FzIHJlY2VpdmVkIGJ5IHRoZSB3ZWIgcHJvY2Vz
cyBpZiB0aGUgbmV0d29yayBwcm9jZXNzIGNyYXNoZWQuCi0gICAgICAgIGlmICghY29ubmVjdGlv
bi5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVj
dGlvbihwYXJhbWV0ZXJzKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OlJlcGx5KGNvbm5lY3Rpb25JbmZvKSwgMCkpCi0gICAgICAgICAgICBmYWls
ZWRUb1NlbmRTeW5jTWVzc2FnZSgpOwotICAgIH0KLQotICAgIHJldHVybiBjb25uZWN0aW9uSW5m
bzsKLX0KLQogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFdlYlByb2Nlc3M6OmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKICAgICAvLyBJZiB3ZSd2ZSBsb3N0IG91ciBjb25uZWN0aW9uIHRvIHRoZSBHUFUgcHJvY2Vz
cyAoZS5nLiBpdCBjcmFzaGVkKSB0cnkgdG8gcmUtZXN0YWJsaXNoIGl0LgogICAgIGlmICghbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbikgewotICAgICAgICBhdXRvIGNvbm5lY3Rpb25JbmZvID0gZ2V0
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpOwotCi0gICAg
ICAgIC8vIFJldHJ5IG9uY2UgaWYgdGhlIElQQyB0byBnZXQgdGhlIGNvbm5lY3Rpb25JZGVudGlm
aWVyIHN1Y2NlZWRlZCBidXQgdGhlIGNvbm5lY3Rpb25JZGVudGlmaWVyIHdlIHJlY2VpdmVkCi0g
ICAgICAgIC8vIGlzIGludmFsaWQuIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIEdQVSBwcm9j
ZXNzIGhhcyBjcmFzaGVkLgotICAgICAgICBpZiAoIUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmll
cklzVmFsaWQoY29ubmVjdGlvbkluZm8uaWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgIGNvbm5l
Y3Rpb25JbmZvID0gZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCkpOwotCi0gICAgICAgIGlmICghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxp
ZChjb25uZWN0aW9uSW5mby5pZGVudGlmaWVyKCkpKQotICAgICAgICAgICAgQ1JBU0goKTsKLQot
ICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZShjb25uZWN0aW9uSW5mby5yZWxlYXNlSWRlbnRpZmllcigpLCBjb25uZWN0aW9uSW5mby5w
YXJhbWV0ZXJzKTsKLSNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgICAgICBBU1NFUlQoY29ubmVj
dGlvbkluZm8uYXVkaXRUb2tlbik7Ci0gICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnNl
dEF1ZGl0VG9rZW4oV1RGTW92ZShjb25uZWN0aW9uSW5mby5hdWRpdFRva2VuKSk7Ci0jZW5kaWYK
LSNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQotICAgICAgICBpZiAocGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+aWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkpCi0gICAgICAgICAg
ICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2V0SWdub3JlSW52YWxpZE1l
c3NhZ2VGb3JUZXN0aW5nKCk7Ci0jZW5kaWYKKyAgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24gPSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKCpwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpKTsKIAogICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsK
ICAgICAgICAgICAgIC8vIElmIHBhZ2UgaXMgbnVsbCwgdGhlbiBpdCBpcyBjdXJyZW50bHkgYmVp
bmcgY29uc3RydWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBj
NzU3N2I5YWE5YjYwMTQ2NDU2YTQ2NTQwYzQwYTNjYmQ3YWYxYmE5Li5jYTA2NjQ0ZTk2MzQ5Mzk3
NTliZjljMTY3ODA3MmUwYzlmMDE5MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTE0Myw4ICsxNDMsNiBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdy
b3VwUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzU3VwcGxlbWVudDsKIAotc3RydWN0IEdQVVByb2Nl
c3NDb25uZWN0aW9uSW5mbzsKLXN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM7
CiBzdHJ1Y3QgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOwogc3RydWN0IFVzZXJNZXNz
YWdlOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC01ODYsMTEgKzU4
NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBzdGF0aWMgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25JbmZvIGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHN0
YXRpYyB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVy
cyhHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhQnVmZmVyaW5nKCk7CiAgICAgdm9pZCBy
ZXN1bWVBbGxNZWRpYUJ1ZmZlcmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggNjg2MzFlZmUyYTQ5ZTU3ODZkYzJmYjVh
ZTZmM2I1MzZkYTI3YjdlZi4uOTIyZGU1M2U2MjVmYzA4YzNlNzgyZGJjYzJiZjdkOGFiNDBlZDlh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgiCi0jaW1wb3J0ICJHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
LmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKICNpbXBvcnQgIkxv
Z0luaXRpYWxpemF0aW9uLmgiCkBAIC0xMjQ2LDE1ICsxMjQ1LDYgQEAgdm9pZCBXZWJQcm9jZXNz
Ojp3YWl0Rm9yUGVuZGluZ1Bhc3RlYm9hcmRXcml0ZXNUb0ZpbmlzaChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmQKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi12b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZUdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyhH
UFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgcGFyYW1l
dGVycy53ZWJQcm9jZXNzSWRlbnRpdHkgPSBQcm9jZXNzSWRlbnRpdHkgeyBQcm9jZXNzSWRlbnRp
dHk6OkN1cnJlbnRQcm9jZXNzIH07Ci0KLSAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2Vz
ID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Ci19Ci0jZW5kaWYKLQogI2lmIFBM
QVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c3lzdGVtV2lsbFBvd2VyT24oKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458799</attachid>
            <date>2022-05-04 08:35:07 -0700</date>
            <delta_ts>2022-05-04 08:46:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239905-20220504183505.patch</filename>
            <type>text/plain</type>
            <size>49889</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNmOWY1MzU4YTM1MmViNzFl
MDY5MTliOTBhMDNjYjQ2NzAxMDU2NzAuLmQ0NjI3YmZhM2VkNjRiOTFjZDI2ZjkzMWEzNmU1NDJk
YWFjYzY3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMjItMDUtMDQgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW5nIHRvIEdQ
VSBwcm9jZXNzIG1heSBoYW5nIGlmIFVJIHByb2Nlc3Mgc2VuZHMgc3luYyBtZXNzYWdlIHNpbXVs
dGFuZW91c2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmV2aW91c2x5LCBlc3RhYmxpc2hpbmcgR1BVIHByb2Nlc3MgY29ubmVjdGlvbiB3b3VsZCBi
ZSBhIHN5bmMgbWVzc2FnZToKKyAgICAgICAgIDEuIFdQIC0+IFVJIHN5bmMgR2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb24KKyAgICAgICAgIDIuIFVJIC0+IEdQVVAgYXN5bmMgQ3JlYXRlR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcworICAgICAgICAgMy4gR1BVUCAtPiBVSSBhc3luYyByZXBseSBDcmVh
dGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCisgICAgICAgICA0LiBVSSAtPiBXUCBzeW5jIHJl
cGx5IEdldEdQVVByb2Nlc3NDb25uZWN0aW9uCisKKyAgICAgICAgSWYgVUkgd291bGQgc2VuZCBh
IG1lc3NhZ2UgdG8gV1AgYWZ0ZXIgc3RlcCAzIGFuZCB3YWl0IGZvciByZXBseSwgdGhpcworICAg
ICAgICB3b3VsZCBuZXZlciBjb21lIGFzIFdQIHdvdWxkIGJlIHdhaXRpbmcgZm9yIHRoZSBzeW5j
IHJlcGx5IGZvciBHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbi4KKworICAgICAgICBUaGlzIHdvdWxk
IGhhcHBlbiBmb3IgZXhhbXBsZSB3aXRoIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRo
Q29tcGxldGlvbkhhbmRsZXIsCisgICAgICAgIHdoaWNoIHdvdWxkIHNlbmQgSGFuZGxlQXV0b2Nv
cnJlY3Rpb25Db250ZXh0UmVxdWVzdCBhbmQgd2FpdCBmb3IKKyAgICAgICAgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0IG1lc3NhZ2VzLgorCisgICAg
ICAgIE1pdGlnYXRlIHRoaXMgYnkgY3JlYXRpbmcgdGhlIEdQVSBjb25uZWN0aW9uIGluIFdQIGFu
ZCBzZW5kaW5nCisgICAgICAgIHRoYXQgdG8gR1BVUCB0aHJvdWdoIFVJIGluIGFuIGFzeW5jIG1l
c3NhZ2UuIFRoaXMgd2F5IFdQIGRvZXMgbm90IGJsb2NrIG9uIHRoZSBHUFVQCisgICAgICAgIGNv
bm5lY3Rpb24gaW5pdGlhbGl6YXRpb24uIFNlbmQgdGhlIEdQVVAgY29ubmVjdGlvbiBpbml0aWFs
aXphdGlvbiByZXN1bHQsIGF1ZGl0IHRva2VuIGFuZAorICAgICAgICB2cDkgSFcgZGVjb2RlciBw
cmVzZW5jZSwgYXMgdGhlIGZpcnN0IHVzZXIgbWVzc2FnZSB0aHJvdWdoIHRoZSBuZXcgY29ubmVj
dGlvbi4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmFzQ29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVVByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9u
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9HUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpH
UFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNz
UHJveHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVHUFVQcm9jZXNz
Q29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpHUFVQcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjphdWRpdFRv
a2VuKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkSW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjp3YWl0Rm9yRGlkSW5pdGlh
bGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpoYXNWUDlIYXJk
d2FyZURlY29kZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbzo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbToKKwogMjAyMi0wNS0wMyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxvZ2dpbmcgcmVsYXRlZCB0byBMYXVuY2ggU2Vydmlj
ZXMgZGF0YWJhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2NTEyYzIzMjE3NWQwYjRlODU3MTg1YTNiZjc2
OTU5ZmI1MzRlNzE3Li42YmIwOTU5ZjBiMWU3ZjZhNGM5M2Q3MGEyMzIyOGMyNjJjYWE5MWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkdQVVByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCIK
ICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc01lc3Nh
Z2VzLmgiCkBAIC0yMzIsMTMgKzIzMywxMyBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAotUmVmPEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0
ZShHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3Ms
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciYmIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
Z3B1UHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
ZXNzaW9uSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdVByb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpKSk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotICAgIDogbV9jb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRp
ZmllciwgKnRoaXMpKQorR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXImJiBjb25uZWN0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKKyAgICA6IG1fY29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZp
ZXIsICp0aGlzKSkKICAgICAsIG1fZ3B1UHJvY2VzcyhncHVQcm9jZXNzKQogICAgICwgbV93ZWJQ
cm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKICAgICAsIG1fd2ViUHJvY2Vz
c0lkZW50aXR5KFdURk1vdmUocGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHkpKQpAQCAtMjc4
LDcgKzI3OSwxNSBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogICAgIC8vIHJlcGx5IGZyb20g
dGhlIEdQVSBwcm9jZXNzLCB3aGljaCB3b3VsZCBiZSB1bnNhZmUuCiAgICAgbV9jb25uZWN0aW9u
LT5zZXRPbmx5U2VuZE1lc3NhZ2VzQXNEaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5V2hl
blByb2Nlc3NpbmdTdWNoQU1lc3NhZ2UodHJ1ZSk7CiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7
Ci0KKyAgICBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyBpbmZvIHsKKyNpZiBIQVZF
KEFVRElUX1RPS0VOKQorICAgICAgICBncHVQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPmdldEF1ZGl0VG9rZW4oKSwKKyNlbmRpZgorI2lmIEVOQUJMRShWUDkpCisgICAgICAgIFdl
YkNvcmU6OnZwOUhhcmR3YXJlRGVjb2RlckF2YWlsYWJsZSgpCisjZW5kaWYKKyAgICB9OworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRpZElu
aXRpYWxpemUoaW5mbyksIDApOwogICAgICsrZ09iamVjdENvdW50Rm9yVGVzdGluZzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKaW5kZXggNWYzOTc1YmYyN2Y3ZjBmYzFjMjgxM2QxZDU3NWQ4NmI5YWUyZDcxMS4uN2Jk
OGU5ODQ3ODExODg5NWNhZDExZjk4YjEzY2EyZmQ5YWM0MzNkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMjAs
NyArMTIwLDcgQEAgY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgICwgcHVibGlj
IFdlYkNvcmU6Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGllbnQKICAgICAsIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IGNyZWF0ZShHUFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IGNyZWF0ZShHUFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXImJiwgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZpcnR1YWwgfkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKTsKIAogICAgIHVzaW5nIFdlYkNvcmU6Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGllbnQ6
OndlYWtQdHJGYWN0b3J5OwpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CisgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXImJiwgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAg
ICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciYgcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCBkOWU3
NzVmZGE2ODQ3MzA4NDE5OWE3YjJmYmJjOTVlOTI5MWE0YjAwLi45ZjM4OTg2MTVkNzNjMGIxZDkw
ZjNiM2I3N2E0YTgwYzVkMzIwYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nl
c3MuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxp
emF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJHUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgpAQCAtMTE2LDE2ICsxMTUsMjcgQEAgdm9p
ZCBHUFVQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGUKICAgICBkaWRSZWNlaXZlR1BVUHJvY2Vzc01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzczo6Y3JlYXRlR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0
dGFjaG1lbnQ+JiYsIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RhdGljIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBhc0Nvbm5lY3Rpb25JZGVudGlmaWVyKElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25I
YW5kbGUpCiB7CisjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgcmV0dXJuIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciB7IGNvbm5lY3Rpb25IYW5kbGUucmVsZWFzZSgpLnJlbGVh
c2UoKSB9OworI2VsaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgeyBjb25uZWN0aW9uSGFuZGxlLnBvcnQoKSB9OworI2VsaWYgT1MoV0lORE9XUykK
KyAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHsgY29ubmVjdGlvbkhhbmRs
ZS5oYW5kbGUoKSB9OworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgeyB9OworI2VuZGlmCit9CisKK3ZvaWQgR1BVUHJv
Y2Vzczo6Y3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6QXR0YWNo
bWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgV1RGTG9nQWx3YXlzKCJHT1QgQ3JlYXRlIGdwdSBwcm9jZXNzIGNvbm5l
Y3Rpb24iKTsKKwogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICIlcCAtIEdQVVByb2Nlc3M6OmNy
ZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2
NCwgdGhpcywgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAgICBhdXRvIGNvbm5lY3Rpb25JZGVu
dGlmaWVycyA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ29ubmVjdGlvbklkZW50aWZpZXJQYWly
KCk7Ci0gICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcnMpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9LCB7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgYXV0byBu
ZXdDb25uZWN0aW9uID0gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBp
ZGVudGlmaWVyLCBjb25uZWN0aW9uSWRlbnRpZmllcnMtPnNlcnZlciwgc2Vzc2lvbklELCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKTsKKyAgICBhdXRvIG5ld0Nvbm5lY3Rpb24gPSBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIHNlc3Npb25JRCwgYXNDb25u
ZWN0aW9uSWRlbnRpZmllcihXVEZNb3ZlKGNvbm5lY3Rpb25JZGVudGlmaWVyKSksIFdURk1vdmUo
cGFyYW1ldGVycykpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHJlZmFjdG9yIGNvZGUgdG8gZ28gZnJvbSBXZWJQcm9jZXNzIC0+IEdQVVByb2Nl
c3MgLT4gVUlQcm9jZXNzIHdoZW4gZ2V0VXNlck1lZGlhIGlzIGNhbGxlZCBpbnN0ZWFkIG9mIGdv
aW5nIGZyb20gV2ViUHJvY2VzcyAtPiBVSVByb2Nlc3MgZGlyZWN0bHkuCkBAIC0xNDIsMTEgKzE1
Miw4IEBAIHZvaWQgR1BVUHJvY2Vzczo6Y3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVuCiAgICAgQVNTRVJUKCFtX3dlYlByb2Nlc3ND
b25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUobmV3Q29ubmVjdGlvbikpOwogCi0gICAgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMgY29ubmVjdGlvblBhcmFt
ZXRlcnM7Ci0jaWYgRU5BQkxFKFZQOSkKLSAgICBjb25uZWN0aW9uUGFyYW1ldGVycy5oYXNWUDlI
YXJkd2FyZURlY29kZXIgPSBXZWJDb3JlOjp2cDlIYXJkd2FyZURlY29kZXJBdmFpbGFibGUoKTsK
LSNlbmRpZgotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZp
ZXJzLT5jbGllbnQpLCBXVEZNb3ZlKGNvbm5lY3Rpb25QYXJhbWV0ZXJzKSk7CisKKyAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIEdQVVByb2Nlc3M6OnJlbW92ZUdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCmluZGV4IDFlMDdhZDEzYThkOTYwZDVlYTM0
MWNjOTJkYWI3NzZiOWFkZGRkYmMuLjgzN2E2N2E0OWRhM2Q5ZGUzNjFlNDEzZmJlN2YwMmRhMTAx
NTNjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaApAQCAtNTksNyArNTks
NiBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci1zdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Q
YXJhbWV0ZXJzOwogc3RydWN0IEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3Qg
R1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzOwpAQCAtMTM5LDcgKzEzOCw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBpbml0aWFsaXplR1BVUHJvY2Vz
cyhHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBHUFVQcm9jZXNzQ29ubmVj
dGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCwgSVBDOjpBdHRhY2htZW50JiYsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVy
cyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgYWRkU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCwgR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjkwYTQ4NzliNGUxZDE0YjgxNjcx
OGQ4ODIyMGI2YzJhOGJjNzM3My4uZGNmMTExZjdhM2M2M2I0MmE0N2M5YTViZWU0ZTE0YTVjMDgx
YzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIG1lc3NhZ2VzIC0+IEdQVVByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIEluaXRpYWxpemVHUFVQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAotICAgIENy
ZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYktp
dDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+IChzdGQ6Om9w
dGlvbmFsPElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJL
aXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRl
cnMpCisgICAgQ3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJ
UEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OkdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoKQogCiAgICAgUHJlcGFy
ZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50KSAtPiAoKQogICAgIFByb2Nlc3NE
aWRSZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0dQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZWVhMThhZWRjYjkwZDVkZTRiMTBlY2VmNzIyODk5Y2Yy
Zjc3Y2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgPHd0Zi9NYWNo
U2VuZFJpZ2h0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewotI2lmIEVOQUJMRShWUDkpCi0gICAg
Ym9vbCBoYXNWUDlIYXJkd2FyZURlY29kZXIgeyBmYWxzZSB9OwotI2VuZGlmCi0KLSAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAgewotI2lmIEVOQUJMRShW
UDkpCi0gICAgICAgIGVuY29kZXIgPDwgaGFzVlA5SGFyZHdhcmVEZWNvZGVyOwotI2VuZGlmCi0g
ICAgfQotCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0
aWFsaXphdGlvblBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCi0gICAg
ewotI2lmIEVOQUJMRShWUDkpCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzVlA5SGFy
ZHdhcmVEZWNvZGVyOwotICAgICAgICBkZWNvZGVyID4+IGhhc1ZQOUhhcmR3YXJlRGVjb2RlcjsK
LSAgICAgICAgaWYgKCFoYXNWUDlIYXJkd2FyZURlY29kZXIpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotI2VuZGlmCi0KLSAgICAgICAgcmV0dXJuIEdQVVByb2Nlc3NDb25uZWN0
aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgICAgICAg
ICAgV1RGTW92ZSgqaGFzVlA5SGFyZHdhcmVEZWNvZGVyKQotI2VuZGlmCi0gICAgICAgIH07Ci0g
ICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29u
bmVjdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycy5oCmluZGV4IDExODllYTllZjVkOGM5YmRlZTU4ZmVlOTdjODJhN2U5
NzMwZmE4NzkuLmQ5MjM1N2Q3MjFjMDJlMDljZDJjYjBiODM2OTYwMWI5ZjE3M2I4NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycy5oCkBAIC01OSwzMyArNTksMTcgQEAgc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFy
YW1ldGVycyB7CiAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzQ29ubmVjdGlv
blBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGl0eT4gd2ViUHJvY2Vzc0lkZW50
aXR5OwotICAgICAgICBkZWNvZGVyID4+IHdlYlByb2Nlc3NJZGVudGl0eTsKLSAgICAgICAgaWYg
KCF3ZWJQcm9jZXNzSWRlbnRpdHkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlTGFuZ3VhZ2Vz
OwotICAgICAgICBkZWNvZGVyID4+IG92ZXJyaWRlTGFuZ3VhZ2VzOwotICAgICAgICBpZiAoIW92
ZXJyaWRlTGFuZ3VhZ2VzKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkOwotICAg
ICAgICBkZWNvZGVyID4+IGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkOwotICAgICAgICBpZiAo
IWlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQorICAgICAgICBhdXRvIHdlYlByb2Nlc3NJZGVudGl0eSA9IGRlY29kZXIuZGVjb2Rl
PFdlYkNvcmU6OlByb2Nlc3NJZGVudGl0eT4oKTsKKyAgICAgICAgYXV0byBvdmVycmlkZUxhbmd1
YWdlcyA9IGRlY29kZXIuZGVjb2RlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBhdXRvIGlz
Q2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkID0gZGVjb2Rlci5kZWNvZGU8Ym9vbD4oKTsKICNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9y
ZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsKLSAgICAgICAgZGVjb2RlciA+PiBpZ25vcmVJbnZh
bGlkTWVzc2FnZUZvclRlc3Rpbmc7Ci0gICAgICAgIGlmICghaWdub3JlSW52YWxpZE1lc3NhZ2VG
b3JUZXN0aW5nKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYXV0
byBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcgPSBkZWNvZGVyLmRlY29kZTxib29sPigp
OwogI2VuZGlmCi0KICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgICAgICBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+IHByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW47Ci0gICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbikpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhdXRvIHByZXNlbnRpbmdB
cHBsaWNhdGlvbkF1ZGl0VG9rZW4gPSBkZWNvZGVyLmRlY29kZTxzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+PigpOwogI2VuZGlmCisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgewogICAgICAgICAgICAgV1RGTW92ZSgqd2ViUHJvY2Vz
c0lkZW50aXR5KSwKQEAgLTk1LDcgKzc5LDcgQEAgc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycyB7CiAgICAgICAgICAgICAqaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5n
LAogI2VuZGlmCiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICAgICAgICAgIFdURk1vdmUocHJl
c2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbiksCisgICAgICAgICAgICBXVEZNb3ZlKCpwcmVz
ZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKSwKICNlbmRpZgogICAgICAgICB9OwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKaW5k
ZXggMTc3OGQ2MTUxYzlkMmFjOTc4YzA0MzI3ZTBlMTc1MTFjYTc1MmNkNS4uMzU5MzE4MzM1N2Q5
ZmM3Njc5MWFjMWJjZWRiNDllZDUwNzM0YzBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCi0jaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMzY5LDMzICszNjgsMTYg
QEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OnByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQogICAgICAgICBzaW5nbGV0b24oKSA9IG51bGxwdHI7CiB9CiAKLXZv
aWQgR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJv
eHkmIHdlYlByb2Nlc3NQcm94eSwgY29uc3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIEdQVVByb2Nlc3NQcm94eTo6Y3Jl
YXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHks
IElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGFkZFNlc3Npb24od2ViUHJvY2Vz
c1Byb3h5LndlYnNpdGVEYXRhU3RvcmUoKSk7Ci0KKyAgICBXVEZMb2dBbHdheXMoIkNyZWF0ZSBn
cHUgcHJvY2VzcyBjb25uZWN0aW9uIik7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIEdQVVByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0aGlz
KTsKICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoVXNlTGF6eVN0b3A6Ok5vKTsKLSAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkdQVVByb2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCks
IHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSwgcGFyYW1ldGVycyB9LCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYXV0byYmIGlk
ZW50aWZpZXIsIGF1dG8mJiBjb25uZWN0aW9uUGFyYW1ldGVycykgbXV0YWJsZSB7Ci0gICAgICAg
IGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3Ms
ICJHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uOiBHUFVQcm9jZXNzUHJv
eHkgZGVhbGxvY2F0ZWQgZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCIpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlcGx5KHsgfSk7Ci0gICAgICAgIH0KLQorICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1By
b3h5LnNlc3Npb25JRCgpLCBjb25uZWN0aW9uSWRlbnRpZmllciwgcGFyYW1ldGVycyB9LCBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3RvcFJlc3BvbnNpdmVu
ZXNzVGltZXIoKTsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29u
bmVjdGlvbjogY29ubmVjdGlvbiBpZGVudGlmaWVyIGlzIGVtcHR5Iik7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVwbHkoeyB9KTsKLSAgICAgICAgfQotCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpIHx8IE9TKFdJTkRPV1MpCi0gICAgICAgIHJlcGx5KEdQVVByb2Nlc3NDb25uZWN0aW9uSW5m
byB7IFdURk1vdmUoKmlkZW50aWZpZXIpIH0pOwotICAgICAgICBVTlVTRURfVkFSSUFCTEUodGhp
cyk7Ci0jZWxpZiBPUyhEQVJXSU4pCi0gICAgICAgIE1FU1NBR0VfQ0hFQ0soTUFDSF9QT1JUX1ZB
TElEKGlkZW50aWZpZXItPnBvcnQoKSkpOwotICAgICAgICByZXBseShHUFVQcm9jZXNzQ29ubmVj
dGlvbkluZm8geyBJUEM6OkF0dGFjaG1lbnQgeyBpZGVudGlmaWVyLT5wb3J0KCksIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EIH0sIHRoaXMtPmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpLCBX
VEZNb3ZlKGNvbm5lY3Rpb25QYXJhbWV0ZXJzKSB9KTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0jZW5kaWYKICAgICB9LCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVz
c2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCAwYjBmMzBmMGNmODFiODFjZGFm
Y2RjZjEzYzEwZjcwODcxOGJlNTU3Li5kODUyMzA2YTY2MmYzNGU0YTBmYWYyNjlmMjQ0YjNkZWM2
Njk1ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR1BVUHJvY2Vzc1Byb3h5
KiBzaW5nbGV0b25JZkNyZWF0ZWQoKTsKICAgICB+R1BVUHJvY2Vzc1Byb3h5KCk7CiAKLSAgICB2
b2lkIGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dEdQVVByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgY3JlYXRlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpBdHRhY2htZW50JiYgY29u
bmVjdGlvbklkZW50aWZpZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmKTsKIAog
ICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0
bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZGVlOGY0NmU0MGM3OTg5MmNmNzZl
MjA0MzAwOTRiYmRiMWQ3OWM2Zi4uNDVlMzU2ZjE2NWIwNzg3YzUxZDE2NGFkZWFmMGM4M2U5NjFm
YTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
NDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCIKICNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJHYW1lcGFkRGF0YS5oIgogI2lu
Y2x1ZGUgIkhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgiCkBAIC01MTQsNyAr
NTEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z3B1UHJvY2Vzc0V4aXRlZChQcm9jZXNzSUQg
aWRlbnRpZmllciwgUHJvY2Vzc1Rlcm1pbmF0aW9uUmUKICAgICB9CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJv
Y2Vzc1Byb3h5LCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVHUFVQcm9jZXNzQ29u
bmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgSVBDOjpBdHRhY2htZW50
JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogICAg
IHBhcmFtZXRlcnMuaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nID0gd2ViUHJvY2Vzc1By
b3h5Lmlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpOwpAQCAtNTI1LDIxICs1MjQsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNz
UHJveHkmIHdlYlByb2Nlc3NQcm94eSwgRwogI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJzLmlzQ2Fw
dGl2ZVBvcnRhbE1vZGVFbmFibGVkID0gd2ViUHJvY2Vzc1Byb3h5LmNhcHRpdmVQb3J0YWxNb2Rl
KCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZTo6RW5hYmxlZDsKLQotICAg
IGVuc3VyZUdQVVByb2Nlc3MoKS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJv
eHksIHBhcmFtZXRlcnMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwYXJh
bWV0ZXJzLCB3ZWJQcm9jZXNzUHJveHkgPSBXZWFrUHRyIHsgd2ViUHJvY2Vzc1Byb3h5IH0sIHJl
cGx5ID0gV1RGTW92ZShyZXBseSldIChhdXRvJiBjb25uZWN0aW9uSW5mbykgbXV0YWJsZSB7Ci0g
ICAgICAgIGlmIChVTkxJS0VMWSghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChj
b25uZWN0aW9uSW5mby5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICAgICAgLy8gUmV0cnkgb24g
dGhlIG5leHQgUnVuTG9vcCBpdGVyYXRpb24gYmVjYXVzZSB3ZSBtYXkgYmUgaW5zaWRlIHRoZSBX
ZWJQcm9jZXNzUG9vbCBkZXN0cnVjdG9yLgotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3ZWJQcm9jZXNzUHJv
eHkgPSBXVEZNb3ZlKHdlYlByb2Nlc3NQcm94eSksIHBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
ICAgICBpZiAod2Vha1RoaXMgJiYgd2ViUHJvY2Vzc1Byb3h5KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJnZXRHUFVQcm9j
ZXNzQ29ubmVjdGlvbjogRmFpbGVkIGZpcnN0IGF0dGVtcHQsIHJldHJ5aW5nIik7Ci0gICAgICAg
ICAgICAgICAgICAgIGVuc3VyZUdQVVByb2Nlc3MoKS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigq
d2ViUHJvY2Vzc1Byb3h5LCBwYXJhbWV0ZXJzLCBXVEZNb3ZlKHJlcGx5KSk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlcGx5KHsgfSk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICByZXBseShjb25u
ZWN0aW9uSW5mbyk7Ci0gICAgfSk7CisgICAgZW5zdXJlR1BVUHJvY2VzcygpLmNyZWF0ZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwgV1RGTW92ZShjb25uZWN0aW9uSWRlbnRp
ZmllciksIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRhOWE1NTQ1ZDhiZmQ4NGNlODFmOTdmODFl
Njc2YmEyYzk4NjZlMzkuLmQ0ZGEzZGE4NDQzZjZkMTNlYzJlMzBhYjI0OGJhOGJhMTNiYTdmMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzYzLDcgKzM2
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdwdVByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoUHJv
Y2Vzc0lEKTsKICAgICB2b2lkIGdwdVByb2Nlc3NFeGl0ZWQoUHJvY2Vzc0lELCBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24pOwogCi0gICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmLCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7
CisgICAgdm9pZCBjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJ
UEM6OkF0dGFjaG1lbnQmJiwgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMm
Jik7CiAKICAgICBHUFVQcm9jZXNzUHJveHkmIGVuc3VyZUdQVVByb2Nlc3MoKTsKICAgICBHUFVQ
cm9jZXNzUHJveHkqIGdwdVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2dwdVByb2Nlc3MuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGQ1OGZiZTZiODE5ZWMxODJhZmUyMjdjYWYxZGU3NjQwMTYzODY4MTUuLmQ3NTZhM2Q2OTNmNmE0
M2Y3NDNlMjA5ZWQ2ZDBlNzVjMzM1MWRiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtODE5LDkgKzgxOSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0CiB9CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgbV9wcm9jZXNzUG9vbC0+Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMs
IFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3Byb2Nlc3NQb29s
LT5jcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbigqdGhpcywgV1RGTW92ZShjb25uZWN0aW9uSWRl
bnRpZmllciksIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z3B1UHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDQ1YWI2NmY3MDVkYTc4NGNkNGFlMWU4YjViZTIxMWVh
N2E5OTc1NjQuLjRjMjJkYWIxODBlMDgwNzU0MGY2MDJmNGU3ZTE4MDdiYTI4MTZkOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00ODIsNyArNDgyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVw
bHkmJik7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgdm9pZCBnZXRHUFVQcm9jZXNz
Q29ubmVjdGlvbihHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7Cisg
ICAgdm9pZCBjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQmJiBjb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMm
Jik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODhhMGY4MjY1
NDZlYTM0MzE5MzY0ODlmZjIwZWZlM2RhYjlmZTk4My4uOGZkYjBmMWY1YmIzYTI1Y2I3Njk1NjRh
ODE0YWJiYzExNTk0NmIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzQsNyArMzQsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpIC0+IChzdHJ1Y3QgV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
IGNvbm5lY3Rpb25JbmZvKSBTeW5jaHJvbm91cwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQot
ICAgIEdldEdQVVByb2Nlc3NDb25uZWN0aW9uKHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoc3RydWN0IFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb25JbmZvIGNvbm5lY3Rpb25JbmZvKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwg
c3RydWN0IFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxYjJjNGFjM2E5YTMwYzM5YjA3NDNj
NWE0OTZhM2FlMzYxZTllNjY5Li5iNjVlODRjZGIxNTkxZDMxODFmODJhZjRiNDdkYTU0OTFkZjky
Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTgzNCw3ICs4MzQsNiBAQAogCQkzRkIwOEU0MzFGNjBCMjQwMDA1RTUzMTIgLyogaU9T
LnhjYXNzZXRzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzRkIwOEU0MjFGNjBCMjQwMDA1RTUzMTIgLyogaU9TLnhjYXNzZXRzICovOyB9OwogCQkzRkZE
REI5NjFGNTc3RjQ4MDA1MEU1OTMgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y5MTVDMEYx
RjU2NERFRDAwMTgzQ0U5IC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCAqLzsg
fTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYw
MDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07Ci0JCTQxMEYwRDRDMjcwMUVGRjkwMEY5NkRGQyAv
KiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwRjBENEIyNzAxRUZFQTAw
Rjk2REZDIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgg
Ki87IH07CiAJCTQxMUE4RERCMjBEREQxQUMwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQThERDky
MEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYz
IC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3Jr
LmggKi87IH07CiAJCTQxMUI4OUM5MjdCMkI3NUQwMEY5RUJEMyAvKiBXS1F1ZXJ5UGVybWlzc2lv
blJlc3VsdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTFCODlDNzI3QjJCNzVDMDBGOUVCRDMgLyogV0tRdWVyeVBlcm1pc3Npb25SZXN1
bHRDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00NDI1LDcgKzQ0MjQsNiBAQAogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyog
UlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3Jr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMEJBMTM5MjU3MTM1RjIwMDJFMkY4
QSAvKiBOZXR3b3JrUlRDVENQU29ja2V0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
ZXR3b3JrUlRDVENQU29ja2V0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMEJBMTNBMjU3MTM1RjIwMDJFMkY4QSAvKiBOZXR3b3JrUlRDVENQU29ja2V0Q29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya1JUQ1RDUFNvY2tldENvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQxMEYwRDRCMjcwMUVGRUEwMEY5NkRGQyAvKiBHUFVQcm9jZXNzQ29u
bmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQcm9j
ZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTExNDM2MzIwRjY3N0IxMDAyNkY5MTIgLyogSW5qZWN0VXNlclNjcmlw
dEltbWVkaWF0ZWx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEy
MjNCNzI2MDIxNTJCMDBCMEEwQjYgLyogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0
aCA9IE5ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMjIzQkIyNjAyNEU4MDAwQjBBMEI2
IC8qIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJU
Q0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03OTU0LDcgKzc5NTIsNiBAQAogCQkJCTFBMTRGOERGMUQ3NEM4MzQwMDZDQkVDNiAv
KiBGcmFtZUluZm9EYXRhLmNwcCAqLywKIAkJCQkxQTE0RjhFMDFENzRDODM0MDA2Q0JFQzYgLyog
RnJhbWVJbmZvRGF0YS5oICovLAogCQkJCTVDMTIxRTgzMjQxMDFGNzAwMDQ4NkY5QiAvKiBGcmFt
ZVRyZWVOb2RlRGF0YS5oICovLAotCQkJCTQxMEYwRDRCMjcwMUVGRUEwMEY5NkRGQyAvKiBHUFVQ
cm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTQ2QUM1
MzI0MjVERUQ4MUUwMDNCNTdFQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCAq
LywKIAkJCQkxQUM3NUExQTFCMzM2ODI3MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVy
LmggKi8sCiAJCQkJMEZEMkNCMjUyNkNERDdBMzAwMDhCMTFDIC8qIElkZW50aWZpZXJUeXBlcy5o
ICovLApAQCAtMTQzMzcsNyArMTQzMzQsNiBAQAogCQkJCUJDMDZGNDNBMTJEQkNDRkIwMDJENzhE
RSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY0Q0YxRTlEMjVFNDBEQ0MwMDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3Rl
bmN5RW5mb3JjZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTk0NEE0MTg4NEU0RjAwMEVEODZE
QiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxMEYwRDRDMjcwMUVGRjkw
MEY5NkRGQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDYxNEYxMzIyNURFRDg3NTAwNzAwNkU3IC8qIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBMDQ5QjgxODBD
Q0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzBDRTcyQUQxMjQ3RTc4RDAwQkMwRUM0IC8qIEhhbmRsZU1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcAppbmRleCBhMDE4MDI3YmQ5NmJhYWFkZjYwNDQxZmIwYzYwYjhkNWJmZGFj
MTEzLi5hYTNmNDQ1MTY4MmVhYjUzOGZhMDM2YjdmODljNWM5NDA1NWNiY2VhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUg
IkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2Rl
Y3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTUzLDYgKzU1LDcgQEAKICNp
bmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0
Zi9MYW5ndWFnZS5oPgpAQCAtMTA2LDExICsxMDksMzQgQEAgc3RhdGljIHZvaWQgbGFuZ3VhZ2Vz
Q2hhbmdlZCh2b2lkKiBjb250ZXh0KQogICAgIHN0YXRpY19jYXN0PEdQVVByb2Nlc3NDb25uZWN0
aW9uKj4oY29udGV4dCktPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKSksIHsgfSk7CiB9CiAKLUdQVVByb2Nlc3NDb25uZWN0aW9uOjpHUFVQcm9jZXNzQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQotICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50
Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQotI2lmIEVOQUJMRShWUDkp
Ci0gICAgLCBtX2hhc1ZQOUhhcmR3YXJlRGVjb2RlcihwYXJhbWV0ZXJzLmhhc1ZQOUhhcmR3YXJl
RGVjb2RlcikKK3N0YXRpYyBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgZ2V0R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzKCkKK3sKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwYXJhbWV0ZXJz
LndlYlByb2Nlc3NJZGVudGl0eSA9IFByb2Nlc3NJZGVudGl0eSB7IFByb2Nlc3NJZGVudGl0eTo6
Q3VycmVudFByb2Nlc3MgfTsKKyAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzID0gdXNl
clByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CiAjZW5kaWYKKyAgICByZXR1cm4gcGFyYW1l
dGVyczsKK30KKworUmVmUHRyPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBHUFVQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbiYgcGFyZW50Q29ubmVjdGlvbikKK3sKKyAgICBh
dXRvIGNvbm5lY3Rpb25JZGVudGlmaWVycyA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ29ubmVj
dGlvbklkZW50aWZpZXJQYWlyKCk7CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcnMpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcGFyZW50Q29ubmVjdGlvbi5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rp
b25JZGVudGlmaWVycy0+Y2xpZW50LCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMo
KSksIDApOworCisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmllcnMtPnNlcnZlcikpKTsKKyNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgICAgICBpZiAocGFyZW50Q29ubmVjdGlvbi5pZ25v
cmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5jb25u
ZWN0aW9uKCkuc2V0SWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CisjZW5kaWYKKyAg
ICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK0dQVVByb2Nlc3NDb25uZWN0aW9uOjpHUFVQcm9jZXNz
Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXImJiBjb25uZWN0aW9uSWRlbnRp
ZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNv
bm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKSkKIHsKICAgICBtX2Nvbm5lY3Rp
b24tPm9wZW4oKTsKIApAQCAtMTMzLDYgKzE1OSwyMSBAQCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
fkdQVVByb2Nlc3NDb25uZWN0aW9uKCkKICAgICByZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVy
KHRoaXMpOwogfQogCisjaWYgSEFWRShBVURJVF9UT0tFTikKK3N0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmF1ZGl0VG9rZW4oKQoreworICAgIGlmICgh
d2FpdEZvckRpZEluaXRpYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gbV9hdWRpdFRva2VuOworfQorI2VuZGlmCisKK3ZvaWQgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OmludmFsaWRhdGUoKQoreworICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwor
ICAgIG1faGFzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCiB2b2lkIEdQVVByb2Nlc3NDb25uZWN0
aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewogICAgIGF1dG8gcHJvdGVjdG9yID0g
UmVmIHsgKnRoaXMgfTsKQEAgLTI2MCw2ICszMDEsMzEgQEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
QzoKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCit2b2lkIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjpkaWRJbml0aWFsaXplKHN0ZDo6b3B0aW9uYWw8R1BVUHJvY2Vzc0Nvbm5lY3Rp
b25JbmZvPiYmIGluZm8pCit7CisgICAgV1RGTG9nQWx3YXlzKCJHb3QgZGlkaW5pdGlhbGl6ZSIp
OworICAgIGlmICghaW5mbykgeworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9oYXNJbml0aWFsaXplZCA9IHRydWU7CisjaWYgRU5BQkxFKFZQOSkK
KyAgICBtX2hhc1ZQOUhhcmR3YXJlRGVjb2RlciA9IGluZm8tPmhhc1ZQOUhhcmR3YXJlRGVjb2Rl
cjsKKyNlbmRpZgorfQorCitib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjp3YWl0Rm9yRGlkSW5p
dGlhbGl6ZSgpCit7CisgICAgaWYgKCFtX2hhc0luaXRpYWxpemVkKSB7CisgICAgICAgIGJvb2wg
cmVzdWx0ID0gbV9jb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNz
YWdlczo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRpZEluaXRpYWxpemU+KDAsIGRlZmF1bHRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
bV9jb25uZWN0aW9uLT5pc1ZhbGlkKCk7Cit9CisKIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZFJlY2VpdmVSZW1vdGVDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUgdHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bW1hbmRBcmd1bWVudCYgYXJndW1lbnQpCiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucHJvY2Vzc0RpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZCh0eXBlLCBhcmd1bWVudCk7CkBAIC0zMTYsNiArMzgyLDE0IEBAIHZvaWQgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OmVuYWJsZVZQOURlY29kZXJzKGJvb2wgZW5hYmxlVlA4RGVjb2RlciwgYm9vbCBl
bmFibGVWCiAgICAgbV9lbmFibGVWUDlTV0RlY29kZXIgPSBlbmFibGVWUDlTV0RlY29kZXI7CiAg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkVuYWJsZVZQOURlY29kZXJzKGVuYWJsZVZQOERlY29kZXIsIGVuYWJsZVZQOURlY29kZXIsIGVu
YWJsZVZQOVNXRGVjb2RlciksIHsgfSk7CiB9CisKK2Jvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246
Omhhc1ZQOUhhcmR3YXJlRGVjb2RlcigpCit7CisgICAgaWYgKCF3YWl0Rm9yRGlkSW5pdGlhbGl6
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faGFzVlA5SGFyZHdhcmVE
ZWNvZGVyOworfQorCiAjZW5kaWYKIAogdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6dXBkYXRl
TWVkaWFDb25maWd1cmF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA0Zjg4ZTFjZGUwNWYzMzVmOTVjNzNlNWY5
YzAzNWRlZmFiNGJiNDZhLi4wNTZjYzQyMzU5YzRmOTA2M2YzNWVkZWIzMDFkMWRiMTRhMzgyMjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlk
ZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOwogY2xhc3MgU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFdlYlBhZ2U7Ci1zdHJ1Y3QgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25JbmZvOwogc3RydWN0IE92ZXJyaWRlU2NyZWVuRGF0YUZvclRlc3Rpbmc7CiBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIApAQCAtNjMsMjAgKzYzLDE0IEBAIGNs
YXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHk7CiAKIGNsYXNzIEdQVVByb2Nlc3ND
b25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+LCBwdWJs
aWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R1BV
UHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHBhcmFtZXRl
cnMpKTsKLSAgICB9CisgICAgc3RhdGljIFJlZlB0cjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gY3Jl
YXRlKElQQzo6Q29ubmVjdGlvbiYgcGFyZW50Q29ubmVjdGlvbik7CiAgICAgfkdQVVByb2Nlc3ND
b25uZWN0aW9uKCk7CiAgICAgCiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyBy
ZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAm
IG1lc3NhZ2VSZWNlaXZlck1hcCgpIHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwOyB9CiAK
ICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgIHZvaWQgc2V0QXVkaXRUb2tlbihzdGQ6Om9wdGlv
bmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4pIHsgbV9hdWRpdFRva2VuID0gYXVkaXRUb2tl
bjsgfQotICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXVkaXRUb2tlbjsgfQotCi0gICAgdm9pZCBzZXRQcmVzZW50aW5nQXBwbGlj
YXRpb25BdWRpdFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4mJik7CisgICAgc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKCk7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CkBAIC0x
MDAsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZQOERlY29kZXJFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9lbmFibGVWUDhEZWNvZGVyOyB9CiAgICAgYm9vbCBpc1ZQOURlY29kZXJF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVWUDlEZWNvZGVyOyB9CiAgICAgYm9vbCBp
c1ZQU1dEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA5U1dEZWNvZGVy
OyB9Ci0gICAgYm9vbCBoYXNWUDlIYXJkd2FyZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2hh
c1ZQOUhhcmR3YXJlRGVjb2RlcjsgfQorICAgIGJvb2wgaGFzVlA5SGFyZHdhcmVEZWNvZGVyKCk7
CiAjZW5kaWYKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQpAQCAtMTE5
LDggKzExMywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDbGllbnQoY29uc3QgQ2xpZW50JiBj
bGllbnQpIHsgbV9jbGllbnRzLmFkZChjbGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGllbnQo
Y29uc3QgQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOyB9CiAKKyAg
ICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRpbWVvdXQgPSAzX3M7CiBwcml2YXRl
OgotICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwg
Y29uc3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKKyAg
ICBHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXImJik7Cisg
ICAgYm9vbCB3YWl0Rm9yRGlkSW5pdGlhbGl6ZSgpOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOwog
CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwpAQCAtMTMxLDcgKzEyOCw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAg
ICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKKyAgICAvLyBNZXNzYWdlcy4KICAgICB2
b2lkIGRpZFJlY2VpdmVSZW1vdGVDb21tYW5kKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmKTsKKyAgICB2b2lkIGRpZEluaXRpYWxpemUo
c3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8+JiYpOwogCiAjaWYgRU5BQkxF
KFJPVVRJTkdfQVJCSVRSQVRJT04pCiAgICAgdm9pZCBiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldp
dGhDYXRlZ29yeShXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgV2ViQ29yZTo6
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlvbkNhbGxiYWNr
JiYpOwpAQCAtMTQxLDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24g
ZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBwcm9jZXNzLgogICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21l
c3NhZ2VSZWNlaXZlck1hcDsKLQorICAgIGJvb2wgbV9oYXNJbml0aWFsaXplZCB7IGZhbHNlIH07
CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
IG1fYXVkaXRUb2tlbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNjE4
YjQyOTcwM2NiOWRkNmI3MDUwYzk3Y2I2YjkxMGU1ZTMzYTk0Zi4uOWY2NTI5NGNmNzdjYmQ4NmYy
YmU4MzdlZjQ2MjE3MWZiYmQ2YTVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0y
Myw2ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CisgICAgRGlkSW5pdGlhbGl6
ZShzdGQ6Om9wdGlvbmFsPFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvPiBpbmZvKQog
ICAgIERpZFJlY2VpdmVSZW1vdGVDb21tYW5kKGVudW06dWludDhfdCBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHR5cGUsIHN0cnVjdCBXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50IGFyZ3VtZW50
KQogCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAppbmRleCBl
MmQwMjlmNjE4MjZiMDVmN2M0NzUzZjMzYTZkMGNhMzg3YTYzNGNlLi5lNGVlYmRmNTFmOTU5ZDZh
ZTcwOTdlZmQ3YWZkN2Q1MzcwMjM1M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKQEAgLTI3LDY1ICsyNyw0
NyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3Ry
dWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7Ci0gICAgSVBDOjpBdHRhY2htZW50IGNvbm5l
Y3Rpb247CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5kaWYKLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRp
YWxpemF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdAotICAgIHsKLSNpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKLSAgICAgICAgcmV0dXJuIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihjb25u
ZWN0aW9uLmZkKCkudmFsdWUoKSk7Ci0jZWxpZiBPUyhEQVJXSU4pCi0gICAgICAgIHJldHVybiBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoY29ubmVjdGlvbi5wb3J0KCkpOwotI2VsaWYgT1Mo
V0lORE9XUykKLSAgICAgICAgcmV0dXJuIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihjb25u
ZWN0aW9uLmhhbmRsZSgpKTsKLSNlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKCk7CisjaWYgRU5BQkxF
KFZQOSkKKyAgICBib29sIGhhc1ZQOUhhcmR3YXJlRGVjb2RlciB7IGZhbHNlIH07CiAjZW5kaWYK
LSAgICB9Ci0KLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgcmVsZWFzZUlkZW50aWZp
ZXIoKQotICAgIHsKLSNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgYXV0byBy
ZXR1cm5WYWx1ZSA9IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihjb25uZWN0aW9uLnJlbGVh
c2UoKS5yZWxlYXNlKCkpOwotI2Vsc2UKLSAgICAgICAgYXV0byByZXR1cm5WYWx1ZSA9IGlkZW50
aWZpZXIoKTsKLSNlbmRpZgotICAgICAgICBjb25uZWN0aW9uID0geyB9OwotICAgICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Ci0gICAgfQogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCBjb25uZWN0aW9uOwogI2lm
IEhBVkUoQVVESVRfVE9LRU4pCiAgICAgICAgIGVuY29kZXIgPDwgYXVkaXRUb2tlbjsKICNlbmRp
ZgotICAgICAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnM7CisjaWYgRU5BQkxFKFZQOSkKKyAgICAg
ICAgZW5jb2RlciA8PCBoYXNWUDlIYXJkd2FyZURlY29kZXI7CisjZW5kaWYKICAgICB9Ci0gICAg
Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyYgaW5mbykKKworICAgIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8+
IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGluZm8uY29ubmVjdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAj
aWYgSEFWRShBVURJVF9UT0tFTikKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmF1
ZGl0VG9rZW4pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvIGF1ZGl0
VG9rZW4gPSBkZWNvZGVyLmRlY29kZTxzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+PigpOwor
I2VuZGlmCisjaWYgRU5BQkxFKFZQOSkKKyAgICAgICAgYXV0byBoYXNWUDlIYXJkd2FyZURlY29k
ZXIgPSBkZWNvZGVyLmRlY29kZTxib29sPigpOworI2VuZGlmCisgICAgICAgIGlmICghZGVjb2Rl
ci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsKKyNpZiBIQVZFKEFVRElUX1RPS0VOKQor
ICAgICAgICAgICAgKmF1ZGl0VG9rZW4sCisjZW5kaWYKKyNpZiBFTkFCTEUoVlA5KQorICAgICAg
ICAgICAgKmhhc1ZQOUhhcmR3YXJlRGVjb2RlciwKICNlbmRpZgotICAgICAgICBzdGQ6Om9wdGlv
bmFsPEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzPiBwYXJhbWV0
ZXJzOwotICAgICAgICBkZWNvZGVyID4+IHBhcmFtZXRlcnM7Ci0gICAgICAgIGlmICghcGFyYW1l
dGVycykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW5mby5wYXJhbWV0ZXJz
ID0gV1RGTW92ZSgqcGFyYW1ldGVycyk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
OwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCA0NDYwNzM1M2RhMjc1ZmFkZjAxNDQ2MDY3MTExOWMzZjM1MjE5NGU0Li5jYzQ4ZDI1YTRiYzUy
NmRlZTIzZDAxYzMyZTNkNjE4NzkwMjYxYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0xOTEsNyArMTkxLDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bkluZm8uaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKQEAgLTEyOTcsNTUgKzEy
OTYsMTMgQEAgV2ViTG9hZGVyU3RyYXRlZ3kmIFdlYlByb2Nlc3M6OndlYkxvYWRlclN0cmF0ZWd5
KCkKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2lmICFQTEFURk9STShDT0NPQSkKLXZv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzKEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYpCi17Ci19Ci0jZW5kaWYKLQot
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIFdlYlByb2Nlc3M6OmdldEdQVVByb2Nlc3NDb25uZWN0
aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwbGF0Zm9ybUluaXRpYWxpemVHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMocGFyYW1ldGVycyk7Ci0KLSAgICBJUEM6OlVuYm91bmRl
ZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTsKLQotICAg
IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyBjb25uZWN0aW9uSW5mbzsKLSAgICBpZiAoIWNvbm5l
Y3Rpb24uc2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb24ocGFyYW1ldGVycyksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpSZXBseShjb25uZWN0aW9uSW5mbyksIDApKSB7Ci0gICAgICAgIC8v
IElmIHdlIGZhaWxlZCB0aGUgZmlyc3QgdGltZSwgcmV0cnkgb25jZS4gVGhlIGF0dGFjaG1lbnQg
bWF5IGhhdmUgYmVjb21lIGludmFsaWQKLSAgICAgICAgLy8gYmVmb3JlIGl0IHdhcyByZWNlaXZl
ZCBieSB0aGUgd2ViIHByb2Nlc3MgaWYgdGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkLgotICAg
ICAgICBpZiAoIWNvbm5lY3Rpb24uc2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24ocGFyYW1ldGVycyksIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShjb25uZWN0aW9uSW5mbyksIDAp
KQotICAgICAgICAgICAgZmFpbGVkVG9TZW5kU3luY01lc3NhZ2UoKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gY29ubmVjdGlvbkluZm87Ci19Ci0KIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9j
ZXNzOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgLy8gSWYgd2UndmUgbG9zdCBvdXIgY29ubmVjdGlv
biB0byB0aGUgR1BVIHByb2Nlc3MgKGUuZy4gaXQgY3Jhc2hlZCkgdHJ5IHRvIHJlLWVzdGFibGlz
aCBpdC4KICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKLSAgICAgICAgYXV0byBj
b25uZWN0aW9uSW5mbyA9IGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKCpwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpKTsKLQotICAgICAgICAvLyBSZXRyeSBvbmNlIGlmIHRoZSBJUEMgdG8gZ2V0IHRo
ZSBjb25uZWN0aW9uSWRlbnRpZmllciBzdWNjZWVkZWQgYnV0IHRoZSBjb25uZWN0aW9uSWRlbnRp
ZmllciB3ZSByZWNlaXZlZAotICAgICAgICAvLyBpcyBpbnZhbGlkLiBUaGlzIG1heSBpbmRpY2F0
ZSB0aGF0IHRoZSBHUFUgcHJvY2VzcyBoYXMgY3Jhc2hlZC4KLSAgICAgICAgaWYgKCFJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JbmZvLmlkZW50aWZpZXIoKSkp
Ci0gICAgICAgICAgICBjb25uZWN0aW9uSW5mbyA9IGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKCpw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKTsKLQotICAgICAgICBpZiAoIUlQQzo6Q29ubmVjdGlv
bjo6aWRlbnRpZmllcklzVmFsaWQoY29ubmVjdGlvbkluZm8uaWRlbnRpZmllcigpKSkKLSAgICAg
ICAgICAgIENSQVNIKCk7Ci0KLSAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbkluZm8ucmVsZWFzZUlkZW50aWZpZXIo
KSwgY29ubmVjdGlvbkluZm8ucGFyYW1ldGVycyk7Ci0jaWYgSEFWRShBVURJVF9UT0tFTikKLSAg
ICAgICAgQVNTRVJUKGNvbm5lY3Rpb25JbmZvLmF1ZGl0VG9rZW4pOwotICAgICAgICBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uLT5zZXRBdWRpdFRva2VuKFdURk1vdmUoY29ubmVjdGlvbkluZm8uYXVk
aXRUb2tlbikpOwotI2VuZGlmCi0jaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKLSAgICAgICAg
aWYgKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVz
dGluZygpKQotICAgICAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
LnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpOwotI2VuZGlmCisgICAgICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKCpwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpKTsKIAogICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3Bh
Z2VNYXAudmFsdWVzKCkpIHsKICAgICAgICAgICAgIC8vIElmIHBhZ2UgaXMgbnVsbCwgdGhlbiBp
dCBpcyBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCBjNzU3N2I5YWE5YjYwMTQ2NDU2YTQ2NTQwYzQwYTNjYmQ3YWYxYmE5
Li5jYTA2NjQ0ZTk2MzQ5Mzk3NTliZjljMTY3ODA3MmUwYzlmMDE5MzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE0Myw4ICsxNDMsNiBAQCBjbGFzcyBXZWJQYWdl
OwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzU3VwcGxlbWVudDsK
IAotc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbzsKLXN0cnVjdCBHUFVQcm9jZXNzQ29u
bmVjdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRh
Owogc3RydWN0IFVzZXJNZXNzYWdlOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM7CkBAIC01ODYsMTEgKzU4NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVGcmVlemVy
U3RhdHVzKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBzdGF0aWMg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbiYpOwotICAgIHN0YXRpYyB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUdQVVByb2Nlc3ND
b25uZWN0aW9uUGFyYW1ldGVycyhHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmKTsKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhQnVmZmVy
aW5nKCk7CiAgICAgdm9pZCByZXN1bWVBbGxNZWRpYUJ1ZmZlcmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggNjg2MzFl
ZmUyYTQ5ZTU3ODZkYzJmYjVhZTZmM2I1MzZkYTI3YjdlZi4uOTIyZGU1M2U2MjVmYzA4YzNlNzgy
ZGJjYzJiZjdkOGFiNDBlZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJXZWJQ
cm9jZXNzLmgiCiAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgiCi0jaW1wb3J0
ICJHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIkxhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaCIKICNpbXBvcnQgIkxvZ0luaXRpYWxpemF0aW9uLmgiCkBAIC0xMjQ2LDE1ICsxMjQ1LDYg
QEAgdm9pZCBXZWJQcm9jZXNzOjp3YWl0Rm9yUGVuZGluZ1Bhc3RlYm9hcmRXcml0ZXNUb0Zpbmlz
aChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmQKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZUdQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycyhHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCi17Ci0gICAgcGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHkgPSBQcm9jZXNzSWRlbnRp
dHkgeyBQcm9jZXNzSWRlbnRpdHk6OkN1cnJlbnRQcm9jZXNzIH07Ci0KLSAgICBwYXJhbWV0ZXJz
Lm92ZXJyaWRlTGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Ci19
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c3lzdGVtV2ls
bFBvd2VyT24oKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458801</attachid>
            <date>2022-05-04 08:46:42 -0700</date>
            <delta_ts>2022-05-05 01:32:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239905-20220504184640.patch</filename>
            <type>text/plain</type>
            <size>49911</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI3Y2RiOWQ4OWE0ZDVjZjE3
Mzk3YzhkNGM3ZDI0NmY1ZDZkMmMzMTMuLmVjMDI2MjhmZTg2NDRlYjQ2NWRlYTNjOGY4OTJmMWM5
YmRjMjU0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMjItMDUtMDQgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW5nIHRvIEdQ
VSBwcm9jZXNzIG1heSBoYW5nIGlmIFVJIHByb2Nlc3Mgc2VuZHMgc3luYyBtZXNzYWdlIHNpbXVs
dGFuZW91c2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQcmV2aW91c2x5LCBlc3RhYmxpc2hpbmcgR1BVIHByb2Nlc3MgY29ubmVjdGlvbiB3b3VsZCBi
ZSBhIHN5bmMgbWVzc2FnZToKKyAgICAgICAgIDEuIFdQIC0+IFVJIHN5bmMgR2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb24KKyAgICAgICAgIDIuIFVJIC0+IEdQVVAgYXN5bmMgQ3JlYXRlR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcworICAgICAgICAgMy4gR1BVUCAtPiBVSSBhc3luYyByZXBseSBDcmVh
dGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCisgICAgICAgICA0LiBVSSAtPiBXUCBzeW5jIHJl
cGx5IEdldEdQVVByb2Nlc3NDb25uZWN0aW9uCisKKyAgICAgICAgSWYgVUkgd291bGQgc2VuZCBh
IG1lc3NhZ2UgdG8gV1AgYWZ0ZXIgc3RlcCAzIGFuZCB3YWl0IGZvciByZXBseSwgdGhpcworICAg
ICAgICB3b3VsZCBuZXZlciBjb21lIGFzIFdQIHdvdWxkIGJlIHdhaXRpbmcgZm9yIHRoZSBzeW5j
IHJlcGx5IGZvciBHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbi4KKworICAgICAgICBUaGlzIHdvdWxk
IGhhcHBlbiBmb3IgZXhhbXBsZSB3aXRoIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRo
Q29tcGxldGlvbkhhbmRsZXIsCisgICAgICAgIHdoaWNoIHdvdWxkIHNlbmQgSGFuZGxlQXV0b2Nv
cnJlY3Rpb25Db250ZXh0UmVxdWVzdCBhbmQgd2FpdCBmb3IKKyAgICAgICAgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0IG1lc3NhZ2VzLgorCisgICAg
ICAgIE1pdGlnYXRlIHRoaXMgYnkgY3JlYXRpbmcgdGhlIEdQVSBjb25uZWN0aW9uIGluIFdQIGFu
ZCBzZW5kaW5nCisgICAgICAgIHRoYXQgdG8gR1BVUCB0aHJvdWdoIFVJIGluIGFuIGFzeW5jIG1l
c3NhZ2UuIFRoaXMgd2F5IFdQIGRvZXMgbm90IGJsb2NrIG9uIHRoZSBHUFVQCisgICAgICAgIGNv
bm5lY3Rpb24gaW5pdGlhbGl6YXRpb24uIFNlbmQgdGhlIEdQVVBnIGNvbm5lY3Rpb24gaW5pdGlh
bGl6YXRpb24gcmVzdWx0LCBhdWRpdCB0b2tlbiBhbmQKKyAgICAgICAgdnA5IEhXIGRlY29kZXIg
cHJlc2VuY2UsIGFzIHRoZSBmaXJzdCB1c2VyIG1lc3NhZ2UgdGhyb3VnaCB0aGUgbmV3IGNvbm5l
Y3Rpb24uCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojphc0Nvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6R1BV
UHJvY2Vzczo6Y3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxp
emF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlv
bkluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c1Byb3h5OjpjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6R1BVUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6YXVkaXRU
b2tlbik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjppbnZhbGlkYXRl
KToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6d2FpdEZvckRpZEluaXRp
YWxpemUpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6aGFzVlA5SGFy
ZHdhcmVEZWNvZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
SW5mby5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm86OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbzo6ZGVj
b2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW06CisKIDIwMjItMDUtMDQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBFbXB0eSByZW1vdGUgYmFja2luZyBzdG9yZSBjb2xsZWN0
aW9uIHByZXBhcmUgc3RhcnRzIHVwIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjUxMmMy
MzIxNzVkMGI0ZTg1NzE4NWEzYmY3Njk1OWZiNTM0ZTcxNy4uNmJiMDk1OWYwYjFlN2Y2YTRjOTNk
NzBhMjMyMjhjMjYyY2FhOTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIkdQVVByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMjMyLDEzICsyMzMsMTMgQEAgcHJpdmF0
ZToKIAogI2VuZGlmCiAKLVJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVmPEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShH
UFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXImJiBjb25uZWN0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdVByb2Nlc3MsIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBj
b25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVQcm9j
ZXNzLCB3ZWJQcm9jZXNzSWRlbnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbm5lY3Rpb25J
ZGVudGlmaWVyKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogfQogCi1HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nl
c3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKLSAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5l
Y3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKSkKK0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2Vzcywg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyJiYgY29ubmVjdGlv
bklkZW50aWZpZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CisgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX2dwdVByb2Nlc3MoZ3B1
UHJvY2VzcykKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZp
ZXIpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGl0eShXVEZNb3ZlKHBhcmFtZXRlcnMud2ViUHJv
Y2Vzc0lkZW50aXR5KSkKQEAgLTI3OCw3ICsyNzksMTUgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBX
ZWIKICAgICAvLyByZXBseSBmcm9tIHRoZSBHUFUgcHJvY2Vzcywgd2hpY2ggd291bGQgYmUgdW5z
YWZlLgogICAgIG1fY29ubmVjdGlvbi0+c2V0T25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVu
V2FpdGluZ0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKHRydWUpOwogICAg
IG1fY29ubmVjdGlvbi0+b3BlbigpOwotCisgICAgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlv
bkluZm8gaW5mbyB7CisjaWYgSEFWRShBVURJVF9UT0tFTikKKyAgICAgICAgZ3B1UHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCksCisjZW5kaWYKKyNpZiBF
TkFCTEUoVlA5KQorICAgICAgICBXZWJDb3JlOjp2cDlIYXJkd2FyZURlY29kZXJBdmFpbGFibGUo
KQorI2VuZGlmCisgICAgfTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpEaWRJbml0aWFsaXplKGluZm8pLCAwKTsKICAgICArK2dPYmplY3RD
b3VudEZvclRlc3Rpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDVmMzk3NWJmMjdmN2YwZmMxYzI4MTNk
MWQ1NzVkODZiOWFlMmQ3MTEuLjdiZDhlOTg0NzgxMTg4OTVjYWQxMWY5OGIxM2NhMmZkOWFjNDMz
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50
CiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVhdGUoR1BVUHJvY2VzcyYsIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklELCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIFJl
ZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVhdGUoR1BVUHJvY2VzcyYsIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyJiYsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0dWFs
IH5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CiAKICAgICB1c2luZyBXZWJDb3JlOjpOb3dQ
bGF5aW5nTWFuYWdlcjo6Q2xpZW50Ojp3ZWFrUHRyRmFjdG9yeTsKQEAgLTIxMyw3ICsyMTMsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzJiYpOworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyJiYsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmKTsKIAogI2lm
IEVOQUJMRShXRUJfQVVESU8pCiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXImIHJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5jcHAKaW5kZXggZDllNzc1ZmRhNjg0NzMwODQxOTlhN2IyZmJiYzk1ZTkyOTFhNGIw
MC4uOWYzODk4NjE1ZDczYzBiMWQ5MGYzYjNiNzdhNGE4MGM1ZDMyMGFkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
IkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJHUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKQEAg
LTExNiwxNiArMTE1LDI3IEBAIHZvaWQgR1BVUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlCiAgICAgZGlkUmVjZWl2
ZUdQVVByb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIEdQVVBy
b2Nlc3M6OmNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBHUFVQcm9jZXNz
Q29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBHUFVQcm9jZXNzQ29ubmVjdGlvbklu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgYXNDb25uZWN0aW9uSWRlbnRpZmllcihJUEM6OkF0
dGFjaG1lbnQmJiBjb25uZWN0aW9uSGFuZGxlKQogeworI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQorICAgIHJldHVybiBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgeyBjb25uZWN0aW9u
SGFuZGxlLnJlbGVhc2UoKS5yZWxlYXNlKCkgfTsKKyNlbGlmIE9TKERBUldJTikKKyAgICByZXR1
cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHsgY29ubmVjdGlvbkhhbmRsZS5wb3J0KCkg
fTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciB7IGNvbm5lY3Rpb25IYW5kbGUuaGFuZGxlKCkgfTsKKyNlbHNlCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHsgfTsKKyNl
bmRpZgorfQorCit2b2lkIEdQVVByb2Nlc3M6OmNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdURkxvZ0Fsd2F5cygiR09UIENy
ZWF0ZSBncHUgcHJvY2VzcyBjb25uZWN0aW9uIik7CisKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
LCAiJXAgLSBHUFVQcm9jZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOiBwcm9j
ZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsIHRoaXMsIGlkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0g
ICAgYXV0byBjb25uZWN0aW9uSWRlbnRpZmllcnMgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNv
bm5lY3Rpb25JZGVudGlmaWVyUGFpcigpOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXJz
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KIAotICAgIGF1dG8gbmV3Q29ubmVjdGlvbiA9IEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgY29ubmVjdGlvbklkZW50aWZpZXJzLT5z
ZXJ2ZXIsIHNlc3Npb25JRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgYXV0byBuZXdDb25u
ZWN0aW9uID0gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBpZGVudGlm
aWVyLCBzZXNzaW9uSUQsIGFzQ29ubmVjdGlvbklkZW50aWZpZXIoV1RGTW92ZShjb25uZWN0aW9u
SWRlbnRpZmllcikpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciBjb2RlIHRvIGdvIGZyb20g
V2ViUHJvY2VzcyAtPiBHUFVQcm9jZXNzIC0+IFVJUHJvY2VzcyB3aGVuIGdldFVzZXJNZWRpYSBp
cyBjYWxsZWQgaW5zdGVhZCBvZiBnb2luZyBmcm9tIFdlYlByb2Nlc3MgLT4gVUlQcm9jZXNzIGRp
cmVjdGx5LgpAQCAtMTQyLDExICsxNTIsOCBAQCB2b2lkIEdQVVByb2Nlc3M6OmNyZWF0ZUdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbgogICAg
IEFTU0VSVCghbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOwog
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKG5ld0Nv
bm5lY3Rpb24pKTsKIAotICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzIGNvbm5lY3Rpb25QYXJhbWV0ZXJzOwotI2lmIEVOQUJMRShWUDkpCi0gICAgY29ubmVj
dGlvblBhcmFtZXRlcnMuaGFzVlA5SGFyZHdhcmVEZWNvZGVyID0gV2ViQ29yZTo6dnA5SGFyZHdh
cmVEZWNvZGVyQXZhaWxhYmxlKCk7Ci0jZW5kaWYKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbm5lY3Rpb25JZGVudGlmaWVycy0+Y2xpZW50KSwgV1RGTW92ZShjb25uZWN0aW9uUGFy
YW1ldGVycykpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBHUFVQcm9j
ZXNzOjpyZW1vdmVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAppbmRl
eCAxZTA3YWQxM2E4ZDk2MGQ1ZWEzNDFjYzkyZGFiNzc2YjlhZGRkZGJjLi44MzdhNjdhNDlkYTNk
OWRlMzYxZTQxM2ZiZTdmMDJkYTEwMTUzY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLmgKQEAgLTU5LDcgKzU5LDYgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotc3Ry
dWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOwogc3RydWN0
IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBHUFVQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOwogc3RydWN0IEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVyczsKQEAgLTEz
OSw3ICsxMzgsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZv
aWQgaW5pdGlhbGl6ZUdQVVByb2Nlc3MoR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsK
LSAgICB2b2lkIGNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRl
cnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVu
dD4mJiwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJik+JiYp
OworICAgIHZvaWQgY3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6QXR0YWNobWVudCYmLCBHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGFkZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIEdQVVByb2Nlc3NTZXNzaW9uUGFy
YW1ldGVycyYmKTsKICAgICB2b2lkIHJlbW92ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IGY5MGE0ODc5YjRlMWQxNGI4MTY3MThkODgyMjBiNmMyYThiYzczNzMuLmRjZjExMWY3YTNjNjNi
NDJhNDdjOWE1YmVlNGUxNGE1YzA4MWM5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdlcyAt
PiBHUFVQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplR1BVUHJvY2Vzcyhz
dHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMpCiAKLSAgICBDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyBw
YXJhbWV0ZXJzKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQorICAgIENyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVy
cykgLT4gKCkKIAogICAgIFByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVu
dCkgLT4gKCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9u
UGFyYW1ldGVycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmVlYTE4YWVkY2I5
MGQ1ZGU0YjEwZWNlZjcyMjg5OWNmMmY3N2NlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0
aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
Ci0KLSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsK
LSNpZiBFTkFCTEUoVlA5KQotICAgIGJvb2wgaGFzVlA5SGFyZHdhcmVEZWNvZGVyIHsgZmFsc2Ug
fTsKLSNlbmRpZgotCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAotICAgIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgICAgICBlbmNvZGVyIDw8IGhhc1ZQOUhhcmR3
YXJlRGVjb2RlcjsKLSNlbmRpZgotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQ
VVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQotICAgIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgICAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGhhc1ZQOUhhcmR3YXJlRGVjb2RlcjsKLSAgICAgICAgZGVjb2RlciA+PiBo
YXNWUDlIYXJkd2FyZURlY29kZXI7Ci0gICAgICAgIGlmICghaGFzVlA5SGFyZHdhcmVEZWNvZGVy
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSNlbmRpZgotCi0gICAgICAgIHJl
dHVybiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7Ci0jaWYg
RU5BQkxFKFZQOSkKLSAgICAgICAgICAgIFdURk1vdmUoKmhhc1ZQOUhhcmR3YXJlRGVjb2RlcikK
LSNlbmRpZgotICAgICAgICB9OwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaAppbmRleCAxMTg5ZWE5ZWY1
ZDhjOWJkZWU1OGZlZTk3YzgyYTdlOTczMGZhODc5Li5kOTIzNTdkNzIxYzAyZTA5Y2QyY2IwYjgz
Njk2MDFiOWYxNzNiODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaApAQCAtNTksMzMgKzU5LDE3IEBAIHN0cnVjdCBH
UFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgewogCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpdHk+IHdlYlByb2Nlc3NJZGVudGl0eTsKLSAgICAgICAgZGVjb2RlciA+PiB3ZWJQcm9jZXNz
SWRlbnRpdHk7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzc0lkZW50aXR5KQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBvdmVycmlkZUxhbmd1YWdlczsKLSAgICAgICAgZGVjb2RlciA+PiBvdmVycmlkZUxhbmd1
YWdlczsKLSAgICAgICAgaWYgKCFvdmVycmlkZUxhbmd1YWdlcykKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0NhcHRpdmVQ
b3J0YWxNb2RlRW5hYmxlZDsKLSAgICAgICAgZGVjb2RlciA+PiBpc0NhcHRpdmVQb3J0YWxNb2Rl
RW5hYmxlZDsKLSAgICAgICAgaWYgKCFpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KKyAgICAgICAgYXV0byB3ZWJQcm9jZXNzSWRl
bnRpdHkgPSBkZWNvZGVyLmRlY29kZTxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHk+KCk7CisgICAg
ICAgIGF1dG8gb3ZlcnJpZGVMYW5ndWFnZXMgPSBkZWNvZGVyLmRlY29kZTxWZWN0b3I8U3RyaW5n
Pj4oKTsKKyAgICAgICAgYXV0byBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IGRlY29kZXIu
ZGVjb2RlPGJvb2w+KCk7CiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7Ci0gICAgICAg
IGRlY29kZXIgPj4gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOwotICAgICAgICBpZiAo
IWlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGF1dG8gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nID0g
ZGVjb2Rlci5kZWNvZGU8Ym9vbD4oKTsKICNlbmRpZgotCiAjaWYgSEFWRShBVURJVF9UT0tFTikK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBwcmVzZW50aW5nQXBwbGljYXRp
b25BdWRpdFRva2VuOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByZXNlbnRpbmdBcHBs
aWNhdGlvbkF1ZGl0VG9rZW4pKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgYXV0byBwcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuID0gZGVjb2Rlci5kZWNv
ZGU8c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90Pj4oKTsKICNlbmRpZgorICAgICAgICBpZiAo
IWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHsKICAgICAgICAg
ICAgIFdURk1vdmUoKndlYlByb2Nlc3NJZGVudGl0eSksCkBAIC05NSw3ICs3OSw3IEBAIHN0cnVj
dCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgewogICAgICAgICAgICAgKmlnbm9yZUlu
dmFsaWRNZXNzYWdlRm9yVGVzdGluZywKICNlbmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0g
ICAgICAgICAgICBXVEZNb3ZlKHByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4pLAorICAg
ICAgICAgICAgV1RGTW92ZSgqcHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbiksCiAjZW5k
aWYKICAgICAgICAgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IDE3NzhkNjE1MWM5ZDJhYzk3OGMwNDMyN2UwZTE3NTEx
Y2E3NTJjZDUuLjM1OTMxODMzNTdkOWZjNzY3OTFhYzFiY2VkYjQ5ZWQ1MDczNGMwYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBAIC0y
OSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFQcm94eS5oIgotI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oIgogI2lu
Y2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkdQVVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzTWVzc2FnZXMu
aCIKQEAgLTM2OSwzMyArMzY4LDE2IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2ls
bFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgc2luZ2xldG9u
KCkgPSBudWxscHRyOwogfQogCi12b2lkIEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIGNvbnN0IEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9p
ZCBHUFVQcm9jZXNzUHJveHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQ
cm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRp
ZmllciwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAg
ICBhZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkpOwotCisgICAg
V1RGTG9nQWx3YXlzKCJDcmVhdGUgZ3B1IHByb2Nlc3MgY29ubmVjdGlvbiIpOwogICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5n
IGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3Rp
bmcgYSBjb25uZWN0aW9uIiwgdGhpcyk7CiAgICAgc3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKFVz
ZUxhenlTdG9wOjpObyk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9j
ZXNzOjpDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCksIHBhcmFt
ZXRlcnMgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlcGx5ID0gV1RG
TW92ZShyZXBseSldKGF1dG8mJiBpZGVudGlmaWVyLCBhdXRvJiYgY29ubmVjdGlvblBhcmFtZXRl
cnMpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29u
bmVjdGlvbjogR1BVUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1cmluZyBjb25uZWN0aW9uIGVz
dGFibGlzaG1lbnQiKTsKLSAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwotICAgICAgICB9
Ci0KKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkdQVVByb2Nlc3M6OkNyZWF0ZUdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVu
dGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSwgY29ubmVjdGlvbklkZW50aWZp
ZXIsIHBhcmFtZXRlcnMgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKCk7Ci0gICAgICAgIGlmICghaWRlbnRpZmll
cikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIkdQVVByb2Nlc3NQ
cm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246IGNvbm5lY3Rpb24gaWRlbnRpZmllciBpcyBl
bXB0eSIpOwotICAgICAgICAgICAgcmV0dXJuIHJlcGx5KHsgfSk7Ci0gICAgICAgIH0KLQotI2lm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKSB8fCBPUyhXSU5ET1dTKQotICAgICAgICByZXBseShH
UFVQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBXVEZNb3ZlKCppZGVudGlmaWVyKSB9KTsKLSAgICAg
ICAgVU5VU0VEX1ZBUklBQkxFKHRoaXMpOwotI2VsaWYgT1MoREFSV0lOKQotICAgICAgICBNRVNT
QUdFX0NIRUNLKE1BQ0hfUE9SVF9WQUxJRChpZGVudGlmaWVyLT5wb3J0KCkpKTsKLSAgICAgICAg
cmVwbHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgSVBDOjpBdHRhY2htZW50IHsgaWRlbnRp
Zmllci0+cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCB9LCB0aGlzLT5jb25uZWN0aW9u
KCktPmdldEF1ZGl0VG9rZW4oKSwgV1RGTW92ZShjb25uZWN0aW9uUGFyYW1ldGVycykgfSk7Ci0j
ZWxzZQotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiAgICAgfSwgMCwgSVBDOjpT
ZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggMGIwZjMwZjBjZjgxYjgxY2RhZmNkY2YxM2MxMGY3MDg3MThiZTU1Ny4uZDg1MjMwNmE2NjJm
MzRlNGEwZmFmMjY5ZjI0NGIzZGVjNjY5NWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEdQVVByb2Nlc3NQcm94eSogc2luZ2xldG9uSWZDcmVhdGVkKCk7CiAgICAgfkdQVVBy
b2Nlc3NQcm94eSgpOwogCi0gICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9j
ZXNzUHJveHkmLCBjb25zdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmLCBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYm
KTsKKyAgICB2b2lkIGNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYs
IElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMmJik7CiAKICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBm
aW5hbCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2Vy
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IGRlZThmNDZlNDBjNzk4OTJjZjc2ZTIwNDMwMDk0YmJkYjFkNzljNmYuLjQ1ZTM1NmYxNjViMDc4
N2M1MWQxNjRhZGVhZjBjODNlOTYxZmE3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
LmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiR2FtZXBhZERhdGEuaCIKICNpbmNsdWRlICJIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdl
U2FtcGxlci5oIgpAQCAtNTE0LDcgKzUxMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdwdVBy
b2Nlc3NFeGl0ZWQoUHJvY2Vzc0lEIGlkZW50aWZpZXIsIFByb2Nlc3NUZXJtaW5hdGlvblJlCiAg
ICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihX
ZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNz
UHJveHksIElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6OkdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAjaWYgRU5BQkxF
KElQQ19URVNUSU5HX0FQSSkKICAgICBwYXJhbWV0ZXJzLmlnbm9yZUludmFsaWRNZXNzYWdlRm9y
VGVzdGluZyA9IHdlYlByb2Nlc3NQcm94eS5pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmco
KTsKQEAgLTUyNSwyMSArNTI0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIEcKICNlbmRpZgog
CiAgICAgcGFyYW1ldGVycy5pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IHdlYlByb2Nlc3NQ
cm94eS5jYXB0aXZlUG9ydGFsTW9kZSgpID09IFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRh
bE1vZGU6OkVuYWJsZWQ7Ci0KLSAgICBlbnN1cmVHUFVQcm9jZXNzKCkuZ2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb24od2ViUHJvY2Vzc1Byb3h5LCBwYXJhbWV0ZXJzLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgcGFyYW1ldGVycywgd2ViUHJvY2Vzc1Byb3h5ID0gV2Vha1B0ciB7
IHdlYlByb2Nlc3NQcm94eSB9LCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYXV0byYgY29ubmVj
dGlvbkluZm8pIG11dGFibGUgewotICAgICAgICBpZiAoVU5MSUtFTFkoIUlQQzo6Q29ubmVjdGlv
bjo6aWRlbnRpZmllcklzVmFsaWQoY29ubmVjdGlvbkluZm8uaWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgICAgIC8vIFJldHJ5IG9uIHRoZSBuZXh0IFJ1bkxvb3AgaXRlcmF0aW9uIGJlY2F1c2Ug
d2UgbWF5IGJlIGluc2lkZSB0aGUgV2ViUHJvY2Vzc1Bvb2wgZGVzdHJ1Y3Rvci4KLSAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgd2ViUHJvY2Vzc1Byb3h5ID0gV1RGTW92ZSh3ZWJQcm9jZXNzUHJveHkpLCBwYXJh
bWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzICYmIHdlYlByb2Nlc3NQcm94
eSkgewotICAgICAgICAgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19FUlJP
UihQcm9jZXNzLCAiZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246IEZhaWxlZCBmaXJzdCBhdHRlbXB0
LCByZXRyeWluZyIpOwotICAgICAgICAgICAgICAgICAgICBlbnN1cmVHUFVQcm9jZXNzKCkuZ2V0
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKndlYlByb2Nlc3NQcm94eSwgcGFyYW1ldGVycywgV1RGTW92
ZShyZXBseSkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBy
ZXBseSh7IH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgcmVwbHkoY29ubmVjdGlvbkluZm8pOwotICAgIH0pOworICAgIGVuc3VyZUdQ
VVByb2Nlc3MoKS5jcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIFdU
Rk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0YTlh
NTU0NWQ4YmZkODRjZTgxZjk3ZjgxZTY3NmJhMmM5ODY2ZTM5Li5kNGRhM2RhODQ0M2Y2ZDEzZWMy
ZTMwYWIyNDhiYThiYTEzYmE3ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKQEAgLTM2Myw3ICszNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBncHVQcm9jZXNz
RGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NJRCk7CiAgICAgdm9pZCBncHVQcm9jZXNzRXhpdGVk
KFByb2Nlc3NJRCwgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKTsKIAotICAgIHZvaWQgZ2V0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Q
YXJhbWV0ZXJzJiYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25u
ZWN0aW9uRGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgY3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpBdHRhY2htZW50JiYsIFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwogCiAgICAgR1BVUHJvY2Vzc1Byb3h5JiBlbnN1cmVH
UFVQcm9jZXNzKCk7CiAgICAgR1BVUHJvY2Vzc1Byb3h5KiBncHVQcm9jZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncHVQcm9jZXNzLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkNThmYmU2YjgxOWVjMTgyYWZlMjI3Y2FmMWRlNzY0MDE2
Mzg2ODE1Li5kNzU2YTNkNjkzZjZhNDNmNzQzZTIwOWVkNmQwZTc1YzMzNTFkYmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTgxOSw5ICs4MTks
OSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldAogfQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3Zv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFj
aG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIG1fcHJvY2Vzc1Bvb2wtPmdldEdQVVBy
b2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHJlcGx5
KSk7CisgICAgbV9wcm9jZXNzUG9vbC0+Y3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMs
IFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdwdVByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA0NWFiNjZmNzA1
ZGE3ODRjZDRhZTFlOGI1YmUyMTFlYTdhOTk3NTY0Li40YzIyZGFiMTgwZTA4MDc1NDBmNjAyZjRl
N2UxODA3YmEyODE2ZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtNDgyLDcgKzQ4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQot
ICAgIHZvaWQgZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzJiYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0
aW9uRGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgY3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
SVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDg4YTBmODI2NTQ2ZWEzNDMxOTM2NDg5ZmYyMGVmZTNkYWI5ZmU5ODMuLjhm
ZGIwZjFmNWJiM2EyNWNiNzY5NTY0YTgxNGFiYmMxMTU5NDZiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTM0LDcg
KzM0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoc3RydWN0IFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uSW5mbyBjb25uZWN0aW9uSW5mbykgU3luY2hyb25vdXMKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihzdHJ1Y3Qg
V2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKHN0
cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyBjb25uZWN0aW9uSW5mbykgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQg
Y29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MWIyYzRhYzNhOWEzMGMzOWIwNzQzYzVhNDk2YTNhZTM2MWU5ZTY2OS4uYjY1ZTg0Y2RiMTU5MWQz
MTgxZjgyYWY0YjQ3ZGE1NDkxZGY5Mjc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzQsNyArODM0LDYgQEAKIAkJM0ZCMDhFNDMx
RjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0ZCMDhFNDIxRjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54
Y2Fzc2V0cyAqLzsgfTsKIAkJM0ZGRERCOTYxRjU3N0Y0ODAwNTBFNTkzIC8qIFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNGOTE1QzBGMUY1NjRERUQwMDE4M0NFOSAvKiBXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVySU9TLmggKi87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBS
VENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwotCQk0MTBG
MEQ0QzI3MDFFRkY5MDBGOTZERkMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlv
blBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMEYwRDRCMjcwMUVGRUEwMEY5NkRGQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRp
YWxpemF0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0MTFBOEREQjIwREREMUFDMDA2MEQzNEYg
LyogV0tNb2NrTWVkaWFEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMUE4REQ5MjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmlj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
MUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0Rjcz
NjMgLyogTGliV2ViUlRDTmV0d29yay5oICovOyB9OwogCQk0MTFCODlDOTI3QjJCNzVEMDBGOUVC
RDMgLyogV0tRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQjg5QzcyN0IyQjc1QzAwRjlFQkQzIC8q
IFdLUXVlcnlQZXJtaXNzaW9uUmVzdWx0Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDQyNSw3ICs0NDI0LDYgQEAKIAkJNDEwNDgy
Q0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTBCQTEzOTI1NzEzNUYyMDAyRTJGOEEgLyogTmV0d29ya1JUQ1RDUFNvY2tldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1JUQ1RDUFNvY2tldENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCQTEzQTI1NzEzNUYyMDAyRTJGOEEgLyogTmV0d29y
a1JUQ1RDUFNvY2tldENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSVENUQ1BTb2NrZXRD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTBGMEQ0QjI3MDFFRkVBMDBG
OTZERkMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMTQzNjMyMEY2NzdCMTAwMjZG
OTEyIC8qIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDExMjIzQjcyNjAyMTUyQjAwQjBBMEI2IC8qIFJUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXIubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MTIyM0JCMjYwMjRFODAwMEIwQTBCNiAvKiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzk1NCw3ICs3OTUyLDYgQEAKIAkJCQkxQTE0
RjhERjFENzRDODM0MDA2Q0JFQzYgLyogRnJhbWVJbmZvRGF0YS5jcHAgKi8sCiAJCQkJMUExNEY4
RTAxRDc0QzgzNDAwNkNCRUM2IC8qIEZyYW1lSW5mb0RhdGEuaCAqLywKIAkJCQk1QzEyMUU4MzI0
MTAxRjcwMDA0ODZGOUIgLyogRnJhbWVUcmVlTm9kZURhdGEuaCAqLywKLQkJCQk0MTBGMEQ0QjI3
MDFFRkVBMDBGOTZERkMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMuaCAqLywKIAkJCQk0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8q
IEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oICovLAogCQkJCTBGRDJDQjI1MjZDREQ3QTMwMDA4QjEx
QyAvKiBJZGVudGlmaWVyVHlwZXMuaCAqLywKQEAgLTE0MzM3LDcgKzE0MzM0LDYgQEAKIAkJCQlC
QzA2RjQzQTEyREJDQ0ZCMDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNENGMUU5RDI1RTQwRENDMDAwRjlENzMgLyogR2Vz
dHVyZVJlY29nbml6ZXJDb25zaXN0ZW5jeUVuZm9yY2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQky
REE5NDRBNDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MTBGMEQ0QzI3MDFFRkY5MDBGOTZERkMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0
aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MTRGMTMyMjVERUQ4
NzUwMDcwMDZFNyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEQTA0OUI4MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1v
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQ0U3MkFEMTI0N0U3OEQwMEJDMEVDNCAvKiBIYW5k
bGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYTAxODAyN2JkOTZiYWFh
ZGY2MDQ0MWZiMGM2MGI4ZDViZmRhYzExMy4uYWEzZjQ0NTE2ODJlYWI1MzhmYTAzNmI3Zjg5YzVj
OTQwNTVjYmNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCi0jaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBh
cmFtZXRlcnMuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCIKKyNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAj
aW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CkBAIC01Myw2ICs1NSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KQEAgLTEwNiwxMSArMTA5LDM0IEBA
IHN0YXRpYyB2b2lkIGxhbmd1YWdlc0NoYW5nZWQodm9pZCogY29udGV4dCkKICAgICBzdGF0aWNf
Y2FzdDxHUFVQcm9jZXNzQ29ubmVjdGlvbio+KGNvbnRleHQpLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0VXNlclByZWZlcnJlZExhbmd1
YWdlcyh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpLCB7IH0pOwogfQogCi1HUFVQcm9jZXNzQ29u
bmVjdGlvbjo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0
aGlzKSkKLSNpZiBFTkFCTEUoVlA5KQotICAgICwgbV9oYXNWUDlIYXJkd2FyZURlY29kZXIocGFy
YW1ldGVycy5oYXNWUDlIYXJkd2FyZURlY29kZXIpCitzdGF0aWMgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzIGdldEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycygpCit7CisgICAg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgcGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHkgPSBQcm9jZXNzSWRlbnRp
dHkgeyBQcm9jZXNzSWRlbnRpdHk6OkN1cnJlbnRQcm9jZXNzIH07CisgICAgcGFyYW1ldGVycy5v
dmVycmlkZUxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogI2Vu
ZGlmCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK1JlZlB0cjxHUFVQcm9jZXNzQ29ubmVj
dGlvbj4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb24mIHBhcmVu
dENvbm5lY3Rpb24pCit7CisgICAgYXV0byBjb25uZWN0aW9uSWRlbnRpZmllcnMgPSBJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZUNvbm5lY3Rpb25JZGVudGlmaWVyUGFpcigpOworICAgIGlmICghY29u
bmVjdGlvbklkZW50aWZpZXJzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHBhcmVu
dENvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpDcmVhdGVHUFVQcm9j
ZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllcnMtPmNsaWVudCwgZ2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzKCkpLCAwKTsKKworICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9w
dFJlZigqbmV3IEdQVVByb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZp
ZXJzLT5zZXJ2ZXIpKSk7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICAgICAgaWYg
KHBhcmVudENvbm5lY3Rpb24uaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkpCisgICAg
ICAgICAgICBpbnN0YW5jZS0+Y29ubmVjdGlvbigpLnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9y
VGVzdGluZygpOworI2VuZGlmCisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCitHUFVQcm9jZXNz
Q29ubmVjdGlvbjo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyJiYgY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhp
cykpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CiAKQEAgLTEzMyw2ICsxNTksMjEgQEAg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246On5HUFVQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgcmVtb3Zl
TGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih0aGlzKTsKIH0KIAorI2lmIEhBVkUoQVVESVRfVE9LRU4p
CitzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IEdQVVByb2Nlc3NDb25uZWN0aW9uOjphdWRp
dFRva2VuKCkKK3sKKyAgICBpZiAoIXdhaXRGb3JEaWRJbml0aWFsaXplKCkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1fYXVkaXRUb2tlbjsKK30KKyNlbmRpZgor
Cit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2Nvbm5l
Y3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX2hhc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKwog
dm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKIHsK
ICAgICBhdXRvIHByb3RlY3RvciA9IFJlZiB7ICp0aGlzIH07CkBAIC0yNjAsNiArMzAxLDMxIEBA
IGJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6CiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgp
LmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
IH0KIAordm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkSW5pdGlhbGl6ZShzdGQ6Om9wdGlv
bmFsPEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbz4mJiBpbmZvKQoreworICAgIFdURkxvZ0Fsd2F5
cygiR290IGRpZGluaXRpYWxpemUiKTsKKyAgICBpZiAoIWluZm8pIHsKKyAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1faGFzSW5pdGlhbGl6ZWQgPSB0
cnVlOworI2lmIEVOQUJMRShWUDkpCisgICAgbV9oYXNWUDlIYXJkd2FyZURlY29kZXIgPSBpbmZv
LT5oYXNWUDlIYXJkd2FyZURlY29kZXI7CisjZW5kaWYKK30KKworYm9vbCBHUFVQcm9jZXNzQ29u
bmVjdGlvbjo6d2FpdEZvckRpZEluaXRpYWxpemUoKQoreworICAgIGlmICghbV9oYXNJbml0aWFs
aXplZCkgeworICAgICAgICBib29sIHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+d2FpdEZvckFuZERp
c3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpEaWRJbml0
aWFsaXplPigwLCBkZWZhdWx0VGltZW91dCk7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+aXNWYWxpZCgpOworfQorCiB2b2lk
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmVtb3RlQ29tbWFuZChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHR5cGUsIGNvbnN0IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmIGFyZ3VtZW50KQogewogICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnByb2Nlc3NEaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQodHlwZSwgYXJndW1lbnQpOwpAQCAtMzE2LDYgKzM4Miwx
NCBAQCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjplbmFibGVWUDlEZWNvZGVycyhib29sIGVu
YWJsZVZQOERlY29kZXIsIGJvb2wgZW5hYmxlVgogICAgIG1fZW5hYmxlVlA5U1dEZWNvZGVyID0g
ZW5hYmxlVlA5U1dEZWNvZGVyOwogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFbmFibGVWUDlEZWNvZGVycyhlbmFibGVWUDhEZWNvZGVy
LCBlbmFibGVWUDlEZWNvZGVyLCBlbmFibGVWUDlTV0RlY29kZXIpLCB7IH0pOwogfQorCitib29s
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpoYXNWUDlIYXJkd2FyZURlY29kZXIoKQoreworICAgIGlm
ICghd2FpdEZvckRpZEluaXRpYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBtX2hhc1ZQOUhhcmR3YXJlRGVjb2RlcjsKK30KKwogI2VuZGlmCiAKIHZvaWQgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OnVwZGF0ZU1lZGlhQ29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNGY4
OGUxY2RlMDVmMzM1Zjk1YzczZTVmOWMwMzVkZWZhYjRiYjQ2YS4uMDU2Y2M0MjM1OWM0ZjkwNjNm
MzVlZGViMzAxZDFkYjE0YTM4MjI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBS
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjsKIGNsYXNzIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBX
ZWJQYWdlOwotc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzOworc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbzsKIHN0cnVjdCBPdmVycmlkZVNj
cmVlbkRhdGFGb3JUZXN0aW5nOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiAK
QEAgLTYzLDIwICs2MywxNCBAQCBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5
OwogCiBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVBy
b2Nlc3NDb25uZWN0aW9uPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBHUFVQcm9jZXNz
Q29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVVByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWZQdHI8R1BV
UHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb24mIHBhcmVudENvbm5lY3Rp
b24pOwogICAgIH5HUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIAogICAgIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAoKSB7IHJldHVybiBtX21l
c3NhZ2VSZWNlaXZlck1hcDsgfQogCiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICB2b2lkIHNl
dEF1ZGl0VG9rZW4oc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKSB7IG1f
YXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KLSAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+IGF1ZGl0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2F1ZGl0VG9rZW47IH0KLQotICAgIHZv
aWQgc2V0UHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbihzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+JiYpOworICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
bigpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcigpOwpAQCAtMTAwLDcgKzk0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNW
UDhEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA4RGVjb2RlcjsgfQog
ICAgIGJvb2wgaXNWUDlEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA5
RGVjb2RlcjsgfQogICAgIGJvb2wgaXNWUFNXRGVjb2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2VuYWJsZVZQOVNXRGVjb2RlcjsgfQotICAgIGJvb2wgaGFzVlA5SGFyZHdhcmVEZWNvZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNWUDlIYXJkd2FyZURlY29kZXI7IH0KKyAgICBib29sIGhh
c1ZQOUhhcmR3YXJlRGVjb2RlcigpOwogI2VuZGlmCiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJP
UEFHQVRJT05fVklFVykKQEAgLTExOSw4ICsxMTMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
Q2xpZW50KGNvbnN0IENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoY2xpZW50KTsgfQog
ICAgIHZvaWQgcmVtb3ZlQ2xpZW50KGNvbnN0IENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5y
ZW1vdmUoY2xpZW50KTsgfQogCisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRU
aW1lb3V0ID0gM19zOwogcHJpdmF0ZToKLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzJik7CisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyJiYpOworICAgIGJvb2wgd2FpdEZvckRpZEluaXRpYWxpemUoKTsKKyAg
ICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAg
ICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKQEAgLTEzMSw3ICsx
MjgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCisg
ICAgLy8gTWVzc2FnZXMuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29tbWFuZChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Jik7Cisg
ICAgdm9pZCBkaWRJbml0aWFsaXplKHN0ZDo6b3B0aW9uYWw8R1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvPiYmKTsKIAogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIHZvaWQgYmVn
aW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpD
YXRlZ29yeVR5cGUsIFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVu
dDo6QXJiaXRyYXRpb25DYWxsYmFjayYmKTsKQEAgLTE0MSw3ICsxNDAsNyBAQCBwcml2YXRlOgog
ICAgIC8vIFRoZSBjb25uZWN0aW9uIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgcHJv
Y2Vzcy4KICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7Ci0KKyAgICBib29sIG1faGFz
SW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW47CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCmluZGV4IDYxOGI0Mjk3MDNjYjlkZDZiNzA1MGM5N2NiNmI5MTBlNWUzM2E5
NGYuLjlmNjUyOTRjZjc3Y2JkODZmMmJlODM3ZWY0NjIxNzFmYmJkNmE1YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMjMsNiArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogbWVzc2FnZXMgLT4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gV2FudHNEaXNwYXRjaE1lc3Nh
Z2UgeworICAgIERpZEluaXRpYWxpemUoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkdQVVByb2Nlc3ND
b25uZWN0aW9uSW5mbz4gaW5mbykKICAgICBEaWRSZWNlaXZlUmVtb3RlQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSB0eXBlLCBzdHJ1Y3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bW1hbmRBcmd1bWVudCBhcmd1bWVudCkKIAogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25JbmZvLmgKaW5kZXggZTJkMDI5ZjYxODI2YjA1ZjdjNDc1M2YzM2E2ZDBjYTM4N2E2
MzRjZS4uZTRlZWJkZjUxZjk1OWQ2YWU3MDk3ZWZkN2FmZDdkNTM3MDIzNTNmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
SW5mby5oCkBAIC0yNyw2NSArMjcsNDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAot
I2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgi
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8gewotICAg
IElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuOwogI2VuZGlmCi0gICAgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQot
ICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QKLSAgICB7
Ci0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIHJldHVybiBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIoY29ubmVjdGlvbi5mZCgpLnZhbHVlKCkpOwotI2VsaWYgT1MoREFS
V0lOKQotICAgICAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGNvbm5lY3Rp
b24ucG9ydCgpKTsKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgICAgIHJldHVybiBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIoY29ubmVjdGlvbi5oYW5kbGUoKSk7Ci0jZWxzZQotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcigpOworI2lmIEVOQUJMRShWUDkpCisgICAgYm9vbCBoYXNWUDlIYXJkd2FyZURlY29k
ZXIgeyBmYWxzZSB9OwogI2VuZGlmCi0gICAgfQotCi0gICAgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIHJlbGVhc2VJZGVudGlmaWVyKCkKLSAgICB7Ci0jaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCi0gICAgICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIoY29ubmVjdGlvbi5yZWxlYXNlKCkucmVsZWFzZSgpKTsKLSNlbHNlCi0gICAgICAgIGF1
dG8gcmV0dXJuVmFsdWUgPSBpZGVudGlmaWVyKCk7Ci0jZW5kaWYKLSAgICAgICAgY29ubmVjdGlv
biA9IHsgfTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgIH0KIAogICAgIHZvaWQg
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGVuY29k
ZXIgPDwgY29ubmVjdGlvbjsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgICAgICBlbmNvZGVy
IDw8IGF1ZGl0VG9rZW47CiAjZW5kaWYKLSAgICAgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzOwor
I2lmIEVOQUJMRShWUDkpCisgICAgICAgIGVuY29kZXIgPDwgaGFzVlA5SGFyZHdhcmVEZWNvZGVy
OworI2VuZGlmCiAgICAgfQotICAgIAotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8m
IGluZm8pCisKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmNvbm5lY3Rpb24pKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaW5mby5hdWRpdFRva2VuKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgYXV0byBhdWRpdFRva2VuID0gZGVjb2Rlci5kZWNvZGU8c3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90Pj4oKTsKKyNlbmRpZgorI2lmIEVOQUJMRShWUDkpCisgICAgICAgIGF1
dG8gaGFzVlA5SGFyZHdhcmVEZWNvZGVyID0gZGVjb2Rlci5kZWNvZGU8Ym9vbD4oKTsKKyNlbmRp
ZgorICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7Cisj
aWYgSEFWRShBVURJVF9UT0tFTikKKyAgICAgICAgICAgICphdWRpdFRva2VuLAorI2VuZGlmCisj
aWYgRU5BQkxFKFZQOSkKKyAgICAgICAgICAgICpoYXNWUDlIYXJkd2FyZURlY29kZXIsCiAjZW5k
aWYKLSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0
aW9uUGFyYW1ldGVycz4gcGFyYW1ldGVyczsKLSAgICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJz
OwotICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGluZm8ucGFyYW1ldGVycyA9IFdURk1vdmUoKnBhcmFtZXRlcnMpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNDQ2MDczNTNkYTI3NWZhZGYwMTQ0NjA2NzExMTljM2Yz
NTIxOTRlNC4uY2M0OGQyNWE0YmM1MjZkZWUyM2QwMWMzMmUzZDYxODc5MDI2MWI0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTkxLDcgKzE5MSw2IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCkBAIC0xMjk3LDU1ICsxMjk2LDEzIEBAIFdlYkxvYWRlclN0cmF0ZWd5JiBXZWJQcm9j
ZXNzOjp3ZWJMb2FkZXJTdHJhdGVneSgpCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNp
ZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZUdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyhHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRl
cnMmKQotewotfQotI2VuZGlmCi0KLUdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyBXZWJQcm9jZXNz
OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17
Ci0gICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGxh
dGZvcm1Jbml0aWFsaXplR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzKHBhcmFtZXRlcnMp
OwotCi0gICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5bmNo
cm9ub3VzSVBDU2NvcGU7Ci0KLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8gY29ubmVjdGlv
bkluZm87Ci0gICAgaWYgKCFjb25uZWN0aW9uLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uKHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoY29ubmVjdGlvbklu
Zm8pLCAwKSkgewotICAgICAgICAvLyBJZiB3ZSBmYWlsZWQgdGhlIGZpcnN0IHRpbWUsIHJldHJ5
IG9uY2UuIFRoZSBhdHRhY2htZW50IG1heSBoYXZlIGJlY29tZSBpbnZhbGlkCi0gICAgICAgIC8v
IGJlZm9yZSBpdCB3YXMgcmVjZWl2ZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGlmIHRoZSBuZXR3b3Jr
IHByb2Nlc3MgY3Jhc2hlZC4KLSAgICAgICAgaWYgKCFjb25uZWN0aW9uLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uKHBhcmFtZXRlcnMp
LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6UmVw
bHkoY29ubmVjdGlvbkluZm8pLCAwKSkKLSAgICAgICAgICAgIGZhaWxlZFRvU2VuZFN5bmNNZXNz
YWdlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbm5lY3Rpb25JbmZvOwotfQotCiBHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYgV2ViUHJvY2Vzczo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8vIElmIHdl
J3ZlIGxvc3Qgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIEdQVSBwcm9jZXNzIChlLmcuIGl0IGNyYXNo
ZWQpIHRyeSB0byByZS1lc3RhYmxpc2ggaXQuCiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0
aW9uKSB7Ci0gICAgICAgIGF1dG8gY29ubmVjdGlvbkluZm8gPSBnZXRHUFVQcm9jZXNzQ29ubmVj
dGlvbigqcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSk7Ci0KLSAgICAgICAgLy8gUmV0cnkgb25j
ZSBpZiB0aGUgSVBDIHRvIGdldCB0aGUgY29ubmVjdGlvbklkZW50aWZpZXIgc3VjY2VlZGVkIGJ1
dCB0aGUgY29ubmVjdGlvbklkZW50aWZpZXIgd2UgcmVjZWl2ZWQKLSAgICAgICAgLy8gaXMgaW52
YWxpZC4gVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgR1BVIHByb2Nlc3MgaGFzIGNyYXNoZWQu
Ci0gICAgICAgIGlmICghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0
aW9uSW5mby5pZGVudGlmaWVyKCkpKQotICAgICAgICAgICAgY29ubmVjdGlvbkluZm8gPSBnZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbigqcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSk7Ci0KLSAgICAg
ICAgaWYgKCFJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JbmZv
LmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25J
bmZvLnJlbGVhc2VJZGVudGlmaWVyKCksIGNvbm5lY3Rpb25JbmZvLnBhcmFtZXRlcnMpOwotI2lm
IEhBVkUoQVVESVRfVE9LRU4pCi0gICAgICAgIEFTU0VSVChjb25uZWN0aW9uSW5mby5hdWRpdFRv
a2VuKTsKLSAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+c2V0QXVkaXRUb2tlbihXVEZN
b3ZlKGNvbm5lY3Rpb25JbmZvLmF1ZGl0VG9rZW4pKTsKLSNlbmRpZgotI2lmIEVOQUJMRShJUENf
VEVTVElOR19BUEkpCi0gICAgICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5pZ25v
cmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSkKLSAgICAgICAgICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZXRJZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmco
KTsKLSNlbmRpZgorICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSgqcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CiAKICAgICAgICAg
Zm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAvLyBJ
ZiBwYWdlIGlzIG51bGwsIHRoZW4gaXQgaXMgY3VycmVudGx5IGJlaW5nIGNvbnN0cnVjdGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggYzc1NzdiOWFhOWI2MDE0NjQ1
NmE0NjU0MGM0MGEzY2JkN2FmMWJhOS4uY2EwNjY0NGU5NjM0OTM5NzU5YmY5YzE2NzgwNzJlMGM5
ZjAxOTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNDMsOCAr
MTQzLDYgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogY2xhc3Mg
V2ViUHJvY2Vzc1N1cHBsZW1lbnQ7CiAKLXN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm87
Ci1zdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzOwogc3RydWN0IFJlbW90ZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YTsKIHN0cnVjdCBVc2VyTWVzc2FnZTsKIHN0cnVjdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtNTg2LDExICs1ODQsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlRnJlZXplclN0YXR1cygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCi0gICAgc3RhdGljIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyBnZXRHUFVQcm9j
ZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICBzdGF0aWMgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemVHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25QYXJhbWV0ZXJzJik7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lk
IHN1c3BlbmRBbGxNZWRpYUJ1ZmZlcmluZygpOwogICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFCdWZm
ZXJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCmluZGV4IDY4NjMxZWZlMmE0OWU1Nzg2ZGMyZmI1YWU2ZjNiNTM2ZGEyN2I3ZWYu
LjkyMmRlNTNlNjI1ZmMwOGMzZTc4MmRiY2MyYmY3ZDhhYjQwZWQ5YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjcsNyAr
MjcsNiBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
U3VwcG9ydFNQSS5oIgotI2ltcG9ydCAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgi
CiAjaW1wb3J0ICJMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oIgogI2ltcG9ydCAiTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dJbml0aWFsaXphdGlvbi5o
IgpAQCAtMTI0NiwxNSArMTI0NSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6d2FpdEZvclBlbmRpbmdQ
YXN0ZWJvYXJkV3JpdGVzVG9GaW5pc2goY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkCiAgICAgfQog
fQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIHBhcmFtZXRlcnMud2ViUHJvY2Vzc0lk
ZW50aXR5ID0gUHJvY2Vzc0lkZW50aXR5IHsgUHJvY2Vzc0lkZW50aXR5OjpDdXJyZW50UHJvY2Vz
cyB9OwotCi0gICAgcGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNPdmVycmlkZSgpOwotfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiB2b2lk
IFdlYlByb2Nlc3M6OnN5c3RlbVdpbGxQb3dlck9uKCkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458858</attachid>
            <date>2022-05-05 01:32:23 -0700</date>
            <delta_ts>2022-05-05 06:43:50 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-239905-20220505113221.patch</filename>
            <type>text/plain</type>
            <size>49808</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE3MDE1ZGU0ZGNmMzQ3YmNm
MTUzYmI4YzI4YTVlMDYwNDU3MWYyN2UuLjJkOWUxMGU4OTVhMWZmMDAxYTI3Y2FhY2RhM2YyMzJj
ZDM1ODE5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMjItMDUtMDQgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW5nIHRvIEdQ
VSBwcm9jZXNzIG1heSBoYW5nIGlmIFVJIHByb2Nlc3Mgc2VuZHMgc3luYyBtZXNzYWdlIHNpbXVs
dGFuZW91c2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBQ
cmV2aW91c2x5LCBlc3RhYmxpc2hpbmcgR1BVIHByb2Nlc3MgY29ubmVjdGlvbiB3b3VsZCBiZSBh
IHN5bmMgbWVzc2FnZToKKyAgICAgICAgIDEuIFdQIC0+IFVJIHN5bmMgR2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb24KKyAgICAgICAgIDIuIFVJIC0+IEdQVVAgYXN5bmMgQ3JlYXRlR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcworICAgICAgICAgMy4gR1BVUCAtPiBVSSBhc3luYyByZXBseSBDcmVhdGVH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCisgICAgICAgICA0LiBVSSAtPiBXUCBzeW5jIHJlcGx5
IEdldEdQVVByb2Nlc3NDb25uZWN0aW9uCisKKyAgICAgICAgSWYgVUkgd291bGQgc2VuZCBhIG1l
c3NhZ2UgdG8gV1AgYWZ0ZXIgc3RlcCAzIGFuZCB3YWl0IGZvciByZXBseSwgdGhpcworICAgICAg
ICB3b3VsZCBuZXZlciBjb21lIGFzIFdQIHdvdWxkIGJlIHdhaXRpbmcgZm9yIHRoZSBzeW5jIHJl
cGx5IGZvciBHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbi4KKworICAgICAgICBUaGlzIHdvdWxkIGhh
cHBlbiBmb3IgZXhhbXBsZSB3aXRoIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29t
cGxldGlvbkhhbmRsZXIsCisgICAgICAgIHdoaWNoIHdvdWxkIHNlbmQgSGFuZGxlQXV0b2NvcnJl
Y3Rpb25Db250ZXh0UmVxdWVzdCBhbmQgd2FpdCBmb3IKKyAgICAgICAgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0IG1lc3NhZ2VzLgorCisgICAgICAg
IE1pdGlnYXRlIHRoaXMgYnkgY3JlYXRpbmcgdGhlIEdQVSBjb25uZWN0aW9uIGluIFdQIGFuZCBz
ZW5kaW5nCisgICAgICAgIHRoYXQgdG8gR1BVUCB0aHJvdWdoIFVJIGluIGFuIGFzeW5jIG1lc3Nh
Z2UuIFRoaXMgd2F5IFdQIGRvZXMgbm90IGJsb2NrIG9uIHRoZSBHUFVQCisgICAgICAgIGNvbm5l
Y3Rpb24gaW5pdGlhbGl6YXRpb24uIFNlbmQgdGhlIEdQVVAgY29ubmVjdGlvbiBpbml0aWFsaXph
dGlvbiByZXN1bHQsIGF1ZGl0IHRva2VuIGFuZAorICAgICAgICB2cDkgSFcgZGVjb2RlciBwcmVz
ZW5jZSwgYXMgdGhlIGZpcnN0IHVzZXIgbWVzc2FnZSB0aHJvdWdoIHRoZSBuZXcgY29ubmVjdGlv
bi4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmFzQ29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9j
ZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL0dQVVByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9HUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJv
eHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVHUFVQcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpHUFVQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjphdWRpdFRva2Vu
KToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkSW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjp3YWl0Rm9yRGlkSW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpoYXNWUDlIYXJkd2Fy
ZURlY29kZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
Lmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbzo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvOjpkZWNvZGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbToKKwogMjAyMi0wNS0wNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjkzNzE2KTogbWFjQ2F0YWx5c3QgV2Vi
S2l0IGJ1aWxkIGZhaWxzOyBvdmVybGFwcGluZyBjb250ZW50IGF0IC9TeXN0ZW0vTGlicmFyeS9G
ZWF0dXJlRmxhZ3MvRG9tYWluL1dlYktpdC5wbGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDY1MTJjMjMy
MTc1ZDBiNGU4NTcxODVhM2JmNzY5NTlmYjUzNGU3MTcuLjZiYjA5NTlmMGIxZTdmNmE0YzkzZDcw
YTIzMjI4YzI2MmNhYTkxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJHUFVQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTIzMiwxMyArMjMzLDEzIEBAIHByaXZhdGU6
CiAKICNlbmRpZgogCi1SZWY8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoR1BV
UHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyJiYgY29ubmVjdGlvbklkZW50aWZpZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhncHVQcm9jZXNzLCB3ZWJQcm9jZXNzSWRlbnRpZmllciwgY29u
bmVjdGlvbklkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1UHJvY2Vz
cywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb25uZWN0aW9uSWRl
bnRpZmllciksIFdURk1vdmUocGFyYW1ldGVycykpKTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNz
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
Ci0gICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCitHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciYmIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQor
ICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlv
bihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQogICAgICwgbV9ncHVQcm9jZXNzKGdwdVBy
b2Nlc3MpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVy
KQogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpdHkoV1RGTW92ZShwYXJhbWV0ZXJzLndlYlByb2Nl
c3NJZGVudGl0eSkpCkBAIC0yNzgsNyArMjc5LDE1IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2Vi
CiAgICAgLy8gcmVwbHkgZnJvbSB0aGUgR1BVIHByb2Nlc3MsIHdoaWNoIHdvdWxkIGJlIHVuc2Fm
ZS4KICAgICBtX2Nvbm5lY3Rpb24tPnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKICAgICBt
X2Nvbm5lY3Rpb24tPm9wZW4oKTsKLQorICAgIFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvIGluZm8geworI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgICAgIGdwdVByb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpLAorI2VuZGlmCisjaWYgRU5B
QkxFKFZQOSkKKyAgICAgICAgV2ViQ29yZTo6dnA5SGFyZHdhcmVEZWNvZGVyQXZhaWxhYmxlKCkK
KyNlbmRpZgorICAgIH07CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6RGlkSW5pdGlhbGl6ZShpbmZvKSwgMCk7CiAgICAgKytnT2JqZWN0Q291
bnRGb3JUZXN0aW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA1ZjM5NzViZjI3ZjdmMGZjMWMyODEzZDFk
NTc1ZDg2YjlhZTJkNzExLi43YmQ4ZTk4NDc4MTE4ODk1Y2FkMTFmOThiMTNjYTJmZDlhYzQzM2Qx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVudAog
ICAgICwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciYmLCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdmlydHVhbCB+
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogCiAgICAgdXNpbmcgV2ViQ29yZTo6Tm93UGxh
eWluZ01hbmFnZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhHUFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycyYmKTsKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciYmLCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJiByZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuY3BwCmluZGV4IGQ5ZTc3NWZkYTY4NDczMDg0MTk5YTdiMmZiYmM5NWU5MjkxYTRiMDAu
LjUxOTE2NTc0ZTgwYjI1NDI2ZWY3ZDVjMDU1NWQ4MDBlN2JmOTExZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJB
dXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC0x
MTYsMTYgKzExNSwyNSBAQCB2b2lkIEdQVVByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZQogICAgIGRpZFJlY2VpdmVH
UFVQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBHUFVQcm9j
ZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJiwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGF0aWMgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGFzQ29ubmVjdGlvbklkZW50aWZpZXIoSVBDOjpBdHRh
Y2htZW50JiYgY29ubmVjdGlvbkhhbmRsZSkKK3sKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKKyAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHsgY29ubmVjdGlvbkhh
bmRsZS5yZWxlYXNlKCkucmVsZWFzZSgpIH07CisjZWxpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJu
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciB7IGNvbm5lY3Rpb25IYW5kbGUucG9ydCgpIH07
CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgeyBjb25uZWN0aW9uSGFuZGxlLmhhbmRsZSgpIH07CisjZWxzZQorICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciB7IH07CisjZW5k
aWYKK30KKwordm9pZCBHUFVQcm9jZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgSVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAi
JXAgLSBHUFVQcm9jZXNzOjpjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOiBwcm9jZXNz
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHRoaXMsIGlkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAg
YXV0byBjb25uZWN0aW9uSWRlbnRpZmllcnMgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNvbm5l
Y3Rpb25JZGVudGlmaWVyUGFpcigpOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXJzKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAotICAgIGF1dG8gbmV3Q29ubmVjdGlvbiA9IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgY29ubmVjdGlvbklkZW50aWZpZXJzLT5zZXJ2
ZXIsIHNlc3Npb25JRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgYXV0byBuZXdDb25uZWN0
aW9uID0gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKCp0aGlzLCBpZGVudGlmaWVy
LCBzZXNzaW9uSUQsIGFzQ29ubmVjdGlvbklkZW50aWZpZXIoV1RGTW92ZShjb25uZWN0aW9uSWRl
bnRpZmllcikpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciBjb2RlIHRvIGdvIGZyb20gV2Vi
UHJvY2VzcyAtPiBHUFVQcm9jZXNzIC0+IFVJUHJvY2VzcyB3aGVuIGdldFVzZXJNZWRpYSBpcyBj
YWxsZWQgaW5zdGVhZCBvZiBnb2luZyBmcm9tIFdlYlByb2Nlc3MgLT4gVUlQcm9jZXNzIGRpcmVj
dGx5LgpAQCAtMTQyLDExICsxNTAsOCBAQCB2b2lkIEdQVVByb2Nlc3M6OmNyZWF0ZUdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbgogICAgIEFT
U0VSVCghbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAg
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKG5ld0Nvbm5l
Y3Rpb24pKTsKIAotICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzIGNvbm5lY3Rpb25QYXJhbWV0ZXJzOwotI2lmIEVOQUJMRShWUDkpCi0gICAgY29ubmVjdGlv
blBhcmFtZXRlcnMuaGFzVlA5SGFyZHdhcmVEZWNvZGVyID0gV2ViQ29yZTo6dnA5SGFyZHdhcmVE
ZWNvZGVyQXZhaWxhYmxlKCk7Ci0jZW5kaWYKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbm5lY3Rpb25JZGVudGlmaWVycy0+Y2xpZW50KSwgV1RGTW92ZShjb25uZWN0aW9uUGFyYW1l
dGVycykpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBHUFVQcm9jZXNz
OjpyZW1vdmVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAppbmRleCAx
ZTA3YWQxM2E4ZDk2MGQ1ZWEzNDFjYzkyZGFiNzc2YjlhZGRkZGJjLi44MzdhNjdhNDlkYTNkOWRl
MzYxZTQxM2ZiZTdmMDJkYTEwMTUzY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLmgKQEAgLTU5LDcgKzU5LDYgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotc3RydWN0
IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IEdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBHUFVQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOwogc3RydWN0IEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVyczsKQEAgLTEzOSw3
ICsxMzgsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQg
aW5pdGlhbGl6ZUdQVVByb2Nlc3MoR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKLSAg
ICB2b2lkIGNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4m
JiwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJik+JiYpOwor
ICAgIHZvaWQgY3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6QXR0YWNobWVudCYmLCBHUFVQcm9jZXNz
Q29ubmVjdGlvblBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGFkZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1l
dGVycyYmKTsKICAgICB2b2lkIHJlbW92ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGY5
MGE0ODc5YjRlMWQxNGI4MTY3MThkODgyMjBiNmMyYThiYzczNzMuLmRjZjExMWY3YTNjNjNiNDJh
NDdjOWE1YmVlNGUxNGE1YzA4MWM5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdlcyAtPiBH
UFVQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplR1BVUHJvY2VzcyhzdHJ1
Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMpCiAKLSAgICBDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyBwYXJh
bWV0ZXJzKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9u
UGFyYW1ldGVycyBwYXJhbWV0ZXJzKQorICAgIENyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycykg
LT4gKCkKIAogICAgIFByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkg
LT4gKCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFy
YW1ldGVycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmVlYTE4YWVkY2I5MGQ1
ZGU0YjEwZWNlZjcyMjg5OWNmMmY3N2NlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9u
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0K
LSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
c3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHsKLSNp
ZiBFTkFCTEUoVlA5KQotICAgIGJvb2wgaGFzVlA5SGFyZHdhcmVEZWNvZGVyIHsgZmFsc2UgfTsK
LSNlbmRpZgotCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAot
ICAgIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgICAgICBlbmNvZGVyIDw8IGhhc1ZQOUhhcmR3YXJl
RGVjb2RlcjsKLSNlbmRpZgotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVVBy
b2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQotICAgIHsKLSNpZiBFTkFCTEUoVlA5KQotICAgICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGhhc1ZQOUhhcmR3YXJlRGVjb2RlcjsKLSAgICAgICAgZGVjb2RlciA+PiBoYXNW
UDlIYXJkd2FyZURlY29kZXI7Ci0gICAgICAgIGlmICghaGFzVlA5SGFyZHdhcmVEZWNvZGVyKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSNlbmRpZgotCi0gICAgICAgIHJldHVy
biBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7Ci0jaWYgRU5B
QkxFKFZQOSkKLSAgICAgICAgICAgIFdURk1vdmUoKmhhc1ZQOUhhcmR3YXJlRGVjb2RlcikKLSNl
bmRpZgotICAgICAgICB9OwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaAppbmRleCAxMTg5ZWE5ZWY1ZDhj
OWJkZWU1OGZlZTk3YzgyYTdlOTczMGZhODc5Li5kOTIzNTdkNzIxYzAyZTA5Y2QyY2IwYjgzNjk2
MDFiOWYxNzNiODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNz
Q29ubmVjdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaApAQCAtNTksMzMgKzU5LDE3IEBAIHN0cnVjdCBHUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgewogCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
dHk+IHdlYlByb2Nlc3NJZGVudGl0eTsKLSAgICAgICAgZGVjb2RlciA+PiB3ZWJQcm9jZXNzSWRl
bnRpdHk7Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzc0lkZW50aXR5KQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBvdmVycmlkZUxhbmd1YWdlczsKLSAgICAgICAgZGVjb2RlciA+PiBvdmVycmlkZUxhbmd1YWdl
czsKLSAgICAgICAgaWYgKCFvdmVycmlkZUxhbmd1YWdlcykKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZDsKLSAgICAgICAgZGVjb2RlciA+PiBpc0NhcHRpdmVQb3J0YWxNb2RlRW5h
YmxlZDsKLSAgICAgICAgaWYgKCFpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KKyAgICAgICAgYXV0byB3ZWJQcm9jZXNzSWRlbnRp
dHkgPSBkZWNvZGVyLmRlY29kZTxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHk+KCk7CisgICAgICAg
IGF1dG8gb3ZlcnJpZGVMYW5ndWFnZXMgPSBkZWNvZGVyLmRlY29kZTxWZWN0b3I8U3RyaW5nPj4o
KTsKKyAgICAgICAgYXV0byBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IGRlY29kZXIuZGVj
b2RlPGJvb2w+KCk7CiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxib29sPiBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7Ci0gICAgICAgIGRl
Y29kZXIgPj4gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOwotICAgICAgICBpZiAoIWln
bm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIGF1dG8gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nID0gZGVj
b2Rlci5kZWNvZGU8Ym9vbD4oKTsKICNlbmRpZgotCiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBwcmVzZW50aW5nQXBwbGljYXRpb25B
dWRpdFRva2VuOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByZXNlbnRpbmdBcHBsaWNh
dGlvbkF1ZGl0VG9rZW4pKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgYXV0byBwcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuID0gZGVjb2Rlci5kZWNvZGU8
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90Pj4oKTsKICNlbmRpZgorICAgICAgICBpZiAoIWRl
Y29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHsKICAgICAgICAgICAg
IFdURk1vdmUoKndlYlByb2Nlc3NJZGVudGl0eSksCkBAIC05NSw3ICs3OSw3IEBAIHN0cnVjdCBH
UFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgewogICAgICAgICAgICAgKmlnbm9yZUludmFs
aWRNZXNzYWdlRm9yVGVzdGluZywKICNlbmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAg
ICAgICAgICBXVEZNb3ZlKHByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4pLAorICAgICAg
ICAgICAgV1RGTW92ZSgqcHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbiksCiAjZW5kaWYK
ICAgICAgICAgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDE3NzhkNjE1MWM5ZDJhYzk3OGMwNDMyN2UwZTE3NTExY2E3
NTJjZDUuLmNhN2FjZmQyYTk0MTU2OTUxNWJkY2EzODg5ZDdiYTdhNmM4YTE4OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBAIC0yOSw3
ICsyOSw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eS5oIgotI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oIgogI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkdQVVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzTWVzc2FnZXMuaCIK
QEAgLTM2OSwzMyArMzY4LDE1IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNo
dXREb3duKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgc2luZ2xldG9uKCkg
PSBudWxscHRyOwogfQogCi12b2lkIEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIGNvbnN0IEdQVVByb2Nlc3ND
b25uZWN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBH
UFVQcm9jZXNzUHJveHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94
eSYgd2ViUHJvY2Vzc1Byb3h5LCBJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmll
ciwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBh
ZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkpOwotCiAgICAgUkVM
RUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIEdQVVByb2Nlc3NQcm94eSBpcyB0YWtp
bmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVz
dGluZyBhIGNvbm5lY3Rpb24iLCB0aGlzKTsKICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIo
VXNlTGF6eVN0b3A6Ok5vKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkdQVVBy
b2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHku
Y29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSwgcGFy
YW1ldGVycyB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KV0oYXV0byYmIGlkZW50aWZpZXIsIGF1dG8mJiBjb25uZWN0aW9uUGFyYW1l
dGVycykgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3ND
b25uZWN0aW9uOiBHUFVQcm9jZXNzUHJveHkgZGVhbGxvY2F0ZWQgZHVyaW5nIGNvbm5lY3Rpb24g
ZXN0YWJsaXNobWVudCIpOwotICAgICAgICAgICAgcmV0dXJuIHJlcGx5KHsgfSk7Ci0gICAgICAg
IH0KLQorICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRl
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lk
ZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpLCBjb25uZWN0aW9uSWRlbnRp
ZmllciwgcGFyYW1ldGVycyB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSAgICAgICAgaWYgKCFpZGVudGlm
aWVyKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vz
c1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogY29ubmVjdGlvbiBpZGVudGlmaWVyIGlz
IGVtcHR5Iik7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKLSAgICAgICAgfQotCi0j
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpIHx8IE9TKFdJTkRPV1MpCi0gICAgICAgIHJlcGx5
KEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7IFdURk1vdmUoKmlkZW50aWZpZXIpIH0pOwotICAg
ICAgICBVTlVTRURfVkFSSUFCTEUodGhpcyk7Ci0jZWxpZiBPUyhEQVJXSU4pCi0gICAgICAgIE1F
U1NBR0VfQ0hFQ0soTUFDSF9QT1JUX1ZBTElEKGlkZW50aWZpZXItPnBvcnQoKSkpOwotICAgICAg
ICByZXBseShHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBJUEM6OkF0dGFjaG1lbnQgeyBpZGVu
dGlmaWVyLT5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EIH0sIHRoaXMtPmNvbm5lY3Rp
b24oKS0+Z2V0QXVkaXRUb2tlbigpLCBXVEZNb3ZlKGNvbm5lY3Rpb25QYXJhbWV0ZXJzKSB9KTsK
LSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKICAgICB9LCAwLCBJUEM6
OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaApp
bmRleCAwYjBmMzBmMGNmODFiODFjZGFmY2RjZjEzYzEwZjcwODcxOGJlNTU3Li5kODUyMzA2YTY2
MmYzNGU0YTBmYWYyNjlmMjQ0YjNkZWM2Njk1ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgR1BVUHJvY2Vzc1Byb3h5KiBzaW5nbGV0b25JZkNyZWF0ZWQoKTsKICAgICB+R1BV
UHJvY2Vzc1Byb3h5KCk7CiAKLSAgICB2b2lkIGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlBy
b2Nlc3NQcm94eSYsIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYsIE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5
JiYpOworICAgIHZvaWQgY3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiwgSVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIEdQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycyYmKTsKIAogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigp
IGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5k
ZXggZGVlOGY0NmU0MGM3OTg5MmNmNzZlMjA0MzAwOTRiYmRiMWQ3OWM2Zi4uNDVlMzU2ZjE2NWIw
Nzg3YzUxZDE2NGFkZWFmMGM4M2U5NjFmYTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkF1eGlsaWFy
eVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbklu
Zm8uaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJHYW1lcGFkRGF0YS5oIgogI2luY2x1ZGUgIkhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNh
Z2VTYW1wbGVyLmgiCkBAIC01MTQsNyArNTEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z3B1
UHJvY2Vzc0V4aXRlZChQcm9jZXNzSUQgaWRlbnRpZmllciwgUHJvY2Vzc1Rlcm1pbmF0aW9uUmUK
ICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9u
KFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBHUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nl
c3NQcm94eSwgSVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICNpZiBFTkFC
TEUoSVBDX1RFU1RJTkdfQVBJKQogICAgIHBhcmFtZXRlcnMuaWdub3JlSW52YWxpZE1lc3NhZ2VG
b3JUZXN0aW5nID0gd2ViUHJvY2Vzc1Byb3h5Lmlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGlu
ZygpOwpAQCAtNTI1LDIxICs1MjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRHUFVQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgRwogI2VuZGlm
CiAKICAgICBwYXJhbWV0ZXJzLmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkID0gd2ViUHJvY2Vz
c1Byb3h5LmNhcHRpdmVQb3J0YWxNb2RlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9y
dGFsTW9kZTo6RW5hYmxlZDsKLQotICAgIGVuc3VyZUdQVVByb2Nlc3MoKS5nZXRHUFVQcm9jZXNz
Q29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIHBhcmFtZXRlcnMsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBwYXJhbWV0ZXJzLCB3ZWJQcm9jZXNzUHJveHkgPSBXZWFrUHRy
IHsgd2ViUHJvY2Vzc1Byb3h5IH0sIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChhdXRvJiBjb25u
ZWN0aW9uSW5mbykgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghSVBDOjpDb25uZWN0
aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9uSW5mby5pZGVudGlmaWVyKCkpKSkgewot
ICAgICAgICAgICAgLy8gUmV0cnkgb24gdGhlIG5leHQgUnVuTG9vcCBpdGVyYXRpb24gYmVjYXVz
ZSB3ZSBtYXkgYmUgaW5zaWRlIHRoZSBXZWJQcm9jZXNzUG9vbCBkZXN0cnVjdG9yLgotICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBXVEZNb3ZlKHdlYlByb2Nlc3NQcm94eSksIHBh
cmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAo
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMgJiYgd2ViUHJvY2Vzc1By
b3h5KSB7Ci0gICAgICAgICAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3MsICJnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogRmFpbGVkIGZpcnN0IGF0dGVt
cHQsIHJldHJ5aW5nIik7Ci0gICAgICAgICAgICAgICAgICAgIGVuc3VyZUdQVVByb2Nlc3MoKS5n
ZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigqd2ViUHJvY2Vzc1Byb3h5LCBwYXJhbWV0ZXJzLCBXVEZN
b3ZlKHJlcGx5KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHJlcGx5KHsgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICByZXBseShjb25uZWN0aW9uSW5mbyk7Ci0gICAgfSk7CisgICAgZW5zdXJl
R1BVUHJvY2VzcygpLmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwg
V1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUocGFyYW1ldGVycykpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRh
OWE1NTQ1ZDhiZmQ4NGNlODFmOTdmODFlNjc2YmEyYzk4NjZlMzkuLmQ0ZGEzZGE4NDQzZjZkMTNl
YzJlMzBhYjI0OGJhOGJhMTNiYTdmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaApAQCAtMzYzLDcgKzM2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdwdVByb2Nl
c3NEaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0lEKTsKICAgICB2b2lkIGdwdVByb2Nlc3NFeGl0
ZWQoUHJvY2Vzc0lELCBQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwogCi0gICAgdm9pZCBnZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBHUFVQcm9jZXNzQ29ubmVjdGlv
blBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVhdGVHUFVQcm9jZXNzQ29ubmVj
dGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkF0dGFjaG1lbnQmJiwgV2ViS2l0OjpHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAKICAgICBHUFVQcm9jZXNzUHJveHkmIGVuc3Vy
ZUdQVVByb2Nlc3MoKTsKICAgICBHUFVQcm9jZXNzUHJveHkqIGdwdVByb2Nlc3MoKSBjb25zdCB7
IHJldHVybiBtX2dwdVByb2Nlc3MuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ1OGZiZTZiODE5ZWMxODJhZmUyMjdjYWYxZGU3NjQw
MTYzODY4MTUuLmQ3NTZhM2Q2OTNmNmE0M2Y3NDNlMjA5ZWQ2ZDBlNzVjMzM1MWRiYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtODE5LDkgKzgx
OSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0CiB9CiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0
YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgbV9wcm9jZXNzUG9vbC0+Z2V0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVw
bHkpKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5jcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbigqdGhp
cywgV1RGTW92ZShjb25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUocGFyYW1ldGVycykpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDQ1YWI2NmY3
MDVkYTc4NGNkNGFlMWU4YjViZTIxMWVhN2E5OTc1NjQuLjRjMjJkYWIxODBlMDgwNzU0MGY2MDJm
NGU3ZTE4MDdiYTI4MTZkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC00ODIsNyArNDgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
Ci0gICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihHUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMmJiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlv
bihJUEM6OkF0dGFjaG1lbnQmJiBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggODhhMGY4MjY1NDZlYTM0MzE5MzY0ODlmZjIwZWZlM2RhYjlmZTk4My4u
OGZkYjBmMWY1YmIzYTI1Y2I3Njk1NjRhODE0YWJiYzExNTk0NmIwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzQs
NyArMzQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIEdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpIC0+IChzdHJ1Y3QgV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIGNvbm5lY3Rpb25JbmZvKSBTeW5jaHJvbm91cwogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIEdldEdQVVByb2Nlc3NDb25uZWN0aW9uKHN0cnVj
dCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAo
c3RydWN0IFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIGNvbm5lY3Rpb25JbmZvKSBT
eW5jaHJvbm91cworICAgIENyZWF0ZUdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzNDhjZGQyNmNkOTc0NzM5YjRmNTBkMGY4MmVjMzk1ZGYxMmQ1OWNiLi4wOTYyYzYwM2QyODBk
OGJjY2IzMzBjY2I0MWNhM2Q3ZjA0ODU0OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzMyw3ICs4MzMsNiBAQAogCQkzRkIwOEU0
MzFGNjBCMjQwMDA1RTUzMTIgLyogaU9TLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRkIwOEU0MjFGNjBCMjQwMDA1RTUzMTIgLyogaU9T
LnhjYXNzZXRzICovOyB9OwogCQkzRkZEREI5NjFGNTc3RjQ4MDA1MEU1OTMgLyogV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gM0Y5MTVDMEYxRjU2NERFRDAwMTgzQ0U5IC8qIFdLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXJJT1MuaCAqLzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8q
IFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07Ci0JCTQx
MEYwRDRDMjcwMUVGRjkwMEY5NkRGQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0
aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEwRjBENEIyNzAxRUZFQTAwRjk2REZDIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCTQxMUE4RERCMjBEREQxQUMwMDYwRDM0
RiAvKiBXS01vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDExQThERDkyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2
aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRG
NzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMUI4OUM5MjdCMkI3NUQwMEY5
RUJEMyAvKiBXS1F1ZXJ5UGVybWlzc2lvblJlc3VsdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCODlDNzI3QjJCNzVDMDBGOUVCRDMg
LyogV0tRdWVyeVBlcm1pc3Npb25SZXN1bHRDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NDEzLDcgKzQ0MTIsNiBAQAogCQk0MTA0
ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMEJBMTM5MjU3MTM1RjIwMDJFMkY4QSAvKiBOZXR3b3JrUlRDVENQU29ja2V0Q29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUlRDVENQU29ja2V0Q29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMEJBMTNBMjU3MTM1RjIwMDJFMkY4QSAvKiBOZXR3
b3JrUlRDVENQU29ja2V0Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1JUQ1RDUFNvY2tl
dENvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMEYwRDRCMjcwMUVGRUEw
MEY5NkRGQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1l
dGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTExNDM2MzIwRjY3N0IxMDAy
NkY5MTIgLyogSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEyMjNCNzI2MDIxNTJCMDBCMEEwQjYgLyogUlRDRGF0YUNo
YW5uZWxSZW1vdGVNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDExMjIzQkIyNjAyNEU4MDAwQjBBMEI2IC8qIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTQxLDcgKzc5MzksNiBAQAogCQkJCTFB
MTRGOERGMUQ3NEM4MzQwMDZDQkVDNiAvKiBGcmFtZUluZm9EYXRhLmNwcCAqLywKIAkJCQkxQTE0
RjhFMDFENzRDODM0MDA2Q0JFQzYgLyogRnJhbWVJbmZvRGF0YS5oICovLAogCQkJCTVDMTIxRTgz
MjQxMDFGNzAwMDQ4NkY5QiAvKiBGcmFtZVRyZWVOb2RlRGF0YS5oICovLAotCQkJCTQxMEYwRDRC
MjcwMUVGRUEwMEY5NkRGQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFy
YW1ldGVycy5oICovLAogCQkJCTQ2QUM1MzI0MjVERUQ4MUUwMDNCNTdFQyAvKiBHUFVQcm9jZXNz
Q29ubmVjdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQkxQUM3NUExQTFCMzM2ODI3MDA1Njc0NUIg
LyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggKi8sCiAJCQkJMEZEMkNCMjUyNkNERDdBMzAwMDhC
MTFDIC8qIElkZW50aWZpZXJUeXBlcy5oICovLApAQCAtMTQzMjMsNyArMTQzMjAsNiBAQAogCQkJ
CUJDMDZGNDNBMTJEQkNDRkIwMDJENzhERSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Q0YxRTlEMjVFNDBEQ0MwMDBGOUQ3MyAvKiBH
ZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQTk0NEE0MTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQxMEYwRDRDMjcwMUVGRjkwMEY5NkRGQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbklu
aXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYxNEYxMzIyNURF
RDg3NTAwNzAwNkU3IC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkRBMDQ5QjgxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJl
bW90ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBDRTcyQUQxMjQ3RTc4RDAwQkMwRUM0IC8qIEhh
bmRsZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBhMDE4MDI3YmQ5NmJh
YWFkZjYwNDQxZmIwYzYwYjhkNWJmZGFjMTEzLi5lZTBjOTEzZWY2OTE2ZjI5NTUzZjliZGYxMWNk
YjIyY2Y5ZjdkMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1ZGUgIkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9u
UGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oIgorI2lu
Y2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIK
ICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKQEAgLTUzLDYgKzU1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgpAQCAtMTA2LDExICsxMDksMzQg
QEAgc3RhdGljIHZvaWQgbGFuZ3VhZ2VzQ2hhbmdlZCh2b2lkKiBjb250ZXh0KQogICAgIHN0YXRp
Y19jYXN0PEdQVVByb2Nlc3NDb25uZWN0aW9uKj4oY29udGV4dCktPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRVc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzKHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSksIHsgfSk7CiB9CiAKLUdQVVByb2Nlc3ND
b25uZWN0aW9uOjpHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogbV9jb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwg
KnRoaXMpKQotI2lmIEVOQUJMRShWUDkpCi0gICAgLCBtX2hhc1ZQOUhhcmR3YXJlRGVjb2Rlcihw
YXJhbWV0ZXJzLmhhc1ZQOUhhcmR3YXJlRGVjb2RlcikKK3N0YXRpYyBHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMgZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzKCkKK3sKKyAg
ICBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBwYXJhbWV0ZXJzLndlYlByb2Nlc3NJZGVudGl0eSA9IFByb2Nlc3NJZGVu
dGl0eSB7IFByb2Nlc3NJZGVudGl0eTo6Q3VycmVudFByb2Nlc3MgfTsKKyAgICBwYXJhbWV0ZXJz
Lm92ZXJyaWRlTGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CiAj
ZW5kaWYKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworUmVmUHRyPEdQVVByb2Nlc3NDb25u
ZWN0aW9uPiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbiYgcGFy
ZW50Q29ubmVjdGlvbikKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVycyA9IElQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlQ29ubmVjdGlvbklkZW50aWZpZXJQYWlyKCk7CisgICAgaWYgKCFj
b25uZWN0aW9uSWRlbnRpZmllcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcGFy
ZW50Q29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkNyZWF0ZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVycy0+Y2xpZW50LCBnZXRHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMoKSksIDApOworCisgICAgYXV0byBpbnN0YW5jZSA9IGFk
b3B0UmVmKCpuZXcgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uSWRlbnRp
ZmllcnMtPnNlcnZlcikpKTsKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChw
YXJlbnRDb25uZWN0aW9uLmlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpKQorICAgICAg
ICBpbnN0YW5jZS0+Y29ubmVjdGlvbigpLnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGlu
ZygpOworI2VuZGlmCisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCitHUFVQcm9jZXNzQ29ubmVj
dGlvbjo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyJiYg
Y29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
OjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiB7
CiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CiAKQEAgLTEzMyw2ICsxNTksMjEgQEAgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246On5HUFVQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgcmVtb3ZlTGFuZ3Vh
Z2VDaGFuZ2VPYnNlcnZlcih0aGlzKTsKIH0KIAorI2lmIEhBVkUoQVVESVRfVE9LRU4pCitzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IEdQVVByb2Nlc3NDb25uZWN0aW9uOjphdWRpdFRva2Vu
KCkKK3sKKyAgICBpZiAoIXdhaXRGb3JEaWRJbml0aWFsaXplKCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1fYXVkaXRUb2tlbjsKK30KKyNlbmRpZgorCit2b2lk
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24t
PmludmFsaWRhdGUoKTsKKyAgICBtX2hhc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKwogdm9pZCBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKIHsKICAgICBh
dXRvIHByb3RlY3RvciA9IFJlZiB7ICp0aGlzIH07CkBAIC0yNjAsNiArMzAxLDMwIEBAIGJvb2wg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6CiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3Bh
dGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KIAor
dm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkSW5pdGlhbGl6ZShzdGQ6Om9wdGlvbmFsPEdQ
VVByb2Nlc3NDb25uZWN0aW9uSW5mbz4mJiBpbmZvKQoreworICAgIGlmICghaW5mbykgeworICAg
ICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9oYXNJbml0
aWFsaXplZCA9IHRydWU7CisjaWYgRU5BQkxFKFZQOSkKKyAgICBtX2hhc1ZQOUhhcmR3YXJlRGVj
b2RlciA9IGluZm8tPmhhc1ZQOUhhcmR3YXJlRGVjb2RlcjsKKyNlbmRpZgorfQorCitib29sIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOjp3YWl0Rm9yRGlkSW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFt
X2hhc0luaXRpYWxpemVkKSB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9jb25uZWN0aW9uLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6R1BVUHJvY2Vzc0Nvbm5lY3Rp
b246OkRpZEluaXRpYWxpemU+KDAsIGRlZmF1bHRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFyZXN1
bHQpIHsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5pc1ZhbGlkKCk7
Cit9CisKIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVSZW1vdGVDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgdHlwZSwgY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYgYXJndW1lbnQp
CiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucHJv
Y2Vzc0RpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCh0eXBlLCBhcmd1bWVudCk7CkBAIC0z
MTYsNiArMzgxLDE0IEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmVuYWJsZVZQOURlY29k
ZXJzKGJvb2wgZW5hYmxlVlA4RGVjb2RlciwgYm9vbCBlbmFibGVWCiAgICAgbV9lbmFibGVWUDlT
V0RlY29kZXIgPSBlbmFibGVWUDlTV0RlY29kZXI7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuYWJsZVZQOURlY29kZXJzKGVuYWJs
ZVZQOERlY29kZXIsIGVuYWJsZVZQOURlY29kZXIsIGVuYWJsZVZQOVNXRGVjb2RlciksIHsgfSk7
CiB9CisKK2Jvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Omhhc1ZQOUhhcmR3YXJlRGVjb2Rlcigp
Cit7CisgICAgaWYgKCF3YWl0Rm9yRGlkSW5pdGlhbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1faGFzVlA5SGFyZHdhcmVEZWNvZGVyOworfQorCiAjZW5kaWYKIAog
dm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6dXBkYXRlTWVkaWFDb25maWd1cmF0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aAppbmRleCA0Zjg4ZTFjZGUwNWYzMzVmOTVjNzNlNWY5YzAzNWRlZmFiNGJiNDZhLi4wNTZjYzQy
MzU5YzRmOTA2M2YzNWVkZWIzMDFkMWRiMTRhMzgyMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC01Myw3ICs1Myw3
IEBAIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOwogY2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjsKIGNsYXNzIFdlYlBhZ2U7Ci1zdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXph
dGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvOwogc3RydWN0
IE92ZXJyaWRlU2NyZWVuRGF0YUZvclRlc3Rpbmc7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczsKIApAQCAtNjMsMjAgKzYzLDE0IEBAIGNsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwUHJveHk7CiAKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0
ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oY29ubmVjdGlvbklkZW50aWZpZXIsIHBhcmFtZXRlcnMpKTsKLSAgICB9CisgICAgc3RhdGlj
IFJlZlB0cjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbiYgcGFy
ZW50Q29ubmVjdGlvbik7CiAgICAgfkdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgCiAgICAg
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgp
OyB9CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCgpIHsg
cmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwOyB9CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQot
ICAgIHZvaWQgc2V0QXVkaXRUb2tlbihzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0
VG9rZW4pIHsgbV9hdWRpdFRva2VuID0gYXVkaXRUb2tlbjsgfQotICAgIHN0ZDo6b3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaXRUb2tlbjsg
fQotCi0gICAgdm9pZCBzZXRQcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuKHN0ZDo6b3B0
aW9uYWw8YXVkaXRfdG9rZW5fdD4mJik7CisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiBhdWRpdFRva2VuKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CkBAIC0xMDAsNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1ZQOERlY29kZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVWUDhE
ZWNvZGVyOyB9CiAgICAgYm9vbCBpc1ZQOURlY29kZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVWUDlEZWNvZGVyOyB9CiAgICAgYm9vbCBpc1ZQU1dEZWNvZGVyRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA5U1dEZWNvZGVyOyB9Ci0gICAgYm9vbCBoYXNWUDlIYXJk
d2FyZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc1ZQOUhhcmR3YXJlRGVjb2RlcjsgfQor
ICAgIGJvb2wgaGFzVlA5SGFyZHdhcmVEZWNvZGVyKCk7CiAjZW5kaWYKIAogI2lmIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQpAQCAtMTE5LDggKzExMywxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRDbGllbnQoY29uc3QgQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZChj
bGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGllbnQoY29uc3QgQ2xpZW50JiBjbGllbnQpIHsg
bV9jbGllbnRzLnJlbW92ZShjbGllbnQpOyB9CiAKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29u
ZHMgZGVmYXVsdFRpbWVvdXQgPSAzX3M7CiBwcml2YXRlOgotICAgIEdQVVByb2Nlc3NDb25uZWN0
aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgY29uc3QgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25Jbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXImJik7CisgICAgYm9vbCB3YWl0Rm9yRGlkSW5pdGlh
bGl6ZSgpOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwpA
QCAtMTMxLDcgKzEyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+Jik7CiAKKyAgICAvLyBNZXNzYWdlcy4KICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb21t
YW5kKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJn
dW1lbnQmKTsKKyAgICB2b2lkIGRpZEluaXRpYWxpemUoc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNz
Q29ubmVjdGlvbkluZm8+JiYpOwogCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pCiAg
ICAgdm9pZCBiZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OkNhdGVnb3J5VHlwZSwgV2ViQ29yZTo6QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0aW9uQ2xpZW50OjpBcmJpdHJhdGlvbkNhbGxiYWNrJiYpOwpAQCAtMTQxLDcgKzE0MCw3IEBA
IHByaXZhdGU6CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8g
dGhlIEdQVSBwcm9jZXNzLgogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsK
ICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKLQorICAg
IGJvb2wgbV9oYXNJbml0aWFsaXplZCB7IGZhbHNlIH07CiAjaWYgSEFWRShBVURJVF9UT0tFTikK
ICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fYXVkaXRUb2tlbjsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNjE4YjQyOTcwM2NiOWRkNmI3MDUwYzk3Y2I2
YjkxMGU1ZTMzYTk0Zi4uOWY2NTI5NGNmNzdjYmQ4NmYyYmU4MzdlZjQ2MjE3MWZiYmQ2YTVhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yMyw2ICsyMyw3IEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVQcm9jZXNzQ29ubmVjdGlvbiBXYW50c0Rp
c3BhdGNoTWVzc2FnZSB7CisgICAgRGlkSW5pdGlhbGl6ZShzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvPiBpbmZvKQogICAgIERpZFJlY2VpdmVSZW1vdGVDb21t
YW5kKGVudW06dWludDhfdCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlIHR5cGUsIHN0cnVjdCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50IGFyZ3VtZW50KQogCiAjaWYgRU5BQkxFKFJPVVRJTkdf
QVJCSVRSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uSW5mby5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAppbmRleCBlMmQwMjlmNjE4MjZiMDVmN2M0NzUzZjMz
YTZkMGNhMzg3YTYzNGNlLi5lNGVlYmRmNTFmOTU5ZDZhZTcwOTdlZmQ3YWZkN2Q1MzcwMjM1M2Y4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25JbmZvLmgKQEAgLTI3LDY1ICsyNyw0NyBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCi0jaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBh
cmFtZXRlcnMuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPG9wdGlv
bmFsPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9u
SW5mbyB7Ci0gICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb247CiAjaWYgSEFWRShBVURJVF9U
T0tFTikKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5k
aWYKLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbkluaXRpYWxpemF0aW9uUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotCi0gICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdAotICAgIHsKLSNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgcmV0dXJu
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihjb25uZWN0aW9uLmZkKCkudmFsdWUoKSk7Ci0j
ZWxpZiBPUyhEQVJXSU4pCi0gICAgICAgIHJldHVybiBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIoY29ubmVjdGlvbi5wb3J0KCkpOwotI2VsaWYgT1MoV0lORE9XUykKLSAgICAgICAgcmV0dXJu
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihjb25uZWN0aW9uLmhhbmRsZSgpKTsKLSNlbHNl
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKCk7CisjaWYgRU5BQkxFKFZQOSkKKyAgICBib29sIGhhc1ZQOUhh
cmR3YXJlRGVjb2RlciB7IGZhbHNlIH07CiAjZW5kaWYKLSAgICB9Ci0KLSAgICBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgcmVsZWFzZUlkZW50aWZpZXIoKQotICAgIHsKLSNpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgYXV0byByZXR1cm5WYWx1ZSA9IElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcihjb25uZWN0aW9uLnJlbGVhc2UoKS5yZWxlYXNlKCkpOwotI2Vsc2UK
LSAgICAgICAgYXV0byByZXR1cm5WYWx1ZSA9IGlkZW50aWZpZXIoKTsKLSNlbmRpZgotICAgICAg
ICBjb25uZWN0aW9uID0geyB9OwotICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfQog
CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAg
ICAgICAgZW5jb2RlciA8PCBjb25uZWN0aW9uOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAg
ICAgIGVuY29kZXIgPDwgYXVkaXRUb2tlbjsKICNlbmRpZgotICAgICAgICBlbmNvZGVyIDw8IHBh
cmFtZXRlcnM7CisjaWYgRU5BQkxFKFZQOSkKKyAgICAgICAgZW5jb2RlciA8PCBoYXNWUDlIYXJk
d2FyZURlY29kZXI7CisjZW5kaWYKICAgICB9Ci0gICAgCi0gICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEdQVVByb2Nlc3NDb25u
ZWN0aW9uSW5mbyYgaW5mbykKKworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpv
cHRpb25hbDxHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8+IGRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiAgICAgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uY29ubmVjdGlv
bikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmF1ZGl0VG9rZW4pKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvIGF1ZGl0VG9rZW4gPSBkZWNvZGVyLmRlY29kZTxz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+PigpOworI2VuZGlmCisjaWYgRU5BQkxFKFZQOSkK
KyAgICAgICAgYXV0byBoYXNWUDlIYXJkd2FyZURlY29kZXIgPSBkZWNvZGVyLmRlY29kZTxib29s
PigpOworI2VuZGlmCisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25JbmZvIHsKKyNpZiBIQVZFKEFVRElUX1RPS0VOKQorICAgICAgICAgICAgKmF1ZGl0VG9rZW4s
CisjZW5kaWYKKyNpZiBFTkFCTEUoVlA5KQorICAgICAgICAgICAgKmhhc1ZQOUhhcmR3YXJlRGVj
b2RlciwKICNlbmRpZgotICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NDb25uZWN0aW9u
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwotICAgICAgICBkZWNvZGVyID4+
IHBhcmFtZXRlcnM7Ci0gICAgICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaW5mby5wYXJhbWV0ZXJzID0gV1RGTW92ZSgqcGFyYW1ldGVycyk7
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9OwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0NDYwNzM1M2RhMjc1ZmFkZjAxNDQ2
MDY3MTExOWMzZjM1MjE5NGU0Li5jYzQ4ZDI1YTRiYzUyNmRlZTIzZDAxYzMyZTNkNjE4NzkwMjYx
YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTEsNyAr
MTkxLDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKLSNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCIKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKQEAgLTEyOTcsNTUgKzEyOTYsMTMgQEAgV2ViTG9hZGVyU3RyYXRl
Z3kmIFdlYlByb2Nlc3M6OndlYkxvYWRlclN0cmF0ZWd5KCkKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAotI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzKEdQVVByb2Nlc3NDb25uZWN0
aW9uUGFyYW1ldGVycyYpCi17Ci19Ci0jZW5kaWYKLQotR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
IFdlYlByb2Nlc3M6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKLXsKLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKLSAgICBwbGF0Zm9ybUluaXRpYWxpemVHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMo
cGFyYW1ldGVycyk7Ci0KLSAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5i
b3VuZGVkU3luY2hyb25vdXNJUENTY29wZTsKLQotICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5m
byBjb25uZWN0aW9uSW5mbzsKLSAgICBpZiAoIWNvbm5lY3Rpb24uc2VuZFN5bmMoTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24ocGFyYW1ldGVycyksIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShj
b25uZWN0aW9uSW5mbyksIDApKSB7Ci0gICAgICAgIC8vIElmIHdlIGZhaWxlZCB0aGUgZmlyc3Qg
dGltZSwgcmV0cnkgb25jZS4gVGhlIGF0dGFjaG1lbnQgbWF5IGhhdmUgYmVjb21lIGludmFsaWQK
LSAgICAgICAgLy8gYmVmb3JlIGl0IHdhcyByZWNlaXZlZCBieSB0aGUgd2ViIHByb2Nlc3MgaWYg
dGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkLgotICAgICAgICBpZiAoIWNvbm5lY3Rpb24uc2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
cGFyYW1ldGVycyksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25u
ZWN0aW9uOjpSZXBseShjb25uZWN0aW9uSW5mbyksIDApKQotICAgICAgICAgICAgZmFpbGVkVG9T
ZW5kU3luY01lc3NhZ2UoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY29ubmVjdGlvbkluZm87Ci19
Ci0KIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNzOjplbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAg
ICAgLy8gSWYgd2UndmUgbG9zdCBvdXIgY29ubmVjdGlvbiB0byB0aGUgR1BVIHByb2Nlc3MgKGUu
Zy4gaXQgY3Jhc2hlZCkgdHJ5IHRvIHJlLWVzdGFibGlzaCBpdC4KICAgICBpZiAoIW1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24pIHsKLSAgICAgICAgYXV0byBjb25uZWN0aW9uSW5mbyA9IGdldEdQVVBy
b2Nlc3NDb25uZWN0aW9uKCpwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKTsKLQotICAgICAgICAv
LyBSZXRyeSBvbmNlIGlmIHRoZSBJUEMgdG8gZ2V0IHRoZSBjb25uZWN0aW9uSWRlbnRpZmllciBz
dWNjZWVkZWQgYnV0IHRoZSBjb25uZWN0aW9uSWRlbnRpZmllciB3ZSByZWNlaXZlZAotICAgICAg
ICAvLyBpcyBpbnZhbGlkLiBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBHUFUgcHJvY2VzcyBo
YXMgY3Jhc2hlZC4KLSAgICAgICAgaWYgKCFJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc1Zh
bGlkKGNvbm5lY3Rpb25JbmZvLmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICBjb25uZWN0aW9u
SW5mbyA9IGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKCpwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
KTsKLQotICAgICAgICBpZiAoIUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzVmFsaWQoY29u
bmVjdGlvbkluZm8uaWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgIENSQVNIKCk7Ci0KLSAgICAg
ICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUo
Y29ubmVjdGlvbkluZm8ucmVsZWFzZUlkZW50aWZpZXIoKSwgY29ubmVjdGlvbkluZm8ucGFyYW1l
dGVycyk7Ci0jaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb25J
bmZvLmF1ZGl0VG9rZW4pOwotICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5zZXRBdWRp
dFRva2VuKFdURk1vdmUoY29ubmVjdGlvbkluZm8uYXVkaXRUb2tlbikpOwotI2VuZGlmCi0jaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKLSAgICAgICAgaWYgKHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPmlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpKQotICAgICAgICAgICAgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNldElnbm9yZUludmFsaWRNZXNzYWdl
Rm9yVGVzdGluZygpOwotI2VuZGlmCisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKCpwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKTsK
IAogICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsKICAgICAg
ICAgICAgIC8vIElmIHBhZ2UgaXMgbnVsbCwgdGhlbiBpdCBpcyBjdXJyZW50bHkgYmVpbmcgY29u
c3RydWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBjNzU3N2I5
YWE5YjYwMTQ2NDU2YTQ2NTQwYzQwYTNjYmQ3YWYxYmE5Li5jYTA2NjQ0ZTk2MzQ5Mzk3NTliZjlj
MTY3ODA3MmUwYzlmMDE5MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
QEAgLTE0Myw4ICsxNDMsNiBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJv
eHk7CiBjbGFzcyBXZWJQcm9jZXNzU3VwcGxlbWVudDsKIAotc3RydWN0IEdQVVByb2Nlc3NDb25u
ZWN0aW9uSW5mbzsKLXN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM7CiBzdHJ1
Y3QgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOwogc3RydWN0IFVzZXJNZXNzYWdlOwog
c3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC01ODYsMTEgKzU4NCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBzdGF0aWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
IGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHN0YXRpYyB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyhHUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhQnVmZmVyaW5nKCk7CiAgICAgdm9pZCByZXN1bWVB
bGxNZWRpYUJ1ZmZlcmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggNjg2MzFlZmUyYTQ5ZTU3ODZkYzJmYjVhZTZmM2I1
MzZkYTI3YjdlZi4uOTIyZGU1M2U2MjVmYzA4YzNlNzgyZGJjYzJiZjdkOGFiNDBlZDlhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgiCi0jaW1wb3J0ICJHUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMuaCIKICNpbXBvcnQgIkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ0luaXRp
YWxpemF0aW9uLmgiCkBAIC0xMjQ2LDE1ICsxMjQ1LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjp3YWl0
Rm9yUGVuZGluZ1Bhc3RlYm9hcmRXcml0ZXNUb0ZpbmlzaChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmQKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi12b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZUdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyhHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgcGFyYW1ldGVycy53
ZWJQcm9jZXNzSWRlbnRpdHkgPSBQcm9jZXNzSWRlbnRpdHkgeyBQcm9jZXNzSWRlbnRpdHk6OkN1
cnJlbnRQcm9jZXNzIH07Ci0KLSAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzID0gdXNl
clByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Ci19Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JN
KE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c3lzdGVtV2lsbFBvd2VyT24oKQogewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>