<?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>207345</bug_id>
          
          <creation_ts>2020-02-06 11:59:43 -0800</creation_ts>
          <short_desc>REGRESSION(r255910): Broke internal builds (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2020-02-06 12:02:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206582</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1615724</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-06 11:59:43 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/255910 broke the build:
Broke internal builds (Requested by ryanhaddad on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615726</commentid>
    <comment_count>1</comment_count>
      <attachid>389978</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-06 11:59:54 -0800</bug_when>
    <thetext>Created attachment 389978
ROLLOUT of r255910

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615727</commentid>
    <comment_count>2</comment_count>
      <attachid>389978</attachid>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-02-06 12:01:33 -0800</bug_when>
    <thetext>Comment on attachment 389978
ROLLOUT of r255910

Clearing flags on attachment: 389978

Committed r255973: &lt;https://trac.webkit.org/changeset/255973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615728</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-02-06 12:01:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615729</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-06 12:02:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/59231998&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389978</attachid>
            <date>2020-02-06 11:59:54 -0800</date>
            <delta_ts>2020-02-06 12:01:33 -0800</delta_ts>
            <desc>ROLLOUT of r255910</desc>
            <filename>bug-207345-20200206115953.patch</filename>
            <type>text/plain</type>
            <size>140428</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1OTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNhNzVmODIxZTZiODVjN2ZkZTQ4YWE2
NTYyY2RlZjliNmZhYTJlMGYuLmI3ZjllNGFiOTM5MjM1ODJhOGFiZTU0ZGJiOTM4ODhmYTFmZDY0
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDItMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
NTU5MTAsIHIyNTU5NzAsIGFuZCByMjU1OTcyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MzQ1CisKKyAgICAgICAgQnJva2UgaW50ZXJuYWwgYnVp
bGRzIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZl
cnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVs
ZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzI1NTkxMAorCisgICAgICAgICJbQ29jb2FdIFVzZSBBVkFzc2V0
V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIiCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAgaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI1NTk3MAorCisgICAgICAgICJbQ29jb2FdIFVz
ZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIiCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAg
ICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI1NTk3MgorCiAyMDIwLTAyLTA2
ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGRiNDgwNTIyMzJkN2I2ODk3NjU3ZTc3MTQ4MTg2ZjIwZDNkYzk1MWMuLjBlYTVj
MDUyN2U1NGRhZjAzYmVjYzkyODBhODU3ZTk2MTE3Nzg1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAyMC0wMi0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTkxMCwgcjI1NTk3MCwg
YW5kIHIyNTU5NzIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDczNDUKKworICAgICAgICBCcm9rZSBpbnRlcm5hbCBidWlsZHMgKFJlcXVlc3RlZCBi
eSByeWFuaGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6
CisKKyAgICAgICAgIltDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1l
bnQgTWVkaWFSZWNvcmRlciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNjU4MgorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMjU1OTEwCisKKyAgICAgICAgIltDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0
byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjU1OTcwCisKKyAgICAgICAgIltDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJE
ZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlciIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICBodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjU1OTcyCisKIDIwMjAtMDItMDYgIEFsaSBKdW1hICA8YWp1
bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGluIFJlbmRlclRhYmxlQ29sOjp3aWxs
QmVSZW1vdmVkRnJvbVRyZWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggYzllNWI0ZWVjMTA0MGFi
ZGQ0MTdmZGE5MjhjMWRmZjFjMTEwZjA3OC4uYTRiZjgwZmM0ZWYzNjM5NTU2MjQ0MjM0OWE4MjNm
NWM0Yzg3N2QzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDIt
MDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTU5MTAsIHIyNTU5NzAsIGFuZCByMjU1OTcyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MzQ1CisKKyAg
ICAgICAgQnJva2UgaW50ZXJuYWwgYnVpbGRzIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRhZCBvbiAj
d2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbQ29j
b2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIK
KyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI1NTkxMAorCisgICAg
ICAgICJbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlh
UmVjb3JkZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY1ODIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI1NTk3
MAorCisgICAgICAgICJbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVt
ZW50IE1lZGlhUmVjb3JkZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzI1NTk3MgorCiAyMDIwLTAyLTA2ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVt
ZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTM2NzI2YTg3NjM5MDEyMjA4Mzg4ZjYzM2M5
NWQ4OWM1YTU3YjgzNi4uMTFhOGRlNzc5ZWYxM2FlNzE4MDU4YWViYTdmMTczMDg3NjllNDZlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wMi0wNiAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjI1NTkxMCwgcjI1NTk3MCwgYW5kIHIyNTU5NzIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDczNDUKKworICAgICAgICBCcm9rZSBpbnRlcm5hbCBi
dWlsZHMgKFJlcXVlc3RlZCBieSByeWFuaGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJl
dmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIltDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJE
ZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlciIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICBodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjU1OTEwCisKKyAgICAgICAgIltDb2NvYV0gVXNlIEFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlciIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICBodHRw
czovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjU1OTcwCisKKyAgICAgICAgIltDb2NvYV0g
VXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlciIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAg
ICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjU1OTcyCisKIDIwMjAtMDIt
MDYgIFBhdHJpY2sgR3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bV1BFXSBSZS1hZGQgZmxhdHBhayBzYW5kYm94IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgK
aW5kZXggZjdiNTEwMGVhY2Q3ZDIyOTI5ZWQwODYxYThjMThjM2RiMTg3OTVlZi4uMTc1YjZmNWVh
OGVkYzdhZDFmZDJjMWYyZTdmODhmMGVlN2IyNmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAg
LTU2NiwxMCArNTY2LDYgQEAKICNkZWZpbmUgSEFWRV9PU19TSUdOUE9TVCAxCiAjZW5kaWYKIAot
I2lmIChQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwICkgJiYgKGRlZmluZWQgX19oYXNfaW5jbHVkZSAmJiBf
X2hhc19pbmNsdWRlKDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+KSkKLSNk
ZWZpbmUgSEFWRV9BVkFTU0VUV1JJVEVSREVMRUdBVEUgMQotI2VuZGlmCi0KICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYp
CiAjZGVmaW5lIEhBVkVfU1lTVEVNX0ZPTlRfU1RZTEVfVElUTEVfMCAxCiAjZGVmaW5lIEhBVkVf
U1lTVEVNX0ZPTlRfU1RZTEVfVElUTEVfNCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmlu
ZGV4IGY1NGRmNzFhNGY0M2IzZTZmOWQ0OGJjMWNkNzQ0Mzc2ODcxZTliN2YuLmZjYjA5N2VlNzU5
ZmY1ZGZiNzY0OThkNTA5MGU0Y2NjYzBjOWQ1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIu
Y3BwCkBAIC0zNCwxMiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVN
ZWRpYVJlY29yZGVyUHJpdmF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKIHsK
LSNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICByZXR1cm4gTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsOjpjcmVhdGUoc3RyZWFtKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHN0cmVhbSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyODFi
OTJhMTdiNDliZDZlMDcxOGE5NjFmMDY0MDg4NjVlMWViNmMuLjM4ZDdmYTllNWQwOWMyY2Q5ZDhj
NjA4ZWJhMzhlNzA1MDRhMzA5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNSwxMCArMTE1LDYgQEAKIAkJMkUxMzQyQ0My
MTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtp
dFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNv
ZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi87IH07CiAJCTMx
MzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIxMzIwQTIxNzA1MDAzRkI5
MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OwotCQk0MTZFOTk1MzIzREFFNkJFMDBFODcx
Q0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3MUNCIC8qIEF1ZGlvVG9v
bGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKLQkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3MUNCIC8qIEF1
ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExp
bmsuaCAqLzsgfTsKLQkJNDE2RTk5NTcyM0RBRUZGODAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNv
ZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87
IH07Ci0JCTQxNkU5OTU4MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTYy
M0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CiAJCTQ0Mjk1
NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1NCAvKiBSZXZl
YWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1Nv
ZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tICovOyB9Owog
CQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlFMjFGNUY2MDIw
MDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovOyB9OwpAQCAtMjk0LDEwICsyOTAsNiBA
QAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJS2l0U29mdExpbmsubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4QjEzMjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0
ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZpZXdTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzgyMENDQjVGRjAwMkM2REM5IC8qIFdlYktp
dFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJLaXRUYXJnZXRD
b25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNkU5
OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBB
dWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTZF
OTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyog
VmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQy
OTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBR
dWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlj
a0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI5LDEyICs1
MjEsOCBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3RUU3OTMgLyogY2YgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFD
QiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8sCi0JCQkJNDE2RTk5NTIyM0RBRTZCRTAw
RTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi8sCiAJCQkJMENGOTlDQTYxRjczODQz
NjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywKIAkJCQkwQ0Y5OUNBNzFGNzM4
NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywKLQkJCQk0MTZFOTk1NTIzREFF
RkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovLAotCQkJCTQxNkU5OTU2
MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MjQsNyArNzEyLDYg
QEAKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThCMjJCMzU5ODkwMDhEMEU4QiAvKiBBcHBTU09T
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDYyMkI4NTRBQjAwMzAxNDNDIC8q
IEFwcFNTT1NQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3MUNC
IC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDAyRTkzQzIw
NTZGQUE3MDBBMTM3OTcgLyogQXVkaW9Ub29sYm94U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
NzJBMTA3ODIyQjQ1NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDc3RTg3QjIyMjZBNDYwMzAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLmggaW4g
SGVhZGVycyAqLywKQEAgLTg0Nyw3ICs4MzQsNiBAQAogCQkJCTJFMTM0MkNDMjE1QUExMEEwMDcx
OTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkyMjFGNDNB
NEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTQ3MUYz
QkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkwMERCQzMxNyAvKiBXZWJGaWx0ZXJFdmFsdWF0
b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBX
ZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtOTQwLDcgKzkyNiw2IEBACiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJNTdGRDMxOEEy
MkIzNTkzRTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA3N0U4N0IxMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25T
b2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDNUZGRjBGMUY3OEQ5REEwMDlFRkYxQSAv
KiBDbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkz
IC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTY3LDcgKzk1Miw2
IEBACiAJCQkJQTNBQjZFNTcxRjNEMUREQjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3Rl
bVNsZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTEzNDJDRDIxNUFBMTBB
MDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQxNkU5OTU3
MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMTA4MjZGQTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwubW0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExp
bmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZjU1MDU2YWNkYTZmNTY1M2FkYzdl
MTdlYzAyYTJkODI2ZTQ0N2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbmNsdWRlIDxBdWRpb1Rv
b2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KLSNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3Jt
YXQuaD4KLQotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVX
T1JLX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gpCi0KLVNPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0
YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNp
ZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRh
U2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJT
aXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQot
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29u
dmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiog
aW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0
aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGlu
U291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCi1T
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252
ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29u
dmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Q
cm9wZXJ0eURhdGFTaXplLCBjb25zdCB2b2lkKiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29u
dmVydGVyLCBpblByb3BlcnR5SUQsIGluUHJvcGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEp
KQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlv
Q29udmVydGVyR2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRp
b0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMy
KiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29u
dmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRh
KSkKLQotI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA3MzExODcxNzRhYzE1NTQ0MzcxZGVlMDNiMTQzMmUzZTY1NjMyZTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShBVkZPVU5EQVRJT04p
Ci0KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94KQotCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0
dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclBy
b3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCog
b3V0UHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9w
ZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQotI2RlZmluZSBBdWRpb0NvbnZlcnRlckdl
dFByb3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlckdldFByb3BlcnR5
Ci1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9D
b252ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KiBpblNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRl
c3RpbmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIpLCAo
aW5Tb3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVyKSkK
LSNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJOZXcgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29u
dmVydGVyTmV3Ci1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJv
eCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJl
ZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlE
LCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2b2lkKiBpblByb3BlcnR5RGF0YSks
IChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGluUHJvcGVydHlEYXRhU2l6ZSwgaW5Q
cm9wZXJ0eURhdGEpKQotI2RlZmluZSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5IHNvZnRMaW5r
X0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlclNldFByb3BlcnR5Ci1TT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSwg
T1NTdGF0dXMsIChBdWRpb0Zvcm1hdFByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5T
cGVjaWZpZXJTaXplLCBjb25zdCB2b2lkKiBpblNwZWNpZmllciwgVUludDMyKiBpb1Byb3BlcnR5
RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSksIChpblByb3BlcnR5SUQsIGluU3BlY2lm
aWVyU2l6ZSwgaW5TcGVjaWZpZXIsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRh
KSkKLSNkZWZpbmUgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hf
QXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eQotCi0KLSNlbmRpZiAvLyBVU0UoQVZGT1VOREFUSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAppbmRl
eCBmYTIyY2VjYzEzNzNhYzdmYmI5NTVmZDY0MWY3YjIxMTY2MTM5ZWU5Li4yYjgyMzEzNjVjYjlh
YWY5MzU5N2YxODdmYTIyYzE0OWJlNDJmYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcApAQCAtNDYsNyArNDYsNiBAQCBTT0ZUX0xJTktf
RlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEpCiAKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcywg
T1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZVNvdXJjZUJ1ZmZlciwgc2l6ZV90IG9mZnNl
dFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHZvaWQqIGRlc3RpbmF0aW9uKSwgKHRoZVNvdXJj
ZUJ1ZmZlciwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBkZXN0aW5hdGlvbikpCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERh
dGFMZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZl
cikpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CbG9j
a0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoY29uc3Qgdm9pZCogc291cmNlQnl0
ZXMsIENNQmxvY2tCdWZmZXJSZWYgZGVzdGluYXRpb25CdWZmZXIsIHNpemVfdCBvZmZzZXRJbnRv
RGVzdGluYXRpb24sIHNpemVfdCBkYXRhTGVuZ3RoKSwgKHNvdXJjZUJ5dGVzLCBkZXN0aW5hdGlv
bkJ1ZmZlciwgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBkYXRhTGVuZ3RoKSkKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0
RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNj
KSwgKGRlc2MpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQpLCAoKSkKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldERh
dGFCdWZmZXIsIENNQmxvY2tCdWZmZXJSZWYsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNi
dWYpKQpAQCAtMTM0LDExICsxMzMsOSBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4sIENNQgogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVFbnF1
ZXVlLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUmVmIGJ1ZmZl
ciksIChxdWV1ZSwgYnVmZmVyKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSXNFbXB0eSwgQm9vbGVhbiwgKENNQnVmZmVyUXVldWVS
ZWYgcXVldWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRCdWZmZXJDb3VudCwgQ01JdGVtQ291bnQsIChDTUJ1
ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRT
YW1wbGVCdWZmZXJzLCBjb25zdCBDTUJ1ZmZlckNhbGxiYWNrcyAqLCAoKSwgKCkpCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEZp
cnN0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVl
KSwgKHF1ZXVlKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1
ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50ZWdl
clRocmVzaG9sZCwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlLCBDTUJ1ZmZlclF1
ZXVlVHJpZ2dlckNhbGxiYWNrIHRyaWdnZXJDYWxsYmFjaywgdm9pZCogdHJpZ2dlclJlZmNvbiwg
Q01CdWZmZXJRdWV1ZVRyaWdnZXJDb25kaXRpb24gdHJpZ2dlckNvbmRpdGlvbiwgQ01JdGVtQ291
bnQgdHJpZ2dlclRocmVzaG9sZCwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiogdHJpZ2dlclRv
a2VuT3V0KSwgKHF1ZXVlLCB0cmlnZ2VyQ2FsbGJhY2ssIHRyaWdnZXJSZWZjb24sIHRyaWdnZXJD
b25kaXRpb24sIHRyaWdnZXJUaHJlc2hvbGQsIHRyaWdnZXJUb2tlbk91dCkpCi1TT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRP
ZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiAKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRh
Y2htZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5j
LCBDRlN0cmluZ1JlZikKQEAgLTE1Miw5ICsxNDksNiBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9TYW1w
bAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBs
ZUF0dGFjaG1lbnRLZXlfRGlzcGxheUltbWVkaWF0ZWx5LCBDRlN0cmluZ1JlZikKIFNPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50
S2V5X0lzRGVwZW5kZWRPbkJ5T3RoZXJzLCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlm
aWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9F
bmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtl
eV9HcmFkdWFsRGVjb2RlclJlZnJlc2gsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVy
QXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCBDRlN0cmluZ1JlZikKIAogU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZp
Y2F0aW9uX0VmZmVjdGl2ZVJhdGVDaGFuZ2VkLCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9U
aW1lSnVtcGVkLCBDRlN0cmluZ1JlZikKQEAgLTE2OSw5ICsxNjMsNiBAQCBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0
ZVdpdGhQYWNrZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QsIE9TU3RhdHVz
LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZBbGxvY2F0b3JSZWYgYmJ1ZlN0cnVjdEFsbG9j
YXRvciwgQ0ZBbGxvY2F0b3JSZWYgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgdWludDMyX3QgZmxhZ3Ms
IGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCAqYnVmZmVyTGlzdCksIChzYnVmLCBiYnVmU3RydWN0QWxs
b2NhdG9yLCBiYnVmTWVtb3J5QWxsb2NhdG9yLCBmbGFncywgYnVmZmVyTGlzdCkpCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXRE
YXRhUmVhZHksIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBj
b25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGFzYmQsIHNpemVfdCBsYXlvdXRTaXpl
LCBjb25zdCBBdWRpb0NoYW5uZWxMYXlvdXQqIGxheW91dCwgc2l6ZV90IG1hZ2ljQ29va2llU2l6
ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUsIENGRGljdGlvbmFyeVJlZiBleHRlbnNpb25zLCBD
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2MpLCAoYWxsb2NhdG9yLCBhc2JkLCBs
YXlvdXRTaXplLCBsYXlvdXQsIG1hZ2ljQ29va2llU2l6ZSwgbWFnaWNDb29raWUsIGV4dGVuc2lv
bnMsIG91dERlc2MpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwg
KENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVz
Yywgc2l6ZU91dCkpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRp
YSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCwgY29u
c3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRl
c2MpLCAoZGVzYykpCi0KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1l
ZGlhLCBDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaywgQ01DbG9ja1JlZiwgKHZvaWQpLCAoKSkKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUNsb2NrR2V0VGlt
ZSwgQ01UaW1lLCAoQ01DbG9ja1JlZiBjbG9jayksIChjbG9jaykpCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDYWxsRm9yRWFjaFNh
bXBsZSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBPU1N0YXR1cyAoKiBDTVNB
TVBMRUJVRkZFUkNBTExfTk9FU0NBUEUgY2FsbGJhY2spKCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGVCdWZmZXIsIENNSXRlbUNvdW50IGluZGV4LCB2b2lkICpyZWZjb24pLCB2b2lkICpyZWZjb24p
LCAoc2J1ZiwgY2FsbGJhY2ssIHJlZmNvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmgKaW5kZXggODNmZjRkNjYyM2JkZmJlMTFkOTdmNmEzZTYzZmZm
YzlhZmI2MDQxMy4uMjY4ZDE2N2YyN2Q2ZDNhYmJmZjU5MzUyNjdmYzIyMjM5MTAxMGUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaApAQCAtNDks
OCArNDksNiBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMsIE9TU3RhdAogI2RlZmluZSBDTUJsb2NrQnVmZmVy
Q29weURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0
ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVCdWZmZXIp
LCAodGhlQnVmZmVyKSkKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGggc29mdExp
bmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoCi1TT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0
ZXMsIE9TU3RhdHVzLCAoY29uc3Qgdm9pZCogc291cmNlQnl0ZXMsIENNQmxvY2tCdWZmZXJSZWYg
ZGVzdGluYXRpb25CdWZmZXIsIHNpemVfdCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIHNpemVfdCBk
YXRhTGVuZ3RoKSwgKHNvdXJjZUJ5dGVzLCBkZXN0aW5hdGlvbkJ1ZmZlciwgb2Zmc2V0SW50b0Rl
c3RpbmF0aW9uLCBkYXRhTGVuZ3RoKSkKLSNkZWZpbmUgQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRh
Qnl0ZXMgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXREZXNj
cmlwdGlvbkdldEV4dGVuc2lvbnMsIENGRGljdGlvbmFyeVJlZiwgKENNRm9ybWF0RGVzY3JpcHRp
b25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVu
c2lvbnMgc29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25z
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVC
dWZmZXJHZXRUeXBlSUQsIENGVHlwZUlELCAodm9pZCksICgpKQpAQCAtMjI1LDE0ICsyMjMsMTAg
QEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVy
UXVldWVHZXRCdWZmZXJDb3VudCwgQ01JdGUKICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZl
ckNvdW50IHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291bnQKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVl
R2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYg
cXVldWUpLCAocXVldWUpKQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRp
b25UaW1lU3RhbXAgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVHZXRGaXJzdFByZXNl
bnRhdGlvblRpbWVTdGFtcAotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMs
IGNvbnN0IENNQnVmZmVyQ2FsbGJhY2tzICosICgpLCAoKSkKLSNkZWZpbmUgQ01CdWZmZXJRdWV1
ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycyBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycwogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRF
bmRQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUp
LCAocXVldWUpKQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0
YW1wIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGlt
ZVN0YW1wCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01C
dWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQsIE9TU3RhdHVzLCAo
Q01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayB0cmln
Z2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24sIENNQnVmZmVyUXVldWVUcmlnZ2VyQ29u
ZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNvdW50IHRyaWdnZXJUaHJlc2hvbGQsIENN
QnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91dCksIChxdWV1ZSwgdHJpZ2dl
ckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0aW9uLCB0cmlnZ2VyVGhyZXNo
b2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdn
ZXJXaXRoSW50ZWdlclRocmVzaG9sZCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUlu
c3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQKLVNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0
dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKLSNkZWZpbmUgQ01CdWZmZXJR
dWV1ZU1hcmtFbmRPZkRhdGEgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVNYXJrRW5k
T2ZEYXRhCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBr
Q01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5l
IGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5IGdldF9Db3JlTWVkaWFfa0NNU2Ft
cGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXkoKQpAQCAtMjYyLDE1ICsyNTYsNiBAQCBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3Rp
ZmljYXRpb25fVGltZUp1bXBlZAogI2RlZmluZSBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1l
SnVtcGVkIGdldF9Db3JlTWVkaWFfa0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCgp
CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxl
QnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIENGU3RyaW5nUmVmKQog
I2RlZmluZSBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1l
ZCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZl
ckNvbnN1bWVkKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9u
LCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRz
UHJldmlvdXNTYW1wbGVEdXJhdGlvbiBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFj
aG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24oKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlf
R3JhZHVhbERlY29kZXJSZWZyZXNoLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga0NNU2FtcGxlQnVm
ZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2ggZ2V0X0NvcmVNZWRpYV9rQ01T
YW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVmcmVzaCgpCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgZ2V0X0NvcmVNZWRpYV9rQ01T
YW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQsIENGU3RyaW5nUmVm
KQotI2RlZmluZSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJp
bUR1cmF0aW9uQXRTdGFydCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRL
ZXlfVHJpbUR1cmF0aW9uQXRTdGFydCgpCi0KLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZSwg
Y29uc3Qgdm9pZCosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYywgc2l6ZV90KiBz
aXplT3V0KSwgKGRlc2MsIHNpemVPdXQpKQotI2RlZmluZSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25HZXRNYWdpY0Nvb2tpZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0
aW9uR2V0TWFnaWNDb29raWUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
LCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gKiwgKENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1v
cnlCbG9jaywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxvY2F0b3IsIHZv
aWQqIG1lbW9yeUJsb2NrLCBzaXplX3QgYmxvY2tMZW5ndGgsIENGQWxsb2NhdG9yUmVmIGJsb2Nr
QWxsb2NhdG9yLCBjb25zdCBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UqIGN1c3RvbUJs
b2NrU291cmNlLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgQ01CbG9j
a0J1ZmZlckZsYWdzIGZsYWdzLCBDTUJsb2NrQnVmZmVyUmVmKiBibG9ja0J1ZmZlck91dCksIChz
dHJ1Y3R1cmVBbGxvY2F0b3IsIG1lbW9yeUJsb2NrLCBibG9ja0xlbmd0aCwgYmxvY2tBbGxvY2F0
b3IsIGN1c3RvbUJsb2NrU291cmNlLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZsYWdzLCBi
bG9ja0J1ZmZlck91dCkpCkBAIC0yNzksOCArMjY0LDYgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0
V2kKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRC
bG9ja0J1ZmZlciBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZl
ckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcywgQ01JdGVtQ291
bnQsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQogI2RlZmluZSBDTVNhbXBsZUJ1
ZmZlckdldE51bVNhbXBsZXMgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0TnVt
U2FtcGxlcwotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQsIGNvbnN0IEF1
ZGlvRm9ybWF0TGlzdEl0ZW0gKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwg
KGRlc2MpKQotI2RlZmluZSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2Rh
YmxlRm9ybWF0IHNvZnRMaW5rX0NvcmVNZWRpYV9DTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRS
aWNoZXN0RGVjb2RhYmxlRm9ybWF0CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UsIE9TU3Rh
dHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBD
RlJhbmdlIHNhbXBsZVJhbmdlLCBDTVNhbXBsZUJ1ZmZlclJlZiogc0J1Zk91dCksIChhbGxvY2F0
b3IsIHNidWYsIHNhbXBsZVJhbmdlLCBzQnVmT3V0KSkKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJD
b3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2Ugc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVy
Q29weVNhbXBsZUJ1ZmZlckZvclJhbmdlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJyYXksIE9TU3RhdHVz
LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtQ291bnQgc2l6ZUFycmF5RW50cmllcywg
c2l6ZV90KiBzaXplQXJyYXlPdXQsIENNSXRlbUNvdW50KiBzaXplQXJyYXlFbnRyaWVzTmVlZGVk
T3V0KSwgKHNidWYsIHNpemVBcnJheUVudHJpZXMsIHNpemVBcnJheU91dCwgc2l6ZUFycmF5RW50
cmllc05lZWRlZE91dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1Zp
ZGVvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9U
b29sYm94U29mdExpbmsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGJhMzc2
MTc3YTBmZTc4MGUyMWUzNzczYjA4NmFjMmE1YjE5MTMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9U
b29sYm94U29mdExpbmsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQVZGT1VOREFUSU9OKQotCi0j
aW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KLQotI2luY2x1ZGUg
PHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFM
LCBWaWRlb1Rvb2xib3gpCi0KLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVmlk
ZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBD
RlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29s
Ym94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlv
biwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFZpZGVv
VG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwgQ0ZTdHJpbmdSZWYp
Ci0KLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRW
aWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0Vu
Y29kZXIsIENGU3RyaW5nUmVmKQotCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01W
aWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNh
dGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxv
Y2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxs
YmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJl
c3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0
aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1
ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywg
b3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkpCi1TT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Np
b25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNz
aW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9u
LCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKLVNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29k
ZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENWSW1h
Z2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENN
VGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGllcywgdm9pZCogc291
cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lv
biwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIGZyYW1lUHJv
cGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCi1TT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Q
cmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYg
c2Vzc2lvbiksIChzZXNzaW9uKSkKLQotI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhOWZlNTFlMGZmMTVjZjIzZGFkOTgwODljMjU5NmFk
ZjE5MGFkNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09G
VF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94KQotCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Q
cm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUgZ2V0X1ZpZGVvVG9vbGJveF9r
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlKCkKLVNPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5l
IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uIGdl
dF9WaWRlb1Rvb2xib3hfa1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVy
dmFsRHVyYXRpb24oKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rv
b2xib3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUsIENGU3RyaW5nUmVmKQot
I2RlZmluZSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGdldF9WaWRlb1Rvb2xi
b3hfa1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSgpCi0KLVNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRWaWRlb0VuY29kZXJTcGVjaWZp
Y2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIENGU3RyaW5nUmVm
KQotI2RlZmluZSBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNj
ZWxlcmF0ZWRWaWRlb0VuY29kZXIgZ2V0X1ZpZGVvVG9vbGJveF9rVlRWaWRlb0VuY29kZXJTcGVj
aWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIoKQotCi1TT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lv
blNlc3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENG
RGljdGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJj
ZUltYWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxv
Y2F0b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCog
b3V0cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lv
blNlc3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29k
ZXJTcGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWRE
YXRhQWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXBy
ZXNzaW9uU2Vzc2lvbk91dCkpCi0jZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIHNv
ZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZQotU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNz
aW9uQ29tcGxldGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vz
c2lvbiwgQ01UaW1lIGNvbXBsZXRlVW50aWxQcmVzZW50YXRpb25UaW1lU3RhbXApLCAoc2Vzc2lv
biwgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCkpCi0jZGVmaW5lIFZUQ29tcHJl
c3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJl
c3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0
YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENWSW1hZ2VCdWZmZXJSZWYg
aW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkdXJhdGlv
biwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGllcywgdm9pZCogc291cmNlRnJhbWVSZWZj
b24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZm
ZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIGZyYW1lUHJvcGVydGllcywgc291
cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCi0jZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNz
aW9uRW5jb2RlRnJhbWUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9u
RW5jb2RlRnJhbWUKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29s
Ym94LCBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcywgT1NTdGF0dXMs
IChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNlc3Npb24pKQotI2RlZmluZSBW
VENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBzb2Z0TGlua19WaWRlb1Rv
b2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMKLQotI2VuZGlm
IC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTU1ZDNhODExYjA1YjgwZGY1ZGI5NjRlODRjMDE1
NTRlYzA4MTlhNS4uZmViZjA1ZWIwNTk3MjhmNmJlYTk4MTkzNDYyNjAwMGY4Y2I1MGFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTA5Nyw3ICsxMDk3LDYgQEAKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3Ry
ZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZG
RTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3
NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2Rjc5OTAyM0Q3NTBDRjAwODI5RkMxIC8qIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkY3OThGMjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0gKi87IH07CiAJCTQxNzI1M0FCMTM1NEJCQkMwMDM2MEYyQSAv
KiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi87
IH07CkBAIC0xMTM4LDcgKzExMzcsNiBAQAogCQk0MUI4Nzc2MjIzREUxMDQ1MDAzNjM4QjggLyog
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjg3NzYwMjNERTEwNDIwMDM2MzhCOCAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZp
ZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVE
RTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NDFDRDZGOEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQ0Q2RjhC
MjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi87IH07
CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzgwRjRCNUM3MTAwNEE2
NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDFEMTI5Q0UxRjNEMEVGNjAwRDE1RTQ3IC8qIFdvcmtlckdsb2JhbFNj
b3BlQ2FjaGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaCAq
LzsgfTsKIAkJNDFEMTI5RDAxRjNEMEYwNTAwRDE1RTQ3IC8qIENhY2hlUXVlcnlPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc5QjFG
MzRDRUYwMDA3OTU0ODcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzM2Miw4ICs3MzYwLDYgQEAKIAkJNDE2
RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0
Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoSWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMjlBNTEwMkZBOTYy
MDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV29ya2VyUmVwb3J0aW5nUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDE2Rjc5OEQyM0Q3NTBDQTAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE2Rjc5OEYy
M0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MEEyRTkxRDhDMENDMDAw
MzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc0NzEsOCArNzQ2Nyw2IEBACiAJCTQxQzdFMTA1MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxQzdFMTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUM3RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJh
Y2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFDRDZGODkyM0Q2RTgxQzAw
QjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keUNvbnN1
bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTUxRDQ2MjIyMDAw
NzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTg4OTUsMTIgKzE4ODg5LDggQEAKIAkJNEQzQzA1RDQyMUFGNDgwOTAwRjI4OTBB
IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJ
CQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmggKi8sCi0JCQkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5tbSAqLywKIAkJCQk0RDczRjk0QzIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oICovLAogCQkJCTRENzNGOTREMjE4QzRBODcwMDNB
M0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tICovLAotCQkJCTQxQ0Q2
Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLywK
LQkJCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0zMzU0Niw3ICszMzUzNiw2IEBACiAJCQkJQTk3ODdDQjQxRjVGNUM2NjAwQzU1
MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVy
SU9TLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgy
NzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNDI3OSw3ICszNDI2OCw2IEBACiAJCQkJN0M3
M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJENUExOEYxQzU0
NTkyMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMubW0gaW4gU291
cmNlcyAqLywKLQkJCQk0MUNENkY4QzIzRDZFODIxMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUxNzE1RDJBMjAwNjU4
RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRTExNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2
RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXgg
ZjFmNjgwNDUyMjkzNjVkOGZjM2IwNzk2NzJkMmMyMDMzZmJlYTM5My4uNzNmMWQwYTE1MTlmMmMw
M2I5MWQ2OTUxMDUxMzVhNGYyMGQxZGE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmNwcApAQCAtMjYsMTAgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCIKIAotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAKICNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVk
ZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2Ft
cGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCkBAIC02OSwxNCArNjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBpbnQgd2lkdGggPSAwLCBo
ZWlnaHQgPSAwOwotICAgIGlmICh2aWRlb1RyYWNrKSB7Ci0gICAgICAgIGF1dG8mIHNldHRpbmdz
ID0gdmlkZW9UcmFjay0+c2V0dGluZ3MoKTsKLSAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0
aCgpOwotICAgICAgICBoZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKLSAgICB9Ci0gICAgYXV0
byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKCEhYXVkaW9UcmFj
aywgd2lkdGgsIGhlaWdodCk7CisgICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6Y3JlYXRlKGF1ZGlvVHJhY2ssIHZpZGVvVHJhY2spOwogICAgIGlmICghd3JpdGVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTI3LDQgKzExOSw0IEBAIGNvbnN0IFN0
cmluZyYgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjptaW1lVHlwZSgpCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAppbmRleCAzNGUyYTk2Yzc5NDE4ZDRl
ODY2YzFhYzIxMDQwOThjYzkzOGY0NGI1Li4wY2YwZGYzYzY0Y2M5NzEzZTMwNTliZTM2Y2FjYzlm
YzdjY2MwYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTI0
LDcgKzI0LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
CiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCkBAIC01Niw0ICs1Niw0IEBAIHByaXZhdGU6CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ3YmY4MWUxZDQ1NmM3MGMyZDk0NGY3MDQ1YThl
MTZlMDU5YmNmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShB
VkZPVU5EQVRJT04pCi0KLSNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KLQotdHlwZWRl
ZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlvQ29udmVydGVyUmVmOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTUJ1ZmZlclF1ZXVl
VHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7Ci0gICAgfkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvcigpOwotCi0gICAgdm9pZCBmaW5pc2goKTsKLSAgICB2b2lkIGFkZFNh
bXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7Ci0gICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0
T3V0cHV0U2FtcGxlQnVmZmVyKCk7Ci0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiB0
YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7Ci0KLXByaXZhdGU6Ci0gICAgQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKCk7Ci0gICAgYm9vbCBpbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2Vy
Q2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKLQotICAgIHN0YXRpYyBPU1N0YXR1cyBh
dWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jKEF1ZGlvQ29udmVydGVyUmVmLCBVSW50
MzIqLCBBdWRpb0J1ZmZlckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiosIHZv
aWQqKTsKLQotICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7
Ci0gICAgYm9vbCBpbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbihD
TUZvcm1hdERlc2NyaXB0aW9uUmVmLCBBdWRpb0Zvcm1hdElEKTsKLSAgICBzaXplX3QgY29tcHV0
ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24sIFVJ
bnQzMiwgRmxvYXQzMik7Ci0gICAgdm9pZCBhdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZChDTVNh
bXBsZUJ1ZmZlclJlZik7Ci0gICAgUmV0YWluUHRyPE5TTnVtYmVyPiBncmFkdWFsRGVjb2RlclJl
ZnJlc2hDb3VudCgpOwotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcldpdGhOdW1Q
YWNrZXRzKFVJbnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QpOwotICAgIHZvaWQgcHJv
Y2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUpOwotICAgIE9TU3RhdHVz
IHByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqLCBBdWRpb0J1ZmZlckxp
c3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiopOwotCi0gICAgUmV0YWluUHRyPENN
QnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7Ci0gICAgUmV0YWluUHRyPENNQnVm
ZmVyUXVldWVSZWY+IG1faW5wdXRCdWZmZXJRdWV1ZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
c2VyaWFsRGlzcGF0Y2hRdWV1ZTsKLSAgICBDTVRpbWUgbV9sb3dXYXRlclRpbWU7Ci0gICAgYm9v
bCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OwotCi0gICAgUmV0YWluUHRyPEF1ZGlvQ29udmVydGVy
UmVmPiBtX2NvbnZlcnRlcjsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9zb3Vy
Y2VGb3JtYXQ7Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fZGVzdGluYXRpb25G
b3JtYXQ7Ci0gICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZGVzdGluYXRp
b25Gb3JtYXREZXNjcmlwdGlvbjsKLSAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IG1fZ2RyQ291bnRO
dW07Ci0gICAgVUludDMyIG1fbWF4T3V0cHV0UGFja2V0U2l6ZTsKLSAgICBWZWN0b3I8QXVkaW9T
dHJlYW1QYWNrZXREZXNjcmlwdGlvbj4gbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9uczsK
LQotICAgIENNVGltZSBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXA7Ci0gICAg
Q01UaW1lIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcDsKLSAgICBDTVRpbWUg
bV9yZW1haW5pbmdQcmltZUR1cmF0aW9uOwotCi0gICAgVmVjdG9yPGNoYXI+IG1fc291cmNlQnVm
ZmVyOwotICAgIFZlY3RvcjxjaGFyPiBtX2Rlc3RpbmF0aW9uQnVmZmVyOwotCi0gICAgUmV0YWlu
UHRyPENNQmxvY2tCdWZmZXJSZWY+IG1fc2FtcGxlQmxvY2tCdWZmZXI7Ci0gICAgc2l6ZV90IG1f
c2FtcGxlQmxvY2tCdWZmZXJTaXplOwotICAgIHNpemVfdCBtX2N1cnJlbnRPZmZzZXRJblNhbXBs
ZUJsb2NrQnVmZmVyOwotICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGU7Ci19Owot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IxNTEyMDYwZDcwYTBiN2Q3MmMxZDFiYmVlYzBl
NGY2NTRjOTU4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDQ5OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5E
QVRJT04pCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1
ZGlvQ29kZWMuaD4KLSNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KLSNp
bmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KLSNpbmNsdWRlIDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KLQotI2ltcG9ydCA8cGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg+
Ci0KLSNkZWZpbmUgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EUyAwLjEKLQotdXNpbmcgbmFtZXNw
YWNlIFBBTDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0
ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09i
amVjdCkKLXsKLSAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkpOwot
ICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3Qp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29tcHJlc3NvcjsKLX0KLQot
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
KQotICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSB9Ci0gICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1df
V0FURVJfVElNRV9JTl9TRUNPTkRTLCAxMDAwKSB9Ci0gICAgLCBtX291dHB1dENvZGVjVHlwZSB7
IGtBdWRpb0Zvcm1hdE1QRUc0QUFDIH0KLXsKLX0KLQotQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjp+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKLXsKLSAgICBpZiAobV9zZXJpYWxE
aXNwYXRjaFF1ZXVlKQotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZSk7Ci19Ci0KLWJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXpl
KENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2Jq
ZWN0KQotewotICAgIENNQnVmZmVyUXVldWVSZWYgaW5wdXRCdWZmZXJRdWV1ZTsKLSAgICBpZiAo
YXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
Q01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmaW5w
dXRCdWZmZXJRdWV1ZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9p
bnB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIG1faW5wdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0YoaW5wdXRCdWZm
ZXJRdWV1ZSk7Ci0KLSAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOwotICAg
IGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCks
ICZvdXRwdXRCdWZmZXJRdWV1ZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBm
b3IgbV9vdXRwdXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihv
dXRwdXRCdWZmZXJRdWV1ZSk7Ci0gICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVy
UXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7Ci0K
LSAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKLXsKLSAgICBkaXNwYXRjaF9zeW5j
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKLSAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNV
bnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7Ci0gICAgICAgIGF1dG8gZXJyb3IgPSBD
TUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCAlZCIs
IGVycm9yKTsKLSAgICAgICAgbV9pc0VuY29kaW5nID0gZmFsc2U7Ci0gICAgfSk7Ci19Ci0KLWJv
b2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3Vy
Y2VGb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0
aW9uLCBBdWRpb0Zvcm1hdElEIG91dHB1dEZvcm1hdElEKQotewotICAgIGNvbnN0IGF1dG8gKmF1
ZGlvRm9ybWF0TGlzdEl0ZW0gPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVj
b2RhYmxlRm9ybWF0KGZvcm1hdERlc2NyaXB0aW9uKTsKLSAgICBtX3NvdXJjZUZvcm1hdCA9IGF1
ZGlvRm9ybWF0TGlzdEl0ZW0tPm1BU0JEOwotCi0gICAgbWVtc2V0KCZtX2Rlc3RpbmF0aW9uRm9y
bWF0LCAwLCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7Ci0gICAgbV9kZXN0
aW5hdGlvbkZvcm1hdC5tRm9ybWF0SUQgPSBvdXRwdXRGb3JtYXRJRDsKLSAgICBtX2Rlc3RpbmF0
aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9zb3VyY2VGb3JtYXQubVNhbXBsZVJhdGU7Ci0gICAg
bV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG1fc291cmNlRm9ybWF0Lm1D
aGFubmVsc1BlckZyYW1lOwotCi0gICAgVUludDMyIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlv
bkZvcm1hdCk7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Zvcm1hdEdldFByb3BlcnR5KGtB
dWRpb0Zvcm1hdFByb3BlcnR5X0Zvcm1hdEluZm8sIDAsIE5VTEwsICZzaXplLCAmbV9kZXN0aW5h
dGlvbkZvcm1hdCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIEF1
ZGlvQ29udmVydGVyUmVmIGNvbnZlcnRlcjsKLSAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29u
dmVydGVyTmV3KCZtX3NvdXJjZUZvcm1hdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsICZjb252ZXJ0
ZXIpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIEF1ZGlvQ29udmVydGVyTmV3IGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIG1fY29udmVydGVyID0gYWRv
cHRDRihjb252ZXJ0ZXIpOwotCi0gICAgc2l6ZV90IGNvb2tpZVNpemUgPSAwOwotICAgIGNvbnN0
IHZvaWQgKmNvb2tpZSA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llKGZv
cm1hdERlc2NyaXB0aW9uLCAmY29va2llU2l6ZSk7Ci0gICAgaWYgKGNvb2tpZVNpemUpIHsKLSAg
ICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVy
dGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJEZWNvbXByZXNzaW9uTWFnaWNDb29raWUsIChVSW50
MzIpY29va2llU2l6ZSwgY29va2llKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9D
b252ZXJ0ZXJEZWNvbXByZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzaXpl
ID0gc2l6ZW9mKG1fc291cmNlRm9ybWF0KTsKLSAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29u
dmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckN1cnJl
bnRJbnB1dFN0cmVhbURlc2NyaXB0aW9uLCAmc2l6ZSwgJm1fc291cmNlRm9ybWF0KSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRJbnB1dFN0cmVhbURlc2NyaXB0
aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgaWYgKCFtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJtQnl0ZXNQZXJQYWNrZXQgc2hvdWxkIG5v
dCBiZSB6ZXJvIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzaXplID0g
c2l6ZW9mKG1fZGVzdGluYXRpb25Gb3JtYXQpOwotICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9D
b252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ3Vy
cmVudE91dHB1dFN0cmVhbURlc2NyaXB0aW9uLCAmc2l6ZSwgJm1fZGVzdGluYXRpb25Gb3JtYXQp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ3VycmVudE91dHB1dFN0cmVh
bURlc2NyaXB0aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID09IGtB
dWRpb0Zvcm1hdE1QRUc0QUFDKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTZXQgb3V0cHV0Qml0UmF0
ZSBhY2NvcmRpbmcgTWVkaWFSZWNvcmRlck9wdGlvbnMuYXVkaW9CaXRzUGVyU2Vjb25kLgotICAg
ICAgICBVSW50MzIgb3V0cHV0Qml0UmF0ZSA9IDY0MDAwOwotICAgICAgICBpZiAobV9kZXN0aW5h
dGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA+PSA0NDEwMCkKLSAgICAgICAgICAgIG91dHB1dEJpdFJh
dGUgPSAxOTIwMDA7Ci0gICAgICAgIGVsc2UgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBs
ZVJhdGUgPCAyMjAwMCkKLSAgICAgICAgICAgIG91dHB1dEJpdFJhdGUgPSAzMjAwMDsKLQotICAg
ICAgICBzaXplID0gc2l6ZW9mKG91dHB1dEJpdFJhdGUpOwotICAgICAgICBpZiAoYXV0byBlcnJv
ciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0Nv
bnZlcnRlckVuY29kZUJpdFJhdGUsIHNpemUsICZvdXRwdXRCaXRSYXRlKSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3Igc2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkgewotICAgICAg
ICAvLyBJZiB0aGUgZGVzdGluYXRpb24gZm9ybWF0IGlzIFZCUiwgd2UgbmVlZCB0byBnZXQgbWF4
IHNpemUgcGVyIHBhY2tldCBmcm9tIHRoZSBjb252ZXJ0ZXIuCi0gICAgICAgIHNpemUgPSBzaXpl
b2YobV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKLQotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRl
clByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUsICZzaXplLCAmbV9tYXhPdXRwdXRQYWNr
ZXRTaXplKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0
eU1heGltdW1PdXRwdXRQYWNrZXRTaXplIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9kZXN0aW5hdGlv
bkJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoY29tcHV0ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdCht
X2Rlc3RpbmF0aW9uRm9ybWF0LCBtX21heE91dHB1dFBhY2tldFNpemUsIExPV19XQVRFUl9USU1F
X0lOX1NFQ09ORFMpKTsKLSAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFj
a2V0KQotICAgICAgICBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLnJlc2VydmVDYXBh
Y2l0eShtX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBtX21heE91dHB1dFBhY2tldFNp
emUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXNpemVfdCBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uIGZvcm1hdCwgVUludDMyIG1heE91dHB1dFBhY2tldFNpemUsIEZsb2F0MzIg
ZHVyYXRpb24pCi17Ci0gICAgVUludDMyIG51bVBhY2tldHMgPSAoZm9ybWF0Lm1TYW1wbGVSYXRl
ICogZHVyYXRpb24pIC8gZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQ7Ci0gICAgVUludDMyIG91dHB1
dFBhY2tldFNpemUgPSBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gZm9ybWF0Lm1CeXRlc1BlclBh
Y2tldCA6IG1heE91dHB1dFBhY2tldFNpemU7Ci0gICAgVUludDMyIGJ1ZmZlclNpemUgPSBudW1Q
YWNrZXRzICogb3V0cHV0UGFja2V0U2l6ZTsKLQotICAgIHJldHVybiBidWZmZXJTaXplOwotfQot
Ci12b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZO
ZWVkZWQoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQotewotICAgIGlmIChDTVRJTUVfSVNfSU5W
QUxJRChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7Ci0gICAgICAgIEF1ZGlvQ29udmVydGVy
UHJpbWVJbmZvIHByaW1lSW5mbyB7IDAsIDAgfTsKLSAgICAgICAgVUludDMyIHNpemUgPSBzaXpl
b2YocHJpbWVJbmZvKTsKLQotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVy
R2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlclByaW1lSW5mbywg
JnNpemUsICZwcmltZUluZm8pKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZl
cnRlclByaW1lSW5mbyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGlt
ZU1ha2UocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMsIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBs
ZVJhdGUpOwotICAgIH0KLQotICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVpl
cm8sIDwsIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbikpIHsKLSAgICAgICAgQ01UaW1lIHNhbXBs
ZUR1cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOwotICAgICAgICBD
TVRpbWUgdHJpbUR1cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1h
aW5pbmdQcmltZUR1cmF0aW9uKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0
RGljdCA9IENNVGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JE
ZWZhdWx0KTsKLSAgICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVy
QXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0
dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7Ci0gICAgICAgIENGUmVsZWFzZSh0cmltQXRT
dGFydERpY3QpOwotICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0
cmFjdChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24sIHRyaW1EdXJhdGlvbik7Ci0gICAgfQotfQot
Ci1SZXRhaW5QdHI8TlNOdW1iZXI+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z3JhZHVh
bERlY29kZXJSZWZyZXNoQ291bnQoKQotewotICAgIFVJbnQzMiBkZWxheVNpemUgPSBzaXplb2Yo
dWludDMyX3QpOwotICAgIHVpbnQzMl90IG9yaWdpbmFsRGVsYXlNb2RlID0gMDsKLSAgICBpZiAo
YXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCks
IGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsICZkZWxheVNpemUsICZvcmlnaW5hbERlbGF5
TW9kZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQot
ICAgIHVpbnQzMl90IG9wdGltYWxEZWxheU1vZGUgPSBrQXVkaW9Db2RlY0RlbGF5TW9kZV9PcHRp
bWFsOwotICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAm
b3B0aW1hbERlbGF5TW9kZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3Bl
cnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gbmls
OwotICAgIH0KLQotICAgIFVJbnQzMiBwcmltZVNpemUgPSBzaXplb2YoQXVkaW9Db2RlY1ByaW1l
SW5mbyk7Ci0gICAgQXVkaW9Db2RlY1ByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07Ci0gICAg
aWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdl
dCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvLCAmcHJpbWVTaXplLCAmcHJpbWVJbmZv
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlQcmltZUluZm8gZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAg
aWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdl
dCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUsICZvcmlnaW5hbERl
bGF5TW9kZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlN
b2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0K
LSAgICByZXR1cm4gYWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJpbWVJbmZvLmxl
YWRpbmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQpXSk7Ci19
Ci0KLUNNU2FtcGxlQnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxl
QnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCBm
aWxsQnVmZmVyTGlzdCkKLXsKLSAgICBWZWN0b3I8Y2hhcj4gY29va2llOwotICAgIGlmICghbV9k
ZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSB7Ci0gICAgICAgIFVJbnQzMiBjb29raWVTaXpl
ID0gMDsKLQotICAgICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eUlu
Zm8obV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29r
aWUsICZjb29raWVTaXplLCBOVUxMKTsKLSAgICAgICAgaWYgKChlcnJvciA9PSBub0VycikgJiYg
ISFjb29raWVTaXplKSB7Ci0gICAgICAgICAgICBjb29raWUucmVzZXJ2ZUNhcGFjaXR5KGNvb2tp
ZVNpemUpOwotCi0gICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0
UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFn
aWNDb29raWUsICZjb29raWVTaXplLCBjb29raWUuZGF0YSgpKSkgewotICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXN0aW5h
dGlvbkZvcm1hdERlc2NyaXB0aW9uOwotICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmbV9kZXN0aW5hdGlv
bkZvcm1hdCwgMCwgTlVMTCwgY29va2llU2l6ZSwgY29va2llLmRhdGEoKSwgTlVMTCwgJmRlc3Rp
bmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmlsOwotICAgICAgICB9Ci0gICAgICAgIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlw
dGlvbiA9IGFkb3B0Q0YoZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbik7Ci0gICAgICAgIG1f
Z2RyQ291bnROdW0gPSBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCgpOwotICAgIH0KLQotICAg
IGNoYXIgKmRhdGEgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNb
MF0ubURhdGEpOwotICAgIHNpemVfdCBkYXRhU2l6ZSA9IGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJz
WzBdLm1EYXRhQnl0ZVNpemU7Ci0KLSAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrQnVmZmVyOwot
ICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBkYXRhU2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwg
TlVMTCwgMCwgZGF0YVNpemUsIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywgJmJs
b2NrQnVmZmVyKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJs
b2NrIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0K
LSAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOwotCi0gICAgaWYgKGF1dG8g
ZXJyb3IgPSBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyhkYXRhLCBidWZmZXIuZ2V0KCks
IDAsIGRhdGFTaXplKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRl
cyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0K
LSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7Ci0gICAgYXV0byBlcnJvciA9IENN
QXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGJ1ZmZlci5nZXQoKSwgdHJ1ZSwgTlVMTCwgTlVMTCwgbV9kZXN0aW5hdGlvbkZv
cm1hdERlc2NyaXB0aW9uLmdldCgpLCBudW1QYWNrZXRzLCBtX2N1cnJlbnROYXRpdmVQcmVzZW50
YXRpb25UaW1lU3RhbXAsIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgpLCAm
c2FtcGxlQnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01BdWRpb1NhbXBs
ZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgaWYgKFttX2dkckNvdW50TnVt
IGludFZhbHVlXSkKLSAgICAgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlciwga0NNU2Ft
cGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2gsIChfX2JyaWRnZSBD
RlR5cGVSZWYpbV9nZHJDb3VudE51bS5nZXQoKSwga0NNQXR0YWNobWVudE1vZGVfU2hvdWxkUHJv
cGFnYXRlKTsKLQotICAgIHJldHVybiBzYW1wbGVCdWZmZXI7Ci19Ci0KLU9TU3RhdHVzIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJv
YyhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyICpudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1
ZmZlckxpc3QgKmJ1ZmZlckxpc3QsIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gKipwYWNr
ZXREZXNjcmlwdGlvbk91dCwgdm9pZCAqYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKQotewot
ICAgIGF1dG8gKmNvbXByZXNzb3IgPSBzdGF0aWNfY2FzdDxBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IqPihhdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOwotICAgIHJldHVybiBjb21wcmVz
c29yLT5wcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMobnVtT3V0cHV0UGFja2V0c1B0
ciwgYnVmZmVyTGlzdCwgcGFja2V0RGVzY3JpcHRpb25PdXQpOwotfQotCi1PU1N0YXR1cyBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0
cyhVSW50MzIqIG51bU91dHB1dFBhY2tldHNQdHIsIEF1ZGlvQnVmZmVyTGlzdCogYXVkaW9CdWZm
ZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiogcGFja2V0RGVzY3JpcHRpb25P
dXQpCi17Ci0gICAgaWYgKHBhY2tldERlc2NyaXB0aW9uT3V0KQotICAgICAgICAqcGFja2V0RGVz
Y3JpcHRpb25PdXQgPSBOVUxMOwotCi0gICAgY29uc3QgVUludDMyIG51bVBhY2tldHNUb0NvcHkg
PSAqbnVtT3V0cHV0UGFja2V0c1B0cjsKLSAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHkgPSAobnVt
UGFja2V0c1RvQ29weSAqIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7Ci0KLSAgICBp
ZiAoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAxKSB7Ci0gICAgICAgIHNpemVf
dCBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgPSAwOwotCi0gICAgICAgIG1fc291cmNlQnVm
ZmVyLnJlc2VydmVDYXBhY2l0eShudW1CeXRlc1RvQ29weSk7Ci0KLSAgICAgICAgd2hpbGUgKG51
bUJ5dGVzVG9Db3B5KSB7Ci0gICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUg
PD0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikgewotICAgICAgICAgICAgICAg
IGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc2FtcGxl
QmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2Nr
QnVmZmVyU2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIg
PSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKLSAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJl
ZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVy
KHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOwotICAgICAgICAgICAgICAgIGlmICghbV9zYW1wbGVC
bG9ja0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlckdldERh
dGFCdWZmZXIgZmFpbGVkIik7Ci0gICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZm
ZXJTaXplID0gMDsKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVC
bG9ja0J1ZmZlciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IENNQmxv
Y2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgewotICAgICAg
ICAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmID0gc3RkOjptaW4o
bnVtQnl0ZXNUb0NvcHksIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSAtIG1fY3VycmVudE9mZnNl
dEluU2FtcGxlQmxvY2tCdWZmZXIpKTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9
IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1f
Y3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBs
ZUJidWYsIChtX3NvdXJjZUJ1ZmZlci5kYXRhKCkgKyBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZm
ZXIpKSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRl
cyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBudW1CeXRlc1RvQ29weSAt
PSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOwotICAgICAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOwotICAg
ICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgKz0gbnVtQnl0
ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhID0gbV9zb3VyY2VCdWZmZXIuZGF0
YSgpOwotICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUg
PSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7Ci0gICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+
bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVy
RnJhbWU7Ci0KLSAgICAgICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0
LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFj
a2V0KTsKLSAgICAgICAgcmV0dXJuIG5vRXJyOwotICAgIH0KLQotICAgIEFTU0VSVChhdWRpb0J1
ZmZlckxpc3QtPm1OdW1iZXJCdWZmZXJzID09IDIpOwotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQg
aW50ZXJsZWF2ZWQgZGF0YSBieSB1bmludGVybGVhdmluZyBtX3NvdXJjZUJ1ZmZlciBpZiBuZWVk
ZWQuCi0gICAgQVNTRVJUKG1fc291cmNlRm9ybWF0Lm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1h
dEZsYWdJc05vbkludGVybGVhdmVkKTsKLQotICAgIG1fc291cmNlQnVmZmVyLnJlc2VydmVDYXBh
Y2l0eSgyICogbnVtQnl0ZXNUb0NvcHkpOwotICAgIGF1dG8qIGZpcnN0Q2hhbm5lbCA9IG1fc291
cmNlQnVmZmVyLmRhdGEoKTsKLSAgICBhdXRvKiBzZWNvbmRDaGFubmVsID0gbV9zb3VyY2VCdWZm
ZXIuZGF0YSgpICsgbnVtQnl0ZXNUb0NvcHk7Ci0KLSAgICBzaXplX3QgY3VycmVudE9mZnNldElu
U291cmNlQnVmZmVyID0gMDsKLSAgICB3aGlsZSAobnVtQnl0ZXNUb0NvcHkpIHsKLSAgICAgICAg
aWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxv
Y2tCdWZmZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7Ci0gICAg
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgICAgICAg
ICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlzRW1wdHkobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkK
LSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIg
PSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKLSAgICAg
ICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENGKChDTUJsb2NrQnVmZmVyUmVmKShj
b25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2Ft
cGxlQnVmZmVyLmdldCgpKSkpKSk7Ci0gICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZm
ZXIpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIgZmFp
bGVkIik7Ci0gICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOwotICAg
ICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJs
b2NrQnVmZmVyLmdldCgpKSAvIDI7Ci0gICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBs
ZUJsb2NrQnVmZmVyID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX3NhbXBsZUJsb2Nr
QnVmZmVyKSB7Ci0gICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1
ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgLSBt
X2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7Ci0gICAgICAgICAgICBpZiAoYXV0
byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1fc2FtcGxlQmxvY2tCdWZmZXIu
Z2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIsIG51bUJ5dGVzVG9Db3B5
RnJvbVNhbXBsZUJidWYsIChmaXJzdENoYW5uZWwgKyBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZm
ZXIpKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIGZp
cnN0IGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBD
TUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1
cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICsgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUs
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChzZWNvbmRDaGFubmVsICsgY3VycmVudE9m
ZnNldEluU291cmNlQnVmZmVyKSkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVy
Q29weURhdGFCeXRlcyBzZWNvbmQgY2hhbm5lbCBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBu
dW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOwotICAgICAgICAg
ICAgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBs
ZUJidWY7Ci0gICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICs9
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBh
dWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhID0gZmlyc3RDaGFubmVsOwotICAgIGF1
ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGN1cnJlbnRPZmZzZXRJ
blNvdXJjZUJ1ZmZlcjsKLSAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJD
aGFubmVscyA9IDE7Ci0KLSAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzFdLm1EYXRhID0g
c2Vjb25kQ2hhbm5lbDsKLSAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzFdLm1EYXRhQnl0
ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7Ci0gICAgYXVkaW9CdWZmZXJMaXN0
LT5tQnVmZmVyc1sxXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOwotCi0gICAgKm51bU91dHB1dFBhY2tl
dHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8gbV9z
b3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKLSAgICByZXR1cm4gbm9FcnI7Ci19Ci0KLXZv
aWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGls
TG93V2F0ZXJUaW1lKENNVGltZSBsb3dXYXRlclRpbWUpCi17Ci0gICAgaWYgKCFtX2NvbnZlcnRl
cikgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2Fz
dDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkp
OwotICAgICAgICBBU1NFUlQoYnVmZmVyKTsKLQotICAgICAgICBtX2N1cnJlbnROYXRpdmVQcmVz
ZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFt
cChidWZmZXIpOwotICAgICAgICBtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAg
PSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOwot
Ci0gICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1h
dERlc2NyaXB0aW9uKGJ1ZmZlcik7Ci0gICAgICAgIGlmICghaW5pdEF1ZGlvQ29udmVydGVyRm9y
U291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24sIG1fb3V0cHV0Q29kZWNU
eXBlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB3aGlsZSAoQ01USU1FX0lT
X0lOVkFMSUQobG93V2F0ZXJUaW1lKSB8fCBDTVRJTUVfQ09NUEFSRV9JTkxJTkUobG93V2F0ZXJU
aW1lLCA8LCBDTUJ1ZmZlclF1ZXVlR2V0RHVyYXRpb24obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgp
KSkpIHsKLSAgICAgICAgQXVkaW9CdWZmZXJMaXN0IGZpbGxCdWZmZXJMaXN0OwotCi0gICAgICAg
IGZpbGxCdWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKLSAgICAgICAgZmlsbEJ1ZmZlckxp
c3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZTsKLSAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFC
eXRlU2l6ZSA9IChVSW50MzIpbV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpOwotICAgICAg
ICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1fZGVzdGluYXRpb25CdWZmZXIu
ZGF0YSgpOwotCi0gICAgICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gbV9kZXN0aW5hdGlv
bkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBh
Y2tldCA6IG1fbWF4T3V0cHV0UGFja2V0U2l6ZTsKLSAgICAgICAgVUludDMyIG51bU91dHB1dFBh
Y2tldHMgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHkoKSAvIG91dHB1dFBh
Y2tldFNpemU7Ci0KLSAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBs
ZXhCdWZmZXIobV9jb252ZXJ0ZXIuZ2V0KCksIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0
YVByb2MsIHRoaXMsICZudW1PdXRwdXRQYWNrZXRzLCAmZmlsbEJ1ZmZlckxpc3QsIG1fZGVzdGlu
YXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgpKTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCFudW1PdXRwdXRQYWNrZXRzKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgYXV0
byBidWZmZXIgPSBzYW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0cyhudW1PdXRwdXRQYWNrZXRzLCBm
aWxsQnVmZmVyTGlzdCk7Ci0KLSAgICAgICAgYXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoYnVm
ZmVyKTsKLQotICAgICAgICBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0T3V0cHV0UHJlc2VudGF0
aW9uVGltZVN0YW1wKGJ1ZmZlciwgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1w
KTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlclNl
dE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIENNVGltZSBuYXRpdmVEdXJh
dGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKLSAgICAgICAgbV9jdXJy
ZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01UaW1lQWRkKG1fY3VycmVudE5hdGl2
ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbmF0aXZlRHVyYXRpb24pOwotCi0gICAgICAgIENNVGlt
ZSBvdXRwdXREdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0RHVyYXRpb24oYnVmZmVy
KTsKLSAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01UaW1l
QWRkKG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCwgb3V0cHV0RHVyYXRpb24p
OwotCi0gICAgICAgIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9vdXRwdXRCdWZmZXJR
dWV1ZS5nZXQoKSwgYnVmZmVyKTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVy
KQotewotICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShtX2lucHV0QnVmZmVy
UXVldWUuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVFbnF1
ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotCi0gICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNV
bnRpbExvd1dhdGVyVGltZShtX2xvd1dhdGVyVGltZSk7Ci19Ci0KLXZvaWQgQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVy
KQotewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeewotICAgICAg
ICBpZiAobV9pc0VuY29kaW5nKQotICAgICAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihidWZm
ZXIpOwotICAgIH0pOwotfQotCi1DTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpCi17Ci0gICAgcmV0dXJuIChDTVNhbXBs
ZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9vdXRw
dXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKLX0KLQotUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVm
PiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKQot
ewotICAgIHJldHVybiBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lk
Kj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQo
KSkpKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShB
VkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCmluZGV4IDA1MTg2MDg2YTI1NjE2MDI0NmNkOGQzMjIxNThjNTY4OTFhNDJj
OTYuLmIxNDdjYTI4ODI5YjBmMTAzMGJkYTc0YTA4NDI2YzQ1NjVlOTg3MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0yNCw5
ICsyNCw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCi0KLSNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMzcsMTYgKzM1
LDEwIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KIAotI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5o
PgotI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUuaD4KLQogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVl
Q01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
b3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKLXR5cGVk
ZWYgc3RydWN0IG9wYXF1ZUNNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4gKkNNQnVmZmVyUXVldWVU
cmlnZ2VyVG9rZW47CiAKIE9CSkNfQ0xBU1MgQVZBc3NldFdyaXRlcjsKIE9CSkNfQ0xBU1MgQVZB
c3NldFdyaXRlcklucHV0OwotT0JKQ19DTEFTUyBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU7CiAK
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWVkaWFUaW1lOwpAQCAtNTQsNzIgKzQ2LDUxIEBAIGNs
YXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I7CiBjbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3Mg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKLWNsYXNz
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcjsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdlYWtQdHJG
YWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gewogcHVibGlj
OgorICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IGNyZWF0ZShj
b25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9UcmFjaywgY29uc3QgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spOwogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI+IGNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpOwogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpOwotCisgICAgCisgICAg
Ym9vbCBzZXR1cFdyaXRlcigpOworICAgIGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpOworICAgIGJvb2wgc2V0QXVkaW9JbnB1dCgpOwogICAgIHZvaWQgYXBwZW5kVmlk
ZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9T
YW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3Rv
cFJlY29yZGluZygpOwogICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogCi0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0
IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
KTsKLQogcHJpdmF0ZToKLSAgICBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihib29sIGhhc0F1
ZGlvLCBib29sIGhhc1ZpZGVvKTsKKyAgICBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcj4mJiwgU3RyaW5nJiYgcGF0aCk7CiAgICAgdm9pZCBjbGVhcigp
OwogCi0gICAgYm9vbCBpbml0aWFsaXplKCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2Vk
VmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tl
bik7Ci0gICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2so
dm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOwotCi0gICAgdm9pZCBzdGFydEFzc2V0
V3JpdGVyKCk7Ci0gICAgdm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwotCi0g
ICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsKLSAgICBib29sIGFw
cGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpOwotCi0gICAgdm9pZCBwcm9jZXNzTmV3
Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOwotICAgIHZvaWQgcHJvY2Vzc05ld0NvbXBy
ZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKLQotICAgIHZvaWQgZmx1c2hDb21wcmVzc2VkU2Ft
cGxlQnVmZmVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgYXBwZW5k
RW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLQorICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKKyAgICBSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX3ZpZGVvSW5wdXQ7CisgICAgUmV0YWluUHRyPEFW
QXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0lucHV0OworCisgICAgU3RyaW5nIG1fcGF0aDsKKyAg
ICBMb2NrIG1fdmlkZW9Mb2NrOworICAgIExvY2sgbV9hdWRpb0xvY2s7CisgICAgQmluYXJ5U2Vt
YXBob3JlIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgbV9m
aW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmU7CisgICAgQmluYXJ5U2VtYXBob3JlIG1fZmluaXNo
V3JpdGluZ1ZpZGVvU2VtYXBob3JlOwogICAgIGJvb2wgbV9oYXNTdGFydGVkV3JpdGluZyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07Ci0KLSAgICBSZXRhaW5QdHI8
QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CisgICAgYm9vbCBtX2lzRmlyc3RBdWRpb1NhbXBsZSB7
IHRydWUgfTsKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fYXVkaW9QdWxsUXVldWU7CisgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX3ZpZGVvUHVsbFF1ZXVlOworICAgIERlcXVlPFJldGFpblB0cjxDTVNh
bXBsZUJ1ZmZlclJlZj4+IG1fdmlkZW9CdWZmZXJQb29sOworICAgIERlcXVlPFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4+IG1fYXVkaW9CdWZmZXJQb29sOwogCiAgICAgYm9vbCBtX2lzU3Rv
cHBpbmcgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiBtX2ZldGNoRGF0
YUNvbXBsZXRpb25IYW5kbGVyOwotCi0gICAgYm9vbCBtX2hhc0F1ZGlvOwotICAgIGJvb2wgbV9o
YXNWaWRlbzsKLQotICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlv
Rm9ybWF0RGVzY3JpcHRpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXRXcml0
ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQ7Ci0KLSAgICBSZXRhaW5QdHI8Q01Gb3Jt
YXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fdmlkZW9Db21wcmVzc29yOwot
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0
OwotICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWU7Ci0gICAgQ01UaW1lIG1f
bGFzdFZpZGVvRGVjb2RpbmdUaW1lOwotICAgIGJvb2wgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVz
IHsgZmFsc2UgfTsKLQotICAgIFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1f
d3JpdGVyRGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IGVjM2JiNmVmNDMyNDVlOWUzOTI5
OGIwMWZmZDI3YjZiYWU5YzYxYTAuLjIzMzU0ZjQ3ODRkZTA5MmYwNDg3YzE4NTRmYzViMjZhNWUy
MjExYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KQEAgLTI2LDM0OCArMjYsMjUzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIgogCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAotI2luY2x1ZGUgIkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUuaCIKLSNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRl
ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdy
aXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KLSNp
bmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+Ci0jaW5jbHVkZSA8
cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KLSNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KICNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgotI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAotQGludGVyZmFjZSBXZWJBVkFzc2V0V3JpdGVyRGVs
ZWdhdGUgOiBOU09iamVjdCA8QVZBc3NldFdyaXRlckRlbGVnYXRlPiB7Ci0gICAgV2Vha1B0cjxX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gbV93cml0ZXI7Ci19Ci0KLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIqKXdyaXRlcjsKLS0gKHZvaWQpY2xvc2U7CisjdW5kZWYgQVZFbmNvZGVyQml0UmF0ZUtl
eQorI2RlZmluZSBBVkVuY29kZXJCaXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRo
RmFsbGJhY2soKQorI3VuZGVmIEFWRm9ybWF0SURLZXkKKyNkZWZpbmUgQVZGb3JtYXRJREtleSBn
ZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKKyN1bmRlZiBBVk51bWJlck9mQ2hhbm5lbHNL
ZXkKKyNkZWZpbmUgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVsc0tl
eVdpdGhGYWxsYmFjaygpCisjdW5kZWYgQVZTYW1wbGVSYXRlS2V5CisjZGVmaW5lIEFWU2FtcGxl
UmF0ZUtleSBnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQogCi1AZW5kCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
ewotfTsKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdy
aXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcgorc3RhdGlj
IE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKHNlbGYp
Ci0gICAgICAgIHNlbGYtPm1fd3JpdGVyID0gbWFrZVdlYWtQdHIod3JpdGVyKTsKKyAgICBpZiAo
UEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCkpCisgICAgICAgIHJldHVy
biBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpOwogCi0gICAgcmV0dXJuIHNl
bGY7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkZvcm1h
dElES2V5Iik7CisgICAgcmV0dXJuIEAiQVZGb3JtYXRJREtleSI7CiB9CiAKLS0gKHZvaWQpYXNz
ZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRl
ZEhlYWRlckRhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRIZWFkZXJEYXRhCitzdGF0aWMgTlNTdHJp
bmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGFzc2V0V3JpdGVyKTsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAg
IGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSkgewotICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVkFz
c2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5
dGVzXSksIHNpemUpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRT
ZWxmLT5tX3dyaXRlcikKLSAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+bV93cml0
ZXItPmFwcGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5k
YXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCisgICAgICAgIHJldHVybiBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7CiAKLSAgICBpZiAobV93cml0ZXIp
Ci0gICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0
aF0pOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZOdW1i
ZXJPZkNoYW5uZWxzS2V5Iik7CisgICAgcmV0dXJuIEAiQVZOdW1iZXJPZkNoYW5uZWxzS2V5IjsK
IH0KIAotLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRp
ZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkTWVkaWFEYXRh
IGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCAq
KWZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVS
YXRlS2V5V2l0aEZhbGxiYWNrKCkKIHsKLSAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0KTsKLSAgICBpZiAoIWlz
TWFpblRocmVhZCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZE1lZGlh
RGF0YSBsZW5ndGhdKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCi0gICAgICAgICAgICAgICAgICAg
IHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpKQorICAgICAgICBy
ZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpOwogCi0gICAgaWYg
KG1fd3JpdGVyKQotICAgICAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURh
dGEgbGVuZ3RoXSk7Ci19Ci0KLS0gKHZvaWQpY2xvc2UKLXsKLSAgICBtX3dyaXRlciA9IG51bGxw
dHI7Ci19Ci0KLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2Ug
UEFMOwotCi1SZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQotewotICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcihoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7Ci0gICAgaWYgKCF3cml0ZXItPmlu
aXRpYWxpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHdyaXRlcjsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWU2FtcGxlUmF0
ZUtleSIpOworICAgIHJldHVybiBAIkFWU2FtcGxlUmF0ZUtleSI7CiB9CiAKLXZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNr
KHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRv
a2VuKQorc3RhdGljIE5TU3RyaW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNr
KCkKIHsKLSAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKTsKLSAgICB3cml0ZXItPnByb2Nl
c3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7Ci19CisgICAgaWYgKFBBTDo6Y2Fu
TG9hZF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpKQorICAgICAgICByZXR1cm4g
UEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKTsKIAotdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJh
Y2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2Vy
VG9rZW4pCi17Ci0gICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7Ci0gICAgd3JpdGVyLT5w
cm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOworICAg
IHJldHVybiBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBo
YXNWaWRlbykKLSAgICA6IG1faGFzQXVkaW8oaGFzQXVkaW8pCi0gICAgLCBtX2hhc1ZpZGVvKGhh
c1ZpZGVvKQorUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBhdWRp
b1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFjaykKIHsKKyAg
ICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgIGlmICh2aWRlb1RyYWNrKSB7CisgICAg
ICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3MoKTsKKyAgICAgICAgd2lk
dGggPSBzZXR0aW5ncy53aWR0aCgpOworICAgICAgICBoZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQo
KTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRoLCBoZWlnaHQp
OwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKCkKK1JlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpCiB7Ci0gICAgY2xlYXIoKTsKLX0KKyAgICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5
c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAidmlkZW9zIik7CisgICAgTlNTdHJpbmcg
KmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNs
b2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKS52YWx1ZV07CisgICAgTlNTdHJp
bmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsK
IAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCi17CisgICAg
TlNVUkwgKm91dHB1dFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF07CisgICAgU3Ry
aW5nIGZpbGVQYXRoID0gW3BhdGggVVRGOFN0cmluZ107CiAgICAgTlNFcnJvciAqZXJyb3IgPSBu
aWw7Ci0gICAgbV93cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3Rh
bmNlKCkgaW5pdFdpdGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7Cisg
ICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJ
bnN0YW5jZSgpIGluaXRXaXRoVVJMOm91dHB1dFVSTCBmaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQg
ZXJyb3I6JmVycm9yXSk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdp
dGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJvci5jb2RlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3dyaXRlckRlbGVn
YXRlID0gYWRvcHROUyhbW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhX
cml0ZXI6IHRoaXNdKTsKLSAgICBbbV93cml0ZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bV93cml0ZXJE
ZWxlZ2F0ZS5nZXQoKV07CisgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlciksIFdURk1vdmUoZmlsZVBh
dGgpKSk7CiAKLSAgICBpZiAobV9oYXNBdWRpbykgewotICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nv
ciA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGNvbXByZXNzZWRBdWRpb091
dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKLSAgICAgICAgaWYgKCFtX2F1ZGlvQ29tcHJlc3Nv
cikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKG1faGFzVmlkZW8p
IHsKLSAgICAgICAgbV92aWRlb0NvbXByZXNzb3IgPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmNyZWF0ZShrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LCBjb21wcmVzc2VkVmlkZW9PdXRwdXRC
dWZmZXJDYWxsYmFjaywgdGhpcyk7Ci0gICAgICAgIGlmICghbV92aWRlb0NvbXByZXNzb3IpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNl
dEF1ZGlvSW5wdXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAod2lkdGgg
JiYgaGVpZ2h0KSB7CisgICAgICAgIGlmICghd3JpdGVyLT5zZXRWaWRlb0lucHV0KHdpZHRoLCBo
ZWlnaHQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIFdURk1vdmUod3JpdGVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMo
KQorTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRXcml0ZXIsIFN0cmluZyYmIGZpbGVQ
YXRoKQorICAgIDogbV93cml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSkKKyAgICAsIG1fcGF0
aChXVEZNb3ZlKGZpbGVQYXRoKSkKIHsKLSAgICBBU1NFUlQobV9oYXNWaWRlbyk7Ci0gICAgaWYg
KCFtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24pIHsKLSAgICAgICAgbV92aWRlb0Zvcm1hdERlc2Ny
aXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX3ZpZGVvQ29tcHJl
c3Nvci0+Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzXSB7Ci0gICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKG1f
aGFzQXVkaW8gJiYgIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKLSAgICAgICAgfSk7Ci0g
ICAgfQotICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKLSAgICAgICAgcmV0dXJuOwotICAg
IGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCkK
K01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIo
KQogewotICAgIEFTU0VSVChtX2hhc0F1ZGlvKTsKLSAgICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNj
cmlwdGlvbikgewotICAgICAgICBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1
ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKG1fYXVkaW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1w
bGVCdWZmZXIoKSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyksIHRoaXNdIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobV9oYXNWaWRl
byAmJiAhbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgc3RhcnRBc3NldFdyaXRlcigpOwotICAgICAgICB9KTsKLSAgICB9Ci0g
ICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQotICAgICAgICByZXR1cm47Ci0gICAgYXBwZW5k
Q29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKyAgICBjbGVhcigpOwogfQogCi12b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKCkKK3ZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKIHsKLSAgICBpZiAobV9oYXNWaWRlbykgewotICAg
ICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0
V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8g
b3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV92aWRlb0Zvcm1hdERlc2NyaXB0
aW9uLmdldCgpXSk7Ci0gICAgICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3Rz
TWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkg
Y2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRk
SW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAgIGlmIChtX3ZpZGVvSW5w
dXQpIHsKKyAgICAgICAgbV92aWRlb0lucHV0LmNsZWFyKCk7CisgICAgICAgIGRpc3BhdGNoX3Jl
bGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7CiAgICAgfQotICAgIAotICAgIGlmIChtX2hhc0F1ZGlv
KSB7Ci0gICAgICAgIG1fYXVkaW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5
cGVBdWRpbyBvdXRwdXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb24uZ2V0KCldKTsKLSAgICAgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNl
dEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOwotICAgICAgICBpZiAoIVttX3dyaXRl
ci5nZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciBhdWRp
byIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFttX3dyaXRlci5n
ZXQoKSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV07CisgICAgaWYgKG1f
YXVkaW9JbnB1dCkgeworICAgICAgICBtX2F1ZGlvSW5wdXQuY2xlYXIoKTsKKyAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVlKTsKICAgICB9Ci0gICAgCi0gICAgaWYgKCFb
bV93cml0ZXIuZ2V0KCkgc3RhcnRXcml0aW5nXSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3Jp
dGVyIGZhaWxlZCBzdGFydFdyaXRpbmciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFttX3dyaXRlci5nZXQoKSBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6a0NNVGltZVplcm9dOwot
Ci0gICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKyAgICBpZiAobV93cml0ZXIp
CisgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAKLSAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0g
dHJ1ZTsKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiB9CiAKLWJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpCitib29sIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkK
IHsKLSAgICBpZiAoIW1fYXVkaW9Db21wcmVzc29yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoIVttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0
YV0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0Nv
bXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZlcikKKyAg
ICBBU1NFUlQoIW1fdmlkZW9JbnB1dCk7CisgICAgCisgICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVz
c2lvblByb3BlcnRpZXMgPSBAeworICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwKKyAgICAgICAgQVZW
aWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5IDogQCgzMCksCisgICAgICAgIEFWVmlkZW9N
YXhLZXlGcmFtZUludGVydmFsS2V5IDogQCgxMjApLAorICAgICAgICBBVlZpZGVvUHJvZmlsZUxl
dmVsS2V5IDogQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsCisgICAgfTsKKwor
ICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9IEB7CisgICAgICAgIEFWVmlkZW9Db2Rl
Y0tleTogQVZWaWRlb0NvZGVjSDI2NCwKKyAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDp3aWR0aF0sCisgICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051
bWJlciBudW1iZXJXaXRoSW50OmhlaWdodF0sCisgICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblBy
b3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGllcworICAgIH07CisgICAgCisgICAgbV92
aWRlb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNl
KCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRl
b1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgW21fdmlkZW9JbnB1dCBzZXRF
eHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAKKyAgICBpZiAoIVttX3dyaXRl
ciBjYW5BZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7CisgICAgICAgIG1fdmlkZW9JbnB1
dCA9IG51bGxwdHI7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhl
IHZpZGVvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQu
Z2V0KCkgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CisgICAgfQorICAgIFttX3dy
aXRlciBhZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldOworICAgIG1fdmlkZW9QdWxsUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJR
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcigpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0
KCkKIHsKLSAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQpOwogCi0gICAgaWYgKCFbbV92aWRlb0Fzc2V0V3Jp
dGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgTlNEaWN0aW9uYXJ5ICphdWRpb1NldHRpbmdzID0gQHsKKyAgICAgICAgQVZFbmNvZGVy
Qml0UmF0ZUtleSA6IEAoMjgwMDApLAorICAgICAgICBBVkZvcm1hdElES2V5IDogQChrQXVkaW9G
b3JtYXRNUEVHNEFBQyksCisgICAgICAgIEFWTnVtYmVyT2ZDaGFubmVsc0tleSA6IEAoMSksCisg
ICAgICAgIEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIwNTApCisgICAgfTsKIAotICAgIGF1dG8gYnVm
ZmVyID0gbV92aWRlb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKLSAgICBp
ZiAoIWJ1ZmZlcikKKyAgICBtX2F1ZGlvSW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3Nl
dFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlv
IG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKKyAg
ICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAg
IAorICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV0pIHsK
KyAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0cjsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRv
IHRoZSBBVkFzc2V0V3JpdGVyIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fbGFz
dFZpZGVvUHJlc2VudGF0aW9uVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGlt
ZVN0YW1wKGJ1ZmZlci5nZXQoKSk7Ci0gICAgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUgPSBDTVNh
bXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOwotICAgIG1faGFzRW5j
b2RlZFZpZGVvU2FtcGxlcyA9IHRydWU7Ci0KLSAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQu
Z2V0KCkgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRT
YW1wbGVCdWZmZXJzKCkKLXsKLSAgICB3aGlsZSAoYXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxl
QnVmZmVyKCkgfHwgYXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkpIHsgfTsKLX0K
LQotc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFy
a2VyKEFWQXNzZXRXcml0ZXJJbnB1dCAqYXNzZXRXcml0ZXJJbnB1dCwgQ01UaW1lIHByZXNlbnRh
dGlvblRpbWVTdGFtcCwgQ01UaW1lIGRlY29kaW5nVGltZVN0YW1wKQotewotICAgIENNU2FtcGxl
VGltaW5nSW5mbyB0aW1pbmdJbmZvID0geyBrQ01UaW1lSW52YWxpZCwgcHJlc2VudGF0aW9uVGlt
ZVN0YW1wLCBkZWNvZGluZ1RpbWVTdGFtcH07Ci0KLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBidWZm
ZXIgPSBOVUxMOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMLCBOVUxMLCAwLCAxLCAmdGltaW5n
SW5mbywgMCwgTlVMTCwgJmJ1ZmZlcik7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgYXBw
ZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIgZmFpbGVkIENNU2FtcGxlQnVmZmVy
Q3JlYXRlIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0
byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKGJ1ZmZlcik7Ci0KLSAgICBDTVNldEF0dGFjaG1lbnQo
c2FtcGxlQnVmZmVyLmdldCgpLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2
aW91c1NhbXBsZUR1cmF0aW9uLCBrQ0ZCb29sZWFuVHJ1ZSwga0NNQXR0YWNobWVudE1vZGVfU2hv
dWxkUHJvcGFnYXRlKTsKLSAgICBpZiAoIVthc3NldFdyaXRlcklucHV0IGFwcGVuZFNhbXBsZUJ1
ZmZlcjpzYW1wbGVCdWZmZXIuZ2V0KCldKQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZFNhbXBsZUJ1ZmZlciB0
byB3cml0ZXIgaW5wdXQgZmFpbGVkIik7Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIW1faGFzRW5j
b2RlZFZpZGVvU2FtcGxlcykgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmIChbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFk
eUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1
cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RWaWRlb1By
ZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gYmxvY2sg
PSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGlmICh3ZWFrVGhpcykgewotICAgICAgICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2Ft
cGxlRHVyYXRpb25NYXJrZXIobV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZp
ZGVvUHJlc2VudGF0aW9uVGltZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUpOwotICAgICAgICAg
ICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAgICAgfQot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0pOwotICAgIFttX3ZpZGVvQXNzZXRX
cml0ZXJJbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6YmxvY2suZ2V0KCldOwotfQotCi12b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhcHBlbmRDb21w
cmVzc2VkU2FtcGxlQnVmZmVycygpOwotICAgIGFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlv
bklmTmVlZGVkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQotewotICAgIGlmIChtX3dyaXRlcikKLSAgICAg
ICAgbV93cml0ZXIuY2xlYXIoKTsKLQotICAgIG1fZGF0YSA9IG51bGxwdHI7Ci0gICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRs
ZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICBbbV93cml0ZXIg
YWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKKyAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUi
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIHJldHVybiB0cnVlOwogfQogCi0KIHN0YXRp
YyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0
aEN1cnJlbnRUaW1lU3RhbXAoQ01TYW1wbGVCdWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCiB7CiAg
ICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNs
b2NrKCkpOwogICAgIENNSXRlbUNvdW50IGNvdW50ID0gMDsKICAgICBDTVNhbXBsZUJ1ZmZlckdl
dFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOwot
CisgICAgCiAgICAgVmVjdG9yPENNU2FtcGxlVGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOwog
ICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVy
LCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmY291bnQpOwotCi0gICAgZm9yIChhdXRvIGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgeworICAgIAorICAgIGZvciAoQ01JdGVtQ291bnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7CiAgICAgICAgIHRpbWVJbmZvW2ldLmRlY29kZVRpbWVTdGFtcCA9IGtD
TVRpbWVJbnZhbGlkOwogICAgICAgICB0aW1lSW5mb1tpXS5wcmVzZW50YXRpb25UaW1lU3RhbXAg
PSBzdGFydFRpbWU7CiAgICAgfQotCisgICAgCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVm
ZmVyID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRl
Q29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNv
dW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdCdWZmZXIpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01TYW1wbGVC
dWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwg
Jm5ld0J1ZmZlcik7CisgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YobmV3QnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJS
ZWYgc2FtcGxlQnVmZmVyKQogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUg
dGltZXN0YW1wcyBpZiB0aGV5IGFyZSBhbHJlYWR5IHNldC4KLSAgICBpZiAoYXV0byBidWZmZXJX
aXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2Ft
cGxlQnVmZmVyKSkKLSAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihi
dWZmZXJXaXRoQ3VycmVudFRpbWUuZ2V0KCkpOworICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOwor
ICAgIGlmIChtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2hhc1N0
YXJ0ZWRXcml0aW5nKSB7CisgICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsK
KyAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVk
IHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZylbbV93cml0ZXIgZXJyb3JdKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRT
b3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKKyAg
ICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CisgICAgICAgIFJlZlB0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7CisgICAgICAgIFttX3Zp
ZGVvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV92aWRlb1B1bGxRdWV1
ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KV0geworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1
dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOworICAg
ICAgICAgICAgICAgIGlmIChtX3ZpZGVvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0J1
ZmZlclBvb2wudGFrZUZpcnN0KCk7CisgICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5
KCk7CisgICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZl
cjpidWZmZXIuZ2V0KCldKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0gd2hpbGUgKHRydWUpOworICAgICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fdmlkZW9C
dWZmZXJQb29sLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFttX3ZpZGVvSW5wdXQgbWFy
a0FzRmluaXNoZWRdOworICAgICAgICAgICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBo
b3JlLnNpZ25hbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBhdXRvIGJ1ZmZlcldpdGhDdXJyZW50VGltZSA9IGNvcHlTYW1wbGVCdWZm
ZXJXaXRoQ3VycmVudFRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOworICAgIGlmICghYnVmZmVyV2l0
aEN1cnJlbnRUaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fdmlkZW9Mb2NrKTsKKyAgICBtX3ZpZGVvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShi
dWZmZXJXaXRoQ3VycmVudFRpbWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKQEAgLTM3NSwzOSArMjgwLDY4IEBA
IHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uCiAgICAgYXV0byBiYXNpY0Rlc2NyaXB0aW9uID0gV1RG
OjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24ucGxh
dGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKICAgICBDTUZvcm1hdERlc2NyaXB0aW9u
UmVmIGZvcm1hdCA9IG51bGxwdHI7CiAgICAgYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNpY0Rlc2NyaXB0aW9uLCAwLCBO
VUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0KTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAgICAgcmV0
dXJuIGFkb3B0Q0YoZm9ybWF0KTsKIH0KIAotc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29u
c3QgV1RGOjpNZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1wbGVDb3VudCkKK3N0YXRpYyBpbmxp
bmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldp
dGhQYWNrZXREZXNjcmlwdGlvbnMoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQsIHNpemVf
dCBzYW1wbGVDb3VudCkKIHsKLSAgICBhdXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb24oZGVzY3JpcHRpb24pOwotICAgIGlmICghZm9ybWF0KQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQorICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2Nr
R2V0SG9zdFRpbWVDbG9jaygpKTsKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIg
PSBudWxscHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0
aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVM
TCwgTlVMTCwgZm9ybWF0LmdldCgpLCBzYW1wbGVDb3VudCwgdG9DTVRpbWUodGltZSksIE5VTEws
ICZzYW1wbGVCdWZmZXIpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGNyZWF0ZUF1ZGlv
U2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXRE
ZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZmFsc2UsIE5VTEwsIE5VTEws
IGZvcm1hdCwgc2FtcGxlQ291bnQsIHN0YXJ0VGltZSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7Cisg
ICAgaWYgKGVycm9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgYXV0byBi
dWZmZXIgPSBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7Ci0KLSAgICBlcnJvciA9IENNU2FtcGxlQnVm
ZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QoYnVmZmVyLmdldCgpLCBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1
ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01T
YW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdCBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBi
dWZmZXI7CisgICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIH0KIAotdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxh
dGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIo
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3Vu
dCkKIHsKLSAgICBpZiAoYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZl
cihkYXRhLCBkZXNjcmlwdGlvbiwgdGltZSwgc2FtcGxlQ291bnQpKQotICAgICAgICBtX2F1ZGlv
Q29tcHJlc3Nvci0+YWRkU2FtcGxlQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CisgICAgQVNT
RVJUKG1fYXVkaW9JbnB1dCk7CisgICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3Zp
ZGVvSW5wdXQpIHx8IG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBmb3Jt
YXQgPSBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICBpZiAo
IWZvcm1hdCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkg
eworICAgICAgICBpZiAoIW1fdmlkZW9JbnB1dCkgeworICAgICAgICAgICAgLy8gYXVkaW8tb25s
eSByZWNvcmRpbmcuCisgICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7
CisgICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25B
dFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwor
ICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSBmYWxzZTsKKyAgICAgICAgUmVmUHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKKyAgICAgICAgW21fYXVk
aW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVl
IHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
XSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0
IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVm
ZmVyUG9vbC50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHko
KTsKKyAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZm
ZXIuZ2V0KCldOworICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgICAgICAgICBpZiAo
bV9pc1N0b3BwZWQgJiYgbV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgW21fYXVkaW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgICAgICAgICAgbV9m
aW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH1dOworICAgIH0KKworICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQXVkaW9TYW1w
bGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQp
OworICAgIGlmICghc2FtcGxlQnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBlcnJv
ciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxl
QnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7CisgICAgaWYgKGVy
cm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVk
aW9Mb2NrKTsKKyAgICBtX2F1ZGlvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShzYW1wbGVCdWZm
ZXIpKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGlu
ZygpCkBAIC00MTYsNDAgKzM1MCwzNSBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzdG9wUmVjb3JkaW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0
cnVlOwotCi0gICAgaWYgKG1fdmlkZW9Db21wcmVzc29yKQotICAgICAgICBtX3ZpZGVvQ29tcHJl
c3Nvci0+ZmluaXNoKCk7Ci0gICAgaWYgKG1fYXVkaW9Db21wcmVzc29yKQotICAgICAgICBtX2F1
ZGlvQ29tcHJlc3Nvci0+ZmluaXNoKCk7Ci0KICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcp
CiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3Nl
dFdyaXRlclN0YXR1c1dyaXRpbmcpOworICAgIGlmIChtX3ZpZGVvSW5wdXQpCisgICAgICAgIG1f
ZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKKworICAgIGlmIChtX2F1ZGlvSW5w
dXQpCisgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAg
IG1faXNTdG9wcGluZyA9IHRydWU7CisgICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29t
cGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0
YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3Zl
KHdlYWtQdHIpLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShtX3BhdGgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlm
ICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2lzU3RvcHBp
bmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVy
KQorICAgICAgICAgICAgICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZN
b3ZlKGJ1ZmZlcik7CiAKLSAgICAgICAgW21fd3JpdGVyIGZsdXNoXTsKLSAgICAgICAgW21fd3Jp
dGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgewotICAg
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgICAgIG1faXNTdG9wcGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gV1RGTW92ZShtX2RhdGEpOwotICAgICAgICAgICAgICAgICAgICBtX2Zl
dGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY2xlYXIo
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9XTsKLSAgICB9KTsKKyAgICAgICAgICAgIG1f
aXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFs
c2U7CisgICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IHRydWU7CisgICAgICAgICAg
ICBjbGVhcigpOworICAgICAgICB9KTsKKyAgICAgICAgbV9maW5pc2hXcml0aW5nU2VtYXBob3Jl
LnNpZ25hbCgpOworICAgIH1dOworICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS53YWl0KCk7
CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtNDYzLDI0ICszOTIsNiBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
Ci17Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5h
cHBlbmQoZGF0YSwgc2l6ZSk7Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgaWYgKCFtX2Rh
dGEpIHsKLSAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhB
VkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU0Mjg5MzUyMzYw
Y2IxNzgwMGRkMDZlNmI1YjE1Mzg3OTYyYzc5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbmNsdWRlIDxDb3JlTWVkaWEvQ29y
ZU1lZGlhLmg+Ci0jaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZURXJyb3JzLmg+Ci0KLXR5cGVkZWYg
c3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKLXR5cGVkZWYg
c3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uICpWVENvbXByZXNzaW9uU2Vzc2lvblJl
ZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01W
aWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tPYmplY3QpOwotICAgIH5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKLQotICAgIHZv
aWQgZmluaXNoKCk7Ci0gICAgdm9pZCBhZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYp
OwotICAgIENNU2FtcGxlQnVmZmVyUmVmIGdldE91dHB1dFNhbXBsZUJ1ZmZlcigpOwotICAgIFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOwotCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVv
Q29kZWNUeXBlKTsKLQotICAgIGJvb2wgaW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7Ci0KLSAgICB2b2lkIHByb2Nlc3NTYW1wbGVC
dWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOwotICAgIGJvb2wgaW5pdENvbXByZXNzaW9uU2Vzc2lv
bihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYpOwotCi0gICAgc3RhdGljIHZvaWQgdmlkZW9D
b21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29k
ZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYpOwotCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBt
X3NlcmlhbERpc3BhdGNoUXVldWU7Ci0gICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1f
b3V0cHV0QnVmZmVyUXVldWU7Ci0gICAgUmV0YWluUHRyPFZUQ29tcHJlc3Npb25TZXNzaW9uUmVm
PiBtX3Z0U2Vzc2lvbjsKLQotICAgIGJvb2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKLQotICAg
IENNVmlkZW9Db2RlY1R5cGUgbV9vdXRwdXRDb2RlY1R5cGU7Ci0gICAgZmxvYXQgbV9tYXhLZXlG
cmFtZUludGVydmFsRHVyYXRpb24geyAyLjAgfTsKLSAgICB1bnNpZ25lZCBtX2V4cGVjdGVkRnJh
bWVSYXRlIHsgMzAgfTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMDhmZTQzMjk1ZWY1MmE2NzkwZmYxZGVjYWNhNmYzMGQ5YmJiYWZjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKLQotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbXBvcnQgIkxvZ2dpbmcu
aCIKLSNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KLSNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgotI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9u
Lmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2ltcG9ydCA8cGFsL2NmL1ZpZGVv
VG9vbGJveFNvZnRMaW5rLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBQQUw7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4g
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSBvdXRw
dXRDb2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrT2JqZWN0KQotewotICAgIGF1dG8gY29tcHJlc3NvciA9IHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+KG5ldyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3Iob3V0cHV0Q29kZWNUeXBlKSk7Ci0gICAgaWYgKCFjb21wcmVzc29yLT5pbml0aWFsaXpl
KGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBjb21wcmVzc29yOwotfQotCi1WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlw
ZSkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgi
Y29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCkgfQotICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQotewot
fQotCi1WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoKQotewotICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCi0gICAgICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKLX0KLQotYm9vbCBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFj
ayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCi17Ci0gICAgQ01CdWZmZXJRdWV1ZVJl
ZiBvdXRwdXRCdWZmZXJRdWV1ZTsKLSAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0Zv
clVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIHF1ZXVlICVkIiwgZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBvdXRwdXRCdWZm
ZXJRdWV1ZTsKLSAgICBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJR
dWV1ZS5nZXQoKSwgY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJfV2hlbkRhdGFCZWNvbWVzUmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKLQotICAgIG1faXNF
bmNvZGluZyA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQotewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxE
aXNwYXRjaFF1ZXVlLCBeewotICAgICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Np
b25Db21wbGV0ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQpOwotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKLQotICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJr
RW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOwotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0K
LSAgICAgICAgbV9pc0VuY29kaW5nID0gZmFsc2U7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVm
Q29uLCB2b2lkKiwgT1NTdGF0dXMgc3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVC
dWZmZXJSZWYgYnVmZmVyKQotewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHN0YXR1cywgTWVk
aWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdmlkZW9Db21wcmVzc2lvbkNh
bGxiYWNrIHN0YXR1cyBpcyAlZCIsIHN0YXR1cyk7Ci0gICAgaWYgKHN0YXR1cyAhPSBub0VycikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICpjb21w
cmVzc29yID0gc3RhdGljX2Nhc3Q8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4ocmVmQ29u
KTsKLQotICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShjb21wcmVzc29yLT5t
X291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOwotICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1
ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLX0KLQotYm9vbCBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zv
cm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQotewotICAgIENNVmlkZW9EaW1l
bnNpb25zIGRpbWVuc2lvbnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25z
KGZvcm1hdERlc2NyaXB0aW9uKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgTlNEaWN0aW9uYXJ5
ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBuaWw7Ci0jZWxzZQotICAgIE5TRGljdGlvbmFyeSAq
ZW5jb2RlclNwZWNpZmljYXRpb25zID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilrVlRWaWRlb0Vu
Y29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXI6
QFlFU307Ci0jZW5kaWYKLQotICAgIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vzc2lvbjsK
LSAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1fb3V0cHV0Q29k
ZWNUeXBlLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWVuY29kZXJTcGVjaWZpY2F0aW9ucywg
TlVMTCwgTlVMTCwgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrLCB0aGlzLCAmdnRTZXNzaW9uKTsK
LSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9Ci0gICAg
bV92dFNlc3Npb24gPSBhZG9wdENGKHZ0U2Vzc2lvbik7Ci0KLSAgICBlcnJvciA9IFZUU2Vzc2lv
blNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5
X1JlYWxUaW1lLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJy
b3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNl
dFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7Ci0gICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lv
bi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVy
YXRpb24sIChfX2JyaWRnZSBDRlR5cGVSZWYpQChtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlv
bikpOwotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lv
blByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKLSAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdl
dCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCAoX19icmlk
Z2UgQ0ZUeXBlUmVmKUAobV9leHBlY3RlZEZyYW1lUmF0ZSkpOwotICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBW
VFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJh
bWVSYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotCi0gICAgLy8gRklYTUU6IFNldCB2aWRl
byBjb21wcmVzc2lvbiByYXRlLgotICAgIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25QcmVw
YXJlVG9FbmNvZGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCkpOwotICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBW
VENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKLQotICAgIHJldHVybiBZRVM7Ci19Ci0KLXZvaWQgVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikK
LXsKLSAgICBpZiAoIW1fdnRTZXNzaW9uKSB7Ci0gICAgICAgIGlmICghaW5pdENvbXByZXNzaW9u
U2Vzc2lvbihDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcikpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBDTVNhbXBs
ZUJ1ZmZlckdldEltYWdlQnVmZmVyKGJ1ZmZlcik7Ci0gICAgYXV0byBwcmVzZW50YXRpb25UaW1l
U3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOwot
ICAgIGF1dG8gZHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7Ci0g
ICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUobV92dFNlc3Np
b24uZ2V0KCksIGltYWdlQnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBO
VUxMLCB0aGlzLCBOVUxMKTsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25F
bmNvZGVGcmFtZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLX0KLQotdm9pZCBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZm
ZXIpCi17Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57Ci0gICAg
ICAgIGlmICghbV9pc0VuY29kaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHBy
b2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKLSAgICB9KTsKLX0KLQotQ01TYW1wbGVCdWZmZXJS
ZWYgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQot
ewotICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVm
ZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Ci19Ci0KLVJldGFp
blB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtl
T3V0cHV0U2FtcGxlQnVmZmVyKCkKLXsKLSAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZm
ZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1f
b3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOwotfQotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCBmMzEwZjQ4ZWQ3ZWRlNThmZTJlNWI3ODQ2NGY2MmM5MGUyZDAxMTcwLi5hNmNlZTU0Yzk3
YzkyMTVhNjg3M2Y0ZGNiMTJiZGU0N2MxZGM0MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNDksNyAr
MTQ5LDYgQEAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6dXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIKICAgICByZXR1cm4gKm1fdXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eTsKIH0KIAotI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om1lZGlhUmVjb3JkZXJNYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXIpCkBAIC0xNTcsNyArMTU2LDYgQEAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIm
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhUmVjb3JkZXJNYW5hZ2VyKCkKIAogICAg
IHJldHVybiAqbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIH0KLSNlbmRpZgogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb1RyYWNrUmVuZGVyZXJNYW5h
Z2VyKCkKQEAgLTE3Niw3ICsxNzQsNyBAQCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzYW1wbGVCdWZmZXJEaQogICAgIHJl
dHVybiAqbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogfQogI2VuZGlmCi0jZW5k
aWYgLy8gIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKIExpYldlYlJUQ0NvZGVjc1By
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCkBA
IC0yMDUsNyArMjAzLDYgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAgdXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jaWYgSEFWRShB
VkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CiAgICAgICAgIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjE0LDcgKzIxMSw2IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAgICAgICAgIG1l
ZGlhUmVjb3JkZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2VuZGlmIC8v
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2Vy
KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsK
QEAgLTIzMiw4ICsyMjgsOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSQogICAgICAgICBzYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZUxheWVyTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQotI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjZW5kaWYKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElC
V0VCUlRDKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6TGliV2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAg
ICBsaWJXZWJSVENDb2RlY3NQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA3ODY2M2JjZGJhMDczMmVmZjViMTFi
OTRjNWRjYTIzODgyZWU5YjgzLi4yYjliZDFmODg3YmFkYWZhNGVhNWM0YmEzNDE2OWQ4Yjk3OGZk
NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTc5LDkgKzc5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkmIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKTsKLSNpZiBIQVZF
KEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciYg
bWVkaWFSZWNvcmRlck1hbmFnZXIoKTsKLSNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXImIGF1ZGlvVHJh
Y2tSZW5kZXJlck1hbmFnZXIoKTsKICAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyJiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CkBAIC0xMDQsOSArMTAy
LDcgQEAgcHJpdmF0ZToKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5OwotI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcj4gbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
cjsKLSNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyPiBtX2F1ZGlvVHJhY2tS
ZW5kZXJlck1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCmluZGV4IDU2OGMyODAxNzE4ZmU5MGI4YmUwODJmZWEzNWVlNzUwZDYzZGRiODcu
LmNiMjRkZGJmMjc5ZmIyNjU5NDZhYTEyMWNiMDcyMmI2MmI4YzZhZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUmVjb3JkZXIuaCIKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVH
QVRFKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CkBAIC0xMzYsNCArMTM2LDQgQEAgdm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpzdG9wUmVjb3JkaW5nKCkKIAogfQogCi0jZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5k
ZXggYTgzZGEzMDU1MmViNDFlZjk1OTQ0ZGIzYWE1MDRmZmNhM2Y2ODM4MS4uZmY1YTgyOTg0ZmIz
OTY0MWVkMWU1NjE1NDg5OGY5NTI2YzliZDUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxF
R0FURSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTgyLDQgKzgyLDQgQEAgcHJpdmF0ZToK
IAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCBjZTMyYjcwNGU3ZWM4YzQ3
N2JlMDUxZTIwZDdkMjdhZjBjNGY4MjFiLi41NGJhNjRkNTZmYmVhMzBmY2JiMzk2ZGFkNWVhM2Zj
MzBjOTk1ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3
IEBACiAjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKICMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAog
bWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlciBOb3RSZWZDb3VudGVkIHsKICAgICBBdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIHN0b3Jh
Z2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCmluZGV4
IDAxOWU0Yjg1ZjBlZWJiNjI0ZTU2OTU4OGE3YWFlNDg0MjEyNTg2ZGIuLjM3MGNkOWIzODc1Njlh
OThlODRlMTc4MDlmMDg1ZDYyYjNiNmU5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3Bw
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXIuaCIKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiRGVjb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IGFiODAxYmMxMTRj
NDkyM2VhOWQ3OTBmOTIzYzUyZGY0OWFhMTFlN2UuLjU0NzFiYmQ0ODRkZDliM2QwYzhlZTNkZDYx
MWMwNWU5MGQwMzZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTI3LDcgKzI3LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxF
R0FURSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCmluZGV4IGM1MTg0MTBjYjQ5ZmFkYTY4OGQzNzdkMWQ3YTA2Y2RlM2Jh
Yzc5N2IuLjM4N2E0MTM2MWNkYmQ5YjdlYWUyYzMzNzM2NTJhOThmNDkzNGUxNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAog
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIENy
ZWF0ZVJlY29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQsIGJvb2wgaGFz
QXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+IGNyZWF0aW9uRXJyb3IpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5oCmluZGV4IGUzOGM1ZDZjMDVkMGRmYWY0MjY4MTk5NWI5ZTA0ZjRl
NzY0N2YwYjUuLjlmOWIzMGM3NjE2MjNkZDk0OGQyOWJlMGYzN2YwYWQwZjQ3ZTVhOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0lu
dFNpemUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCA2N2UzZWU2NTEzZDhmYTQzZTgxZThiMjJjNjU4ZGY4
OTY0MDc2ODQ1Li5kZDQwOTE5ODhjMTI2ODk3NWJiOTc5MmU4MzM3YzZlMDY1MzdmM2M4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhB
VkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyTWVz
c2FnZXMuaCIKQEAgLTE0Niw0ICsxNDYsNCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpz
dG9wUmVjb3JkaW5nKCkKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IGQ4
MGZjZDdmMTk4ODk3NTI1YzllZmZjOTE3NTdkMjJmYzMyM2VmZmUuLjZkOWZhYmUzZWE3MjQ3M2Y0
NTk5MGNlOGFkMTcyZDBjZDAzYTgxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCkBAIC03Myw1ICs3Myw1
IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmlu
ZGV4IGQ5NTljOTI1ZmRkM2EyMjFhMzdiMWEzNzA3YzZkZjFhZDAyYTBlOGQuLmJjZTc3NGE4ODFk
Y2VjNzk0MjYzNzk2ODU1MmUzY2NjN2JiMzc0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNy
ZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFt
KQogewotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdB
VEUpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIGlmIChtX3VzZUdQVVByb2Nlc3MpCiAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlPihzdHJlYW0pOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNTQzMTVjNjM0NTkzMDAxMDkzYTYwMTc4ZGZhODViM2E1ZDBkODRkNS4u
YjVkNThlYjA5NzUyZTMwNmIwZTlhYTRmMGRkMTFhMGIxNDA1ODI1NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDIwLTAyLTA2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU1OTEwLCByMjU1OTcwLCBh
bmQgcjI1NTk3Mi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzM0NQorCisgICAgICAgIEJyb2tlIGludGVybmFsIGJ1aWxkcyAoUmVxdWVzdGVkIGJ5
IHJ5YW5oYWRkYWQgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoK
KworICAgICAgICAiW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVu
dCBNZWRpYVJlY29yZGVyIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yNTU5MTAKKworICAgICAgICAiW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRv
IGltcGxlbWVudCBNZWRpYVJlY29yZGVyIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8yNTU5NzAKKworICAgICAgICAiW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRl
bGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyIgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIGh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yNTU5NzIKKwogMjAyMC0wMi0wNiAgQWxpIEp1bWEgIDxhanVt
YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gUmVuZGVyVGFibGVDb2w6OndpbGxC
ZVJlbW92ZWRGcm9tVHJlZSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwMzU0MWEyNjcxYmRiYzhl
YmI2ODMyYTk5YjhjZTljM2FmNmFhYzA1Li5lYzY2ZDdjZmM5OWRhNTQ4NTUyMWE3Njk1ZDFiYzFk
YzJjZTFmOWU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMzMzIsMTAgKzMzMzIsNyBAQCB3ZWJn
bC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jb3B5LXRleC1pbWFnZS0yZC1mb3JtYXRzLmh0
bWwgWyBTa2lwIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NhbnZhcy9yYXBpZC1yZXNpemlu
Zy5odG1sIFsgU2tpcCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmds
LWRyYXctYnVmZmVycy5odG1sIFsgU2tpcCBdCiAKLSMgTm90IHN1cHBvcnRlZCBieSBkZWZhdWx0
Ci1odHRwL3dwdC9tZWRpYXJlY29yZGVyIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQgWyBTa2lwIF0KLWZhc3QvaGlzdG9yeS9wYWdl
LWNhY2hlLW1lZGlhLXJlY29yZGVyLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xOTc2NzMg
aHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFh
dmFpbGFibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAogIyBUbyBhaWQgdHJhbnNp
dGlvbiB0byBBTkdMRSBiYWNrZW5kIGZvciBXZWJHTCwgc2tpcCBhbGwgb2YgV2ViR0wgMiB0ZXN0
cyBmb3Igbm93LiAKICMgUmUtZW5hYmxlIGFzIGVhY2ggY2h1bmsgb2YgdGVzdHMgYXJlIHZlcmlm
aWVkIHdpdGggQU5HTEUgYmFja2VuZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxl
LWdwdXByb2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbApp
bmRleCA4ODAxNDg2NTdlMjVkZGUzM2NiMTA5MzQ2ZDZjYmVhYWI3ZjljZWZiLi4zMzMwNmRlNzk0
N2JiYjkyNTczOTRjM2JhMTk2MjAxYjA1ODQ3ODhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2
YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJv
Y2Vzcy5odG1sCkBAIC01Niw3ICs1NiwxNyBAQAogICAgIH0KIAogICAgIGFzeW5jX3Rlc3QodCA9
PiB7CisgICAgICAgIGNvbnN0IGFjID0gbmV3IEF1ZGlvQ29udGV4dCgpOworICAgICAgICBjb25z
dCBvc2MgPSBhYy5jcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgICAgIGNvbnN0IGRlc3QgPSBhYy5j
cmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CisgICAgICAgIGNvbnN0IGF1ZGlvID0gZGVz
dC5zdHJlYW07CisgICAgICAgIG9zYy5jb25uZWN0KGRlc3QpOworCiAgICAgICAgIGNvbnN0IHZp
ZGVvID0gY3JlYXRlVmlkZW9TdHJlYW0oKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby5n
ZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMCwgInZpZGVvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRo
IG5vIGF1ZGlvIHRyYWNrIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXVkaW8uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGgsIDEsICJhdWRpbyBtZWRpYXN0cmVhbSBzdGFydHMgd2l0aCBvbmUgYXVk
aW8gdHJhY2siKTsKKyAgICAgICAgdmlkZW8uYWRkVHJhY2soYXVkaW8uZ2V0QXVkaW9UcmFja3Mo
KVswXSk7CisgICAgICAgIGFzc2VydF9lcXVhbHModmlkZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGgsIDEsICJ2aWRlbyBtZWRpYXN0cmVhbSBzdGFydHMgd2l0aCBvbmUgYXVkaW8gdHJhY2siKTsK
ICAgICAgICAgY29uc3QgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcih2aWRlbyk7CiAgICAg
ICAgIGxldCBtb2RlID0gMDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA0NmIzMGY3NjM1YjI5MzFkNGJkMzc2OGZhZWVlNzM3YjRmMmZhYTk3Li41OTJh
N2JhYTUwNWVhOWZhYjViZDQxYzFhN2MwZGIxNGM5MzcyNjU4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgyOCwxMCArMTgyOCw2IEBAIHdlYmtpdC5v
cmcvYi8xOTU2MzUgc2Nyb2xsaW5nY29vcmRpbmF0b3IvbWFjL211bHRpcGxlLWZpeGVkLmh0bWwg
WyBQYXNzIFRpbWVvdXQKIFsgQ2F0YWxpbmErIF0gZmFzdC90ZXh0L2Rlc2lnbi1zeXN0ZW0tdWkt
MTUuaHRtbCBbIFBhc3MgXQogWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZGVzaWduLXN5c3RlbS11
aS0xNi5odG1sIFsgUGFzcyBdCiAKLVsgQ2F0YWxpbmErIF0gaHR0cC93cHQvbWVkaWFyZWNvcmRl
ciBbIFBhc3MgRmFpbHVyZSBdIAotWyBDYXRhbGluYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQgWyBQYXNzIEZhaWx1cmUgXQotWyBDYXRhbGlu
YSsgXSBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1yZWNvcmRlci5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwMDEyOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLXZpZGVvLWVsZW1lbnQv
dmlkZW9fdGltZXVwZGF0ZV9vbl9zZWVrLmh0bWwgWyBUaW1lb3V0IFBhc3MgXQogCiAjIHJkYXI6
Ly81NTQwNTg1MSAoWyBtYWNPUyBdIExheW91dCB0ZXN0cyB3ZWJncHUvKi10cmlhbmdsZS1zdHJp
cC5odG1sIGFyZSBmbGFreSBmYWlsdXJlcy4gKDIwMTgyNykpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>