<?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>190978</bug_id>
          
          <creation_ts>2018-10-26 16:26:39 -0700</creation_ts>
          <short_desc>REGRESSION(r237479): broke JSC on iOS (Requested by tadeuzagallo on #webkit).</short_desc>
          <delta_ts>2018-10-26 16:35:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>187373</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472613</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-26 16:26:39 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/237479 broke the build:
broke JSC on iOS (Requested by tadeuzagallo 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>1472615</commentid>
    <comment_count>1</comment_count>
      <attachid>353210</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-26 16:27:46 -0700</bug_when>
    <thetext>Created attachment 353210
ROLLOUT of r237479

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>1472616</commentid>
    <comment_count>2</comment_count>
      <attachid>353210</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-26 16:34:22 -0700</bug_when>
    <thetext>Comment on attachment 353210
ROLLOUT of r237479

Clearing flags on attachment: 353210

Committed r237486: &lt;https://trac.webkit.org/changeset/237486&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472617</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-26 16:34:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472618</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-26 16:35:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/45603494&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353210</attachid>
            <date>2018-10-26 16:27:46 -0700</date>
            <delta_ts>2018-10-26 16:34:22 -0700</delta_ts>
            <desc>ROLLOUT of r237479</desc>
            <filename>bug-190978-20181026192745.patch</filename>
            <type>text/plain</type>
            <size>1640878</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzhlNGMxZThiZTljMzFkOTY3YTZhODA2MzNiN2M5YjU0YjZiMDc1Li5lOTRkMTY4MTg3NjZkMmFk
MGIyM2YxOWNjZGU4OTMyMDFmYmZhY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0xMC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzQ3OSBhbmQgcjIz
NzQ4NC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDk3OAorCisgICAgICAgIGJyb2tlIEpTQyBvbiBpT1MgKFJlcXVlc3RlZCBieSB0YWRldXphZ2Fs
bG8gb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAg
ICAiTmV3IGJ5dGVjb2RlIGZvcm1hdCBmb3IgSlNDIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3MzczCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8yMzc0NzkKKworICAgICAgICAiR2FyZGVuaW5nOiBCdWlsZCBmaXgg
YWZ0ZXIgcjIzNzQ3OS4iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODczNzMKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzIzNzQ4NAorCiAyMDE4LTEwLTI2ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29t
PgogCiAgICAgICAgIEdhcmRlbmluZzogQnVpbGQgZml4IGFmdGVyIHIyMzc0NzkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdj
MTE3OGI1MWEyOTc4ZThiMGFiNjBiMTA5YjVkOTc4NDZiYWZmMDEuLmM4ZDYyMmExMzBmZTkzNDcx
NDBlNDQwYTIxMGI4OWU1MWViYjk2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMTAtMjYg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzc0NzkgYW5kIHIyMzc0ODQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5NzgKKworICAgICAgICBicm9rZSBK
U0Mgb24gaU9TIChSZXF1ZXN0ZWQgYnkgdGFkZXV6YWdhbGxvIG9uICN3ZWJraXQpLgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIk5ldyBieXRlY29kZSBmb3JtYXQg
Zm9yIEpTQyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NzM3MworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM3NDc5
CisKKyAgICAgICAgIkdhcmRlbmluZzogQnVpbGQgZml4IGFmdGVyIHIyMzc0NzkuIgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3MzczCisgICAgICAg
IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzc0ODQKKwogMjAxOC0xMC0yNiAg
VGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgYnl0ZWNv
ZGUgZm9ybWF0IGZvciBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBi
NDFkY2U5MGUxZjIzN2Y2MjFkMWRjMzk3MzlmZTU1YWVhODRjMWI1Li4yMjkxYjAzN2E0NzgzZWVh
MDdiMjg2YjgyY2NlMjhkNzlhM2M5MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0yMDEsMjcgKzIwMSwxMSBAQCBzZXQoT0ZGTElORV9BU00KICAgICBvZmZsaW5lYXNt
L3g4Ni5yYgogKQogCi1zZXQoR0VORVJBVE9SCi0gICAgZ2VuZXJhdG9yL0FyZ3VtZW50LnJiCi0g
ICAgZ2VuZXJhdG9yL0Fzc2VydGlvbi5yYgotICAgIGdlbmVyYXRvci9EU0wucmIKLSAgICBnZW5l
cmF0b3IvRml0cy5yYgotICAgIGdlbmVyYXRvci9HZW5lcmF0ZWRGaWxlLnJiCi0gICAgZ2VuZXJh
dG9yL01ldGFkYXRhLnJiCi0gICAgZ2VuZXJhdG9yL09wY29kZS5yYgotICAgIGdlbmVyYXRvci9P
cGNvZGVHcm91cC5yYgotICAgIGdlbmVyYXRvci9PcHRpb25zLnJiCi0gICAgZ2VuZXJhdG9yL1Nl
Y3Rpb24ucmIKLSAgICBnZW5lcmF0b3IvVGVtcGxhdGUucmIKLSAgICBnZW5lcmF0b3IvVHlwZS5y
YgotICAgIGdlbmVyYXRvci9tYWluLnJiCi0pCi0KIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBP
VVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luaXRCeXRlY29kZXMuYXNtICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVTdHJ1Y3RzLmggJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZUluZGljZXMuaAotICAg
IE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdG9yL21haW4ucmIK
LSAgICBERVBFTkRTICR7R0VORVJBVE9SfSBieXRlY29kZS9CeXRlY29kZUxpc3QucmIKLSAgICBD
T01NQU5EICR7UlVCWV9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdG9y
L21haW4ucmIgLS1ieXRlY29kZXNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9E
SVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gLS1ieXRlY29kZV9zdHJ1Y3RzX2gg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZVN0cnVjdHMuaCAt
LWJ5dGVjb2RlX2luZGljZXNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0J5dGVjb2RlSW5kaWNlcy5oICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9CeXRlY29kZXMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luaXRC
eXRlY29kZXMuYXNtICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNv
ZGVTdHJ1Y3RzLmgKKyAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2dl
bmVyYXRlLWJ5dGVjb2RlLWZpbGVzCisgICAgREVQRU5EUyAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
Z2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKyAgICBD
T01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9nZW5lcmF0
ZS1ieXRlY29kZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmggLS1pbml0X2J5dGVjb2Rlc19hc20gJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9Jbml0Qnl0ZWNvZGVzLmFzbSAtLWJ5dGVjb2RlX3N0
cnVjdHNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2RlU3Ry
dWN0cy5oICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgog
ICAgIFZFUkJBVElNKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCkBAIC00
ODIsMTcgKzQ2NiwxMyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIGJ5dGVjb2RlL0lDU3RhdHVzTWFwLmgKICAgICBieXRlY29kZS9JbmxpbmVDYWxs
RnJhbWUuaAogICAgIGJ5dGVjb2RlL0luc3RydWN0aW9uLmgKLSAgICBieXRlY29kZS9JbnN0cnVj
dGlvblN0cmVhbS5oCiAgICAgYnl0ZWNvZGUvSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9m
aWxlLmgKICAgICBieXRlY29kZS9KdW1wVGFibGUuaAogICAgIGJ5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmgKICAgICBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuaAogICAgIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKLSAg
ICBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKICAgICBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9u
UHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaAotICAgIGJ5
dGVjb2RlL09wY29kZS5oCi0gICAgYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCiAgICAgYnl0ZWNvZGUv
UHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCiAgICAgYnl0
ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaApAQCAtNTA1LDcgKzQ4NSw2IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvVW5saW5rZWRFdmFs
Q29kZUJsb2NrLmgKICAgICBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCiAg
ICAgYnl0ZWNvZGUvVW5saW5rZWRHbG9iYWxDb2RlQmxvY2suaAotICAgIGJ5dGVjb2RlL1VubGlu
a2VkTWV0YWRhdGFUYWJsZS5oCiAgICAgYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKICAgICBieXRl
Y29kZS9WYWx1ZVJlY292ZXJ5LmgKICAgICBieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFp
bC5oCkBAIC02OTAsOCArNjY5LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBqaXQvVGh1bmtHZW5lcmF0b3IuaAogICAgIGppdC9VbnVzZWRQb2lu
dGVyLmgKIAotICAgIGxsaW50L0xMSW50T3Bjb2RlLmgKLQogICAgIHBhcnNlci9QYXJzZXJFcnJv
ci5oCiAgICAgcGFyc2VyL1BhcnNlck1vZGVzLmgKICAgICBwYXJzZXIvUGFyc2VyVG9rZW5zLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KU0MueGNj
b25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSlNDLnhjY29uZmln
CmluZGV4IDY2MzQ0MDUwODM5ZGEwYzM5YTJiM2Q4MzZlNWRiMGI1ZjM4YzgzNTQuLjJiNzU2MzY2
MDNlYTRiMmJiOTY1MWJjMTU1MWM4NzA2ZjkwZDY3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9KU0MueGNjb25maWcKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0pTQy54Y2NvbmZpZwpAQCAtMzcsNCArMzcsMyBAQCBP
VEhFUl9DT0RFX1NJR05fRkxBR1Nbc2RrPWlwaG9uZSpdID0gLWkgY29tLmFwcGxlLmpzYzsKIAog
Ly8gRXhwbGljaXRseSBhZGQgdGhlIFByaXZhdGVIZWFkZXJzIGRpcmVjdG9yeSB0byB0aGUgc2Vh
cmNoIHBhdGggc28gdGhhdCBnZW5lcmF0ZWQgaGVhZGVyIGZpbGVzIGNhbiBiZSBmb3VuZCBpbiBw
cm9kdWN0aW9uIGJ1aWxkcy4KIEhFQURFUl9TRUFSQ0hfUEFUSFMgPSAiJChKQVZBU0NSSVBUQ09S
RV9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJz
IiAkKGluaGVyaXRlZCk7Ci1IRUFERVJfU0VBUkNIX1BBVEhTID0gIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIgJChIRUFERVJfU0VBUkNIX1BBVEhT
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWFiZDc3
NzA4MTJhZjdkMDE3YzQxYTU3ZTgzZTEwNjIwNzc2MWU3NS4uZDE3NDVjMzU5NTI3ZTIwNTY2YTdh
M2RhNTJiZjc0NGRhNGVmYzIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTIxNiw4ICsyMTYsMTQgQEAgdWRpczg2X2l0YWIuaDogJChKYXZhU2NyaXB0
Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZF9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUKIAog
IyBCeXRlY29kZSBmaWxlcwogCi1CeXRlY29kZXMuaCBCeXRlY29kZU9mZnNldHMuaCBCeXRlY29k
ZVN0cnVjdHMuaCBJbml0Qnl0ZWNvZGVzLmFzbTogJCh3aWxkY2FyZCAkKEphdmFTY3JpcHRDb3Jl
KS9nZW5lcmF0b3IvKi5yYikgJChKYXZhU2NyaXB0Q29yZSkvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCi0JJChSVUJZKSAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0b3IvbWFpbi5yYiAkKEphdmFT
Y3JpcHRDb3JlKS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgLS1ieXRlY29kZV9zdHJ1Y3RzX2gg
Qnl0ZWNvZGVTdHJ1Y3RzLmggLS1pbml0X2J5dGVjb2Rlc19hc20gSW5pdEJ5dGVjb2Rlcy5hc20g
LS1ieXRlY29kZXNfaCBCeXRlY29kZXMuaCAtLWJ5dGVjb2RlX2luZGljZXNfaCBCeXRlY29kZUlu
ZGljZXMuaAorQnl0ZWNvZGVzLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWJ5dGVjb2Rl
LWZpbGVzICQoSmF2YVNjcmlwdENvcmUpL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisJJChQ
WVRIT04pICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIC0tYnl0ZWNv
ZGVzX2ggQnl0ZWNvZGVzLmggJChKYXZhU2NyaXB0Q29yZSkvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KKworQnl0ZWNvZGVTdHJ1Y3RzLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWJ5
dGVjb2RlLWZpbGVzICQoSmF2YVNjcmlwdENvcmUpL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIC0t
Ynl0ZWNvZGVfc3RydWN0c19oIEJ5dGVjb2RlU3RydWN0cy5oICQoSmF2YVNjcmlwdENvcmUpL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisKK0luaXRCeXRlY29kZXMuYXNtOiAkKEphdmFTY3Jp
cHRDb3JlKS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAkKEphdmFTY3JpcHRDb3JlKS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0
ZS1ieXRlY29kZS1maWxlcyAtLWluaXRfYnl0ZWNvZGVzX2FzbSBJbml0Qnl0ZWNvZGVzLmFzbSAk
KEphdmFTY3JpcHRDb3JlKS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgogCiAjIEluc3BlY3Rv
ciBpbnRlcmZhY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWQ0OWIwYjEy
ZTE1YjI5NTE0MzNmNTYxMDRkNzRjZGM3YzJjNDhkZC4uMzkxMjIxZGMwMDU5NGRmNDcyZDM0ZTZi
YTEzMDdlYWFkYWE4OTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0LDYg
KzE0LDcgQEAKIAkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzICovLAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQk2NTQ0MkQ1MDE4
RUJCNzQ0MDA3QUY5MkYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQkxNEJENjg5OTIx
NTE5MTZEMDA1MERBRkYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CiAJCQluYW1l
ID0gIkxMSW50IE9mZnNldHMiOwpAQCAtNzY1LDcgKzc2Niw2IEBACiAJCTE0MkUzMTM2MTM0RkYw
QTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0MkUzMTJEMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDJFMzEz
QjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJFMzEzMjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyRTMx
M0MxMzRGRjBBNjAwQUZBREI1IC8qIFdlYWsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkUzMTMzMTM0RkYwQTYwMEFGQURCNSAvKiBXZWFrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTQyRjE2RTAy
MTU1ODgwMjAwM0Q0OUM5IC8qIE1ldGFkYXRhVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkYxNkRGMjE1NTg1QzgwMDNENDlDOSAvKiBNZXRh
ZGF0YVRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTQzODZBNzUxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDM4NkE3MzFE
RDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDM4NkE3OTFERDY5ODlDMDA4NjUy
QzQgLyogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzODZBNzcxREQ2OTg5QzAwODY1MkM0IC8qIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxNDQwMDU3RjBBNTMzNTY0MDAwNUYwNjEgLyogSlNOb2RlLmMgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQwRjY0MjBBNEY4QjZBMDAw
NUYwNjEgLyogSlNOb2RlLmMgKi87IH07CkBAIC03ODAsNyArNzgwLDYgQEAKIAkJMTQ0MjU2NjIx
NUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQyNTY2MDE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRo
U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxNDQ4MzZFNzEzMkRBN0JFMDA1QkU3ODUgLyogQ29uc2VydmF0aXZlUm9vdHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OURBQUYyMTJFQjU1OUQw
MDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJv
bmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDU3MjI4NTE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0NkMzODRCMjE3N0FDREYw
MDc5RjZEOSAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkQ1MkJFMjE3NjI5NTgwMDJEQjA4NiAvKiBVbmxp
bmtlZE1ldGFkYXRhVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxNDcxNDgzMDIwRDMyM0QzMDA5MEU2MzAgLyogSlNXcmFwcGVyTWFwVGVz
dHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDcx
NDgyRjIwRDMyMzY1MDA5MEU2MzAgLyogSlNXcmFwcGVyTWFwVGVzdHMubW0gKi87IH07CiAJCTE0
NzM0MUNDMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3MzQxQ0IxREMwMkQ3MjAwQUEyOUJB
IC8qIEV4ZWN1dGFibGVCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMTQ3MzQxQ0UxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFi
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzM0
MUNEMURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5NSwxMCArNzk0LDcgQEAKIAkJ
MTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODc0QUUyMTVFQkRFNEEwMDJFMzU4NyAvKiBK
U1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMTQ4QTdCRjAxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4QTdCRUUxQjgyOTc1QTAw
MkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0OENEMUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRl
eHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDhDRDFENzEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0OThDQUQ2
MjE0QkYzNkQwMDcxMDg3OSAvKiBHZXRCeUlkTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OThDQUQ1MjE0QkYzNkQwMDcxMDg3OSAvKiBH
ZXRCeUlkTWV0YWRhdGEuaCAqLzsgfTsKIAkJMTRBMTU2MzIxMDk2NjM2NTAwNkZBMjYwIC8qIERh
dGVJbnN0YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEExNTYzMDEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNEE0Njgw
QzIxNkZBNTY1MDAwRDJCMUEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTQ2ODBBMjE2RkE1MzUwMDBEMkIxQSAvKiBJbnN0
cnVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTE0QTQ2ODBEMjE2RkE1NkEwMDBEMkIxQSAvKiBPcGNvZGVTaXplLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEE0NjgwQjIxNkZBNTM1MDAwRDJC
MUEgLyogT3Bjb2RlU2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0QUI2Njc2MURFQ0Y0MDkwMEE1NkMyNiAvKiBVbmxpbmtlZFNvdXJjZUNv
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUI2
Njc1MURFQ0Y0MDkwMEE1NkMyNiAvKiBVbmxpbmtlZFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEFEOTEwQzFEQ0E5Mjk0MDAx
NEY5RkUgLyogRXZhbENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTRBRDkxMDYxRENBOTI5NDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2su
aCAqLzsgfTsKIAkJMTRBRDkxMEQxRENBOTI5NDAwMTRGOUZFIC8qIEZ1bmN0aW9uQ29kZUJsb2Nr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFEOTEw
NzFEQ0E5Mjk0MDAxNEY5RkUgLyogRnVuY3Rpb25Db2RlQmxvY2suaCAqLzsgfTsKQEAgLTgxOCw3
ICs4MTQsNiBAQAogCQkxNEJENjg5RDIxNTE5MUMxMDA1MERBRkYgLyogTExJbnRTZXR0aW5nc0V4
dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNEJENjg5QzIxNTE5MUIzMDA1MERBRkYgLyogTExJbnRTZXR0aW5nc0V4dHJhY3Rvci5jcHAg
Ki87IH07CiAJCTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRTdEMzIxNzEzNUNG
NDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01h
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNF
NjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0QzI1QjlFMjE2RUEzNkEwMDEzNzc2NCAvKiBJ
bnN0cnVjdGlvblN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRDQzNCQTIyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRDQTk1
OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0Q0E5NThBMTZBQjUwREUwMDkz
OEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRDQTk1OEQxNkFCNTBGQTAwOTM4QTA2IC8qIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNENBOTU4QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxNEQyRjNEQjEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDJGM0Q5MTM5RjRCRTIwMDQ5
MTAzMSAvKiBNYXJrZWRTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04MjcsNyArODIyLDYgQEAKIAkJMTRFODRGQTExNEVFMUFDQzAwRDZE
NUQ0IC8qIFdlYWtTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0RTg0RjlDMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRFODRGQTIxNEVFMUFDQzAw
RDZENUQ0IC8qIFdlYWtJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEU4NEY5RDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0ltcGwuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEY3MjU2NjE0RUUy
NjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hh
bmRsZU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJMTRGNzlGNzAyMTZFQUZEMjAwMDQ2RDM5IC8qIE9wY29kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgx
IC8qIE9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjhENEE3MTc3
QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYg
LyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICov
OyB9OwogCQkyNjJEODVCNzFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVy
U3RhbGxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
NjJEODVCNTFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmgg
Ki87IH07CkBAIC0xMjYwLDYgKzEyNTQsOCBAQAogCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEg
LyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCAqLzsgfTsKIAkJ
OTY5QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8q
IENvZGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk2OUEwNzk4MEVEMUQzQUUwMEYxRjY4MSAvKiBEaXJlY3RFdmFsQ29kZUNhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5MjBF
RDFEM0FFMDBGMUY2ODEgLyogRGlyZWN0RXZhbENvZGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4
MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTY5QTA3OTMwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY5QTA3OUIwRUQx
RDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oICovOyB9
OwogCQk5Nzg4MDE0MTE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4OEZDMjMxNDcxQUQwQzAwNjhD
RTJEIC8qIEpTRGF0ZU1hdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5ODFFRDgyMzI4MjM0RDkxQkFFQ0NBREUgLyogTWFjaGluZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI4ODA2RTIx
MTU1RTQ3OEE5M0ZBN0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5MERBNjdGMUM4RTMxNkEwMDI5NTE1OSAv
KiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24u
cHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEQTY3
RTFDOEUzMTFEMDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNp
b25zX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xODY0LDEzICsxODYwLDYgQEAKIAkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOwogCQkJcmVtb3RlSW5mbyA9ICJMTEludCBP
ZmZzZXRzIjsKIAkJfTsKLQkJMTQwMTNCNzUyMTgzQzAxRTAwOTk5OTQ2IC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNv
bnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDY1RkIz
RjY2MDlEMTFFOTEwMEY0OURFQjsKLQkJCXJlbW90ZUluZm8gPSAiRGVyaXZlZCBTb3VyY2VzIjsK
LQkJfTsKIAkJMTRCRDY4ODMyMTUxOTEzMTAwNTBEQUZGIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBv
cnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAg
LTE5NDgsNiArMTkzNywxMyBAQAogCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA2NUZCM0Y2NjA5
RDExRTkxMDBGNDlERUI7CiAJCQlyZW1vdGVJbmZvID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07
CisJCTY1NDQyRDRGMThFQkI3NDQwMDdBRjkyRiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8g
PSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwg
PSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94
eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA2NUZCM0Y2NjA5RDExRTkxMDBG
NDlERUI7CisJCQlyZW1vdGVJbmZvID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1Nzg4
QTlGMThCNDA5RUIwMEMxODlGRiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC0zMTIyLDggKzMxMTgs
NiBAQAogCQkxNDI5RDkyRDBFRDIyRDcwMDBCODk2MTkgLyogSklULmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0MjlEOTJFMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSklULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmljU3RyaW5ncy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOdW1lcmljU3RyaW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxNDJENTJCRDIxNzYyOTU3MDAyREIwODYgLyogVW5saW5rZWRNZXRhZGF0YVRh
YmxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZE1l
dGFkYXRhVGFibGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MkQ1
MkJFMjE3NjI5NTgwMDJEQjA4NiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRC
bG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrZWRCbG9j
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MkQ2RjA3MTM1MzlBMjgwMEIw
MkU4NiAvKiBNYXJrZWRCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YXJrZWRCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDJENkYwRTEzNTM5
QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hcmtTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MTMzLDggKzMxMjcsNiBAQAogCQkxNDJFMzEyRDEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZVNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDJFMzEzMjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cm9uZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNDJFMzEzMzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTE0MkYxNkRGMjE1NTg1QzgwMDNENDlDOSAvKiBNZXRhZGF0YVRhYmxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhVGFibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQyRjE2RTkyMTU4M0I1RTAwM0Q0OUM5IC8qIENvZGVC
bG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2Nr
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDM4NkE3MjFERDY5ODk1
MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNDM4NkE3MzFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4
ZWN1dGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlyZWN0RXZhbEV4
ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzODZBNzYxREQ2OTg5
QzAwODY1MkM0IC8qIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTc4LDkgKzMxNzAsNiBAQAogCQkxNDczNDFERjFEQzJD
RTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDczNDFFMDFEQzJDRTk2MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRFeGVjdXRh
YmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3MzQxRTkxREMyQ0YyNTAw
QUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEV4ZWN1dGFibGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMTQ3ODhFRTIyMTUwMUFGNzAwQTU2MUM4IC8qIFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2ZpbGVUeXBlQnl0ZWNv
ZGVGbGFnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQ3ODhFRTQyMTUwMUIy
ODAwQTU2MUM4IC8qIEpTVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDc4OEVFNTIx
NTAxQjI5MDBBNTYxQzggLyogR2V0UHV0SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZXRQdXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0N0I4NDYyMEU2REU2QjEw
MDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHV0UHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
ODBEQjlCMEREQzIyN0YwMDNDRkRGMiAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1Z2dlckNhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzE5NiwxNSArMzE4NSwxMCBAQAogCQkxNDhBN0JFRTFCODI5NzVB
MDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElubGluZUNhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDhDRDFENzEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvbnRleHRSZWZQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OTU1OUVEMEREQ0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dl
ckNhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1
Z2dlckNhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0OThDQUQz
MjE0NjU2QzQwMDcxMDg3OSAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxNDk4Q0FENTIxNEJGMzZEMDA3MTA4Nzkg
LyogR2V0QnlJZE1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdl
dEJ5SWRNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDlCMjRGRjBE
OEFGNkQxMDA5Q0I4QzcgLyogUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5REFBRjIx
MkVCNTU5RDAwODNCMTJCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnNlcnZhdGl2ZVJvb3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlSW5zdGFuY2VDYWNoZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEEzOTZBNjBDRDI5MzMxMDBCNUI0RkYgLyog
U3ltYm9sVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sVGFi
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTRBNDY4MDkyMTZGQTUzNDAwMEQy
QjFBIC8qIEZpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNEE0NjgwQTIxNkZBNTM1MDAwRDJCMUEgLyog
SW5zdHJ1Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zdHJ1Y3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTRBNDY4MEIyMTZGQTUzNTAwMEQy
QjFBIC8qIE9wY29kZVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bj
b2RlU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEFCNjY3NTFERUNGNDA5
MDBBNTZDMjYgLyogVW5saW5rZWRTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVubGlua2VkU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDSlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNEFCQjQ1NDA5OUMyQTBGMDBFMkEyNEYgLyogSlNUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzIzMCw4ICszMjE0LDYgQEAKIAkJMTRBRDkxMkIxRENBQUFCMDAwMTRGOUZFIC8q
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0QjcyMzNGMTJEN0QwREEwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tN
YXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjaGluZVN0
YWNrTWFya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRCNzIzNDAxMkQ3
RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNYWNoaW5lU3RhY2tNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMTRCQTc3NTEyMTEwODZBMDAwOEQwQjA1IC8qIEJ5dGVjb2RlTGlzdC5yYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBCeXRlY29kZUxpc3QucmI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0QkE3NzUyMjExQThFNUYwMDhEMEIwNSAvKiBQcm9maWxl
VHlwZUJ5dGVjb2RlRmxhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9m
aWxlVHlwZUJ5dGVjb2RlRmxhZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEJB
NzhGMDEzQUFCODhGMDA1QjdDMkMgLyogU2xvdFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2xvdFZpc2l0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTRCQTdBOTUxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0QkE3QTk2MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMy
NDYsOCArMzIyOCw3IEBACiAJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0dDTWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRDQTk1
OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0
cnVjdGlvblN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnN0cnVjdGlvblN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0Q0Mz
QkEyMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnN0cnVjdGlvblN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNEQyRjNEODEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2VkU3BhY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEgLyog
TWFya2VkU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkU3Bh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRENzkyNjQwREFBMDNGQjAwMUE5
RjA1IC8qIENMb29wU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0xv
b3BTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEQ4NTc3NDBBNDY5NkM4
MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
bmFtZSA9IHRlc3RhcGkuanM7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5qczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNjIsNyArMzI0Myw2IEBACiAJCTE0RTg0RjlEMTRFRTFB
Q0MwMEQ2RDVENCAvKiBXZWFrSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWFrSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY3MjU2MzE0RUUy
NjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYWtIYW5kbGVPd25lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0RjcyNTY0MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0hhbmRsZU93bmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0Rjc5RjZFMjE2RUFENTAwMDA0NkQzOSAvKiBNZXRh
ZGF0YVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1ldGFk
YXRhVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNjk5NDhFREU2OEQ0
MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxODc5NTEwNjE0QzU0MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVM
b2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4RDRBNzE3N0I3MUM4
MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RyaW5nUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzYxNyw2ICszNTk3LDggQEAKIAkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRl
c3RSZWdFeHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
IHRlc3RSZWdFeHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTY1MTRG
MjE3MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnl0ZWNvZGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsg
cGF0aCA9IEluaXRCeXRlY29kZXMuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
NTI5RkIzMDE4QjJENjM5MDBDNjExMDIgLyogZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTI5RkIzMTE4QjJEOTk5MDBDNjExMDIg
LyogQnl0ZWNvZGVMaXN0Lmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnl0ZWNvZGVMaXN0
Lmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MkEzQTIwMTY1MUM2NjEwMEE4
MEFGRSAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBBUk02NERpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvQVJN
NjREaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTJBM0Ey
MjE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9wY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBBNjRET3Bjb2RlLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9BUk02
NC9BNjRET3Bjb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUyQTNBMjMx
NjUxQzY5NzAwQTgwQUZFIC8qIEE2NERPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQTY0RE9wY29kZS5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNv
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5NjYsNiArMzk0OCw3IEBACiAJ
CTk2OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTY5QTA3OTIwRUQxRDNBRTAwRjFGNjgxIC8qIERpcmVjdEV2YWxDb2Rl
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlyZWN0RXZhbENvZGVD
YWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NjlBMDc5MzBFRDFEM0FFMDBG
MUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zdHJ1Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTY5QTA3OTQwRUQx
RDNBRTAwRjFGNjgxIC8qIE9wY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBPcGNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NjlBMDc5
NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NjlBMDkyMjBF
RDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ0NDgsNiArNDQzMSw4IEBACiAJCUFERTgwMjk2MUUwOEYxQzkwMDU4REU3OCAvKiBXZWJB
c3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHA7IHBhdGggPSBqcy9X
ZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUFERTgwMjk3MUUwOEYxQzkwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseUxp
bmtFcnJvclByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURFODAyOUQxRTA4RjIyNjAwNThE
RTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5j
cHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU5Rjg5MzcxODkxQUQzMzAwRDVDQ0RDIC8qIFVubGlu
a2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCNTlGODkzODE4OTFBREI1MDBENUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMjFCRjIxMzY5
MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzAyRTkwNDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNvbnN0cnVj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMkU5MDUwRTE4MzlEQjAw
MEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXJyb3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTAxOSw2ICs1MDA0LDcgQEAKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRl
X2hhc2hfdGFibGUgKi8sCiAJCQkJOTM3QjYzQ0MwOUU3NjZEMjAwQTY3MUREIC8qIERlcml2ZWRT
b3VyY2VzLm1ha2UgKi8sCiAJCQkJMEY5MzI3NUExQzIwQkNERjAwQ0Y2NTY0IC8qIGR5bmJlbmNo
LmNwcCAqLywKKwkJCQk2NTI5RkIzMDE4QjJENjM5MDBDNjExMDIgLyogZ2VuZXJhdGUtYnl0ZWNv
ZGUtZmlsZXMgKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRD
b3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAg
Ki8sCiAJCQkJQTdDMjI1Q0MxMzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBHZW5lcmF0
b3IucHkgKi8sCkBAIC01MDY4LDcgKzUwNTQsNiBAQAogCQkJCTVENUQ4QUQwMEUwRDBFQkUwMEY5
QzY5MiAvKiBsaWJlZGl0LmR5bGliICovLAogCQkJCTkzMjJBMDAzMDZDMzQxRDMwMDkwNjdCQiAv
KiBsaWJpY3Vjb3JlLmR5bGliICovLAogCQkJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBs
aWJvYmpjLmR5bGliICovLAotCQkJCTE0OThDQUQzMjE0NjU2QzQwMDcxMDg3OSAvKiBsaWJXVEYu
YSAqLywKIAkJCQlBOEE0NzQ4RDE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RGLmEgKi8sCiAJCQkJ
MzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi8sCiAJCQkJQTUwOThCMDMx
QzE2QUEwMjAwMDg3Nzk3IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLywKQEAgLTU4NTEsNiArNTgz
Niw3IEBACiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi8s
CiAJCQkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICov
LAogCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICovLAor
CQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCiAJCQkJ
MTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCiAJCQkJMEY3REYx
MzAxRTI5NzBENTAwOTU5NTFCIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTBGNjYw
RTMzMUUwNTE3QjcwMDMxNDYyQyAvKiBNYXJraW5nQ29uc3RyYWludC5jcHAgKi8sCkBAIC02NDU0
LDggKzY0NDAsNiBAQAogCQkJCTk2OUEwNzI3MEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oICov
LAogCQkJCTk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi8sCiAJCQkJ
NjU1RUIyOUExMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgKi8sCi0JCQkJMTQ3
ODhFRTIyMTUwMUFGNzAwQTU2MUM4IC8qIFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmNwcCAqLywK
LQkJCQkxNEJBNzc1MjIxMUE4RTVGMDA4RDBCMDUgLyogUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcu
aCAqLywKIAkJCQk5NjlBMDcyODBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oICovLAog
CQkJCTE0REYwNEQ5MTZCMzk5NkQwMDE2QTUxMyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgg
Ki8sCiAJCQkJMTRDQTk1OEExNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIuaCAqLywKQEAgLTY2ODIsNyArNjY2Niw2IEBACiAJCQkJMEZFMDUwMTMxQUE5MDkxMTAwRDMz
QjMzIC8qIEdlbmVyaWNPZmZzZXQuaCAqLywKIAkJCQkwRjJCNjZCMjE3QjZCNUFCMDBBN0FFM0Yg
LyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAwQTdB
RTNGIC8qIEdlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAqLywKLQkJCQkxNDc4OEVFNTIx
NTAxQjI5MDBBNTYxQzggLyogR2V0UHV0SW5mby5jcHAgKi8sCiAJCQkJNzk2NDY1NjgxQjk1MkZG
MDAwMzA1OUVFIC8qIEdldFB1dEluZm8uaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjky
OTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEg
LyogR2V0dGVyU2V0dGVyLmggKi8sCkBAIC02OTA1LDcgKzY4ODgsNiBAQAogCQkJCTBGOTE5RDBB
MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8sCiAJCQkJNzBFQ0E2
MDAxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcCAqLywK
IAkJCQk3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3IuaCAqLywKLQkJCQkxNDc4OEVFNDIxNTAxQjI4MDBBNTYxQzggLyogSlNUeXBlLmNwcCAqLywK
IAkJCQkxNEFCQjQ1NDA5OUMyQTBGMDBFMkEyNEYgLyogSlNUeXBlLmggKi8sCiAJCQkJMEYyQjY2
Q0MxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAgKi8sCiAJ
CQkJMEYyQjY2Q0QxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5o
ICovLApAQCAtNzY4Myw3ICs3NjY1LDcgQEAKIAkJCQk3MDk0QzREQzFBRTQzOTUzMDA0MUEyRUUg
LyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgKi8sCiAJCQkJNzA5NEM0REQxQUU0Mzk1
MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCAqLywKIAkJCQkwRjJERDgw
QTFBQjNEODU4MDBCQkI4RTggLyogQnl0ZWNvZGVLaWxscy5oICovLAotCQkJCTE0QkE3NzUxMjEx
MDg2QTAwMDhEMEIwNSAvKiBCeXRlY29kZUxpc3QucmIgKi8sCisJCQkJNjUyOUZCMzExOEIyRDk5
OTAwQzYxMTAyIC8qIEJ5dGVjb2RlTGlzdC5qc29uICovLAogCQkJCUMyRkNBRTBFMTdBOUMyNEUw
MDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwICovLAogCQkJCUMyRkNBRTBG
MTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCAqLywKIAkJCQkw
RjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oICovLApAQCAtNzcwNSw3ICs3Njg3LDYgQEAKIAkJCQk5NjlBMDc5MTBFRDFEM0FFMDBGMUY2
ODEgLyogQ29kZUJsb2NrLmggKi8sCiAJCQkJMEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcxIC8qIENv
ZGVCbG9ja0hhc2guY3BwICovLAogCQkJCTBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2Rl
QmxvY2tIYXNoLmggKi8sCi0JCQkJMTQyRjE2RTkyMTU4M0I1RTAwM0Q0OUM5IC8qIENvZGVCbG9j
a0lubGluZXMuaCAqLywKIAkJCQkwRkM5N0YyRjE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCAqLywKIAkJCQkwRkM5N0YzMDE4MjAyMEQ3MDAyQzlC
MjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggKi8sCiAJCQkJMEY5NkVCQjEx
NjY3NkVGNDAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRUeXBlLmggKi8sCkBAIC03NzQxLDEz
ICs3NzIyLDExIEBACiAJCQkJMEZCMTA1ODIxNjc1NDgwQzAwRjhBQjZFIC8qIEV4aXRLaW5kLmNw
cCAqLywKIAkJCQkwRkIxMDU4MzE2NzU0ODBDMDBGOEFCNkUgLyogRXhpdEtpbmQuaCAqLywKIAkJ
CQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovLAot
CQkJCTE0QTQ2ODA5MjE2RkE1MzQwMDBEMkIxQSAvKiBGaXRzLmggKi8sCiAJCQkJMEY2NjZFQkYx
ODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8sCiAJCQkJQUQ0MjUy
NTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCAqLywKIAkJCQlBRDQyNTI1
MDFFNUQwREVCMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLywKIAkJCQkxNEFEOTExNjFE
Q0E5N0ZEMDAxNEY5RkUgLyogRnVuY3Rpb25Db2RlQmxvY2suY3BwICovLAogCQkJCTE0QUQ5MTA3
MURDQTkyOTQwMDE0RjlGRSAvKiBGdW5jdGlvbkNvZGVCbG9jay5oICovLAotCQkJCTE0OThDQUQ1
MjE0QkYzNkQwMDcxMDg3OSAvKiBHZXRCeUlkTWV0YWRhdGEuaCAqLywKIAkJCQkwRjkzMzI5NTE0
Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTYxNENB
N0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjAzMzJDMTE4QjAxNzYz
MDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwICovLApAQCAtNzc3Miw5ICs3NzUxLDcgQEAK
IAkJCQkwRkIzOTlCQjIwQUY2QjJBMDAxN0UyMTMgLyogSW5zdGFuY2VPZlN0YXR1cy5oICovLAog
CQkJCTBGQjM5OUJDMjBBRjZCMkEwMDE3RTIxMyAvKiBJbnN0YW5jZU9mVmFyaWFudC5jcHAgKi8s
CiAJCQkJMEZCMzk5QjkyMEFGNkIyQTAwMTdFMjEzIC8qIEluc3RhbmNlT2ZWYXJpYW50LmggKi8s
Ci0JCQkJMTRBNDY4MEEyMTZGQTUzNTAwMEQyQjFBIC8qIEluc3RydWN0aW9uLmggKi8sCi0JCQkJ
MTRDQzNCQTEyMTM4QTIzODAwMkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLywKLQkJ
CQkxNENDM0JBMjIxMzhBMjM4MDAyRDU4QjYgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLywKKwkJ
CQk5NjlBMDc5MzBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCAqLywKIAkJCQk1M0Y2
QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
LmggKi8sCiAJCQkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8s
CiAJCQkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovLApAQCAtNzc4
Myw4ICs3NzYwLDYgQEAKIAkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCAqLywKIAkJCQk1M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLywKIAkJCQk1M0ZBMkFF
MDFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmggKi8sCi0JCQkJMTRGNzlGNkUyMTZFQUQ1MDAwMDQ2RDM5IC8qIE1ldGFkYXRh
VGFibGUuY3BwICovLAotCQkJCTE0MkYxNkRGMjE1NTg1QzgwMDNENDlDOSAvKiBNZXRhZGF0YVRh
YmxlLmggKi8sCiAJCQkJMEZCNTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMjBFQ0IxNUVGQzUyNDYyNEJD
MkYwMkQ1IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwICovLApAQCAtNzgwMCw3ICs3
Nzc1LDYgQEAKIAkJCQk5NjlBMDc5NDBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNwcCAqLywK
IAkJCQk5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi8sCiAJCQkJRkU2NDg3
MkQyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMuaCAqLywKLQkJCQkxNEE0NjgwQjIx
NkZBNTM1MDAwRDJCMUEgLyogT3Bjb2RlU2l6ZS5oICovLAogCQkJCTBGMkJEQzJCMTUxRkRFOEIw
MENEODkxMCAvKiBPcGVyYW5kcy5oICovLAogCQkJCUE3MDQ0N0U5MTdBMEJENDYwMEY1ODk4RSAv
KiBPcGVyYW5kc0lubGluZXMuaCAqLywKIAkJCQlFMzRFNjU3NDIwNjY4RThFMDBGQjgxQUMgLyog
UGFyc2VIYXNoLmNwcCAqLywKQEAgLTc4NTYsOCArNzgzMCw4IEBACiAJCQkJMTQxNDJFNTQxQjc5
NzNDMDAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkx
NDE0MkU1MDFCNzk2RUNFMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCAq
LywKIAkJCQkxNEFEOTExQzFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRHbG9iYWxDb2RlQmxv
Y2suaCAqLywKLQkJCQkxNDJENTJCRTIxNzYyOTU4MDAyREIwODYgLyogVW5saW5rZWRNZXRhZGF0
YVRhYmxlLmggKi8sCi0JCQkJMTQyRDUyQkQyMTc2Mjk1NzAwMkRCMDg2IC8qIFVubGlua2VkTWV0
YWRhdGFUYWJsZUlubGluZXMuaCAqLywKKwkJCQlCNTlGODkzODE4OTFBREI1MDBENUNDREMgLyog
VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCisJCQkJQjU5Rjg5MzcxODkxQUQzMzAw
RDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLywKIAkJCQkxNEFEOTEyQTFE
Q0FBQUIwMDAxNEY5RkUgLyogVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNwcCAqLywK
IAkJCQkxNEFEOTExRjFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmggKi8sCiAJCQkJMTRBRDkxMjkxRENBQUFCMDAwMTRGOUZFIC8qIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jay5jcHAgKi8sCkBAIC04OTc3LDcgKzg5NTEsNiBAQAogCQkJCTBGRTA1MDFC
MUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCNjZFMDE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZFMTE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTQ5OENBRDYyMTRCRjM2RDAwNzEw
ODc5IC8qIEdldEJ5SWRNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTAxNENB
N0RDRDAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDMz
MkM0MThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzk2NDY1NkExQjk1MkZGMDAwMzA1OUVFIC8qIEdldFB1dEluZm8uaCBpbiBIZWFkZXJzICov
LApAQCAtOTA2MCw4ICs5MDMzLDcgQEAKIAkJCQkwRjQ5RTlBQTIwQUI0RDAwMDAxQ0EwQUEgLyog
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjM5OUJGMjBBRjZC
M0YwMDE3RTIxMyAvKiBJbnN0YW5jZU9mU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIz
OTlDMDIwQUY2QjQzMDAxN0UyMTMgLyogSW5zdGFuY2VPZlZhcmlhbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCTE0QTQ2ODBDMjE2RkE1NjUwMDBEMkIxQSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMTRDMjVCOUUyMTZFQTM2QTAwMTM3NzY0IC8qIEluc3RydWN0aW9uU3RyZWFt
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJ
bnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQg
LyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0ExN0FEQjVGMzAwNUFC
MTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05Mzc0LDcgKzkzNDYsNiBAQAog
CQkJCUJDMThDNDNDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzI4QzZDNzFEQTQzMDQ1MDBEMjU1RkQgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwMjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAv
KiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDJGMTZFMDIxNTU4ODAy
MDAzRDQ5QzkgLyogTWV0YWRhdGFUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNTQ2N0Ix
NEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFMkE4NzYwMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2
ZWRab25lU2l6ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDE0LDkgKzkzODUsOCBAQAogCQkJCTBG
RDNFNDBDMUI2MThCNjYwMEM4MEUxRSAvKiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDYwRTE2RjVDRDAwQjM0NDYwIC8qIE9iamVjdFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9w
YXF1ZUpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNEY3OUY3MDIxNkVBRkQyMDAwNDZE
MzkgLyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2
ODEgLyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTY0ODcyRTIxNDFEMDQ4MDBBQjBE
M0UgLyogT3Bjb2RlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTRBNDY4MEQyMTZGQTU2
QTAwMEQyQjFBIC8qIE9wY29kZVNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzJDMTUx
RkRFOTEwMENEODkxMCAvKiBPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNDQ3RUEx
N0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLApA
QCAtOTY1MSw3ICs5NjIxLDYgQEAKIAkJCQkxNEFEOTEyMzFEQ0E5RkE0MDAxNEY5RkUgLyogVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDJFNTExQjc5
NkVDRTAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNEFEOTEyMjFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRHbG9iYWxDb2RlQmxv
Y2suaCBpbiBIZWFkZXJzICovLAotCQkJCTE0NkMzODRCMjE3N0FDREYwMDc5RjZEOSAvKiBVbmxp
bmtlZE1ldGFkYXRhVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUQ5MTI1MURDQTlGQTQw
MDE0RjlGRSAvKiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0QUQ5MTI2MURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUI2Njc2MURFQ0Y0MDkwMEE1NkMyNiAvKiBVbmxp
bmtlZFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTk4MCw3ICs5OTQ5LDYgQEAKIAkJ
CWJ1aWxkUnVsZXMgPSAoCiAJCQkpOwogCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCTE0MDEzQjc2
MjE4M0MwMUUwMDk5OTk0NiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJKTsKIAkJCW5h
bWUgPSBqc2M7CiAJCQlwcm9kdWN0SW5zdGFsbFBhdGggPSAvdXNyL2xvY2FsL2JpbjsKQEAgLTEw
MTM5LDcgKzEwMTA3LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJl
eGVjICR7U1JDUk9PVH0vcG9zdHByb2Nlc3MtaGVhZGVycy5zaFxuIjsKKwkJCXNoZWxsU2NyaXB0
ID0gImV4ZWMgJHtTUkNST09UfS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNoIjsKIAkJfTsKIAkJMzc0
Rjk1QzkyMDVGOTk3NTAwMkJGNjhGIC8qIE1ha2UgbGliV1RGLmEgU3ltYm9saWMgTGluayAqLyA9
IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTEwNTk2LDExICsxMDU2
NCw2IEBACiAJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zm
c2V0cyAqLzsKIAkJCXRhcmdldFByb3h5ID0gMEZGOTIyRDIxNEY0NkIyRjAwNDFBMjRFIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKIAkJfTsKLQkJMTQwMTNCNzYyMTgzQzAxRTAwOTk5OTQ2
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OwotCQkJdGFyZ2V0ID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291
cmNlcyAqLzsKLQkJCXRhcmdldFByb3h5ID0gMTQwMTNCNzUyMTgzQzAxRTAwOTk5OTQ2IC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKLQkJfTsKIAkJMTRCRDY4ODIyMTUxOTEzMTAwNTBEQUZG
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OwogCQkJdGFyZ2V0ID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291
cmNlcyAqLzsKQEAgLTEwNjU2LDYgKzEwNjE5LDExIEBACiAJCQl0YXJnZXQgPSA2NUZCM0Y2NjA5
RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovOwogCQkJdGFyZ2V0UHJveHkgPSA2
NTI0NEJEMjE4RUNCNTAwMDAxMEI3MDggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9
OworCQk2NTQ0MkQ1MDE4RUJCNzQ0MDA3QUY5MkYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA2NUZCM0Y2NjA5
RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovOworCQkJdGFyZ2V0UHJveHkgPSA2
NTQ0MkQ0RjE4RUJCNzQ0MDA3QUY5MkYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9
OwogCQk2NTc4OEE5RTE4QjQwOUVCMDBDMTg5RkYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAwRkY5MjJDMzE0
RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDhmZmEyMTdhNWZhMWI4Njc5YjJkN2UxYzgzMGMxYjVjN2Jh
OGY4NDEuLjIyODhjNThmYjY2MzE2ZWExMTk0YTQ3YTgxYjA2YzFiMWRiMWE5ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKQEAgLTIzMywxMiArMjMzLDEwIEBAIGJ5dGVjb2RlL0lubGlu
ZUNhbGxGcmFtZVNldC5jcHAKIGJ5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAogYnl0
ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKIGJ5dGVjb2RlL0luc3RhbmNlT2ZWYXJpYW50LmNw
cAotYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCiBieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcAogYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogYnl0ZWNvZGUvTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCi1ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAogYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKIGJ5dGVjb2RlL01vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNw
cApAQCAtMjcwLDYgKzI2OCw3IEBAIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAogYnl0
ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAor
Ynl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAKIGJ5dGVjb2RlL1VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2VkUHJvZ3JhbUNvZGVC
bG9jay5jcHAKIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCkBAIC0yNzksNyArMjc4LDYgQEAg
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKIAogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKLWJ5dGVjb21waWxlci9Qcm9maWxl
VHlwZUJ5dGVjb2RlRmxhZy5jcHAKIAogZGVidWdnZXIvRGVidWdnZXIuY3BwCiBkZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTc2MSw3ICs3NTksNiBAQCBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuY3BwCiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiBy
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuY3BwCi1ydW50aW1lL0dldFB1dEluZm8uY3BwCiBydW50aW1lL0dldHRlclNldHRl
ci5jcHAKIHJ1bnRpbWUvSGFzaE1hcEltcGwuY3BwCiBydW50aW1lL0lkZW50aWZpZXIuY3BwCkBA
IC04NTQsNyArODUxLDYgQEAgcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKIHJ1bnRpbWUvSlNT
dHJpbmdIZWFwQ2VsbFR5cGUuY3BwCiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCiBy
dW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcAotcnVudGltZS9KU1R5cGUuY3Bw
CiBydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAKIHJ1bnRpbWUvSlNUeXBlZEFy
cmF5UHJvdG90eXBlcy5jcHAKIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgKaW5kZXggODNiNDliYjYxYzI0YzJiMGFkNDAxNzcyNjc4ODU4YzllZmRh
MWJiOS4uZmFjOGI4NmJjMWJjOTI2NDVlYjAzZTcxODg5MGU4MTgwY2IxMWMxMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oCkBAIC0xNzYsNyArMTc2LDcgQEAgY2xhc3MgUmV0dXJuQWRkcmVzc1B0ciB7CiBwdWJs
aWM6CiAgICAgUmV0dXJuQWRkcmVzc1B0cigpIHsgfQogCi0gICAgZXhwbGljaXQgUmV0dXJuQWRk
cmVzc1B0cihjb25zdCB2b2lkKiB2YWx1ZSkKKyAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRy
KHZvaWQqIHZhbHVlKQogICAgICAgICA6IG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgICAgICBQ
b2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90UG9pc29uZWQobV92YWx1ZSk7CkBAIC0xOTEsNyAr
MTkxLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIAotICAgIGNvbnN0IHZvaWQqIHZhbHVlKCkgY29uc3QKKyAgICB2b2lkKiB2
YWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90
UG9pc29uZWQobV92YWx1ZSk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwpAQCAtMjAzLDcgKzIw
Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3Qgdm9pZCogbV92YWx1
ZSB7IG51bGxwdHIgfTsKKyAgICB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogLy8g
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOgpAQCAtMjIyLDEwICsyMjIsMTAgQEAgcHVibGljOgogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpID0gZGVmYXVsdDsKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoc3RkOjpudWxscHRyX3QpIDogbV92YWx1ZShudWxscHRyKSB7IH0KIAotICAgIGV4cGxp
Y2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKKyAgICBleHBsaWNp
dCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIodm9pZCogdmFsdWUpCiAjaWYgQ1BVKEFSTV9USFVNQjIp
CiAgICAgICAgIC8vIERlY29yYXRlIHRoZSBwb2ludGVyIGFzIGEgdGh1bWIgY29kZSBwb2ludGVy
LgotICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odmFsdWUp
ICsgMSkKKyAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHZhbHVlKSAr
IDEpCiAjZWxzZQogICAgICAgICA6IG1fdmFsdWUodmFsdWUpCiAjZW5kaWYKQEAgLTIzOSw3ICsy
MzksNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZS51bnBvaXNvbmVkKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHZv
aWQqIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUih2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5kZXggNjQ1YzI1OGU1NTdiZTllNDdhNDI3YWZjM2E3ZmFj
NDQ5N2U2ODZhYi4uNTJlZWY4MjhiNWYzMTk5YTJkZTM3NTZjOTUwNTgwMGI2YjU4NDEwNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtMTA1
LDExICsxMDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5p
c0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsK
ICAgICB9Ci0KLSAgICBBcml0aFByb2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6
IEFyaXRoUHJvZmlsZSh0eXBlcy5maXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KLQog
ICAgIEFyaXRoUHJvZmlsZSgpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgQXJp
dGhQcm9maWxlIGZyb21JbnQodWludDMyX3QgYml0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IGZlZjkz
NmUyNTc4ODhlZDIyZWEyMGY4YjE4ZjlkOWM3YjEzMjY1ZjMuLmMyMzNkZWI3YTI0MTE0NTUzMjU3
YTlhYjhmYzg3NGUxZTg3MDlhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaApAQCAtMzIsMTMgKzMyLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFycmF5QWxsb2NhdGlvblByb2ZpbGUgewogcHVibGlj
OgotICAgIEFycmF5QWxsb2NhdGlvblByb2ZpbGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICBBcnJheUFs
bG9jYXRpb25Qcm9maWxlKEluZGV4aW5nVHlwZSByZWNvbW1lbmRlZEluZGV4aW5nTW9kZSkKLSAg
ICB7Ci0gICAgICAgIGluaXRpYWxpemVJbmRleGluZ01vZGUocmVjb21tZW5kZWRJbmRleGluZ01v
ZGUpOwotICAgIH0KLQogICAgIEluZGV4aW5nVHlwZSBzZWxlY3RJbmRleGluZ1R5cGUoKQogICAg
IHsKICAgICAgICAgSlNBcnJheSogbGFzdEFycmF5ID0gbV9sYXN0QXJyYXk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggYjlkOWYzN2FhNGQ4
NTNjZGY1OThlYjk2NjI2ZDJhZWRjNGE2MzNlYS4uM2FiZWIyNjk3ZThiMTIyYTEyODkwZWUzODcx
OWZhNWQxMjkzOGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaApAQCAtMjEwLDggKzIxMCw2IEBAIGlubGluZSBib29sIGhhc1NlZW5Db3B5T25X
cml0ZUFycmF5KEFycmF5TW9kZXMgYXJyYXlNb2RlcykKIH0KIAogY2xhc3MgQXJyYXlQcm9maWxl
IHsKLSAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwotCiBwdWJsaWM6CiAgICAgQXJyYXlQcm9m
aWxlKCkKICAgICAgICAgOiBBcnJheVByb2ZpbGUoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCAzM2JiMGMwNjYzNTM4MWU4OThmNjVhODc0ZjFmMzZh
OGM5NDgyM2FmLi5hNDM5N2I1NDQxZjFjMmFjYzZiNjJhNmYwMjcxYTIyOTI4NDdlMzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6c2hyaW5r
VG9GaXQoKQogICAgIG1fc3VjY2Vzc29ycy5zaHJpbmtUb0ZpdCgpOwogfQogCi1zdGF0aWMgYm9v
bCBpc0p1bXBUYXJnZXQoT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0LCAzMj4mIGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCkKK3N0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
IHsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2F0Y2gpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtNDcsMTEgKzQ3LDExIEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNv
ZGVJRCwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzCiAgICAgcmV0dXJuIHN0
ZDo6YmluYXJ5X3NlYXJjaChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwg
Ynl0ZWNvZGVPZmZzZXQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1w
bChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewotICAgIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0LCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhj
b2RlQmxvY2ssIGluc3RydWN0aW9ucywganVtcFRhcmdldHMpOworICAgIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+IGp1bXBUYXJnZXRzOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwganVtcFRhcmdldHMpOwog
CiAgICAgYXV0byBhcHBlbmRCbG9jayA9IFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4mJiBibG9jaykgewogICAgICAgICBibG9jay0+bV9pbmRleCA9IGJhc2ljQmxvY2tz
LnNpemUoKTsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1
dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgIGJh
c2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKIAogICAg
IGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJs
b2NrKTsKKyAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFz
aWNCbG9jaz4oMCwgMCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5n
ZXQoKSk7CiAKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CkBAIC03NywxOCArNzcs
MTkgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxv
Y2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25J
c0xlYWRlciA9IGZhbHNlOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6IGlu
c3RydWN0aW9ucykgewotICAgICAgICBhdXRvIGJ5dGVjb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rpb24u
b2Zmc2V0KCk7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29k
ZUlEKCk7CisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zm
c2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
KTsKKyAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJ
RF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKICAgICAgICAgLy8gSWYg
dGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1wIHRhcmdldCwgdGhlbiBpdCdzIHRoZSBsZWFk
ZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KICAgICAgICAgaWYgKGlzSnVtcFRhcmdldChvcGNv
ZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xl
YWRlcikgewotICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVjdGlvbik7CisgICAgICAgICAgICBhdXRvIG5ld0Jsb2Nr
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2RlT2Zmc2V0LCBv
cGNvZGVMZW5ndGgpOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwogICAg
ICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAgY3Jl
YXRlZEJsb2NrID0gdHJ1ZTsKICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0g
ZmFsc2U7CisgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGJyYW5jaCBv
ciBhIHJldHVybiwgdGhlbiB0aGUgbmV4dCBpbnN0cnVjdGlvbiBpcyB0aGUgbGVhZGVyIG9mIGl0
cyBvd24gYmFzaWMgYmxvY2suCkBAIC05OSw3ICsxMDAsOCBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBPdGhlcndpc2UsIGp1c3Qg
YWRkIHRvIHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgYmxvY2suCi0gICAgICAgIGN1cnJlbnQt
PmFkZExlbmd0aChpbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgY3VycmVudC0+YWRkTGVu
Z3RoKG9wY29kZUxlbmd0aCk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0
aDsKICAgICB9CiAKICAgICAvLyBMaW5rIGJhc2ljIGJsb2NrcyB0b2dldGhlci4KQEAgLTEwOSwy
NSArMTExLDI0IEBAIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgaWYgKGJsb2NrLT5p
c0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsKLSAgICAgICAgZm9yIChh
dXRvIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPm9mZnNldHMoKSkgewotICAgICAgICAgICAgYXV0
byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucy5hdChieXRlY29kZU9mZnNldCk7Ci0gICAgICAg
ICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwotCisgICAg
ICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCisgICAgICAgIGZvciAodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxv
Y2stPmxlYWRlck9mZnNldCgpICsgYmxvY2stPnRvdGFsTGVuZ3RoKCk7KSB7CisgICAgICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0pOworICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVu
Z3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3Vu
ZCBhIHRlcm1pbmFsIGJ5dGVjb2RlLCBsaW5rIHRvIHRoZSBleGl0IGJsb2NrLgogICAgICAgICAg
ICAgaWYgKGlzVGVybWluYWwob3Bjb2RlSUQpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJ5
dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb24tPnNpemUoKSA9PSBibG9jay0+bGVhZGVyT2Zmc2V0
KCkgKyBibG9jay0+dG90YWxMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVj
b2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJPZmZzZXQoKSArIGJsb2Nr
LT50b3RhbExlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0
LmdldCgpKTsKICAgICAgICAgICAgICAgICBmYWxsc1Rocm91Z2ggPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gSWYgd2UgZm91
bmQgYSB0aHJvdywgZ2V0IHRoZSBIYW5kbGVySW5mbyBmb3IgdGhpcyBpbnN0cnVjdGlvbiB0byBz
ZWUgd2hlcmUgd2Ugd2lsbCBqdW1wLgorICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSB0aHJv
dywgZ2V0IHRoZSBIYW5kbGVySW5mbyBmb3IgdGhpcyBpbnN0cnVjdGlvbiB0byBzZWUgd2hlcmUg
d2Ugd2lsbCBqdW1wLiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzbid0IG9uZSwgdHJlYXQg
dGhpcyB0aHJvdyBhcyBhIHRlcm1pbmFsLiBUaGlzIGlzIHRydWUgZXZlbiBpZiB3ZSBoYXZlIGEg
ZmluYWxseQogICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9jayB3
aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxlcklu
Zm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvbi0+c2l6ZSgpID09IGJsb2NrLT5s
ZWFkZXJPZmZzZXQoKSArIGJsb2NrLT50b3RhbExlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBh
dXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1
Y3Rpb24ub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCAr
IG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyT2Zmc2V0KCkgKyBibG9jay0+dG90YWxMZW5n
dGgoKSk7CisgICAgICAgICAgICAgICAgYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxl
ckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBmYWxs
c1Rocm91Z2ggPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHsKICAgICAg
ICAgICAgICAgICAgICAgbGlua0Jsb2NrcyhibG9jaywgZXhpdC5nZXQoKSk7CkBAIC0xNDUsOSAr
MTQ2LDkgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogCiAgICAgICAgICAgICAvLyBJZiB3ZSBm
b3VuZCBhIGJyYW5jaCwgbGluayB0byB0aGUgYmxvY2socykgdGhhdCB3ZSBqdW1wIHRvLgogICAg
ICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkgewotICAgICAgICAgICAgICAgIEFTU0VS
VChieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uLT5zaXplKCkgPT0gYmxvY2stPmxlYWRlck9m
ZnNldCgpICsgYmxvY2stPnRvdGFsTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIFZlY3RvcjxJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsKLSAg
ICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJPZmZzZXQo
KSArIGJsb2NrLT50b3RhbExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOworICAgICAgICAgICAgICAgIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5
dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAgICAgICAg
ICBzaXplX3QgbnVtYmVyT2ZKdW1wVGFyZ2V0cyA9IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvLnNp
emUoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZKdW1wVGFyZ2V0cyk7CkBAIC0x
NzEsNiArMTcyLDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2Nr
KiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNv
ZGVMZW5ndGg7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiB3ZSBmYWxsIHRocm91Z2ggdGhl
biBsaW5rIHRvIHRoZSBuZXh0IGJsb2NrIGluIHByb2dyYW0gb3JkZXIuCkBAIC0xODIsMTkgKzE4
NCwxOSBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgfQogCiAgICAgYXBwZW5kQmxvY2so
V1RGTW92ZShleGl0KSk7Ci0KKyAgICAKICAgICBmb3IgKGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNp
Y0Jsb2NrcykKICAgICAgICAgYmFzaWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7Ci0gICAgY29tcHV0ZUltcGwoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGJhc2ljQmxvY2tzKTsKKyAgICBjb21wdXRlSW1wbChjb2Rl
QmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7
CiB9CiAKLXZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlKFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQordm9p
ZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGUoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzKQogewotICAgIGNvbXB1dGVJbXBsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
LCBiYXNpY0Jsb2Nrcyk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChjb2Rl
QmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4IDIwZTEyNGM1ODViZjZhZjgyYTRj
NGNmOGM3MThhZmU0ZjM0ODRiNjQuLmZiODE2NTBjYTFmNjUxNmU5YjYxYmIwZjc4MmYyYzIzYjY2
YjhiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJJbnN0cnVjdGlvblN0cmVhbS5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzUsMjIg
KzM0LDIzIEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2s7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVj
dGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIFNwZWNpYWxCbG9ja1R5cGUgeyBFbnRyeUJsb2Nr
LCBFeGl0QmxvY2sgfTsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb25T
dHJlYW06OlJlZiYpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2soU3BlY2lhbEJsb2NrVHlwZSk7
CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgYm9vbCBpc0VudHJ5QmxvY2soKSB7IHJl
dHVybiAhbV9sZWFkZXJPZmZzZXQgJiYgIW1fdG90YWxMZW5ndGg7IH0KICAgICBib29sIGlzRXhp
dEJsb2NrKCkgeyByZXR1cm4gbV9sZWFkZXJPZmZzZXQgPT0gVUlOVF9NQVggJiYgbV90b3RhbExl
bmd0aCA9PSBVSU5UX01BWDsgfQogCi0gICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9sZWFkZXJPZmZzZXQ7IH0KLSAgICB1bnNpZ25lZCB0b3RhbExlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdG90YWxMZW5ndGg7IH0KKyAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQo
KSB7IHJldHVybiBtX2xlYWRlck9mZnNldDsgfQorICAgIHVuc2lnbmVkIHRvdGFsTGVuZ3RoKCkg
eyByZXR1cm4gbV90b3RhbExlbmd0aDsgfQogCi0gICAgY29uc3QgVmVjdG9yPEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQ+JiBvZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXRzOyB9Cisg
ICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgb2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0czsgfQogCiAgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNz
b3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKQEAgLTU5LDMwICs1OSwzMCBA
QCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7
IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbXB1dGUoQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+PiYpOwotICAgIHN0YXRpYyB2b2lkIGNvbXB1dGUoVW5saW5rZWRDb2RlQmxvY2sq
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZShD
b2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
KTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKIAogcHJpdmF0
ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4gc3RhdGljIHZvaWQgY29tcHV0ZUltcGwo
QmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Mp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4gc3Rh
dGljIHZvaWQgY29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcyk7CiAKICAgICB2b2lkIGFk
ZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBl
bmQoYmxvY2spOyB9CiAKICAgICB2b2lkIGFkZExlbmd0aCh1bnNpZ25lZCk7CiAKLSAgICBJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fbGVhZGVyT2Zmc2V0OworICAgIHVuc2lnbmVkIG1fbGVh
ZGVyT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxMZW5ndGg7CiAgICAgdW5zaWduZWQgbV9p
bmRleDsKIAotICAgIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX29mZnNldHM7
CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX29mZnNldHM7CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFz
aWNCbG9jayo+IG1fc3VjY2Vzc29yczsKIAogICAgIEZhc3RCaXRWZWN0b3IgbV9pbjsKICAgICBG
YXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0
ZWNvZGVCYXNpY0Jsb2NrKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9u
KQotICAgIDogbV9sZWFkZXJPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpCi0gICAgLCBtX3Rv
dGFsTGVuZ3RoKGluc3RydWN0aW9uLT5zaXplKCkpCitpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjpCeXRlY29kZUJhc2ljQmxvY2sodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICA6IG1fbGVhZGVyT2Zmc2V0KHN0YXJ0KQorICAgICwgbV90b3RhbExlbmd0aChsZW5ndGgpCiB7
CiAgICAgbV9vZmZzZXRzLmFwcGVuZChtX2xlYWRlck9mZnNldCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCAxZjhjZGJi
ZjFlOGZkNzM1YmIyYjk1NzcxYWUwOGIxOTQ3NTZkNmRiLi41ZDdjMGFkNDJiMjEzMGExNzE2NTlj
MTJmZjg4N2JhN2I2ZDY3Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUR1bXBlci5oIgogCiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCi0jaW5jbHVkZSAiQnl0
ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJFcnJvci5oIgpAQCAtMzksMTAgKzM4LDIwNiBAQAogI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNp
bmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgotI2luY2x1ZGUgIlVubGlua2VkTWV0YWRhdGFU
YWJsZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0YXRpYyBTdHJ1Y3R1cmVJRCBn
ZXRTdHJ1Y3R1cmVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0
dXJuIGluc3RydWN0aW9uLnUuc3RydWN0dXJlSUQ7Cit9CisKK3N0YXRpYyBTdHJ1Y3R1cmVJRCBn
ZXRTdHJ1Y3R1cmVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJikKK3sKKyAgICByZXR1cm4g
MDsKK30KKworc3RhdGljIFNwZWNpYWw6OlBvaW50ZXIgZ2V0U3BlY2lhbFBvaW50ZXIoY29uc3Qg
SW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnNw
ZWNpYWxQb2ludGVyOworfQorCitzdGF0aWMgU3BlY2lhbDo6UG9pbnRlciBnZXRTcGVjaWFsUG9p
bnRlcihjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U3BlY2lhbDo6UG9pbnRlcj4oaW5zdHJ1Y3Rpb24udS5vcGVyYW5kKTsK
K30KKworc3RhdGljIFB1dEJ5SWRGbGFncyBnZXRQdXRCeUlkRmxhZ3MoY29uc3QgSW5zdHJ1Y3Rp
b24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnB1dEJ5SWRGbGFn
czsKK30KKworc3RhdGljIFB1dEJ5SWRGbGFncyBnZXRQdXRCeUlkRmxhZ3MoY29uc3QgVW5saW5r
ZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFB1
dEJ5SWRGbGFncz4oaW5zdHJ1Y3Rpb24udS5vcGVyYW5kKTsKK30KKworc3RhdGljIFRvVGhpc1N0
YXR1cyBnZXRUb1RoaXNTdGF0dXMoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQorewor
ICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnRvVGhpc1N0YXR1czsKK30KKworc3RhdGljIFRvVGhp
c1N0YXR1cyBnZXRUb1RoaXNTdGF0dXMoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1
Y3Rpb24pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvVGhpc1N0YXR1cz4oaW5zdHJ1Y3Rp
b24udS5vcGVyYW5kKTsKK30KKworc3RhdGljIHZvaWQqIGdldFBvaW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnBvaW50ZXI7
Cit9CisKK3N0YXRpYyB2b2lkKiBnZXRQb2ludGVyKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24m
KQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGdl
dFN0cnVjdHVyZUNoYWluKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICBy
ZXR1cm4gaW5zdHJ1Y3Rpb24udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKK30KKworc3RhdGljIFN0
cnVjdHVyZUNoYWluKiBnZXRTdHJ1Y3R1cmVDaGFpbihjb25zdCBVbmxpbmtlZEluc3RydWN0aW9u
JikKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFN0cnVjdHVyZSogZ2V0U3Ry
dWN0dXJlKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5z
dHJ1Y3Rpb24udS5zdHJ1Y3R1cmUuZ2V0KCk7Cit9CisKK3N0YXRpYyBTdHJ1Y3R1cmUqIGdldFN0
cnVjdHVyZShjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJikKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworc3RhdGljIExMSW50Q2FsbExpbmtJbmZvKiBnZXRDYWxsTGlua0luZm8oY29uc3Qg
SW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LmNh
bGxMaW5rSW5mbzsKK30KKworc3RhdGljIExMSW50Q2FsbExpbmtJbmZvKiBnZXRDYWxsTGlua0lu
Zm8oY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3N0YXRpYyBCYXNpY0Jsb2NrTG9jYXRpb24qIGdldEJhc2ljQmxvY2tMb2NhdGlvbihjb25z
dCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uLnUu
YmFzaWNCbG9ja0xvY2F0aW9uOworfQorCitzdGF0aWMgQmFzaWNCbG9ja0xvY2F0aW9uKiBnZXRC
YXNpY0Jsb2NrTG9jYXRpb24oY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpCit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCogQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjphY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlPD4KK3ZvaWQqIEJ5dGVjb2RlRHVt
cGVyPENvZGVCbG9jaz46OmFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVy
KSBjb25zdAoreworICAgIHJldHVybiBibG9jaygpLT5nbG9iYWxPYmplY3QoKS0+YWN0dWFsUG9p
bnRlckZvcihwb2ludGVyKTsKK30KKworc3RhdGljIHZvaWQgYmVnaW5EdW1wUHJvZmlsaW5nKFBy
aW50U3RyZWFtJiBvdXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCit7CisgICAgaWYgKGhh
c1ByaW50ZWRQcm9maWxpbmcpIHsKKyAgICAgICAgb3V0LnByaW50KCI7ICIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgb3V0LnByaW50KCIgICAgIik7CisgICAgaGFzUHJpbnRlZFBy
b2ZpbGluZyA9IHRydWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OmR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IHR5
cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBib29sJikKK3sKKyAgICArK2l0OworfQor
Cit0ZW1wbGF0ZTw+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBWYWx1ZVBy
b2ZpbGluZyhQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBDb2RlQmxvY2s6Okluc3Ry
dWN0aW9uKiYgaXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCit7CisgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihibG9jaygpLT5tX2xvY2spOworCisgICAgKytpdDsKKyAgICBDU3Ry
aW5nIGRlc2NyaXB0aW9uID0gaXQtPnUucHJvZmlsZS0+YnJpZWZEZXNjcmlwdGlvbihsb2NrZXIp
OworICAgIGlmICghZGVzY3JpcHRpb24ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybjsKKyAgICBi
ZWdpbkR1bXBQcm9maWxpbmcob3V0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICBvdXQucHJp
bnQoZGVzY3JpcHRpb24pOworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQXJyYXlQcm9maWxpbmcoUHJpbnRTdHJlYW0mLCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgYm9vbCYpCit7CisgICAgKytpdDsKK30K
KwordGVtcGxhdGU8Pgordm9pZCBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQXJyYXlQ
cm9maWxpbmcoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQ29kZUJsb2NrOjpJbnN0
cnVjdGlvbiomIGl0LCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKQoreworICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoYmxvY2soKS0+bV9sb2NrKTsKKworICAgICsraXQ7CisgICAgaWYg
KCFpdC0+dS5hcnJheVByb2ZpbGUpCisgICAgICAgIHJldHVybjsKKyAgICBDU3RyaW5nIGRlc2Ny
aXB0aW9uID0gaXQtPnUuYXJyYXlQcm9maWxlLT5icmllZkRlc2NyaXB0aW9uKGxvY2tlciwgYmxv
Y2soKSk7CisgICAgaWYgKCFkZXNjcmlwdGlvbi5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGJlZ2luRHVtcFByb2ZpbGluZyhvdXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgIG91
dC5wcmludChkZXNjcmlwdGlvbik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBQcm9maWxlc0ZvckJ5dGVjb2RlT2Zmc2V0KFByaW50
U3RyZWFtJiwgdW5zaWduZWQsIGJvb2wmKQoreworfQorCitzdGF0aWMgdm9pZCBkdW1wUmFyZUNh
c2VQcm9maWxlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIG5hbWUsIFJhcmVDYXNlUHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZykKK3sKKyAgICBpZiAoIXBy
b2ZpbGUgfHwgIXByb2ZpbGUtPm1fY291bnRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYmVn
aW5EdW1wUHJvZmlsaW5nKG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgb3V0LnByaW50
KG5hbWUsIHByb2ZpbGUtPm1fY291bnRlcik7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBBcml0aFBy
b2ZpbGUoUHJpbnRTdHJlYW0mIG91dCwgQXJpdGhQcm9maWxlKiBwcm9maWxlLCBib29sJiBoYXNQ
cmludGVkUHJvZmlsaW5nKQoreworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYmVnaW5EdW1wUHJvZmlsaW5nKG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAg
b3V0LnByaW50KCJyZXN1bHRzOiAiLCAqcHJvZmlsZSk7Cit9CisKK3RlbXBsYXRlPD4KK3ZvaWQg
Qnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcFByb2ZpbGVzRm9yQnl0ZWNvZGVPZmZzZXQo
UHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbG9jYXRpb24sIGJvb2wmIGhhc1ByaW50ZWRQcm9m
aWxpbmcpCit7CisgICAgZHVtcFJhcmVDYXNlUHJvZmlsZShvdXQsICJyYXJlIGNhc2U6ICIsIGJs
b2NrKCktPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGxvY2F0aW9uKSwgaGFzUHJp
bnRlZFByb2ZpbGluZyk7CisgICAgeworICAgICAgICBkdW1wQXJpdGhQcm9maWxlKG91dCwgYmxv
Y2soKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobG9jYXRpb24pLCBoYXNQcmludGVk
UHJvZmlsaW5nKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBWZWN0b3I8REZH
OjpGcmVxdWVudEV4aXRTaXRlPiBleGl0U2l0ZXMgPSBibG9jaygpLT51bmxpbmtlZENvZGVCbG9j
aygpLT5leGl0UHJvZmlsZSgpLmV4aXRTaXRlc0Zvcihsb2NhdGlvbik7CisgICAgaWYgKCFleGl0
U2l0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dC5wcmludCgiICEhIGZyZXF1ZW50IGV4aXRz
OiAiKTsKKyAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICBmb3IgKGF1dG8mIGV4
aXRTaXRlIDogZXhpdFNpdGVzKQorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBleGl0U2l0
ZS5raW5kKCksICIgIiwgZXhpdFNpdGUuaml0VHlwZSgpKTsKKyAgICB9CisjZWxzZSAvLyBFTkFC
TEUoREZHX0pJVCkKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorfQorCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KIFZNKiBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnZtKCkgY29uc3QKIHsKQEAgLTU1LDExICsyNTAsNDAgQEAgY29uc3QgSWRlbnRp
ZmllciYgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjppZGVudGlmaWVyKGludCBpbmRleCkgY29uc3QK
ICAgICByZXR1cm4gYmxvY2soKS0+aWRlbnRpZmllcihpbmRleCk7CiB9CiAKK3RlbXBsYXRlPGNs
YXNzIEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQgcHJpbnRMb2NhdGlvbkFuZE9wKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciog
b3ApCit7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJS0xN3MgIiwgbG9jYXRpb24sIG9wKTsKK30K
Kwogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQg
aW5kZXgpCiB7CiAgICAgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
OwogfQogCitORVZFUl9JTkxJTkUgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnSG9va05hbWUoaW50
IGRlYnVnSG9va1R5cGUpCit7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tUeXBl
PihkZWJ1Z0hvb2tUeXBlKSkgeworICAgIGNhc2UgRGlkRW50ZXJDYWxsRnJhbWU6CisgICAgICAg
IHJldHVybiAiZGlkRW50ZXJDYWxsRnJhbWUiOworICAgIGNhc2UgV2lsbExlYXZlQ2FsbEZyYW1l
OgorICAgICAgICByZXR1cm4gIndpbGxMZWF2ZUNhbGxGcmFtZSI7CisgICAgY2FzZSBXaWxsRXhl
Y3V0ZVN0YXRlbWVudDoKKyAgICAgICAgcmV0dXJuICJ3aWxsRXhlY3V0ZVN0YXRlbWVudCI7Cisg
ICAgY2FzZSBXaWxsRXhlY3V0ZUV4cHJlc3Npb246CisgICAgICAgIHJldHVybiAid2lsbEV4ZWN1
dGVFeHByZXNzaW9uIjsKKyAgICBjYXNlIFdpbGxFeGVjdXRlUHJvZ3JhbToKKyAgICAgICAgcmV0
dXJuICJ3aWxsRXhlY3V0ZVByb2dyYW0iOworICAgIGNhc2UgRGlkRXhlY3V0ZVByb2dyYW06Cisg
ICAgICAgIHJldHVybiAiZGlkRXhlY3V0ZVByb2dyYW0iOworICAgIGNhc2UgRGlkUmVhY2hCcmVh
a3BvaW50OgorICAgICAgICByZXR1cm4gImRpZFJlYWNoQnJlYWtwb2ludCI7CisgICAgfQorCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gIiI7Cit9CisKIHRl
bXBsYXRlPGNsYXNzIEJsb2NrPgogQ1N0cmluZyBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnJlZ2lz
dGVyTmFtZShpbnQgcikgY29uc3QKIHsKQEAgLTY5LDYgKzI5MywxMSBAQCBDU3RyaW5nIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cmVnaXN0ZXJOYW1lKGludCByKSBjb25zdAogICAgIHJldHVybiB0
b0NTdHJpbmcoVmlydHVhbFJlZ2lzdGVyKHIpKTsKIH0KIAorc3RhdGljIENTdHJpbmcgaWROYW1l
KGludCBpZDAsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIHJldHVybiB0b0NTdHJp
bmcoaWRlbnQuaW1wbCgpLCAiKEBpZCIsIGlkMCwgIikiKTsKK30KKwogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+CiBDU3RyaW5nIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6Y29uc3RhbnROYW1lKGludCBp
bmRleCkgY29uc3QKIHsKQEAgLTc3LDQzICszMDYsMTQ5MCBAQCBDU3RyaW5nIEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6Y29uc3RhbnROYW1lKGludCBpbmRleCkgY29uc3QKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRMb2NhdGlvbkFu
ZE9wKEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50VW5hcnlPcChQcmludFN0cmVhbSYgb3V0
LCBpbnQgbG9jYXRpb24sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBjaGFyKiBvcCkKK3sKKyAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKworICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGxvY2F0aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50QmluYXJ5T3AoUHJp
bnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1
Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApCit7CisgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCBvcCk7CisgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9j
azo6SW5zdHJ1Y3Rpb24qLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
aW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKIHsKLSAgICBtX291dC5wcmludGYoIlslNHVd
ICUtMThzICIsIGxvY2F0aW9uLCBvcCk7CisgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmludGYoIiVzLCAlZCgtPiVk
KSIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcEJ5dGVjb2RlKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGl0LCBjb25zdCBJQ1N0
YXR1c01hcCYpCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDb21wYXJlSnVtcChQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qLCBjb25z
dCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBj
aGFyKiBvcCkKIHsKLSAgICA6OkpTQzo6ZHVtcEJ5dGVjb2RlKHRoaXMsIGl0Lm9mZnNldCgpLCBp
dC5wdHIoKSk7Ci0gICAgbV9vdXQucHJpbnQoIlxuIik7CisgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IG9mZnNl
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0
aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQoLT4lZCkiLCByZWdpc3Rl
ck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRp
b24gKyBvZmZzZXQpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0
YXR1c01hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRPcChQcmlu
dFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVj
dGlvbiomIGl0KQogewotICAgIEJ5dGVjb2RlRHVtcGVyIGR1bXBlcihibG9jaywgb3V0KTsKLSAg
ICBkdW1wZXIuZHVtcEJ5dGVjb2RlKGl0LCBzdGF0dXNNYXApOworICAgIGNvbnN0IGNoYXIqIG9w
OworICAgIHN3aXRjaCAoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKCppdCkpIHsKKyAgICBjYXNl
IG9wX2dldF9ieV9pZDoKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKKyAgICAgICAgb3AgPSAiZ2V0X2J5
X2lkX3Byb3RvX2xvYWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF91
bnNldDoKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3Vuc2V0IjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgICAgICBvcCA9ICJhcnJheV9sZW5ndGgi
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworI2lmIENPTVBJTEVSX1FVSVJLKENPTlNJREVSU19VTlJFQUNIQUJMRV9D
T0RFKQorICAgICAgICBvcCA9IDA7CisjZW5kaWYKKyAgICB9CisgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0
aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZp
ZXIoaWQwKSkuZGF0YSgpKTsKKyAgICBpdCArPSA0OyAvLyBJbmNyZW1lbnQgdXAgdG8gdGhlIHZh
bHVlIHByb2ZpbGVyLgorfQorCitzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IGNoYXIqIG5hbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKK3sKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgb3V0LnByaW50ZigiJXMgPSAlcCIsIG5hbWUsIHN0cnVjdHVyZSk7CisKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShpZGVudC5pbXBs
KCkpOworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgb3V0LnByaW50
ZigiIChvZmZzZXQgPSAlZCkiLCBvZmZzZXQpOworfQorCitzdGF0aWMgdm9pZCBkdW1wQ2hhaW4o
UHJpbnRTdHJlYW0mIG91dCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKK3sKKyAgICBvdXQucHJpbnRmKCJjaGFpbiA9ICVwOiBbIiwgY2hhaW4pOworICAg
IGJvb2wgZmlyc3QgPSB0cnVlOworICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGN1
cnJlbnRTdHJ1Y3R1cmUgPSBjaGFpbi0+aGVhZCgpOyAqY3VycmVudFN0cnVjdHVyZTsgKytjdXJy
ZW50U3RydWN0dXJlKSB7CisgICAgICAgIGlmIChmaXJzdCkKKyAgICAgICAgICAgIGZpcnN0ID0g
ZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAg
ICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgY3VycmVudFN0cnVjdHVyZS0+Z2V0KCks
IGlkZW50KTsKKyAgICB9CisgICAgb3V0LnByaW50ZigiXSIpOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wSWRlbnRpZmllcnMoKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50
U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkK
K3sKKyAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBs
b2NhdGlvbjsKKworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihpbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpOworCisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVs
bCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRp
b25zLgorCisgICAgaWYgKEludGVycHJldGVyOjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvblswXSkg
PT0gb3BfZ2V0X2FycmF5X2xlbmd0aCkKKyAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KGFycmF5
X2xlbmd0aCkiKTsKKyAgICBlbHNlIGlmIChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IGdldFN0
cnVjdHVyZUlEKGluc3RydWN0aW9uWzRdKSkgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHZtKCktPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCk7CisgICAg
ICAgIG91dC5wcmludGYoIiBsbGludCgiKTsKKyAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJz
dHJ1Y3QiLCBzdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIpOworICAg
ICAgICBpZiAoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9uWzBdKSA9PSBvcF9n
ZXRfYnlfaWRfcHJvdG9fbG9hZCkKKyAgICAgICAgICAgIG91dC5wcmludGYoIiBwcm90byglcCki
LCBnZXRQb2ludGVyKGluc3RydWN0aW9uWzZdKSk7CisgICAgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVP
cmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgeworICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8gPSAqc3R1YlB0cjsKKyAgICAgICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKKyAg
ICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBHQykiKTsKKworICAgICAgICBvdXQucHJp
bnRmKCIgaml0KCIpOworCisgICAgICAgIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSA9IG51bGxw
dHI7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBzdHViID0gbnVsbHB0cjsKKworICAgICAg
ICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSkgeworICAgICAgICBjYXNlIENhY2hlVHlwZTo6
R2V0QnlJZFNlbGY6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJzZWxmIik7CisgICAgICAgICAg
ICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJl
LmdldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHVi
OgorICAgICAgICAgICAgb3V0LnByaW50Zigic3R1YiIpOworICAgICAgICAgICAgc3R1YiA9IHN0
dWJJbmZvLnUuc3R1YjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhY2hlVHlw
ZTo6VW5zZXQ6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpBcnJheUxlbmd0aDoKKyAgICAgICAgICAg
IG91dC5wcmludGYoIkFycmF5TGVuZ3RoIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0aDoKKyAgICAgICAgICAgIG91dC5wcmludGYoIlN0
cmluZ0xlbmd0aCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmFzZVN0cnVjdHVyZSkgeworICAgICAgICAgICAg
b3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0
IiwgYmFzZVN0cnVjdHVyZSwgaWRlbnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0dWIp
CisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgKnN0dWIpOworCisgICAgICAgIG91dC5wcmlu
dGYoIikiKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOworI2Vu
ZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKK3sKKyAgICBjb25zdCBhdXRvKiBpbnN0
cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKKworICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwor
CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1
cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgorCisgICAgb3V0LnByaW50KCIs
ICIsIGdldFB1dEJ5SWRGbGFncyhpbnN0cnVjdGlvbls4XSkpOworCisgICAgaWYgKFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEID0gZ2V0U3RydWN0dXJlSUQoaW5zdHJ1Y3Rpb25bNF0pKSB7CisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KHN0cnVjdHVyZUlEKTsKKyAgICAgICAgb3V0LnByaW50KCIgbGxpbnQoIik7CisgICAgICAg
IGlmIChTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IGdldFN0cnVjdHVyZUlEKGluc3RydWN0
aW9uWzZdKSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSB2bSgpLT5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAgICAg
ZHVtcFN0cnVjdHVyZShvdXQsICJwcmV2Iiwgc3RydWN0dXJlLCBpZGVudCk7CisgICAgICAgICAg
ICBvdXQucHJpbnQoIiwgIik7CisgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgIm5leHQi
LCBuZXdTdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4gPSBnZXRTdHJ1Y3R1cmVDaGFpbihpbnN0cnVjdGlvbls3XSkpIHsKKyAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiwgIik7CisgICAgICAgICAgICAgICAgZHVtcENoYWluKG91dCwgY2hh
aW4sIGlkZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBk
dW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIHN0cnVjdHVyZSwgaWRlbnQpOworICAgICAgICBv
dXQucHJpbnQoIikiKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikp
LnN0dWJJbmZvKSB7CisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHVi
UHRyOworICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQorICAgICAgICAgICAgb3V0LnBy
aW50KCIgKFJlc2V0IEJ5IEdDKSIpOworCisgICAgICAgIG91dC5wcmludGYoIiBqaXQoIik7CisK
KyAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWNo
ZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgorICAgICAgICAgICAgb3V0LnByaW50KCJyZXBsYWNlLCAi
KTsKKyAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0Iiwgc3R1YkluZm8udS5i
eUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLCBpZGVudCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgICAgIG91dC5w
cmludCgic3R1YiwgIiwgKnN0dWJJbmZvLnUuc3R1Yik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJ1bnNldCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgb3V0LnByaW50ZigiKSIpOworICAgIH0KKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1
cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXApCit7CisgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdp
bigpICsgbG9jYXRpb247CisKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZp
ZXIoaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7
IC8vIHRlbGwgdGhlIGNvbXBpbGVyIHRvIHNodXQgdXAgaW4gY2VydGFpbiBwbGF0Zm9ybSBjb25m
aWd1cmF0aW9ucy4KKworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1YkluZm8p
IHsKKyAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7CisgICAg
ICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVz
ZXQgQnkgR0MpIik7CisKKyAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKKworICAgICAgICBT
dHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBudWxscHRyOworICAgICAgICBQb2x5bW9ycGhpY0Fj
Y2Vzcyogc3R1YiA9IG51bGxwdHI7CisKKyAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5
cGUpIHsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CisgICAgICAgICAgICBv
dXQucHJpbnRmKCJzZWxmIik7CisgICAgICAgICAgICBiYXNlU3RydWN0dXJlID0gc3R1YkluZm8u
dS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOgorICAgICAgICAgICAgb3V0LnByaW50Zigi
c3R1YiIpOworICAgICAgICAgICAgc3R1YiA9IHN0dWJJbmZvLnUuc3R1YjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJ1bnNldCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmFzZVN0cnVjdHVyZSkgeworICAgICAgICAg
ICAgb3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3Ry
dWN0IiwgYmFzZVN0cnVjdHVyZSwgaWRlbnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0
dWIpCisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgKnN0dWIpOworCisgICAgICAgIG91dC5w
cmludGYoIikiKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvdXQpOworICAgIFVO
VVNFRF9QQVJBTShzdGF0dXNNYXApOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoSklUKQordGVt
cGxhdGU8dHlwZW5hbWUgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENh
bGxMaW5rU3RhdHVzKFByaW50U3RyZWFtJiwgdW5zaWduZWQsIGNvbnN0IElDU3RhdHVzTWFwJikK
K3sKK30KKwordGVtcGxhdGU8Pgordm9pZCBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1w
Q2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit7CisgICAgaWYgKGJsb2NrKCktPmppdFR5cGUoKSAh
PSBKSVRDb2RlOjpGVExKSVQpCisgICAgICAgIG91dC5wcmludCgiIHN0YXR1cygiLCBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcihibG9jaygpLCBsb2NhdGlvbiwgc3RhdHVzTWFwKSwgIikiKTsK
K30KKyNlbmRpZgorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVE
dW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBJ
Q1N0YXR1c01hcCYgc3RhdHVzTWFwKQoreworICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICBpbnQgZnVuYyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIGludCBhcmdDb3VudCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIGludCByZWdpc3Rlck9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgb3ApOwor
ICAgIG91dC5wcmludChyZWdpc3Rlck5hbWUoZHN0KSwgIiwgIiwgcmVnaXN0ZXJOYW1lKGZ1bmMp
LCAiLCAiLCBhcmdDb3VudCwgIiwgIiwgcmVnaXN0ZXJPZmZzZXQpOworICAgIG91dC5wcmludCgi
ICh0aGlzIGF0ICIsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIC1yZWdpc3Rlck9mZnNl
dCksICIpIik7CisgICAgaWYgKGNhY2hlRHVtcE1vZGUgPT0gRHVtcENhY2hlcykgeworICAgICAg
ICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gZ2V0Q2FsbExpbmtJbmZvKGl0WzFd
KTsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUpIHsKKyAgICAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgp
OworICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0
aW9uKj4oKnZtKCksIG9iamVjdCkpCisgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50
KCVwLCBleGVjICVwKSIsIGZ1bmN0aW9uLCBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgbGxpbnQoJXApIiwgb2Jq
ZWN0KTsKKyAgICAgICAgfQorI2lmIEVOQUJMRShKSVQpCisgICAgICAgIGlmIChDYWxsTGlua0lu
Zm8qIGluZm8gPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5jYWxsTGlua0lu
Zm8pIHsKKyAgICAgICAgICAgIGlmICghaW5mby0+aXNEaXJlY3QoKSAmJiBpbmZvLT5oYXZlTGFz
dFNlZW5DYWxsZWUoKSkgeworICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbmZv
LT5sYXN0U2VlbkNhbGxlZSgpOworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9
IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KCp2bSgpLCBvYmplY3QpKQorICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIgaml0KCVwLCBleGVjICVwKSIsIGZ1bmN0aW9uLCBmdW5jdGlv
bi0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludGYoIiBqaXQoJXApIiwgb2JqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNN
YXApOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CisjZW5kaWYKKyAg
ICB9CisgICAgKytpdDsKKyAgICArK2l0OworICAgIGR1bXBBcnJheVByb2ZpbGluZyhvdXQsIGl0
LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwg
aGFzUHJpbnRlZFByb2ZpbGluZyk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiBvdXQsIGlu
dCBsb2NhdGlvbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0
IGNoYXIqIG9wKQoreworICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIGludCBp
ZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsIG9wKTsKKyAgICBvdXQu
cHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAs
IGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7CisgICAg
aXQgKz0gNTsKK30KKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVy
PEJsb2NrPjo6cHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKFByaW50U3RyZWFtJiBv
dXQsIGludCBsb2NhdGlvbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQs
IGNvbnN0IGNoYXIqIG9wLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBsb2NhdGlvbiwgaXQsIG9wKTsKKyAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFt
ZShvcGVyYW5kKS5kYXRhKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
dHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCit7CisgICAg
aW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKKyAgICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcg
PSBmYWxzZTsKKyAgICBPcGNvZGVJRCBvcGNvZGUgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQo
Kml0KTsKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2Ugb3BfZW50ZXI6IHsKKyAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZW50ZXIiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOiB7CisgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rl
ck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJnZXRfc2NvcGUiLCByMCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOiB7CisgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6IHsKKyAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJjcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czog
eworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMiKTsK
KyAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2FyZ3VtZW50X2NvdW50OiB7CisgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uT3BBbmRS
ZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJhcmd1bWVudF9jb3VudCIsIHIwKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50OiB7CisgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgaW5kZXggPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5k
KG91dCwgbG9jYXRpb24sIGl0LCAiYXJndW1lbnQiLCByMCk7CisgICAgICAgIG91dC5wcmludGYo
IiwgJWQiLCBpbmRleCk7CisgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfY3Jl
YXRlX3Jlc3Q6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudE9m
ZnNldCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjcmVhdGVfcmVzdCIpOworICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRh
dGEoKSk7CisgICAgICAgIG91dC5wcmludGYoIkFyZ3VtZW50c09mZnNldDogJXUiLCBhcmd1bWVu
dE9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9yZXN0X2xl
bmd0aDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X3Jlc3RfbGVuZ3RoIik7Cisg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7CisgICAg
ICAgIHVuc2lnbmVkIGFyZ3VtZW50T2Zmc2V0ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Cisg
ICAgICAgIG91dC5wcmludGYoIkFyZ3VtZW50c09mZnNldDogJXUiLCBhcmd1bWVudE9mZnNldCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOiB7CisgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICB1bnNpZ25lZCBjYWNoZWRGdW5jdGlvbiA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJjcmVhdGVfdGhpcyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICV1LCAldSIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgaW5mZXJy
ZWRJbmxpbmVDYXBhY2l0eSwgY2FjaGVkRnVuY3Rpb24pOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF90b190aGlzOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2Nh
dGlvbiwgaXQsICJ0b190aGlzIiwgcjApOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdldFN0cnVjdHVyZSgqKCsraXQpKTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZSkKKyAgICAgICAg
ICAgIG91dC5wcmludCgiLCBjYWNoZShzdHJ1Y3QgPSAiLCBSYXdQb2ludGVyKHN0cnVjdHVyZSks
ICIpIik7CisgICAgICAgIG91dC5wcmludCgiLCAiLCBnZXRUb1RoaXNTdGF0dXMoKigrK2l0KSkp
OworICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGlu
Zyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2NoZWNrX3RkejogeworICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9w
QW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAib3BfY2hlY2tfdGR6IiwgcjAp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CisgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICB1bnNpZ25lZCBpbmZlcnJl
ZElubGluZUNhcGFjaXR5ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19vYmplY3QiKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiJXMsICV1IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGluZmVycmVkSW5saW5lQ2Fw
YWNpdHkpOworICAgICAgICArK2l0OyAvLyBTa2lwIG9iamVjdCBhbGxvY2F0aW9uIHByb2ZpbGUu
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25ld19hcnJheTogeworICAgICAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBhcmd2ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19hcnJheSIpOwor
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoYXJndikuZGF0YSgpLCBhcmdjKTsKKyAgICAgICAgKytpdDsgLy8gU2tp
cCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGUuCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIG9wX25ld19hcnJheV93aXRoX3NwcmVhZDogeworICAgICAgICBpbnQgZHN0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBhcmd2ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19hcnJheV93aXRoX3NwcmVhZCIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICVkLCAiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShhcmd2KS5kYXRhKCksIGFyZ2MpOworICAgICAgICB1bnNpZ25lZCBiaXRWZWN0
b3JJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICBjb25zdCBCaXRWZWN0
b3ImIGJpdFZlY3RvciA9IGJsb2NrKCktPmJpdFZlY3RvcihiaXRWZWN0b3JJbmRleCk7CisgICAg
ICAgIG91dC5wcmludCgiQml0VmVjdG9yOiIsIGJpdFZlY3RvckluZGV4LCAiOiIpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ2MpOyBp
KyspIHsKKyAgICAgICAgICAgIGlmIChiaXRWZWN0b3IuZ2V0KGkpKQorICAgICAgICAgICAgICAg
IG91dC5wcmludCgiMSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG91dC5w
cmludCgiMCIpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X3NwcmVhZDogeworICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCBhcmcgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgbG9jYXRpb24sIGl0LCAic3ByZWFkIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGFyZykuZGF0YSgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZTog
eworICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBsZW5n
dGggPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCAibmV3X2FycmF5X3dpdGhfc2l6ZSIpOworICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShsZW5ndGgp
LmRhdGEoKSk7CisgICAgICAgICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxl
LgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOiB7
CisgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGFycmF5
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgIm5ld19hcnJheV9idWZmZXIiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYXJyYXkpLmRhdGEo
KSk7CisgICAgICAgICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZXdfcmVnZXhwOiB7CisgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcmUwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5l
d19yZWdleHAiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyZTApLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX21vdjogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm1vdiIpOworICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9wcm9maWxlX3R5cGU6IHsK
KyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICsraXQ7CisgICAg
ICAgICsraXQ7CisgICAgICAgICsraXQ7CisgICAgICAgICsraXQ7CisgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm9wX3Byb2ZpbGVfdHlwZSIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6IHsKKyAgICAgICAg
QmFzaWNCbG9ja0xvY2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSBnZXRCYXNpY0Jsb2NrTG9j
YXRpb24oKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9u
LCBpdCwgInByb2ZpbGVfY29udHJvbF9mbG93Iik7CisgICAgICAgIGlmIChiYXNpY0Jsb2NrTG9j
YXRpb24pCisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJWQsICVkXSIsIGJhc2ljQmxvY2tMb2Nh
dGlvbi0+c3RhcnRPZmZzZXQoKSwgYmFzaWNCbG9ja0xvY2F0aW9uLT5lbmRPZmZzZXQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25vdDogeworICAgICAgICBwcmludFVu
YXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJub3QiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2Ugb3BfZXE6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9uLCBp
dCwgImVxIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2VxX251bGw6IHsK
KyAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiZXFfbnVsbCIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZXE6IHsKKyAgICAgICAgcHJpbnRCaW5h
cnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5lcSIpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBvcF9uZXFfbnVsbDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlv
biwgaXQsICJuZXFfbnVsbCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9z
dHJpY3RlcTogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAic3Ry
aWN0ZXEiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbnN0cmljdGVxOiB7
CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuc3RyaWN0ZXEiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbGVzczogeworICAgICAgICBwcmlu
dEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAibGVzcyIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9sZXNzZXE6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgImxlc3NlcSIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBv
cF9ncmVhdGVyOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJn
cmVhdGVyIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dyZWF0ZXJlcTog
eworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ3JlYXRlcmVxIik7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2JlbG93OiB7CisgICAgICAgIHBy
aW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJiZWxvdyIpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBvcF9iZWxvd2VxOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJiZWxvd2VxIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIG9wX2luYzogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAi
aW5jIiwgcjApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9kZWM6IHsKKyAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25P
cEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGxvY2F0aW9uLCBpdCwgImRlYyIsIHIwKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7CisgICAgICAgIHByaW50
VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgInRvX251bWJlciIpOworICAgICAgICBkdW1wVmFs
dWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIG9wX3RvX3N0cmluZzogeworICAgICAgICBwcmludFVuYXJ5T3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJ0b19zdHJpbmciKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2Ugb3BfdG9fb2JqZWN0OiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0
aW9uLCBpdCwgInRvX29iamVjdCIpOworICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIG91dC5wcmludGYoIiAlcyIsIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQw
KSkuZGF0YSgpKTsKKyAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50
ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZWdhdGU6
IHsKKyAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAibmVnYXRlIik7Cisg
ICAgICAgICsraXQ7IC8vIG9wX25lZ2F0ZSBoYXMgYW4gZXh0cmEgb3BlcmFuZCBmb3IgdGhlIEFy
aXRoUHJvZmlsZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfYWRkOiB7Cisg
ICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJhZGQiKTsKKyAgICAgICAg
KytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbXVsOiB7CisgICAgICAg
IHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJtdWwiKTsKKyAgICAgICAgKytpdDsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZGl2OiB7CisgICAgICAgIHByaW50
QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJkaXYiKTsKKyAgICAgICAgKytpdDsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbW9kOiB7CisgICAgICAgIHByaW50QmluYXJ5
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJtb2QiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfcG93OiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJwb3ciKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfc3ViOiB7CisgICAg
ICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzdWIiKTsKKyAgICAgICAgKytp
dDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbHNoaWZ0OiB7CisgICAgICAg
IHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJsc2hpZnQiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3BfcnNoaWZ0OiB7CisgICAgICAgIHByaW50QmluYXJ5T3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJyc2hpZnQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfdXJzaGlmdDogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24s
IGl0LCAidXJzaGlmdCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9iaXRh
bmQ6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImJpdGFuZCIp
OworICAgICAgICArK2l0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9iaXR4
b3I6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIp
OworICAgICAgICArK2l0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9iaXRv
cjogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiYml0b3IiKTsK
KyAgICAgICAgKytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfb3ZlcnJp
ZGVzX2hhc19pbnN0YW5jZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlv
biwgaXQsICJvdmVycmlkZXNfaGFzX2luc3RhbmNlIik7CisgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfaW5zdGFuY2VvZjogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJpbnN0YW5jZW9mIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
aW5zdGFuY2VvZl9jdXN0b206IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluc3RhbmNlb2Zf
Y3VzdG9tIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF91bnNpZ25lZDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJ1bnNpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBv
cF90eXBlb2Y6IHsKKyAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAidHlw
ZW9mIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2lzX2VtcHR5OiB7Cisg
ICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImlzX2VtcHR5Iik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZDogeworICAgICAgICBw
cmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc191bmRlZmluZWQiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXNfYm9vbGVhbjogeworICAgICAgICBwcmludFVu
YXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19ib29sZWFuIik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX2lzX251bWJlcjogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJpc19udW1iZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBp
bnQgdHlwZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJpc19jZWxsX3dpdGhfdHlwZSIpOworICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCB0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXNf
b2JqZWN0OiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImlzX29i
amVjdCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pc19vYmplY3Rfb3Jf
bnVsbDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19vYmpl
Y3Rfb3JfbnVsbCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pc19mdW5j
dGlvbjogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19mdW5j
dGlvbiIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pbl9ieV9pZDogewor
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiaW5fYnlfaWQiKTsK
KyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5k
YXRhKCkpOworICAgICAgICBwcmludEluQnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0
YXR1c01hcCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2luX2J5X3ZhbDog
eworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiaW5fYnlfdmFsIik7
CisgICAgICAgIGR1bXBBcnJheVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5n
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDogewor
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAidHJ5X2dldF9ieV9p
ZCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlk
MCkpLmRhdGEoKSk7CisgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmlu
dGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZ2V0X2J5
X2lkX2RpcmVjdDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUo
aWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CisgICAgICAgIGl0ICs9IDI7IC8vIEluY3Jl
bWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CisgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvX2xv
YWQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfdW5zZXQ6CisgICAgY2FzZSBvcF9nZXRfYXJyYXlf
bGVuZ3RoOiB7CisgICAgICAgIHByaW50R2V0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0KTsKKyAg
ICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3RhdHVzTWFwKTsK
KyAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlz
OiB7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdldF9i
eV9pZF93aXRoX3RoaXMiKTsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIGlkTmFt
ZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAgICAgICAgZHVtcFZhbHVlUHJvZmls
aW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjMgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiZ2V0X2J5X3ZhbF93aXRoX3RoaXMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7Cisg
ICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAg
IHByaW50UHV0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkIik7CisgICAgICAg
IHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6IHsKKyAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfd2l0aF90aGlzIik7CisgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGlu
dCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0
X2J5X3ZhbF93aXRoX3RoaXMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6IHsKKyAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgaW50IG4wID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJwdXRfZ2V0dGVyX2J5X2lkIik7CisgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50
aWZpZXIoaWQwKSkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOiB7CisgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgbG9jYXRpb24sIGl0LCAicHV0X3NldHRlcl9ieV9pZCIpOworICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVkLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBp
ZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6
IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG4wID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRp
b24sIGl0LCAicHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQiKTsKKyAgICAgICAgb3V0LnByaW50Zigi
JXMsICVzLCAlZCwgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAs
IGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3BfcHV0X2dldHRlcl9ieV92YWw6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgbjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9nZXR0
ZXJfYnlfdmFsIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQsICVzIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJO
YW1lKHIyKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9wdXRf
c2V0dGVyX2J5X3ZhbDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBuMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X3NldHRlcl9ieV92
YWwiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjIp
LmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2RlZmluZV9kYXRh
X3Byb3BlcnR5OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIyID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfZGF0YV9wcm9wZXJ0
eSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OiB7CisgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMyA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5Iik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzLCAlcyIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpLCByZWdpc3Rlck5hbWUocjQp
LmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2RlbF9ieV9pZDog
eworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZGVsX2J5X2lk
Iik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQw
KSkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZ2V0X2J5X3Zh
bDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJnZXRfYnlf
dmFsIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgp
KTsKKyAgICAgICAgZHVtcEFycmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxp
bmcpOworICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2Zp
bGluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsK
KyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2J5X3ZhbCIp
OworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Cisg
ICAgICAgIGR1bXBBcnJheVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6IHsK
KyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2J5X3ZhbF9k
aXJlY3QiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRh
KCkpOworICAgICAgICBkdW1wQXJyYXlQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2Zp
bGluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsK
KyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZGVsX2J5X3ZhbCIp
OworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2ptcDogeworICAgICAgICBpbnQgb2Zm
c2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGxvY2F0aW9uLCBpdCwgImptcCIpOworICAgICAgICBvdXQucHJpbnRmKCIlZCgtPiVkKSIsIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBvcF9qdHJ1ZTogeworICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGJlZ2luLCBp
dCwgbG9jYXRpb24sICJqdHJ1ZSIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBv
cF9qZmFsc2U6IHsKKyAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0LCBiZWdpbiwgaXQs
IGxvY2F0aW9uLCAiamZhbHNlIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X2plcV9udWxsOiB7CisgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgYmVnaW4sIGl0
LCBsb2NhdGlvbiwgImplcV9udWxsIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IG9wX2puZXFfbnVsbDogeworICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGJlZ2lu
LCBpdCwgbG9jYXRpb24sICJqbmVxX251bGwiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3Bfam5lcV9wdHI6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlciA9IGdldFNwZWNpYWxQb2ludGVyKCoo
KytpdCkpOworICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImpuZXFfcHRyIik7CisgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlZCAoJXApLCAlZCgtPiVkKSIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCBwb2ludGVyLCBhY3R1YWxQb2ludGVyRm9yKHBvaW50ZXIpLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgKytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3Bfamxlc3M6IHsKKyAgICAgICAgcHJpbnRDb21wYXJlSnVtcChvdXQsIGJlZ2luLCBp
dCwgbG9jYXRpb24sICJqbGVzcyIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBv
cF9qbGVzc2VxOiB7CisgICAgICAgIHByaW50Q29tcGFyZUp1bXAob3V0LCBiZWdpbiwgaXQsIGxv
Y2F0aW9uLCAiamxlc3NlcSIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9q
Z3JlYXRlcjogeworICAgICAgICBwcmludENvbXBhcmVKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2Nh
dGlvbiwgImpncmVhdGVyIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2pn
cmVhdGVyZXE6IHsKKyAgICAgICAgcHJpbnRDb21wYXJlSnVtcChvdXQsIGJlZ2luLCBpdCwgbG9j
YXRpb24sICJqZ3JlYXRlcmVxIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X2pubGVzczogeworICAgICAgICBwcmludENvbXBhcmVKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2Nh
dGlvbiwgImpubGVzcyIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9qbmxl
c3NlcTogeworICAgICAgICBwcmludENvbXBhcmVKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2NhdGlv
biwgImpubGVzc2VxIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2puZ3Jl
YXRlcjogeworICAgICAgICBwcmludENvbXBhcmVKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2NhdGlv
biwgImpuZ3JlYXRlciIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9qbmdy
ZWF0ZXJlcTogeworICAgICAgICBwcmludENvbXBhcmVKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2Nh
dGlvbiwgImpuZ3JlYXRlcmVxIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X2plcTogeworICAgICAgICBwcmludENvbXBhcmVKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2NhdGlv
biwgImplcSIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9qbmVxOiB7Cisg
ICAgICAgIHByaW50Q29tcGFyZUp1bXAob3V0LCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiam5lcSIp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9qc3RyaWN0ZXE6IHsKKyAgICAg
ICAgcHJpbnRDb21wYXJlSnVtcChvdXQsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqc3RyaWN0ZXEi
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfam5zdHJpY3RlcTogeworICAg
ICAgICBwcmludENvbXBhcmVKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImpuc3RyaWN0
ZXEiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfamJlbG93OiB7CisgICAg
ICAgIHByaW50Q29tcGFyZUp1bXAob3V0LCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiamJlbG93Iik7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2piZWxvd2VxOiB7CisgICAgICAg
IHByaW50Q29tcGFyZUp1bXAob3V0LCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiamJlbG93ZXEiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbG9vcF9oaW50OiB7CisgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImxvb3BfaGludCIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9jaGVja190cmFwczogeworICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjaGVja190cmFwcyIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibm9wIik7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfYmVnaW46IHsKKyAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAic3VwZXJfc2FtcGxlcl9iZWdpbiIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDogeworICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzdXBlcl9zYW1wbGVy
X2VuZCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2No
aWNrZW5fcHJvbG9ndWU6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImxvZ19zaGFkb3df
Y2hpY2tlbl9wcm9sb2d1ZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbG9nX3No
YWRvd19jaGlja2VuX3RhaWw6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJsb2dfc2hhZG93X2NoaWNrZW5fdGFpbCIpOwor
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBv
cF9zd2l0Y2hfaW1tOiB7CisgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzd2l0Y2hfaW1tIik7CisgICAg
ICAgIG91dC5wcmludGYoIiVkLCBkZWZhdWx0OiVkKC0+JWQpIiwgdGFibGVJbmRleCwgZGVmYXVs
dFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0KTsKKyAgICAgICAgY29uc3QgYXV0byYg
dGFibGUgPSBibG9jaygpLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgb3V0LnByaW50ZigiLCAlZDolZCgtPiVkKSIsIGksIHRhYmxlLmJyYW5jaE9m
ZnNldHNbaV0sIGxvY2F0aW9uICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CisgICAgICAgIG91
dC5wcmludCgiLCAiLCByZWdpc3Rlck5hbWUoc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAg
IGludCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBkZWZhdWx0
VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3Rl
ciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJzd2l0Y2hfY2hhciIpOworICAgICAgICBvdXQucHJpbnRmKCIlZCwgZGVm
YXVsdDolZCgtPiVkKSIsIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVm
YXVsdFRhcmdldCk7CisgICAgICAgIGNvbnN0IGF1dG8mIHRhYmxlID0gYmxvY2soKS0+c3dpdGNo
SnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG91dC5wcmludGYo
IiwgJWM6JWQoLT4lZCkiLCBpLCB0YWJsZS5icmFuY2hPZmZzZXRzW2ldLCBsb2NhdGlvbiArIHRh
YmxlLmJyYW5jaE9mZnNldHNbaV0pOworICAgICAgICBvdXQucHJpbnQoIiwgIiwgcmVnaXN0ZXJO
YW1lKHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7CisgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzd2l0Y2hf
c3RyaW5nIik7CisgICAgICAgIG91dC5wcmludGYoIiVkLCBkZWZhdWx0OiVkKC0+JWQpIiwgdGFi
bGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0KTsKKyAgICAg
ICAgY29uc3QgYXV0byYgdGFibGUgPSBibG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFi
bGVJbmRleCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgb2Zmc2V0IDogdGFibGUub2Zmc2V0
VGFibGUpIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiLCAiLCBJZGVudGlmaWVyOjpmcm9tVWlk
KHZtKCksIHN0YXRpY19jYXN0PFVuaXF1ZWRTdHJpbmdJbXBsKj4ob2Zmc2V0LmtleS5nZXQoKSkp
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIjolZCglZCkiLCBvZmZzZXQudmFsdWUuYnJhbmNo
T2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldC52YWx1ZS5icmFuY2hPZmZzZXQpOworICAgICAgICB9
CisgICAgICAgIG91dC5wcmludCgiLCAiLCByZWdpc3Rlck5hbWUoc2NydXRpbmVlUmVnaXN0ZXIp
LmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25ld19mdW5jOiB7
CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19mdW5jIik7
CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogeworICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmMiKTsKKyAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
bmV3X2FzeW5jX2Z1bmM6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgZjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9m
dW5jOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19h
c3luY19nZW5lcmF0b3JfZnVuYyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKKyAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X2Z1bmNfZXhwIik7Cisg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6IHsKKyAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQg
ZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmNfZXhwIik7CisgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBmMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25ld19hc3lu
Y19nZW5lcmF0b3JfZnVuY19leHA6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgZjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9j
YXRpb24sIGl0LCAib3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cCIpOworICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBv
cF9zZXRfZnVuY3Rpb25fbmFtZTogeworICAgICAgICBpbnQgZnVuY1JlZyA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzZXRfZnVuY3Rpb25fbmFt
ZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZnVuY1JlZyku
ZGF0YSgpLCByZWdpc3Rlck5hbWUobmFtZVJlZykuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfY2FsbDogeworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0
aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNN
YXApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF90YWlsX2NhbGw6IHsKKyAg
ICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2NhbGwiLCBEdW1wQ2Fj
aGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJjYWxsX2V2YWwiLCBEb250RHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgc3RhdHVzTWFwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBvcF9j
b25zdHJ1Y3RfdmFyYXJnczoKKyAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKKyAgICBjYXNlIG9w
X3RhaWxfY2FsbF92YXJhcmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzOiB7CisgICAgICAgIGludCByZXN1bHQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IGNhbGxlZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgdGhpc1ZhbHVlID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBhcmd1bWVudHMgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgaW50IGZpcnN0RnJlZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCB2YXJBcmdPZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
KytpdDsKKyAgICAgICAgY29uc3QgY2hhciogb3BOYW1lOworICAgICAgICBpZiAob3Bjb2RlID09
IG9wX2NhbGxfdmFyYXJncykKKyAgICAgICAgICAgIG9wTmFtZSA9ICJjYWxsX3ZhcmFyZ3MiOwor
ICAgICAgICBlbHNlIGlmIChvcGNvZGUgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MpCisgICAgICAg
ICAgICBvcE5hbWUgPSAiY29uc3RydWN0X3ZhcmFyZ3MiOworICAgICAgICBlbHNlIGlmIChvcGNv
ZGUgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCisgICAgICAgICAgICBvcE5hbWUgPSAidGFpbF9j
YWxsX3ZhcmFyZ3MiOworICAgICAgICBlbHNlIGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX2Zv
cndhcmRfYXJndW1lbnRzKQorICAgICAgICAgICAgb3BOYW1lID0gInRhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50cyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCBvcE5hbWUpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcywgJWQsICVk
IiwgcmVnaXN0ZXJOYW1lKHJlc3VsdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoY2FsbGVlKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZSh0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGFyZ3VtZW50
cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3RlciwgdmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgZHVt
cFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX3JldDogeworICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5k
KG91dCwgbG9jYXRpb24sIGl0LCAicmV0IiwgcjApOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlv
biwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0
dXNNYXApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9zdHJjYXQ6IHsKKyAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgY291bnQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAic3RyY2F0Iik7Cisg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAidG9fcHJpbWl0aXZlIik7CisgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjEpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dl
dF9lbnVtZXJhYmxlX2xlbmd0aDogeworICAgICAgICBpbnQgZHN0ID0gaXRbMV0udS5vcGVyYW5k
OworICAgICAgICBpbnQgYmFzZSA9IGl0WzJdLnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAib3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoIik7
CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGJhc2UpLmRhdGEoKSk7CisgICAgICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgo
b3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoKSAtIDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIG9wX2hhc19pbmRleGVkX3Byb3BlcnR5OiB7CisgICAgICAgIGludCBkc3QgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGJhc2UgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHByb3BlcnR5TmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0
eSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocHJvcGVydHlO
YW1lKS5kYXRhKCkpOworICAgICAgICBkdW1wQXJyYXlQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJp
bnRlZFByb2ZpbGluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHk6IHsKKyAgICAgICAgaW50IGRzdCA9IGl0WzFdLnUub3BlcmFuZDsK
KyAgICAgICAgaW50IGJhc2UgPSBpdFsyXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBwcm9wZXJ0
eU5hbWUgPSBpdFszXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBlbnVtZXJhdG9yID0gaXRbNF0u
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5Iik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFzZSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocHJvcGVydHlOYW1lKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
bnVtZXJhdG9yKS5kYXRhKCkpOworICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkpIC0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6IHsKKyAgICAgICAgaW50IGRzdCA9IGl0WzFdLnUub3Bl
cmFuZDsKKyAgICAgICAgaW50IGJhc2UgPSBpdFsyXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBw
cm9wZXJ0eU5hbWUgPSBpdFszXS51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGxvY2F0aW9uLCBpdCwgIm9wX2hhc19nZW5lcmljX3Byb3BlcnR5Iik7CisgICAgICAg
IG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShwcm9wZXJ0eU5hbWUpLmRhdGEoKSk7
CisgICAgICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgob3BfaGFzX2dlbmVyaWNfcHJvcGVydHkpIC0g
MTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZ2V0X2RpcmVjdF9wbmFtZTog
eworICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBiYXNl
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBwcm9wZXJ0eU5hbWUgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIGludCBlbnVtZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm9wX2dldF9kaXJlY3RfcG5hbWUiKTsKKyAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocHJvcGVydHlO
YW1lKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShpbmRleCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZW51
bWVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhh
c1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKworICAgIH0KKyAgICBjYXNlIG9w
X2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yOiB7CisgICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9w
ZXJhbmQ7CisgICAgICAgIGludCBiYXNlID0gaXRbMl0udS5vcGVyYW5kOworICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJvcF9nZXRfcHJvcGVydHlfZW51bWVy
YXRvciIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShiYXNlKS5kYXRhKCkpOworICAgICAgICBpdCArPSBPUENPREVf
TEVOR1RIKG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKSAtIDE7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lOiB7CisgICAgICAg
IGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBlbnVtZXJhdG9yID0gaXRb
Ml0udS5vcGVyYW5kOworICAgICAgICBpbnQgaW5kZXggPSBpdFszXS51Lm9wZXJhbmQ7CisgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm9wX2VudW1lcmF0b3Jf
c3RydWN0dXJlX3BuYW1lIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdp
c3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShlbnVtZXJhdG9yKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShpbmRleCkuZGF0YSgpKTsKKyAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSkgLSAxOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWU6IHsKKyAgICAgICAgaW50IGRz
dCA9IGl0WzFdLnUub3BlcmFuZDsKKyAgICAgICAgaW50IGVudW1lcmF0b3IgPSBpdFsyXS51Lm9w
ZXJhbmQ7CisgICAgICAgIGludCBpbmRleCA9IGl0WzNdLnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAib3BfZW51bWVyYXRvcl9nZW5lcmlj
X3BuYW1lIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUo
ZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShlbnVtZXJhdG9yKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShpbmRleCkuZGF0YSgpKTsKKyAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9lbnVtZXJh
dG9yX2dlbmVyaWNfcG5hbWUpIC0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3BfdG9faW5kZXhfc3RyaW5nOiB7CisgICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7
CisgICAgICAgIGludCBpbmRleCA9IGl0WzJdLnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAib3BfdG9faW5kZXhfc3RyaW5nIik7CisgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGluZGV4KS5kYXRhKCkpOworICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX3Rv
X2luZGV4X3N0cmluZykgLSAxOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9w
dXNoX3dpdGhfc2NvcGU6IHsKKyAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBpbnQgbmV3U2NvcGUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGN1
cnJlbnRTY29wZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXNoX3dpdGhfc2NvcGUiKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KG5ld1Njb3BlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShjdXJyZW50U2NvcGUpLmRhdGEoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6IHsKKyAg
ICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcGFyZW50U2Nv
cGUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCAiZ2V0X3BhcmVudF9zY29wZSIpOworICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShwYXJlbnRTY29w
ZSkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6IHsKKyAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBpbnQgc2NvcGUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHN5
bWJvbFRhYmxlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpbml0aWFsVmFsdWUg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9j
YXRpb24sIGl0LCAiY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQiKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCAlcywgJXMiLAorICAgICAgICAgICAgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoc2NvcGUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHN5bWJvbFRhYmxl
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShpbml0aWFsVmFsdWUpLmRhdGEoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2NhdGNoOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgdm9pZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlcywgJXAiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF90
aHJvdzogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAidGhyb3ci
LCByMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19l
cnJvcjogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgRXJy
b3JUeXBlIGsxID0gc3RhdGljX2Nhc3Q8RXJyb3JUeXBlPigoKytpdCktPnUudW5zaWduZWRWYWx1
ZSk7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInRocm93
X3N0YXRpY19lcnJvciIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1l
KHIwKS5kYXRhKCkpOworICAgICAgICBvdXQucHJpbnQoazEpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9kZWJ1ZzogeworICAgICAgICBpbnQgZGVidWdIb29rVHlwZSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgaGFzQnJlYWtwb2ludEZsYWcgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiZGVidWciKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShk
ZWJ1Z0hvb2tUeXBlKSwgaGFzQnJlYWtwb2ludEZsYWcpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF9pZGVudGl0eV93aXRoX3Byb2ZpbGU6IHsKKyAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICsraXQ7IC8vIFByb2ZpbGUgdG9wIGhhbGYKKyAg
ICAgICAgKytpdDsgLy8gUHJvZmlsZSBib3R0b20gaGFsZgorICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpZGVudGl0eV93aXRoX3Byb2ZpbGUiKTsKKyAgICAg
ICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3VucmVhY2hhYmxlOiB7CisgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInVucmVhY2hhYmxlIik7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2VuZDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91
dCwgbG9jYXRpb24sIGl0LCAiZW5kIiwgcjApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBvcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbDogewor
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHNjb3BlID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicmVzb2x2ZV9z
Y29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoc2Nv
cGUpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CisgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgc2NvcGUgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBS
ZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPigoKytpdCkt
PnUub3BlcmFuZCk7CisgICAgICAgIGludCBkZXB0aCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicmVzb2x2ZV9zY29wZSIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCA8JXM+LCAlZCwgJXAiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHNjb3BlKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZp
ZXIoaWQwKSkuZGF0YSgpLCByZXNvbHZlVHlwZU5hbWUocmVzb2x2ZVR5cGUpLCBkZXB0aCwgcG9p
bnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3Bl
OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKCgrK2l0KS0+dS5v
cGVyYW5kKTsKKyAgICAgICAgKytpdDsgLy8gU3RydWN0dXJlCisgICAgICAgIGludCBvcGVyYW5k
ID0gKCsraXQpLT51Lm9wZXJhbmQ7IC8vIE9wZXJhbmQKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2Zyb21fc2NvcGUiKTsKKyAgICAgICAgb3V0LnBy
aW50KHJlZ2lzdGVyTmFtZShyMCksICIsICIsIHJlZ2lzdGVyTmFtZShyMSkpOworICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkMCkgPT0gVUlOVF9NQVgpCisgICAgICAgICAgICBv
dXQucHJpbnQoIiwgYW5vbnltb3VzIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5w
cmludCgiLCAiLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpKTsKKyAgICAgICAgb3V0LnBy
aW50KCIsICIsIGdldFB1dEluZm8ub3BlcmFuZCgpLCAiPCIsIHJlc29sdmVNb2RlTmFtZShnZXRQ
dXRJbmZvLnJlc29sdmVNb2RlKCkpLCAifCIsIHJlc29sdmVUeXBlTmFtZShnZXRQdXRJbmZvLnJl
c29sdmVUeXBlKCkpLCAifCIsIGluaXRpYWxpemF0aW9uTW9kZU5hbWUoZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSksICI+LCAiLCBvcGVyYW5kKTsKKyAgICAgICAgZHVtcFZhbHVlUHJv
ZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0
SW5mbyA9IEdldFB1dEluZm8oKCsraXQpLT51Lm9wZXJhbmQpOworICAgICAgICArK2l0OyAvLyBT
dHJ1Y3R1cmUKKyAgICAgICAgaW50IG9wZXJhbmQgPSAoKytpdCktPnUub3BlcmFuZDsgLy8gT3Bl
cmFuZAorICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRf
dG9fc2NvcGUiKTsKKyAgICAgICAgb3V0LnByaW50KHJlZ2lzdGVyTmFtZShyMCkpOworICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkMCkgPT0gVUlOVF9NQVgpCisgICAgICAgICAg
ICBvdXQucHJpbnQoIiwgYW5vbnltb3VzIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91
dC5wcmludCgiLCAiLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpKTsKKyAgICAgICAgb3V0
LnByaW50KCIsICIsIHJlZ2lzdGVyTmFtZShyMSksICIsICIsIGdldFB1dEluZm8ub3BlcmFuZCgp
LCAiPCIsIHJlc29sdmVNb2RlTmFtZShnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkpLCAifCIsIHJl
c29sdmVUeXBlTmFtZShnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkpLCAifCIsIGluaXRpYWxpemF0
aW9uTW9kZU5hbWUoZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSksICI+LCA8c3RydWN0
dXJlPiwgIiwgb3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dl
dF9mcm9tX2FyZ3VtZW50czogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBvZmZzZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9j
YXRpb24sIGl0LCAiZ2V0X2Zyb21fYXJndW1lbnRzIik7CisgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIG9mZnNldCk7CisgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmlu
dGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X3Rv
X2FyZ3VtZW50czogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAicHV0X3RvX2FyZ3VtZW50cyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIG9mZnNldCwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF95aWVsZDogeworICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgeWllbGRQb2lu
dCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAi
eWllbGQiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICV1LCAlcyIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCB5aWVsZFBvaW50LCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICBkdW1wUHJvZmlsZXNGb3JCeXRlY29kZU9mZnNldChvdXQs
IGxvY2F0aW9uLCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICBvdXQucHJpbnQoIlxuIik7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZShCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5cGVuYW1l
IEJsb2NrOjpJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQoreworICAgIEJ5dGVjb2Rl
RHVtcGVyIGR1bXBlcihibG9jaywgYmVnaW4pOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBJZGVudGlmaWVycyhQcmludFN0cmVhbSYgb3V0
KQogewogICAgIGlmIChzaXplX3QgY291bnQgPSBibG9jaygpLT5udW1iZXJPZklkZW50aWZpZXJz
KCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnRmKCJcbklkZW50aWZpZXJzOlxuIik7CisgICAgICAg
IG91dC5wcmludGYoIlxuSWRlbnRpZmllcnM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwog
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICBtX291dC5wcmludGYoIiAgaWQldSA9ICVzXG4iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIGlkZW50aWZpZXIoaSkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGkpLCBpZGVudGlmaWVyKGkpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpICE9IGNvdW50KTsKICAgICB9CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBDb25zdGFudHMoKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDb25zdGFudHMo
UHJpbnRTdHJlYW0mIG91dCkKIHsKICAgICBpZiAoIWJsb2NrKCktPmNvbnN0YW50UmVnaXN0ZXJz
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fb3V0LnByaW50ZigiXG5Db25zdGFudHM6XG4iKTsK
KyAgICAgICAgb3V0LnByaW50ZigiXG5Db25zdGFudHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkg
PSAwOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnN0YW50IDogYmxvY2soKS0+Y29uc3Rh
bnRSZWdpc3RlcnMoKSkgewogICAgICAgICAgICAgY29uc3QgY2hhciogc291cmNlQ29kZVJlcHJl
c2VudGF0aW9uRGVzY3JpcHRpb24gPSBudWxscHRyOwpAQCAtMTI4LDEwMiArMTgwNCw5NCBAQCB2
b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENvbnN0YW50cygpCiAgICAgICAgICAgICAg
ICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSAiIjsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fb3V0LnByaW50ZigiICAg
ayV1ID0gJXMlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB0b0NTdHJpbmcoY29uc3Rh
bnQuZ2V0KCkpLmRhdGEoKSwgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24pOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiICAgayV1ID0gJXMlc1xuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGkpLCB0b0NTdHJpbmcoY29uc3RhbnQuZ2V0KCkpLmRhdGEoKSwgc291cmNlQ29kZVJl
cHJlc2VudGF0aW9uRGVzY3JpcHRpb24pOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9CiAg
ICAgfQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wRXhjZXB0aW9uSGFuZGxlcnMoKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBFeGNlcHRpb25IYW5kbGVycyhQcmludFN0cmVhbSYgb3V0KQogewogICAgIGlmICh1bnNp
Z25lZCBjb3VudCA9IGJsb2NrKCktPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKSkgewotICAg
ICAgICBtX291dC5wcmludGYoIlxuRXhjZXB0aW9uIEhhbmRsZXJzOlxuIik7CisgICAgICAgIG91
dC5wcmludGYoIlxuRXhjZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkg
PSAwOwogICAgICAgICBkbyB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBoYW5kbGVyID0gYmxv
Y2soKS0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKLSAgICAgICAgICAgIG1fb3V0LnByaW50ZigiXHQg
JWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0OiBbJTRkXSB9ICVzXG4iLCBpICsg
MSwgaGFuZGxlci5zdGFydCwgaGFuZGxlci5lbmQsIGhhbmRsZXIudGFyZ2V0LCBoYW5kbGVyLnR5
cGVOYW1lKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRd
IGVuZDogWyU0ZF0gdGFyZ2V0OiBbJTRkXSB9ICVzXG4iLCBpICsgMSwgaGFuZGxlci5zdGFydCwg
aGFuZGxlci5lbmQsIGhhbmRsZXIudGFyZ2V0LCBoYW5kbGVyLnR5cGVOYW1lKCkpOwogICAgICAg
ICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgY291bnQpOwogICAgIH0KIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN3aXRj
aEp1bXBUYWJsZXMoKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTd2l0Y2hKdW1w
VGFibGVzKFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gYmxv
Y2soKS0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpIHsKLSAgICAgICAgbV9vdXQucHJpbnRm
KCJTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKKyAgICAgICAgb3V0LnByaW50ZigiU3dpdGNoIEp1
bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICBtX291dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIgICUxZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgY29uc3QgYXV0byYgc3dp
dGNoSnVtcFRhYmxlID0gYmxvY2soKS0+c3dpdGNoSnVtcFRhYmxlKGkpOwogICAgICAgICAgICAg
aW50IGVudHJ5ID0gMDsKICAgICAgICAgICAgIGF1dG8gZW5kID0gc3dpdGNoSnVtcFRhYmxlLmJy
YW5jaE9mZnNldHMuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHN3aXRjaEp1
bXBUYWJsZS5icmFuY2hPZmZzZXRzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIsICsrZW50
cnkpIHsKICAgICAgICAgICAgICAgICBpZiAoISppdGVyKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICBtX291dC5wcmludGYoIlx0XHQlNGQgPT4gJTA0ZFxu
IiwgZW50cnkgKyBzd2l0Y2hKdW1wVGFibGUubWluLCAqaXRlcik7CisgICAgICAgICAgICAgICAg
b3V0LnByaW50ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRyeSArIHN3aXRjaEp1bXBUYWJsZS5t
aW4sICppdGVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fb3V0LnByaW50ZigiICAg
ICAgfVxuIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICAgICB9XG4iKTsKICAgICAgICAg
ICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKICAgICB9CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
d2l0Y2hKdW1wVGFibGVzKCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wU3RyaW5n
U3dpdGNoSnVtcFRhYmxlcyhQcmludFN0cmVhbSYgb3V0KQogewogICAgIGlmICh1bnNpZ25lZCBj
b3VudCA9IGJsb2NrKCktPm51bWJlck9mU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpKSB7Ci0gICAg
ICAgIG1fb3V0LnByaW50ZigiXG5TdHJpbmcgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CisgICAg
ICAgIG91dC5wcmludGYoIlxuU3RyaW5nIFN3aXRjaCBKdW1wIFRhYmxlczpcbiIpOwogICAgICAg
ICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAgICAgbV9vdXQucHJpbnRm
KCIgICUxZCA9IHtcbiIsIGkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICAlMWQgPSB7XG4i
LCBpKTsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0cmluZ1N3aXRjaEp1bXBUYWJsZSA9IGJs
b2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKTsKICAgICAgICAgICAgIGF1dG8gZW5kID0g
c3RyaW5nU3dpdGNoSnVtcFRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgZm9y
IChhdXRvIGl0ZXIgPSBzdHJpbmdTd2l0Y2hKdW1wVGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICBtX291dC5wcmludGYoIlx0XHRc
IiVzXCIgPT4gJTA0ZFxuIiwgaXRlci0+a2V5LT51dGY4KCkuZGF0YSgpLCBpdGVyLT52YWx1ZS5i
cmFuY2hPZmZzZXQpOwotICAgICAgICAgICAgbV9vdXQucHJpbnRmKCIgICAgICB9XG4iKTsKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIGl0ZXItPmtl
eS0+dXRmOCgpLmRhdGEoKSwgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdo
aWxlIChpIDwgY291bnQpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsb2NrKiBibG9jaywgY29uc3QgSW5z
dHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNT
dGF0dXNNYXAmIHN0YXR1c01hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxv
Y2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlv
bnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0
YXR1c01hcCkKIHsKICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25Db3VudCA9IDA7Ci0gICAgc2l6ZV90
IHdpZGVJbnN0cnVjdGlvbkNvdW50ID0gMDsKLSAgICBzaXplX3QgaW5zdHJ1Y3Rpb25XaXRoTWV0
YWRhdGFDb3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5z
dHJ1Y3Rpb25zKSB7Ci0gICAgICAgIGlmIChpbnN0cnVjdGlvbi0+aXNXaWRlKCkpCi0gICAgICAg
ICAgICArK3dpZGVJbnN0cnVjdGlvbkNvdW50OwotICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24tPm9w
Y29kZUlEKCkgPCBOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSkKLSAgICAgICAgICAg
ICsraW5zdHJ1Y3Rpb25XaXRoTWV0YWRhdGFDb3VudDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW5zdHJ1Y3Rpb25zLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW0ludGVycHJldGVy
OjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNbaV0pXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNv
dW50OwotICAgIH0KIAogICAgIG91dC5wcmludCgqYmxvY2spOwogICAgIG91dC5wcmludGYoCi0g
ICAgICAgICI6ICVsdSBpbnN0cnVjdGlvbnMgKCVsdSB3aWRlIGluc3RydWN0aW9ucywgJWx1IGlu
c3RydWN0aW9ucyB3aXRoIG1ldGFkYXRhKTsgJWx1IGJ5dGVzICglbHUgbWV0YWRhdGEgYnl0ZXMp
OyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocyki
LAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbkNvdW50KSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4od2lkZUluc3RydWN0aW9uQ291bnQp
LAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbldpdGhNZXRh
ZGF0YUNvdW50KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rp
b25zLnNpemVJbkJ5dGVzKCkgKyBibG9jay0+bWV0YWRhdGFTaXplSW5CeXRlcygpKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oYmxvY2stPm1ldGFkYXRhU2l6ZUluQnl0ZXMo
KSksCisgICAgICAgICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0
ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAorICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMuc2l6ZSgpKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJ
bnN0cnVjdGlvbikpLAogICAgICAgICBibG9jay0+bnVtUGFyYW1ldGVycygpLCBibG9jay0+bnVt
Q2FsbGVlTG9jYWxzKCksIGJsb2NrLT5udW1WYXJzKCkpOwogICAgIG91dC5wcmludCgiOyBzY29w
ZSBhdCAiLCBibG9jay0+c2NvcGVSZWdpc3RlcigpKTsKICAgICBvdXQucHJpbnRmKCJcbiIpOwog
Ci0gICAgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+IGR1bXBlcihibG9jaywgb3V0KTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0IDogaW5zdHJ1Y3Rpb25zKQotICAgICAgICBkdW1wZXIuZHVtcEJ5dGVj
b2RlKGl0LCBzdGF0dXNNYXApOworICAgIGNvbnN0IGF1dG8qIGJlZ2luID0gaW5zdHJ1Y3Rpb25z
LmJlZ2luKCk7CisgICAgY29uc3QgYXV0byogZW5kID0gaW5zdHJ1Y3Rpb25zLmVuZCgpOworICAg
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiBkdW1wZXIoYmxvY2ssIGJlZ2luKTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8qIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgZHVtcGVyLmR1
bXBCeXRlY29kZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIAotICAgIGR1bXBlci5kdW1w
SWRlbnRpZmllcnMoKTsKLSAgICBkdW1wZXIuZHVtcENvbnN0YW50cygpOwotICAgIGR1bXBlci5k
dW1wRXhjZXB0aW9uSGFuZGxlcnMoKTsKLSAgICBkdW1wZXIuZHVtcFN3aXRjaEp1bXBUYWJsZXMo
KTsKLSAgICBkdW1wZXIuZHVtcFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICBkdW1wZXIu
ZHVtcElkZW50aWZpZXJzKG91dCk7CisgICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKKyAg
ICBkdW1wZXIuZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKG91dCk7CisgICAgZHVtcGVyLmR1bXBTd2l0
Y2hKdW1wVGFibGVzKG91dCk7CisgICAgZHVtcGVyLmR1bXBTdHJpbmdTd2l0Y2hKdW1wVGFibGVz
KG91dCk7CiAKICAgICBvdXQucHJpbnRmKCJcbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAppbmRleCBhMTUwM2JhMDQ2MWQ4YTYyMGQ2
ZjA4NjI1NTk4M2JkMzcwOTlkZDBhLi5kODExYThkNzI2N2NiMzNhYjBhNTc0Y2E2ODRlMjlkOTVj
NDUxM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVEdW1wZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAj
aW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKLSNpbmNsdWRlICJJbnN0cnVjdGlvblN0cmVhbS5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzgs
MzEgKzM3LDIwIEBAIHN0cnVjdCBJbnN0cnVjdGlvbjsKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgog
Y2xhc3MgQnl0ZWNvZGVEdW1wZXIgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRl
Y29kZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpS
ZWYmIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKLSAgICBzdGF0aWMg
dm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOwogCi0gICAgdm9pZCBw
cmludExvY2F0aW9uQW5kT3AoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBsb2NhdGlvbiwgY29u
c3QgY2hhciogb3ApOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGR1bXBP
cGVyYW5kKFQgb3BlcmFuZCwgYm9vbCBpc0ZpcnN0ID0gZmFsc2UpCi0gICAgewotICAgICAgICBp
ZiAoIWlzRmlyc3QpCi0gICAgICAgICAgICBtX291dC5wcmludCgiLCAiKTsKLSAgICAgICAgZHVt
cFZhbHVlKG9wZXJhbmQpOwotICAgIH0KLQotICAgIHZvaWQgZHVtcFZhbHVlKFZpcnR1YWxSZWdp
c3RlciByZWcpIHsgbV9vdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyZWcub2Zmc2V0KCkp
LmRhdGEoKSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgZHVtcFZhbHVl
KFQgdikgeyBtX291dC5wcmludCh2KTsgfQorICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRlY29kZShC
bG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCA9IElDU3RhdHVz
TWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1bXBCbG9jayhCbG9jayosIGNvbnN0IHR5cGVuYW1l
IEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKIAogcHJpdmF0ZToKLSAgICBC
eXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQpCisgICAgQnl0ZWNv
ZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4pCiAgICAgICAgIDogbV9ibG9jayhibG9jaykKLSAgICAgICAgLCBtX291dChvdXQpCisgICAg
ICAgICwgbV9pbnN0cnVjdGlvbnNCZWdpbihpbnN0cnVjdGlvbnNCZWdpbikKICAgICB7CiAgICAg
fQogCiAgICAgQmxvY2sqIGJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9ibG9jazsgfQorICAgIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faW5z
dHJ1Y3Rpb25zQmVnaW47IH0KIAogICAgIEFMV0FZU19JTkxJTkUgVk0qIHZtKCkgY29uc3Q7CiAK
QEAgLTcxLDE2ICs1OSwzOCBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllcihpbnQgaW5kZXgpIGNvbnN0OwogCi0gICAgdm9pZCBkdW1wSWRlbnRpZmllcnMoKTsK
LSAgICB2b2lkIGR1bXBDb25zdGFudHMoKTsKLSAgICB2b2lkIGR1bXBFeGNlcHRpb25IYW5kbGVy
cygpOwotICAgIHZvaWQgZHVtcFN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICB2b2lkIGR1bXBTdHJp
bmdTd2l0Y2hKdW1wVGFibGVzKCk7Ci0KLSAgICB2b2lkIGR1bXBCeXRlY29kZShjb25zdCBJbnN0
cnVjdGlvblN0cmVhbTo6UmVmJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAgICB2b2lkIGR1
bXBJZGVudGlmaWVycyhQcmludFN0cmVhbSYgb3V0KTsKKyAgICB2b2lkIGR1bXBDb25zdGFudHMo
UHJpbnRTdHJlYW0mIG91dCk7CisgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRT
dHJlYW0mIG91dCk7CisgICAgdm9pZCBkdW1wU3dpdGNoSnVtcFRhYmxlcyhQcmludFN0cmVhbSYg
b3V0KTsKKyAgICB2b2lkIGR1bXBTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKFByaW50U3RyZWFtJiBv
dXQpOworCisgICAgdm9pZCBwcmludFVuYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCk7CisgICAgdm9pZCBw
cmludEJpbmFyeU9wKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApOworICAgIHZvaWQgcHJpbnRDb25kaXRpb25hbEp1
bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKKyAgICB2b2lkIHByaW50Q29t
cGFyZUp1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0
cnVjdGlvbiomIGl0LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKKyAgICB2b2lkIHBy
aW50R2V0QnlJZE9wKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiBpdCk7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OworICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAgICB2b2lkIHByaW50UHV0QnlJZE9wKFBy
aW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgY2hhciogb3ApOworICAgIHZvaWQgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5k
KFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgY2hhciogb3AsIGludCBvcGVyYW5kKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CisKKyAgICB2b2lkIGR1bXBWYWx1ZVByb2ZpbGlu
ZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9m
aWxpbmcpOworICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgdm9pZCBkdW1w
UHJvZmlsZXNGb3JCeXRlY29kZU9mZnNldChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9u
LCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKTsKKworICAgIHZvaWQqIGFjdHVhbFBvaW50ZXJG
b3IoU3BlY2lhbDo6UG9pbnRlcikgY29uc3Q7CisKKyNpZiBFTkFCTEUoSklUKQorICAgIHZvaWQg
ZHVtcENhbGxMaW5rU3RhdHVzKFByaW50U3RyZWFtJiwgdW5zaWduZWQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisjZW5kaWYKIAogICAgIEJsb2NrKiBtX2Jsb2NrOwotICAgIFByaW50
U3RyZWFtJiBtX291dDsKKyAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9pbnN0cnVjdGlvbnNCZWdp
bjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IGNiZDQwZTNhNGZiNzJk
MTQzN2JjMzVkN2QwNzVlZDBhNGIyNDQwZDUuLmU5MWI1YjVkODM1NjExODEzNjc5NjI3NjAwNGUy
MDQ4MjhlYjI3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkJ5dGVjb2RlRHVtcGVyLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKLSNpbmNs
dWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2lu
Y2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCkBAIC0zOSwxNCArMzgsMTMgQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2Nr
LmgiCi0jaW5jbHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IFlpZWxkRGF0YSB7
Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBwb2ludCB7IDAgfTsKLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgYXJndW1lbnQgeyAwIH07CisgICAgc2l6ZV90IHBvaW50IHsgMCB9OworICAgIGlu
dCBhcmd1bWVudCB7IDAgfTsKICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwogfTsKIApAQCAt
NTQsMzEgKzUyLDI5IEBAIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIFZlY3RvcjxZaWVsZERhdGE+IFlpZWxkczsKIAotICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwg
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGlu
c3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBn
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCi0gICAgICAgIDogbV9ieXRlY29kZUdlbmVy
YXRvcihieXRlY29kZUdlbmVyYXRvcikKLSAgICAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2sp
CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlv
bnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykK
ICAgICAgICAgLCBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCiAgICAgICAgICwgbV9ncmFw
aChtX2NvZGVCbG9jaywgbV9pbnN0cnVjdGlvbnMpCiAgICAgICAgICwgbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUp
CiAgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgoZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4KQogICAgIHsKICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaCkgewotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvIG9mZnNl
dCA6IGJsb2NrLT5vZmZzZXRzKCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGluc3Ry
dWN0aW9uID0gbV9pbnN0cnVjdGlvbnMuYXQob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBzd2l0
Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPm9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNv
bnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJmluc3RydWN0aW9uc1tieXRlY29kZU9mZnNl
dF07CisgICAgICAgICAgICAgICAgc3dpdGNoIChwYy0+dS5vcGNvZGUpIHsKICAgICAgICAgICAg
ICAgICBjYXNlIG9wX2VudGVyOiB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZW50ZXJQb2ludCA9
IGluc3RydWN0aW9uLm9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICBtX2VudGVyUG9pbnQg
PSBieXRlY29kZU9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgY2FzZSBvcF95aWVsZDogewotICAgICAgICAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wWWllbGQ+KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGJ5dGVjb2Rl
LnlpZWxkUG9pbnQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CiAg
ICAgICAgICAgICAgICAgICAgIFlpZWxkRGF0YSYgZGF0YSA9IG1feWllbGRzW2xpdmVDYWxsZWVM
b2NhbHNJbmRleF07Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEucG9pbnQgPSBpbnN0cnVjdGlv
bi5vZmZzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YS5hcmd1bWVudCA9IGJ5dGVjb2Rl
LmFyZ3VtZW50OworICAgICAgICAgICAgICAgICAgICBkYXRhLnBvaW50ID0gYnl0ZWNvZGVPZmZz
ZXQ7CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXJndW1lbnQgPSBwY1szXS51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTA5
LDE0ICsxMDUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3lpZWxkczsKICAgICB9CiAK
LSAgICBJbnN0cnVjdGlvblN0cmVhbTo6UmVmIGVudGVyUG9pbnQoKSBjb25zdAorICAgIHVuc2ln
bmVkIGVudGVyUG9pbnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zLmF0KG1fZW50ZXJQb2ludCk7Ci0gICAgfQotCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW0mIGluc3RydWN0aW9ucygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbnN0cnVj
dGlvbnM7CisgICAgICAgIHJldHVybiBtX2VudGVyUG9pbnQ7CiAgICAgfQogCiBwcml2YXRlOgpA
QCAtMTQ3LDEwICsxMzgsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gc3RvcmFnZTsKICAg
ICB9CiAKLSAgICBCeXRlY29kZUdlbmVyYXRvciYgbV9ieXRlY29kZUdlbmVyYXRvcjsKLSAgICBJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG1fZW50ZXJQb2ludDsKKyAgICB1bnNpZ25lZCBtX2Vu
dGVyUG9pbnQgeyAwIH07CiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAg
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX2luc3RydWN0aW9uczsKKyAgICBVbmxpbmtlZENv
ZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIG1faW5zdHJ1Y3Rpb25zOwogICAgIEJ5dGVj
b2RlR3JhcGggbV9ncmFwaDsKICAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxTdG9yYWdlPj4gbV9z
dG9yYWdlczsKICAgICBZaWVsZHMgbV95aWVsZHM7CkBAIC0xNjUsNyArMTU1LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHJ1bihVbmxpbmtlZENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zKQorICAgIHZvaWQgcnVu
KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tl
ZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQogICAgIHsKICAgICAgICAgLy8gUGVyZm9ybSBt
b2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBs
aXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCiAgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNv
bnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVlc3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hv
dWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCkBAIC0xNzMsNyArMTYzLDcgQEAgcHVibGljOgog
ICAgICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBtX2dl
bmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpKTsKIAogICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0
YSA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLnlpZWxkcygpKQotICAgICAgICAgICAgZGF0YS5saXZl
bmVzcyA9IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbnMsIG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCksIG1fZ2VuZXJhdG9yaWZpY2F0aW9u
Lmluc3RydWN0aW9ucygpLmF0KGRhdGEucG9pbnQpLm5leHQoKS5vZmZzZXQoKSk7CisgICAgICAg
ICAgICBkYXRhLmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIGluc3RydWN0aW9ucywgbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKSwgZGF0YS5w
b2ludCArIG9wY29kZUxlbmd0aChvcF95aWVsZCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4
OSw4MCArMTc5LDg1IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAg
ICAgICAgIHBhc3MucnVuKG1fY29kZUJsb2NrLCBtX2luc3RydWN0aW9ucyk7CiAgICAgfQogCi0g
ICAgQnl0ZWNvZGVSZXdyaXRlciByZXdyaXRlcihtX2J5dGVjb2RlR2VuZXJhdG9yLCBtX2dyYXBo
LCBtX2NvZGVCbG9jaywgbV9pbnN0cnVjdGlvbnMpOworICAgIEJ5dGVjb2RlUmV3cml0ZXIgcmV3
cml0ZXIobV9ncmFwaCwgbV9jb2RlQmxvY2ssIG1faW5zdHJ1Y3Rpb25zKTsKIAogICAgIC8vIFNl
dHVwIHRoZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUgZ2VuZXJhdG9yLgogICAgIHsKLSAgICAgICAg
YXV0byBuZXh0VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpLm5leHQoKTsKKyAgICAgICAgdW5z
aWduZWQgbmV4dFRvRW50ZXJQb2ludCA9IGVudGVyUG9pbnQoKSArIG9wY29kZUxlbmd0aChvcF9l
bnRlcik7CiAgICAgICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+
bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0
ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSkpOwogICAgICAgICBhdXRv
JiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAg
IGp1bXBUYWJsZS5taW4gPSAwOwogICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNp
emUobV95aWVsZHMuc2l6ZSgpICsgMSk7CiAgICAgICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRz
LmZpbGwoMCk7Ci0gICAgICAgIGp1bXBUYWJsZS5hZGQoMCwgbmV4dFRvRW50ZXJQb2ludC5vZmZz
ZXQoKSk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoMCwgbmV4dFRvRW50ZXJQb2ludCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3lpZWxkcy5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGp1bXBUYWJsZS5hZGQoaSArIDEsIG1feWllbGRzW2ldLnBvaW50KTsKIAogICAgICAg
ICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShuZXh0VG9FbnRlclBvaW50LCBbJl0oQnl0
ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7Ci0gICAgICAgICAgICBmcmFnbWVu
dC5hcHBlbmRJbnN0cnVjdGlvbjxPcFN3aXRjaEltbT4oc3dpdGNoVGFibGVJbmRleCwgbmV4dFRv
RW50ZXJQb2ludC5vZmZzZXQoKSwgc3RhdGUpOworICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5k
SW5zdHJ1Y3Rpb24ob3Bfc3dpdGNoX2ltbSwgc3dpdGNoVGFibGVJbmRleCwgbmV4dFRvRW50ZXJQ
b2ludCwgc3RhdGUub2Zmc2V0KCkpOwogICAgICAgICB9KTsKICAgICB9CiAKICAgICBmb3IgKGNv
bnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOwogCi0gICAg
ICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBtX2luc3RydWN0aW9ucy5hdChkYXRhLnBvaW50KTsKICAg
ICAgICAgLy8gRW1pdCBzYXZlIHNlcXVlbmNlLgotICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFn
bWVudEJlZm9yZShpbnN0cnVjdGlvbiwgWyZdKEJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50JiBm
cmFnbWVudCkgeworICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShkYXRhLnBv
aW50LCBbJl0oQnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CiAgICAgICAg
ICAgICBkYXRhLmxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewogICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaW5kZXgpOwogICAgICAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VG
b3JHZW5lcmF0b3JMb2NhbChpbmRleCk7CiAKLSAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBl
bmRJbnN0cnVjdGlvbjxPcFB1dFRvU2NvcGU+KAotICAgICAgICAgICAgICAgICAgICBzY29wZSwg
Ly8gc2NvcGUKKyAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRJbnN0cnVjdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgb3BfcHV0X3RvX3Njb3BlLAorICAgICAgICAgICAgICAgICAgICBz
Y29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVu
dGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKLSAgICAgICAgICAgICAgICAgICAgb3BlcmFuZCwg
Ly8gdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RG
b3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2
YWx1ZQorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5k
LCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24p
Lm9wZXJhbmQoKSwgLy8gaW5mbwogICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4CiAgICAgICAg
ICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0
CiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICAvLyBJ
bnNlcnQgb3BfcmV0IGp1c3QgYWZ0ZXIgc2F2ZSBzZXF1ZW5jZS4KLSAgICAgICAgICAgIGZyYWdt
ZW50LmFwcGVuZEluc3RydWN0aW9uPE9wUmV0PihkYXRhLmFyZ3VtZW50KTsKKyAgICAgICAgICAg
IGZyYWdtZW50LmFwcGVuZEluc3RydWN0aW9uKG9wX3JldCwgZGF0YS5hcmd1bWVudCk7CiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIEVtaXQgcmVzdW1lIHNlcXVlbmNlLgotICAgICAgICByZXdy
aXRlci5pbnNlcnRGcmFnbWVudEFmdGVyKGluc3RydWN0aW9uLCBbJl0oQnl0ZWNvZGVSZXdyaXRl
cjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgIHJld3JpdGVyLmluc2VydEZyYWdtZW50
QWZ0ZXIoZGF0YS5wb2ludCwgWyZdKEJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50JiBmcmFnbWVu
dCkgewogICAgICAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3Qg
aW5kZXgpIHsKICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKICAgICAgICAgICAgICAgICBTdG9yYWdlIHN0b3Jh
Z2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOwogCi0gICAgICAgICAgICAgICAg
ZnJhZ21lbnQuYXBwZW5kSW5zdHJ1Y3Rpb248T3BHZXRGcm9tU2NvcGU+KAotICAgICAgICAgICAg
ICAgICAgICBvcGVyYW5kLCAvLyBkc3QKLSAgICAgICAgICAgICAgICAgICAgc2NvcGUsIC8vIHNj
b3BlCisgICAgICAgICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IG1fY29k
ZUJsb2NrLT52bSgpLT5jYW5Vc2VKSVQoKQorICAgICAgICAgICAgICAgICAgICA/IG1fY29kZUJs
b2NrLT5hZGRWYWx1ZVByb2ZpbGUoKQorICAgICAgICAgICAgICAgICAgICA6IHN0YXRpY19jYXN0
PFVubGlua2VkVmFsdWVQcm9maWxlPigtMSk7CisgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBw
ZW5kSW5zdHJ1Y3Rpb24oCisgICAgICAgICAgICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAor
ICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyBkc3QKKyAgICAgICAgICAg
ICAgICAgICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0
b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCi0gICAgICAgICAgICAgICAgICAg
IEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8vIGluZm8KKyAgICAgICAgICAgICAg
ICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJ
bml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8K
ICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKLSAgICAgICAgICAg
ICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKKyAg
ICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUg
b2Zmc2V0CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQogICAgICAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gQ2xp
cCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgotICAgICAgICByZXdyaXRlci5yZW1vdmVCeXRl
Y29kZShpbnN0cnVjdGlvbik7CisgICAgICAgIHJld3JpdGVyLnJlbW92ZUJ5dGVjb2RlKGRhdGEu
cG9pbnQpOwogICAgIH0KIAogICAgIHJld3JpdGVyLmV4ZWN1dGUoKTsKIH0KIAotdm9pZCBwZXJm
b3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRv
ciwgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIm
IGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGlu
dCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCit2b2lkIHBlcmZvcm1HZW5lcmF0b3Jp
ZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6
OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQog
ewogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9u
KCkpCiAgICAgICAgIEJ5dGVjb2RlRHVtcGVyPFVubGlua2VkQ29kZUJsb2NrPjo6ZHVtcEJsb2Nr
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBXVEY6OmRhdGFGaWxlKCkpOwogCi0gICAgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24gcGFzcyhieXRlY29kZUdlbmVyYXRvciwgY29kZUJsb2NrLCBp
bnN0cnVjdGlvbnMsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGdlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCk7CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gcGFzcyhjb2Rl
QmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKICAgICBwYXNzLnJ1bigpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oCmluZGV4IDAxZjA5NmUwNDFiZmRiMjVmNmZhZTVkZGMwNjE0ZWY3YTZmMDYzMDYu
LmM3YjYxMzc0NjA4NmFlMzRjNGMwYTIyYmY0ZTY3Yzc2ZTZjZmQ0ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oCkBAIC0yNiwxNCArMjYsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJVbmxpbmtlZENvZGVCbG9jay5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQnl0ZWNv
ZGVHZW5lcmF0b3I7Ci1jbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKLWNsYXNzIFN5bWJv
bFRhYmxlOwotY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBTeW1ib2xUYWJsZTsKIAot
dm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiwgVW5saW5r
ZWRDb2RlQmxvY2sqLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYsIFN5bWJvbFRhYmxlKiBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
KTsKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayosIFVu
bGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFN5bWJvbFRhYmxlKiBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaAppbmRleCBlZTJkYTE4NWMzNTE5ZTU1NWQ1ZWM3MDZlNjU0MjEx
NThjYWRhNWI2Li5jMjA0YjQxZjMyOTcxOGU3MmNlN2RiOTdmYWU2NDMxNWUzYzczMDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTQ0
LDIwICs0NCwyMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBXVEY6OkluZGV4ZWRDb250YWluZXJJ
dGVyYXRvcjxCeXRlY29kZUdyYXBoPiBpdGVyYXRvcjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDb2RlQmxvY2tUeXBlPgotICAgIGlubGluZSBCeXRlY29kZUdyYXBoKENvZGVCbG9ja1R5cGUq
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYpOworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKENv
ZGVCbG9ja1R5cGUqLCB0eXBlbmFtZSBDb2RlQmxvY2tUeXBlOjpVbnBhY2tlZEluc3RydWN0aW9u
cyYpOwogCiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpyZXZlcnNl
X2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCksIG1fYmFz
aWNCbG9ja3MucmVuZCgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKKyAgICBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+
bGVhZGVyT2Zmc2V0KCk7CiAgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJP
ZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxMZW5n
dGgoKTsKICAgICB9CiAKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9y
Qnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkK
KyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgewogICAgICAgICAvKgogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQo
KTsKICAgICB9CiAKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGxlYWRlck9mZnNldCkKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCh1bnNpZ25l
ZCBsZWFkZXJPZmZzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxv
Y2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9j
ayktPmxlYWRlck9mZnNldCgpOyB9KSkuZ2V0KCk7CiAgICAgfQpAQCAtMTA1LDkgKzEwNSw5IEBA
IHByaXZhdGU6CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KLUJ5dGVjb2Rl
R3JhcGg6OkJ5dGVjb2RlR3JhcGgoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKQorQnl0ZWNvZGVHcmFwaDo6Qnl0ZWNvZGVHcmFw
aChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIHR5cGVuYW1lIENvZGVCbG9ja1R5cGU6OlVucGFj
a2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGUoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4o
KSwgaW5zdHJ1Y3Rpb25zLnNpemUoKSwgbV9iYXNpY0Jsb2Nrcyk7CiAgICAgQVNTRVJUKG1fYmFz
aWNCbG9ja3Muc2l6ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUtpbGxzLmgKaW5kZXggMzdmMjYzZGE2YmMwZTcwNzk1MDQ3Y2U5MDI4NDE2YmQ4
NDFiYmVhZS4uZmVhYjAyNjg2M2FmY2NkOWMwMTU2YWVlMDE3ZjUxNDMzNmMzN2ZhMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCkBAIC00MCw2
ICs0MCwzNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKKyAgICAvLyBCeSBjb252ZW50
aW9uLCB3ZSBzYXkgdGhhdCBub24tbG9jYWwgb3BlcmFuZHMgYXJlIG5ldmVyIGtpbGxlZC4KKyAg
ICBib29sIG9wZXJhbmRJc0tpbGxlZCh1bnNpZ25lZCBieXRlY29kZUluZGV4LCBpbnQgb3BlcmFu
ZCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGJ5dGVjb2RlSW5kZXggPCBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyhvcGVyYW5kKTsKKyAgICAgICAgaWYgKHJlZy5pc0xv
Y2FsKCkpCisgICAgICAgICAgICByZXR1cm4gbV9raWxsU2V0c1tieXRlY29kZUluZGV4XS5jb250
YWlucyhvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBi
b29sIG9wZXJhbmRJc0tpbGxlZChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGludCBvcGVyYW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhbmRJc0tpbGxlZChtX2NvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pLCBvcGVyYW5kKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGZvckVhY2hPcGVyYW5kS2ls
bGVkQXQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGJ5dGVj
b2RlSW5kZXggPCBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAg
bV9raWxsU2V0c1tieXRlY29kZUluZGV4XS5mb3JFYWNoTG9jYWwoCisgICAgICAgICAgICBbJl0g
KHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rvcih2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChsb2NhbCkpOworICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBmb3JFYWNoT3BlcmFuZEtpbGxlZEF0
KEluc3RydWN0aW9uKiBwYywgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGZvckVhY2hPcGVyYW5kS2lsbGVkQXQobV9jb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KHBjKSwgZnVuY3Rvcik7CisgICAgfQorICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjViZGM0OWE3YTY3MWI4ZGU5
Y2IzNDhiN2ViYmE5MzY3NDhiMmY0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMCwwICsxLDIzNiBAQAorWwor
ICAgIHsKKyAgICAgICAgInNlY3Rpb24iIDogIkJ5dGVjb2RlcyIsICJlbWl0SW5IRmlsZSIgOiB0
cnVlLCAiZW1pdEluU3RydWN0c0ZpbGUiIDogdHJ1ZSwgImVtaXRJbkFTTUZpbGUiIDogdHJ1ZSwK
KyAgICAgICAgImVtaXRPcGNvZGVJRFN0cmluZ1ZhbHVlc0luSEZpbGUiIDogdHJ1ZSwgIm1hY3Jv
TmFtZUNvbXBvbmVudCIgOiAiQllURUNPREUiLCAiYXNtUHJlZml4IiA6ICJsbGludF8iLAorICAg
ICAgICAiYnl0ZWNvZGVzIiA6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VudGVyIiwg
Imxlbmd0aCIgOiAxIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfc2NvcGUiLCAi
bGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9kaXJlY3Rf
YXJndW1lbnRzIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9j
cmVhdGVfc2NvcGVkX2FyZ3VtZW50cyIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMiLCAibGVuZ3RoIiA6IDIgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV90aGlzIiwgIm9mZnNldHMiIDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgW3siZHN0IiA6ICJpbnQifSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsiY2FsbGVlIiA6ICJpbnQifSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiaW5saW5l
Q2FwYWNpdHkiIDogImludCJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJjYWNoZWRDYWxs
ZWUiIDogIldyaXRlQmFycmllcjxKU0NlbGw+In1dfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2dldF9hcmd1bWVudCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfYXJndW1lbnRfY291bnQiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3RvX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2NoZWNrX3RkeiIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfbmV3X29iamVjdCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfbmV3X2FycmF5IiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVmZmVyIiwgIm9mZnNldHMiIDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgW3siZHN0IiA6ICJpbnQifSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsi
aW1tdXRhYmxlQnV0dGVyZmx5IiA6ICJpbnQifSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsi
cHJvZmlsZSIgOiAiQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSoifV19LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkIiwgImxlbmd0aCIgOiA1IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9zcHJlYWQiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX25ld19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX21vdiIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3Bfbm90IiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9lcSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZXFf
bnVsbCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmVxIiwg
Imxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXFfbnVsbCIsICJs
ZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3RyaWN0ZXEiLCAibGVu
Z3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25zdHJpY3RlcSIsICJsZW5n
dGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbGVzcyIsICJsZW5ndGgiIDog
NCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbGVzc2VxIiwgImxlbmd0aCIgOiA0IH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9ncmVhdGVyIiwgImxlbmd0aCIgOiA0IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9ncmVhdGVyZXEiLCAibGVuZ3RoIiA6IDQgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2JlbG93IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9iZWxvd2VxIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9pbmMiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2RlYyIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfdG9fbnVtYmVyIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF90b19zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3RvX29iamVjdCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bmVnYXRlIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hZGQi
LCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX211bCIsICJsZW5n
dGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGl2IiwgImxlbmd0aCIgOiA1
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9tb2QiLCAibGVuZ3RoIiA6IDQgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3N1YiIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcG93IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9sc2hpZnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3JzaGlmdCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfdXJzaGlmdCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
dW5zaWduZWQiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Jp
dGFuZCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYml0eG9y
IiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9iaXRvciIsICJs
ZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaWRlbnRpdHlfd2l0aF9w
cm9maWxlIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlIiwgIm9mZnNldHMiIDoKKyAgICAgICAgICAgICAgICAgICAgICAg
W3siZHN0IiA6ICJpbnQifSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiY29uc3RydWN0b3Ii
IDogImludCJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJoYXNJbnN0YW5jZVZhbHVlIiA6
ICJpbnQifV0gfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luc3RhbmNlb2YiLCAib2Zm
c2V0cyIgOgorICAgICAgICAgICAgICAgICAgICAgICBbeyJkc3QiIDogImludCJ9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgeyJ2YWx1ZSIgOiAiaW50In0sCisgICAgICAgICAgICAgICAgICAg
ICAgICB7InByb3RvdHlwZSIgOiAiaW50In1dIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9pbnN0YW5jZW9mX2N1c3RvbSIsICJvZmZzZXRzIiA6CisgICAgICAgICAgICAgICAgICAgICAg
IFt7ImRzdCIgOiAiaW50In0sCisgICAgICAgICAgICAgICAgICAgICAgICB7InZhbHVlIiA6ICJp
bnQifSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiY29uc3RydWN0b3IiIDogImludCJ9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgeyJoYXNJbnN0YW5jZVZhbHVlIiA6ICJpbnQifV0gfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3R5cGVvZiIsICJsZW5ndGgiIDogMyB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfaXNfZW1wdHkiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2lzX3VuZGVmaW5lZCIsICJsZW5ndGgiIDogMyB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfaXNfYm9vbGVhbiIsICJsZW5ndGgiIDogMyB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfaXNfbnVtYmVyIiwgImxlbmd0aCIgOiAzIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9pc19vYmplY3QiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2lzX29iamVjdF9vcl9udWxsIiwgImxlbmd0aCIgOiAzIH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pc19mdW5jdGlvbiIsICJsZW5ndGgiIDogMyB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaXNfY2VsbF93aXRoX3R5cGUiLCAibGVuZ3Ro
IiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luX2J5X3ZhbCIsICJsZW5ndGgi
IDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaW5fYnlfaWQiLCAibGVuZ3RoIiA6
IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVu
Z3RoIiA6IDkgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5n
dGgiIDogOSAgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF9wcm90b19s
b2FkIiwgImxlbmd0aCIgOiA5IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlf
aWRfdW5zZXQiLCAibGVuZ3RoIiA6IDkgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dl
dF9ieV9pZF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDYgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9ieV92YWxfd2l0aF90aGlzIiwgImxlbmd0aCIgOiA2IH0sCisgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfZGlyZWN0IiwgImxlbmd0aCIgOiA3ICB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfdHJ5X2dldF9ieV9pZCIsICJsZW5ndGgiIDogNSB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X2J5X2lkIiwgImxlbmd0aCIgOiA5IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfaWRfd2l0aF90aGlzIiwgImxlbmd0aCIg
OiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWxfYnlfaWQiLCAibGVuZ3RoIiA6
IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV92YWwiLCAibGVuZ3RoIiA6
IDYgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV92YWwiLCAibGVuZ3RoIiA6
IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV92YWxfd2l0aF90aGlzIiwg
Imxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfdmFsX2Rp
cmVjdCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVsX2J5
X3ZhbCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X2dl
dHRlcl9ieV9pZCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
cHV0X3NldHRlcl9ieV9pZCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQiLCAibGVuZ3RoIiA6IDYgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX3B1dF9nZXR0ZXJfYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfc2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgiIDog
NSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVmaW5lX2RhdGFfcHJvcGVydHkiLCAi
bGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9hY2Nlc3Nv
cl9wcm9wZXJ0eSIsICJsZW5ndGgiIDogNiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
am1wIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qdHJ1ZSIs
ICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfamZhbHNlIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qZXFfbnVsbCIsICJsZW5n
dGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfam5lcV9udWxsIiwgImxlbmd0
aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qbmVxX3B0ciIsICJsZW5ndGgi
IDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfamVxIiwgImxlbmd0aCIgOiA0IH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qc3RyaWN0ZXEiLCAibGVuZ3RoIiA6IDQgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2puZXEiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2puc3RyaWN0ZXEiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2psZXNzIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9qbGVzc2VxIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9qZ3JlYXRlciIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfamdyZWF0ZXJlcSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3Bfam5sZXNzIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9qbmxlc3NlcSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3Bfam5ncmVhdGVyIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9qbmdyZWF0ZXJlcSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfamJlbG93IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9qYmVsb3dlcSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bG9vcF9oaW50IiwgImxlbmd0aCIgOiAxIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9z
d2l0Y2hfaW1tIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9z
d2l0Y2hfY2hhciIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
c3dpdGNoX3N0cmluZyIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbmV3X2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZnVuYyIsICJsZW5ndGgiIDogNCB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FzeW5jX2Z1bmNfZXhwIiwgImxlbmd0aCIg
OiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1
bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3lu
Y19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3NldF9mdW5jdGlvbl9uYW1lIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKKyAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF90YWlsX2NhbGxfdmFyYXJncyIsICJsZW5ndGgiIDogOSB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzIiwgImxlbmd0aCIg
OiA5IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXQiLCAibGVuZ3RoIiA6IDIgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvbnN0cnVjdCIsICJsZW5ndGgiIDogOSB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY29uc3RydWN0X3ZhcmFyZ3MiLCAibGVuZ3RoIiA6
IDkgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3N0cmNhdCIsICJsZW5ndGgiIDogNCB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9fcHJpbWl0aXZlIiwgImxlbmd0aCIgOiAz
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXNvbHZlX3Njb3BlIiwgImxlbmd0aCIg
OiA3IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfZnJvbV9zY29wZSIsICJsZW5n
dGgiIDogOCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X3RvX3Njb3BlIiwgImxl
bmd0aCIgOiA3IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfZnJvbV9hcmd1bWVu
dHMiLCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF90b19h
cmd1bWVudHMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1
c2hfd2l0aF9zY29wZSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2dldF9wYXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhdGNoIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wcm9maWxlX3R5cGUiLCAibGVuZ3RoIiA6IDYgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3Byb2ZpbGVfY29udHJvbF9mbG93IiwgImxlbmd0aCIgOiAyIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGgiLCAibGVuZ3RoIiA6
IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2hhc19pbmRleGVkX3Byb3BlcnR5Iiwg
Imxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9oYXNfc3RydWN0dXJl
X3Byb3BlcnR5IiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9o
YXNfZ2VuZXJpY19wcm9wZXJ0eSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfZ2V0X2RpcmVjdF9wbmFtZSIsICJsZW5ndGgiIDogNyB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IiLCAibGVuZ3RoIiA6IDMgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lIiwg
Imxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lbnVtZXJhdG9yX2dl
bmVyaWNfcG5hbWUiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3RvX2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfdW5yZWFjaGFibGUiLCAibGVuZ3RoIiA6IDEgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2NyZWF0ZV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF95aWVsZCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfY2hlY2tfdHJhcHMiLCAibGVuZ3RoIiA6IDEgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSIsICJsZW5ndGgiIDogMn0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCIsICJsZW5ndGgi
IDogM30sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lz
dGluZ19mdW5jX2RlY2xfaW5fZXZhbCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3Bfbm9wIiwgImxlbmd0aCIgOiAxIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9zdXBlcl9zYW1wbGVyX2JlZ2luIiwgImxlbmd0aCIgOiAxIH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9zdXBlcl9zYW1wbGVyX2VuZCIsICJsZW5ndGgiIDogMSB9CisgICAgICAg
IF0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInNlY3Rpb24iIDogIkNMb29wSGVscGVycyIsICJl
bWl0SW5IRmlsZSIgOiB0cnVlLCAiZW1pdEluU3RydWN0c0ZpbGUiIDogZmFsc2UsICJlbWl0SW5B
U01GaWxlIiA6IGZhbHNlLAorICAgICAgICAiZW1pdE9wY29kZUlEU3RyaW5nVmFsdWVzSW5IRmls
ZSIgOiBmYWxzZSwgImRlZmF1bHRMZW5ndGgiIDogMSwgIm1hY3JvTmFtZUNvbXBvbmVudCIgOiAi
Q0xPT1BfQllURUNPREVfSEVMUEVSIiwKKyAgICAgICAgImJ5dGVjb2RlcyIgOiBbCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJsbGludF9lbnRyeSIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
ImdldEhvc3RDYWxsUmV0dXJuVmFsdWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGlu
dF9yZXR1cm5fdG9faG9zdCIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X3ZtX2Vu
dHJ5X3RvX2phdmFzY3JpcHQiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF92bV9l
bnRyeV90b19uYXRpdmUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9jbG9vcF9k
aWRfcmV0dXJuX2Zyb21fanNfMSIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Ns
b29wX2RpZF9yZXR1cm5fZnJvbV9qc18yIiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAibGxp
bnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzMiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNCIgfSwKKyAgICAgICAgICAgIHsgIm5h
bWUiIDogImxsaW50X2Nsb29wX2RpZF9yZXR1cm5fZnJvbV9qc181IiB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAibGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzYiIH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNyIgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Nsb29wX2RpZF9yZXR1cm5fZnJvbV9qc184IiB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pz
XzkiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zy
b21fanNfMTAiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9jbG9vcF9kaWRfcmV0
dXJuX2Zyb21fanNfMTEiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9jbG9vcF9k
aWRfcmV0dXJuX2Zyb21fanNfMTIiIH0KKyAgICAgICAgXQorICAgIH0sCisgICAgeworICAgICAg
ICAic2VjdGlvbiIgOiAiTmF0aXZlSGVscGVycyIsICJlbWl0SW5IRmlsZSIgOiB0cnVlLCAiZW1p
dEluU3RydWN0c0ZpbGUiIDogZmFsc2UsICJlbWl0SW5BU01GaWxlIiA6IHRydWUsCisgICAgICAg
ICJlbWl0T3Bjb2RlSURTdHJpbmdWYWx1ZXNJbkhGaWxlIiA6IGZhbHNlLCAiZGVmYXVsdExlbmd0
aCIgOiAxLCAibWFjcm9OYW1lQ29tcG9uZW50IiA6ICJCWVRFQ09ERV9IRUxQRVIiLAorICAgICAg
ICAiYnl0ZWNvZGVzIiA6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X3Byb2dyYW1f
cHJvbG9ndWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9ldmFsX3Byb2xvZ3Vl
IiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9n
dWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2siIH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludCIgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogImxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUiIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lIiB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSIg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBv
bGluZSIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2ludGVybmFsX2Z1bmN0aW9u
X2NhbGxfdHJhbXBvbGluZSIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2ludGVy
bmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lIiB9LAorICAgICAgICAgICAgeyAibmFt
ZSIgOiAiaGFuZGxlVW5jYXVnaHRFeGNlcHRpb24iIH0KKyAgICAgICAgXQorICAgIH0KK10KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTE4YThkNTJkMDQ3ZDlhZWFhM2IxODQ3Mjc1NDYxZTZk
Mjc4ZTIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTU0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotIyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLXR5cGVzIFsKLSAgICA6VmlydHVh
bFJlZ2lzdGVyLAotCi0gICAgOkJhc2ljQmxvY2tMb2NhdGlvbiwKLSAgICA6RGVidWdIb29rVHlw
ZSwKLSAgICA6RXJyb3JUeXBlLAotICAgIDpHZXRCeUlkTW9kZSwKLSAgICA6R2V0QnlJZE1vZGVN
ZXRhZGF0YSwKLSAgICA6R2V0UHV0SW5mbywKLSAgICA6SW5kZXhpbmdUeXBlLAotICAgIDpKU0Nl
bGwsCi0gICAgOkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LAotICAgIDpKU0dsb2JhbE9iamVj
dCwKLSAgICA6SlNNb2R1bGVFbnZpcm9ubWVudCwKLSAgICA6SlNPYmplY3QsCi0gICAgOkpTU2Nv
cGUsCi0gICAgOkpTVHlwZSwKLSAgICA6SlNWYWx1ZSwKLSAgICA6TExJbnRDYWxsTGlua0luZm8s
Ci0gICAgOk9wZXJhbmRUeXBlcywKLSAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCi0gICAg
OlByb3BlcnR5T2Zmc2V0LAotICAgIDpQdXRCeUlkRmxhZ3MsCi0gICAgOlJlc29sdmVUeXBlLAot
ICAgIDpTdHJ1Y3R1cmUsCi0gICAgOlN0cnVjdHVyZUlELAotICAgIDpTdHJ1Y3R1cmVDaGFpbiwK
LSAgICA6U3ltYm9sVGFibGUsCi0gICAgOlRvVGhpc1N0YXR1cywKLSAgICA6VHlwZUxvY2F0aW9u
LAotICAgIDpXYXRjaHBvaW50U2V0LAotCi0gICAgOlZhbHVlUHJvZmlsZSwKLSAgICA6VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlciwKLSAgICA6QXJpdGhQcm9maWxlLAotICAgIDpBcnJheVBy
b2ZpbGUsCi0gICAgOkFycmF5QWxsb2NhdGlvblByb2ZpbGUsCi0gICAgOk9iamVjdEFsbG9jYXRp
b25Qcm9maWxlLAotXQotCi1uYW1lc3BhY2UgOlNwZWNpYWwgZG8KLSAgICB0eXBlcyBbIDpQb2lu
dGVyIF0KLWVuZAotCi10ZW1wbGF0ZXMgWwotICAgIDpXcml0ZUJhcnJpZXIsCi0gICAgOldyaXRl
QmFycmllckJhc2UsCi1dCi0KLQotYmVnaW5fc2VjdGlvbiA6Qnl0ZWNvZGVzLAotICAgIGVtaXRf
aW5faF9maWxlOiB0cnVlLAotICAgIGVtaXRfaW5fc3RydWN0c19maWxlOiB0cnVlLAotICAgIGVt
aXRfaW5fYXNtX2ZpbGU6IHRydWUsCi0gICAgZW1pdF9vcGNvZGVfaWRfc3RyaW5nX3ZhbHVlc19p
bl9oX2ZpbGU6IHRydWUsCi0gICAgbWFjcm9fbmFtZV9jb21wb25lbnQ6IDpCWVRFQ09ERSwKLSAg
ICBhc21fcHJlZml4OiAibGxpbnRfIiwKLSAgICBvcF9wcmVmaXg6ICJvcF8iCi0KLW9wIDp3aWRl
Ci0KLW9wIDplbnRlcgotCi1vcCA6Z2V0X3Njb3BlLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIKLSAgICB9Ci0KLW9wIDpjcmVhdGVfZGlyZWN0X2FyZ3VtZW50cywK
LSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQotb3Ag
OmNyZWF0ZV9zY29wZWRfYXJndW1lbnRzLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIHNjb3BlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1v
cCA6Y3JlYXRlX2Nsb25lZF9hcmd1bWVudHMsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDpjcmVhdGVfdGhpcywKLSAgICBhcmdzOiB7Ci0g
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdp
c3RlciwKLSAgICAgICAgaW5saW5lQ2FwYWNpdHk6IHVuc2lnbmVkLAotICAgIH0sCi0gICAgbWV0
YWRhdGE6IHsKLSAgICAgICAgY2FjaGVkQ2FsbGVlOiBXcml0ZUJhcnJpZXJbSlNDZWxsXQotICAg
IH0KLQotb3AgOmdldF9hcmd1bWVudCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICBpbmRleDogaW50LAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsK
LSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0KLQotb3AgOmFyZ3VtZW50X2Nv
dW50LAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQot
Ci1vcCA6dG9fdGhpcywKLSAgICBhcmdzOiB7Ci0gICAgICAgIHNyY0RzdDogVmlydHVhbFJlZ2lz
dGVyLAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FjaGVkU3RydWN0dXJlOiBX
cml0ZUJhcnJpZXJCYXNlW1N0cnVjdHVyZV0sCi0gICAgICAgIHRvVGhpc1N0YXR1czogVG9UaGlz
U3RhdHVzLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQotCi1vcCA6Y2hl
Y2tfdGR6LAotICAgIGFyZ3M6IHsKLSAgICAgICAgdGFyZ2V0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0g
ICAgfQotCi1vcCA6bmV3X29iamVjdCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICBpbmxpbmVDYXBhY2l0eTogdW5zaWduZWQsCi0gICAgfSwKLSAg
ICBtZXRhZGF0YTogewotICAgICAgICBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZTogT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUsCi0gICAgfQotCi1vcCA6bmV3X2FycmF5LAotICAgIGFyZ3M6IHsKLSAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ3Y6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgYXJnYzogdW5zaWduZWQsCi0gICAgICAgIHJlY29tbWVuZGVkSW5kZXhpbmdU
eXBlOiBJbmRleGluZ1R5cGUsCi0gICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJh
eUFsbG9jYXRpb25Qcm9maWxlOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLAotICAgIH0KLQotb3Ag
Om5ld19hcnJheV93aXRoX3NpemUsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICAgICAgbGVuZ3RoOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfSwKLSAgICBt
ZXRhZGF0YTogewotICAgICAgICBhcnJheUFsbG9jYXRpb25Qcm9maWxlOiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLAotICAgIH0KLQotb3AgOm5ld19hcnJheV9idWZmZXIsCi0gICAgYXJnczogewot
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgaW1tdXRhYmxlQnV0dGVyZmx5
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHJlY29tbWVuZGVkSW5kZXhpbmdUeXBlOiBJbmRl
eGluZ1R5cGUKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5QWxsb2NhdGlv
blByb2ZpbGU6IEFycmF5QWxsb2NhdGlvblByb2ZpbGUsCi0gICAgfQotCi1vcCA6bmV3X2FycmF5
X3dpdGhfc3ByZWFkLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgICAgIGFyZ3Y6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgYXJnYzogdW5zaWduZWQs
Ci0gICAgICAgIGJpdFZlY3RvcjogdW5zaWduZWQsCi0gICAgfQotCi1vcCA6c3ByZWFkLAotICAg
IGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ3VtZW50
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6bmV3X3JlZ2V4cCwKLSAgICBhcmdzOiB7
Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICByZWdleHA6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICB9Ci0KLW9wIDptb3YsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICAgICAgc3JjOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1v
cF9ncm91cCA6QmluYXJ5T3AsCi0gICAgWwotICAgICAgICA6ZXEsCi0gICAgICAgIDpuZXEsCi0g
ICAgICAgIDpzdHJpY3RlcSwKLSAgICAgICAgOm5zdHJpY3RlcSwKLSAgICAgICAgOmxlc3MsCi0g
ICAgICAgIDpsZXNzZXEsCi0gICAgICAgIDpncmVhdGVyLAotICAgICAgICA6Z3JlYXRlcmVxLAot
ICAgICAgICA6YmVsb3csCi0gICAgICAgIDpiZWxvd2VxLAotICAgICAgICA6bW9kLAotICAgICAg
ICA6cG93LAotICAgICAgICA6bHNoaWZ0LAotICAgICAgICA6cnNoaWZ0LAotICAgICAgICA6dXJz
aGlmdCwKLSAgICBdLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgICAgIGxoczogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICByaHM6IFZpcnR1YWxSZWdp
c3RlciwKLSAgICB9Ci0KLW9wX2dyb3VwIDpQcm9maWxlZEJpbmFyeU9wLAotICAgIFsKLSAgICAg
ICAgOmFkZCwKLSAgICAgICAgOm11bCwKLSAgICAgICAgOmRpdiwKLSAgICAgICAgOnN1YiwKLSAg
ICAgICAgOmJpdHhvciwKLSAgICBdLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFs
UmVnaXN0ZXIsCi0gICAgICAgIGxoczogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICByaHM6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCi0gICAg
fSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6IEFyaXRoUHJvZmlsZQot
ICAgIH0sCi0gICAgbWV0YWRhdGFfaW5pdGlhbGl6ZXJzOiB7Ci0gICAgICAgIGFyaXRoUHJvZmls
ZTogOm9wZXJhbmRUeXBlcwotICAgIH0KLQotb3BfZ3JvdXAgOlZhbHVlUHJvZmlsZWRCaW5hcnlP
cCwKLSAgICBbCi0gICAgICAgIDpiaXRhbmQsCi0gICAgICAgIDpiaXRvciwKLSAgICBdLAotICAg
IGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGxoczogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICByaHM6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9LAotICAg
IG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZQotICAgIH0KLQotb3Bf
Z3JvdXAgOlVuYXJ5T3AsCi0gICAgWwotICAgICAgICA6ZXFfbnVsbCwKLSAgICAgICAgOm5lcV9u
dWxsLAotICAgICAgICA6dG9fc3RyaW5nLAotICAgICAgICA6dW5zaWduZWQsCi0gICAgICAgIDpp
c19lbXB0eSwKLSAgICAgICAgOmlzX3VuZGVmaW5lZCwKLSAgICAgICAgOmlzX2Jvb2xlYW4sCi0g
ICAgICAgIDppc19udW1iZXIsCi0gICAgICAgIDppc19vYmplY3QsCi0gICAgICAgIDppc19vYmpl
Y3Rfb3JfbnVsbCwKLSAgICAgICAgOmlzX2Z1bmN0aW9uLAotICAgIF0sCi0gICAgYXJnczogewot
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAotICAgIH0KLQotb3AgOmluYywKLSAgICBhcmdzOiB7Ci0gICAgICAgIHNyY0RzdDog
VmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQotb3AgOmRlYywKLSAgICBhcmdzOiB7Ci0gICAgICAg
IHNyY0RzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQotb3AgOnRvX29iamVjdCwKLSAgICBh
cmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBvcGVyYW5kOiBW
aXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIG1lc3NhZ2U6IHVuc2lnbmVkLAotICAgIH0sCi0gICAg
bWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0KLQotb3Ag
OnRvX251bWJlciwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfSwKLSAgICBtZXRhZGF0YTog
ewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQotCi1vcCA6bmVnYXRlLAot
ICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIG9wZXJh
bmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMs
Ci0gICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6IEFyaXRoUHJv
ZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBhcml0
aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKLSAgICB9Ci0KLW9wIDpub3QsCi0gICAgYXJnczogewot
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAotICAgIH0KLQotCi1vcCA6aWRlbnRpdHlfd2l0aF9wcm9maWxlLAotICAgIGFyZ3M6
IHsKLSAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRvcFByb2ZpbGU6
IHVuc2lnbmVkLAotICAgICAgICBib3R0b21Qcm9maWxlOiB1bnNpZ25lZCwKLSAgICB9Ci0KLW9w
IDpvdmVycmlkZXNfaGFzX2luc3RhbmNlLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNvbnN0cnVjdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAg
ICAgIGhhc0luc3RhbmNlVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDppbnN0
YW5jZW9mLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAg
ICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHByb3RvdHlwZTogVmlydHVhbFJl
Z2lzdGVyLAotICAgIH0KLQotb3AgOmluc3RhbmNlb2ZfY3VzdG9tLAotICAgIGFyZ3M6IHsKLSAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIGNvbnN0cnVjdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGhhc0lu
c3RhbmNlVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDp0eXBlb2YsCi0gICAg
YXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdmFsdWU6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDppc19jZWxsX3dpdGhfdHlwZSwKLSAgICBhcmdz
OiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBvcGVyYW5kOiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIHR5cGU6IEpTVHlwZSwKLSAgICB9Ci0KLW9wIDppbl9ieV92
YWwsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAg
YmFzZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVy
LAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUsCi0gICAgfQotCi1vcCA6aW5fYnlfaWQsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAg
ICBwcm9wZXJ0eTogdW5zaWduZWQsCi0gICAgfQotCi1vcCA6Z2V0X2J5X2lkLAotICAgIGFyZ3M6
IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGJhc2U6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAotICAgIH0sCi0gICAgbWV0YWRh
dGE6IHsKLSAgICAgICAgbW9kZTogR2V0QnlJZE1vZGUsCi0gICAgICAgIG1vZGVNZXRhZGF0YTog
R2V0QnlJZE1vZGVNZXRhZGF0YSwKLSAgICAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmc6IHVu
c2lnbmVkLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQotCi1vcCA6Z2V0
X2J5X2lkX3dpdGhfdGhpcywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lz
dGVyLAotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRoaXNWYWx1ZTog
VmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCi0gICAgfSwKLSAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQotCi1v
cCA6Z2V0X2J5X3ZhbF93aXRoX3RoaXMsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0aGlz
VmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmls
ZSwKLSAgICB9Ci0KLW9wIDpnZXRfYnlfaWRfZGlyZWN0LAotICAgIGFyZ3M6IHsKLSAgICAgICAg
ZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLCAjIG5vdCB1c2VkIGluIGxsaW50Ci0gICAgICAgIHN0
cnVjdHVyZTogU3RydWN0dXJlSUQsCi0gICAgICAgIG9mZnNldDogdW5zaWduZWQsCi0gICAgfQot
Ci1vcCA6dHJ5X2dldF9ieV9pZCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDpwdXRfYnlfaWQsCi0gICAgYXJnczogewotICAgICAg
ICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKLSAg
ICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5SWRGbGFn
cywKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIG9sZFN0cnVjdHVyZTogU3RydWN0
dXJlSUQsCi0gICAgICAgIG9mZnNldDogdW5zaWduZWQsCi0gICAgICAgIG5ld1N0cnVjdHVyZTog
U3RydWN0dXJlSUQsCi0gICAgICAgIHN0cnVjdHVyZUNoYWluOiBXcml0ZUJhcnJpZXJCYXNlW1N0
cnVjdHVyZUNoYWluXSwKLSAgICAgICAgZmxhZ3M6IFB1dEJ5SWRGbGFncywKLSAgICB9LAotICAg
IG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBmbGFnczogOmZsYWdzCi0gICAgfQot
Ci1vcCA6cHV0X2J5X2lkX3dpdGhfdGhpcywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGJhc2U6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGhpc1ZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAg
ICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwK
LSAgICB9Ci0KLW9wIDpkZWxfYnlfaWQsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1
YWxSZWdpc3RlciwKLSAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBwcm9w
ZXJ0eTogdW5zaWduZWQsCi0gICAgfQotCi1vcCA6Z2V0X2J5X3ZhbCwKLSAgICBhcmdzOiB7Ci0g
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfSwKLSAgICBtZXRh
ZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLAotICAgIH0KLQotb3AgOnB1dF9ieV92YWwsCi0gICAgYXJnczog
ewotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHByb3BlcnR5OiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfSwKLSAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICB9
Ci0KLW9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGJhc2U6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGhpc1ZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0g
ICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHZhbHVlOiBWaXJ0dWFs
UmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCi0gICAgYXJnczogewot
ICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHByb3BlcnR5OiBWaXJ0dWFs
UmVnaXN0ZXIsCi0gICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfSwKLSAgICBt
ZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICB9Ci0K
LW9wIDpkZWxfYnlfdmFsLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgcHJvcGVydHk6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDpwdXRfZ2V0dGVyX2J5X2lkLAotICAgIGFyZ3M6
IHsKLSAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBwcm9wZXJ0eTogdW5z
aWduZWQsCi0gICAgICAgIGF0dHJpYnV0ZXM6IHVuc2lnbmVkLAotICAgICAgICBhY2Nlc3Nvcjog
VmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQotb3AgOnB1dF9zZXR0ZXJfYnlfaWQsCi0gICAgYXJn
czogewotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHByb3BlcnR5OiB1
bnNpZ25lZCwKLSAgICAgICAgYXR0cmlidXRlczogdW5zaWduZWQsCi0gICAgICAgIGFjY2Vzc29y
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQs
Ci0gICAgYXJnczogewotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHBy
b3BlcnR5OiB1bnNpZ25lZCwKLSAgICAgICAgYXR0cmlidXRlczogdW5zaWduZWQsCi0gICAgICAg
IGdldHRlcjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBzZXR0ZXI6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICB9Ci0KLW9wIDpwdXRfZ2V0dGVyX2J5X3ZhbCwKLSAgICBhcmdzOiB7Ci0gICAgICAg
IGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgYXR0cmlidXRlczogdW5zaWduZWQsCi0gICAgICAgIGFjY2Vzc29yOiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6cHV0X3NldHRlcl9ieV92YWwsCi0gICAgYXJnczog
ewotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHByb3BlcnR5OiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIGF0dHJpYnV0ZXM6IHVuc2lnbmVkLAotICAgICAgICBhY2Nl
c3NvcjogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQotb3AgOmRlZmluZV9kYXRhX3Byb3BlcnR5
LAotICAgIGFyZ3M6IHsKLSAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBw
cm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAotICAgICAgICBhdHRyaWJ1dGVzOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6ZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5LAotICAgIGFyZ3M6IHsKLSAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBn
ZXR0ZXI6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgc2V0dGVyOiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgICAgIGF0dHJpYnV0ZXM6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDpqbXAs
Ci0gICAgYXJnczogewotICAgICAgICB0YXJnZXQ6IGludCwKLSAgICB9Ci0KLW9wIDpqdHJ1ZSwK
LSAgICBhcmdzOiB7Ci0gICAgICAgIGNvbmRpdGlvbjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAg
ICB0YXJnZXQ6IGludCwKLSAgICB9Ci0KLW9wIDpqZmFsc2UsCi0gICAgYXJnczogewotICAgICAg
ICBjb25kaXRpb246IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0OiBpbnQsCi0gICAg
fQotCi1vcCA6amVxX251bGwsCi0gICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAotICAgICAgICB0YXJnZXQ6IGludCwKLSAgICB9Ci0KLW9wIDpqbmVxX251bGwsCi0g
ICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0YXJn
ZXQ6IGludCwKLSAgICB9Ci0KLW9wIDpqbmVxX3B0ciwKLSAgICBhcmdzOiB7Ci0gICAgICAgIHZh
bHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHNwZWNpYWxQb2ludGVyOiBTcGVjaWFsOjpQ
b2ludGVyLAotICAgICAgICB0YXJnZXQ6IGludCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIGhhc0p1bXBlZDogYm9vbCwKLSAgICB9Ci0KLW9wX2dyb3VwIDpCaW5hcnlKbXAsCi0g
ICAgWwotICAgICAgICA6amVxLAotICAgICAgICA6anN0cmljdGVxLAotICAgICAgICA6am5lcSwK
LSAgICAgICAgOmpuc3RyaWN0ZXEsCi0gICAgICAgIDpqbGVzcywKLSAgICAgICAgOmpsZXNzZXEs
Ci0gICAgICAgIDpqZ3JlYXRlciwKLSAgICAgICAgOmpncmVhdGVyZXEsCi0gICAgICAgIDpqbmxl
c3MsCi0gICAgICAgIDpqbmxlc3NlcSwKLSAgICAgICAgOmpuZ3JlYXRlciwKLSAgICAgICAgOmpu
Z3JlYXRlcmVxLAotICAgICAgICA6amJlbG93LAotICAgICAgICA6amJlbG93ZXEsCi0gICAgXSwK
LSAgICBhcmdzOiB7Ci0gICAgICAgIGxoczogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICByaHM6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0OiBpbnQsCi0gICAgfQotCi1vcCA6bG9v
cF9oaW50Ci0KLW9wX2dyb3VwIDpTd2l0Y2hWYWx1ZSwKLSAgICBbCi0gICAgICAgIDpzd2l0Y2hf
aW1tLAotICAgICAgICA6c3dpdGNoX2NoYXIsCi0gICAgICAgIDpzd2l0Y2hfc3RyaW5nLAotICAg
IF0sCi0gICAgYXJnczogewotICAgICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKLSAgICAgICAg
ZGVmYXVsdE9mZnNldDogaW50LAotICAgICAgICBzY3J1dGluZWU6IFZpcnR1YWxSZWdpc3RlciwK
LSAgICB9Ci0KLW9wX2dyb3VwIDpOZXdGdW5jdGlvbiwKLSAgICBbCi0gICAgICAgIDpuZXdfZnVu
YywKLSAgICAgICAgOm5ld19mdW5jX2V4cCwKLSAgICAgICAgOm5ld19nZW5lcmF0b3JfZnVuYywK
LSAgICAgICAgOm5ld19nZW5lcmF0b3JfZnVuY19leHAsCi0gICAgICAgIDpuZXdfYXN5bmNfZnVu
YywKLSAgICAgICAgOm5ld19hc3luY19mdW5jX2V4cCwKLSAgICAgICAgOm5ld19hc3luY19nZW5l
cmF0b3JfZnVuYywKLSAgICAgICAgOm5ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHAsCi0gICAg
XSwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBz
Y29wZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBmdW5jdGlvbkRlY2w6IHVuc2lnbmVkLAot
ICAgIH0KLQotb3AgOnNldF9mdW5jdGlvbl9uYW1lLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZnVu
Y3Rpb246IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgbmFtZTogVmlydHVhbFJlZ2lzdGVyLAot
ICAgIH0KLQotIyBvcF9jYWxsIHZhcmlhdGlvbnMKLW9wIDpjYWxsLAotICAgIGFyZ3M6IHsKLSAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lz
dGVyLAotICAgICAgICBhcmdjOiB1bnNpZ25lZCwKLSAgICAgICAgYXJndjogdW5zaWduZWQsCi0g
ICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExp
bmtJbmZvLAotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJv
ZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0KLQotb3AgOnRhaWxfY2FsbCwKLSAgICBhcmdzOiB7
Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICAgICAgYXJnYzogdW5zaWduZWQsCi0gICAgICAgIGFyZ3Y6IHVuc2lnbmVk
LAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENh
bGxMaW5rSW5mbywKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDpjYWxsX2V2YWwsCi0gICAgYXJn
czogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ2M6IHVuc2lnbmVkLAotICAgICAgICBhcmd2OiB1bnNp
Z25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQotCi1vcCA6Y2FsbF92YXJhcmdzLAot
ICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNhbGxl
ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0aGlzVmFsdWU/OiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgICAgIGFyZ3VtZW50cz86IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmlyc3RGcmVl
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCi0gICAgfSwKLSAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0KLQotb3AgOnRhaWxfY2FsbF92YXJhcmdz
LAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNh
bGxlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0aGlzVmFsdWU/OiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIGFyZ3VtZW50cz86IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmlyc3RG
cmVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCi0gICAgfSwK
LSAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgIH0KLQotb3AgOnRhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVy
LAotICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGhpc1ZhbHVlPzog
VmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBhcmd1bWVudHM/OiBWaXJ0dWFsUmVnaXN0ZXIsCi0g
ICAgICAgIGZpcnN0RnJlZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBmaXJzdFZhckFyZzog
aW50LAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJh
eVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDpj
b25zdHJ1Y3QsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFyZ2M6IHVuc2lnbmVkLAot
ICAgICAgICBhcmd2OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAg
IGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQotCi1v
cCA6Y29uc3RydWN0X3ZhcmFyZ3MsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRoaXNW
YWx1ZT86IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgYXJndW1lbnRzPzogVmlydHVhbFJlZ2lz
dGVyLAotICAgICAgICBmaXJzdEZyZWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZmlyc3RW
YXJBcmc6IGludCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmls
ZTogQXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgfQot
Ci1vcCA6cmV0LAotICAgIGFyZ3M6IHsKLSAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwK
LSAgICB9Ci0KLW9wIDpzdHJjYXQsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICAgICAgc3JjOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNvdW50OiBp
bnQsCi0gICAgfQotCi1vcCA6dG9fcHJpbWl0aXZlLAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHNyYzogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0K
LQotb3AgOnJlc29sdmVfc2NvcGUsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwgIyBvZmZzZXQgMQotICAgICAgICBzY29wZTogVmlydHVhbFJlZ2lzdGVyLCAjIG9m
ZnNldCAyCi0gICAgICAgIHZhcjogdW5zaWduZWQsICMgb2Zmc2V0IDMKLSAgICAgICAgIyAkYmVn
aW46IDpwcml2YXRlLAotICAgICAgICByZXNvbHZlVHlwZTogUmVzb2x2ZVR5cGUsCi0gICAgICAg
IGxvY2FsU2NvcGVEZXB0aDogdW5zaWduZWQsCi0gICAgfSwKLSAgICBtZXRhZGF0YTogewotICAg
ICAgICByZXNvbHZlVHlwZTogUmVzb2x2ZVR5cGUsICMgb2Zmc2V0IDQKLSAgICAgICAgbG9jYWxT
Y29wZURlcHRoOiB1bnNpZ25lZCwgIyBvZmZzZXQgNQotICAgICAgICBfOiB7ICMgb2Zmc2V0IDYK
LSAgICAgICAgICAgICAjIHdyaXR0ZW4gZHVyaW5nIGxpbmtpbmcKLSAgICAgICAgICAgICBsZXhp
Y2FsRW52aXJvbm1lbnQ6IFdyaXRlQmFycmllckJhc2VbSlNDZWxsXSwgIyBsZXhpY2FsRW52aXJv
bm1lbnQgJiYgdHlwZSA9PSBNb2R1bGVWYXIKLSAgICAgICAgICAgICBzeW1ib2xUYWJsZTogV3Jp
dGVCYXJyaWVyQmFzZVtTeW1ib2xUYWJsZV0sICMgbGV4aWNhbEVudmlyb25tZW50ICYmIHR5cGUg
IT0gTW9kdWxlVmFyCi0KLSAgICAgICAgICAgICBjb25zdGFudFNjb3BlOiBXcml0ZUJhcnJpZXJC
YXNlW0pTU2NvcGVdLAotCi0gICAgICAgICAgICAgIyB3cml0dGVuIGZyb20gdGhlIHNsb3cgcGF0
aAotICAgICAgICAgICAgIGdsb2JhbExleGljYWxFbnZpcm9ubWVudDogSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQuKiwKLSAgICAgICAgICAgICBnbG9iYWxPYmplY3Q6IEpTR2xvYmFsT2JqZWN0
LiosCi0gICAgICAgIH0sCi0gICAgfQotCi1vcCA6Z2V0X2Zyb21fc2NvcGUsCi0gICAgYXJnczog
ewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwgIyBvZmZzZXQgIDEKLSAgICAgICAgc2Nv
cGU6IFZpcnR1YWxSZWdpc3RlciwgIyBvZmZzZXQgMgotICAgICAgICB2YXI6IHVuc2lnbmVkLCAj
IG9mZnNldCAzCi0gICAgICAgICMgJGJlZ2luOiA6cHJpdmF0ZSwKLSAgICAgICAgZ2V0UHV0SW5m
bzogR2V0UHV0SW5mbywKLSAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1bnNpZ25lZCwKLSAgICAg
ICAgb2Zmc2V0OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGdl
dFB1dEluZm86IEdldFB1dEluZm8sICMgb2Zmc2V0IDQKLSAgICAgICAgXzogeyAjcHJldmlvdXNs
eSBvZmZzZXQgNQotICAgICAgICAgICAgd2F0Y2hwb2ludFNldDogV2F0Y2hwb2ludFNldC4qLAot
ICAgICAgICAgICAgc3RydWN0dXJlOiBXcml0ZUJhcnJpZXJCYXNlW1N0cnVjdHVyZV0sCi0gICAg
ICAgIH0sCi0gICAgICAgIG9wZXJhbmQ6IHVpbnRwdHJfdCwgI29mZnNldCA2Ci0gICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwgIyBvZmZzZXQgNwotICAgIH0sCi0gICAgbWV0YWRhdGFfaW5p
dGlhbGl6ZXJzOiB7Ci0gICAgICAgIGdldFB1dEluZm86IDpnZXRQdXRJbmZvLAotICAgICAgICBv
cGVyYW5kOiA6b2Zmc2V0LAotICAgIH0KLQotb3AgOnB1dF90b19zY29wZSwKLSAgICBhcmdzOiB7
Ci0gICAgICAgIHNjb3BlOiBWaXJ0dWFsUmVnaXN0ZXIsICMgb2Zmc2V0IDEKLSAgICAgICAgdmFy
OiB1bnNpZ25lZCwgIyBvZmZzZXQgMgotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLCAj
IG9mZnNldCAzCi0gICAgICAgICMgJGJlZ2luOiA6cHJpdmF0ZSwKLSAgICAgICAgZ2V0UHV0SW5m
bzogR2V0UHV0SW5mbywKLSAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGg6IGludCwKLSAg
ICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKLSAgICB9LAotICAgIG1ldGFkYXRhOiB7Ci0gICAgICAg
IGdldFB1dEluZm86IEdldFB1dEluZm8sICMgb2Zmc2V0IDQKLSAgICAgICAgXzogeyAjIG9mZnNl
dCA1Ci0gICAgICAgICAgICBzdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwK
LSAgICAgICAgICAgIHdhdGNocG9pbnRTZXQ6IFdhdGNocG9pbnRTZXQuKiwKLSAgICAgICAgfSwK
LSAgICAgICAgb3BlcmFuZDogdWludHB0cl90LCAjIG9mZnNldCA2Ci0gICAgfSwKLSAgICBtZXRh
ZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgZ2V0UHV0SW5mbzogOmdldFB1dEluZm8sCi0g
ICAgICAgIG9wZXJhbmQ6IDpvZmZzZXQsCi0gICAgfQotCi1vcCA6Z2V0X2Zyb21fYXJndW1lbnRz
LAotICAgIGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFy
Z3VtZW50czogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBpbmRleDogdW5zaWduZWQsCi0gICAg
fSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAg
fQotCi1vcCA6cHV0X3RvX2FyZ3VtZW50cywKLSAgICBhcmdzOiB7Ci0gICAgICAgIGFyZ3VtZW50
czogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBpbmRleDogdW5zaWduZWQsCi0gICAgICAgIHZh
bHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6cHVzaF93aXRoX3Njb3BlLAotICAg
IGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGN1cnJlbnRT
Y29wZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBuZXdTY29wZTogVmlydHVhbFJlZ2lzdGVy
LAotICAgIH0KLQotb3AgOmNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50LAotICAgIGFyZ3M6IHsK
LSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHNjb3BlOiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgICAgIHN5bWJvbFRhYmxlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGlu
aXRpYWxWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQotb3AgOmdldF9wYXJlbnRfc2Nv
cGUsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAg
c2NvcGU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDpjYXRjaCwKLSAgICBhcmdzOiB7
Ci0gICAgICAgIGV4Y2VwdGlvbjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0aHJvd25WYWx1
ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYnVm
ZmVyOiBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyLiosCi0gICAgfQotCi1vcCA6dGhyb3cs
Ci0gICAgYXJnczogewotICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQot
b3AgOnRocm93X3N0YXRpY19lcnJvciwKLSAgICBhcmdzOiB7Ci0gICAgICAgIG1lc3NhZ2U6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICAgICAgZXJyb3JUeXBlOiBFcnJvclR5cGUsCi0gICAgfQotCi1v
cCA6ZGVidWcsCi0gICAgYXJnczogewotICAgICAgICBkZWJ1Z0hvb2tUeXBlOiBEZWJ1Z0hvb2tU
eXBlLAotICAgICAgICBoYXNCcmVha3BvaW50OiBib29sLAotICAgIH0KLQotb3AgOmVuZCwKLSAg
ICBhcmdzOiB7Ci0gICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6
cHJvZmlsZV90eXBlLAotICAgIGFyZ3M6IHsKLSAgICAgICAgdGFyZ2V0OiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoOiBpbnQsCi0gICAgICAgIGZsYWc6
IFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAotICAgICAgICBpZGVudGlmaWVyPzogdW5zaWduZWQs
Ci0gICAgICAgIHJlc29sdmVUeXBlOiBSZXNvbHZlVHlwZSwKLSAgICB9LAotICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHR5cGVMb2NhdGlvbjogVHlwZUxvY2F0aW9uLiosCi0gICAgfQotCi1vcCA6
cHJvZmlsZV9jb250cm9sX2Zsb3csCi0gICAgYXJnczogewotICAgICAgICB0ZXh0T2Zmc2V0OiBp
bnQsCi0gICAgfSwKLSAgICBtZXRhZGF0YTogewotICAgICAgICBiYXNpY0Jsb2NrTG9jYXRpb246
IEJhc2ljQmxvY2tMb2NhdGlvbi4qLAotICAgIH0KLQotb3AgOmdldF9lbnVtZXJhYmxlX2xlbmd0
aCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBi
YXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6aGFzX2luZGV4ZWRfcHJvcGVydHks
Ci0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgYmFz
ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAot
ICAgIH0sCi0gICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUsCi0gICAgfQotCi1vcCA6aGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSwKLSAgICBhcmdzOiB7Ci0g
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGVudW1lcmF0
b3I6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDpoYXNfZ2VuZXJpY19wcm9wZXJ0eSwK
LSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBiYXNl
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCi0g
ICAgfQotCi1vcCA6Z2V0X2RpcmVjdF9wbmFtZSwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDog
VmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAg
IHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGluZGV4OiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9LAotICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICB9Ci0KLW9wIDpn
ZXRfcHJvcGVydHlfZW51bWVyYXRvciwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6
ZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICAgICAgZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAotICAg
ICAgICBpbmRleDogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQotb3AgOmVudW1lcmF0b3JfZ2Vu
ZXJpY19wbmFtZSwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGluZGV4OiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6dG9faW5kZXhfc3RyaW5nLAotICAgIGFyZ3M6IHsK
LSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGluZGV4OiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgfQotCi1vcCA6dW5yZWFjaGFibGUKLQotb3AgOmNyZWF0ZV9yZXN0LAotICAg
IGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGFycmF5U2l6
ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBudW1QYXJhbWV0ZXJzVG9Ta2lwOiB1bnNpZ25l
ZCwKLSAgICB9Ci0KLW9wIDpnZXRfcmVzdF9sZW5ndGgsCi0gICAgYXJnczogewotICAgICAgICBk
c3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgbnVtUGFyYW1ldGVyc1RvU2tpcDogdW5zaWdu
ZWQsCi0gICAgfQotCi1vcCA6eWllbGQsCi0gICAgYXJnczogewotICAgICAgICBnZW5lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgeWllbGRQb2ludDogdW5zaWduZWQsCi0gICAgICAg
IGFyZ3VtZW50OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6Y2hlY2tfdHJhcHMKLQot
b3AgOmxvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSwKLSAgICBhcmdzOiB7Ci0gICAgICAgIHNj
b3BlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCi1vcCA6bG9nX3NoYWRvd19jaGlja2VuX3Rh
aWwsCi0gICAgYXJnczogewotICAgICAgICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgc2NvcGU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICB9Ci0KLW9wIDpyZXNvbHZlX3Njb3Bl
X2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRz
dDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBzY29wZTogVmlydHVhbFJlZ2lzdGVyLAotICAg
ICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCi0gICAgfQotCi1vcCA6bm9wCi0KLW9wIDpzdXBlcl9z
YW1wbGVyX2JlZ2luCi0KLW9wIDpzdXBlcl9zYW1wbGVyX2VuZAotCi1lbmRfc2VjdGlvbiA6Qnl0
ZWNvZGVzCi0KLWJlZ2luX3NlY3Rpb24gOkNMb29wSGVscGVycywKLSAgICBlbWl0X2luX2hfZmls
ZTogdHJ1ZSwKLSAgICBtYWNyb19uYW1lX2NvbXBvbmVudDogOkNMT09QX0JZVEVDT0RFX0hFTFBF
UgotCi1vcCA6bGxpbnRfZW50cnkKLW9wIDpnZXRIb3N0Q2FsbFJldHVyblZhbHVlCi1vcCA6bGxp
bnRfcmV0dXJuX3RvX2hvc3QKLW9wIDpsbGludF92bV9lbnRyeV90b19qYXZhc2NyaXB0Ci1vcCA6
bGxpbnRfdm1fZW50cnlfdG9fbmF0aXZlCi1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9t
X2pzXzEKLW9wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMgotb3AgOmxsaW50X2Ns
b29wX2RpZF9yZXR1cm5fZnJvbV9qc18zCi1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9t
X2pzXzQKLW9wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNQotb3AgOmxsaW50X2Ns
b29wX2RpZF9yZXR1cm5fZnJvbV9qc182Ci1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9t
X2pzXzcKLW9wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfOAotb3AgOmxsaW50X2Ns
b29wX2RpZF9yZXR1cm5fZnJvbV9qc185Ci1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9t
X2pzXzEwCi1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzExCi1vcCA6bGxpbnRf
Y2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzEyCi1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9m
cm9tX2pzXzEzCi1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzE0Ci1vcCA6bGxp
bnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzE1Ci1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVy
bl9mcm9tX2pzXzE2Ci1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzE3Ci1vcCA6
bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzE4Ci1vcCA6bGxpbnRfY2xvb3BfZGlkX3Jl
dHVybl9mcm9tX2pzXzE5Ci1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzIwCi1v
cCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzIxCi1vcCA6bGxpbnRfY2xvb3BfZGlk
X3JldHVybl9mcm9tX2pzXzIyCi1vcCA6bGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzIz
Ci0KLWVuZF9zZWN0aW9uIDpDTG9vcEhlbHBlcnMKLQotYmVnaW5fc2VjdGlvbiA6TmF0aXZlSGVs
cGVycywKLSAgICBlbWl0X2luX2hfZmlsZTogdHJ1ZSwKLSAgICBlbWl0X2luX2FzbV9maWxlOiB0
cnVlLAotICAgIG1hY3JvX25hbWVfY29tcG9uZW50OiA6QllURUNPREVfSEVMUEVSCi0KLW9wIDps
bGludF9wcm9ncmFtX3Byb2xvZ3VlCi1vcCA6bGxpbnRfZXZhbF9wcm9sb2d1ZQotb3AgOmxsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlCi1vcCA6bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWUKLW9wIDpsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlCi1vcCA6bGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2sKLW9wIDpsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrCi1vcCA6bGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQKLW9w
IDpsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCi1vcCA6bGxpbnRfdGhyb3df
ZHVyaW5nX2NhbGxfdHJhbXBvbGluZQotb3AgOmxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUK
LW9wIDpsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUKLW9wIDpsbGludF9pbnRlcm5h
bF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUKLW9wIDpsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9j
b25zdHJ1Y3RfdHJhbXBvbGluZQotb3AgOmhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uCi0KLWVuZF9z
ZWN0aW9uIDpOYXRpdmVIZWxwZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDMzMGM3Yzdh
OThkZWU3MGIxOTYxY2VkMGUxYzVjMjQyNzdiMjVlOGIuLmUwMTY5ZGZiNDk4ZWU2NDRkNjEwYWFm
NGRmOTBiNDg0NWZhYmFlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVLaWxscyYKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpkdW1wUmVzdWx0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBkYXRhTG9nKCJc
bkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKLSAg
ICBjb25zdCBhdXRvJiBpbnN0cnVjdGlvbnMgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpOwor
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKICAgICB1bnNpZ25lZCBpID0gMDsKIAogICAgIHVuc2lnbmVkIG51bWJl
ck9mQmxvY2tzID0gbV9ncmFwaC5zaXplKCk7CkBAIC0xNjcsMTUgKzE2NywxNyBAQCB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlck9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8
IGJsb2NrLT5sZWFkZXJPZmZzZXQoKSArIGJsb2NrLT50b3RhbExlbmd0aCgpOykgewotICAgICAg
ICAgICAgY29uc3QgYXV0byBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CiAKICAgICAgICAg
ICAgIGRhdGFMb2dGKCJMaXZlIHZhcmlhYmxlczoiKTsKICAgICAgICAgICAgIEZhc3RCaXRWZWN0
b3IgbGl2ZUJlZm9yZSA9IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2Nr
LCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICBkdW1wQml0VmVjdG9yKGxpdmVCZWZvcmUp
OwogICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICBjb2RlQmxvY2stPmR1
bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAg
ICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGluc3RydWN0aW9u
c0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgICAgICAgICBieXRlY29kZU9mZnNl
dCArPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGgg
PSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9
IG9wY29kZUxlbmd0aDsKICAgICAgICAgfQogCiAgICAgICAgIGRhdGFMb2dGKCJMaXZlIHZhcmlh
YmxlczoiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCA3YmVmNGNmMWRjZTJhMWE3ZmMxODNhZmVh
ZTIxZGQ1OTE0ZjhmOTQ5Li42NGIxNzU2MjViODgyNThjMDE0YTBkMGVhYWU1NmM3Y2MzZTcxOGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC0zNyw5ICszNyw5IEBAIGNsYXNzIEZ1bGxCeXRlY29k
ZUxpdmVuZXNzOwogCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb24gewogcHJvdGVj
dGVkOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1
bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2Rl
QmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mLCBCeXRlY29kZUdyYXBoJiwgSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYs
IGNvbnN0IERlZkZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbnMsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERl
ZkZ1bmN0b3I+IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiwgY29uc3Qg
SW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBVc2VGdW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ29kZUJsb2NrVHlwZT4gdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9ja1R5
cGUqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIEJ5dGVjb2RlR3JhcGgmLCBJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIEluc3RydWN0aW9ucz4g
dm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqLCBjb25zdCBJbnN0cnVjdGlv
bnMmLCBCeXRlY29kZUdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImIG91dCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlLCB0eXBlbmFt
ZSBJbnN0cnVjdGlvbnM+IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2tUeXBlKiwgY29uc3QgSW5zdHJ1Y3Rpb25zJiwgQnl0ZWNvZGVHcmFwaCYsIEJ5
dGVjb2RlQmFzaWNCbG9jayosIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYg
cmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggNzFmZjU2Zjdl
YTY4YTJmNDU1Y2Y2NzhiM2M3OWEyZDdiYWI5YjM5ZC4uMTVlODQ3ZmMzYzUwYTJlZTgyYjA2MDBl
N2VlOWQ5ODg1NjVhZGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBAIC01
MSwxNyArNTEsMTggQEAgaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0VmVj
dG9yJiBvdXQsIGludCBvcGVyYW5kKQogICAgIHJldHVybiBvcGVyYW5kSXNBbHdheXNMaXZlKG9w
ZXJhbmQpIHx8IG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKG91dCwgb3BlcmFuZCk7
CiB9CiAKLWlubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKQoraW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50
IG9wZXJhbmQpCiB7Ci0gICAgaWYgKG9wZXJhbmQuaXNDb25zdGFudCgpKQorICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOworICAgIGlmICh2aXJ0dWFsUmVnLmlzQ29uc3Rh
bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBvcGVyYW5kLmlzTG9jYWwo
KTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7CiB9CiAKIC8vIFNpbXBsaWZpZWQg
aW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJz
dCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKIC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0
aGUgdXNlcy4KLXRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGUsIHR5cGVuYW1lIFVzZUZ1
bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZUJsb2Nr
LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUdyYXBoJiBn
cmFwaCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2RlQmxvY2tUeXBlLCB0eXBlbmFtZSBJbnN0cnVjdGlvbnMsIHR5cGVuYW1lIFVzZUZ1bmN0b3Is
IHR5cGVuYW1lIERlZkZ1bmN0b3I+CitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFn
YXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0
b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rp
b24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMg
YW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBp
cyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQpAQCAt
NzgsMjEgKzc5LDIyIEBAIGlubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjo6
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2tUeXBlKiBjb2RlCiAgICAgLy8gdXNlcyBiZWZv
cmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90
IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBv
dXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogCi0g
ICAgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVPZmZzZXQpLnB0
cigpOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Cisg
ICAgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBpbnN0cnVjdGlvbnMuYmVnaW4oKTsKKyAgICBh
dXRvKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Cisg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoKmluc3RydWN0
aW9uKTsKIAogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIGNvZGVC
bG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLAotICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kKSB7CisgICAgICAgIFsmXSAoQ29kZUJsb2NrVHlwZSosIGNvbnN0IHR5cGVuYW1l
IENvZGVCbG9ja1R5cGU6Okluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CiAg
ICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCi0gICAg
ICAgICAgICAgICAgZGVmKG9wZXJhbmQudG9Mb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBkZWYo
VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0pOwogCiAgICAg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb24sCi0gICAgICAgIFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsK
KyAgICAgICAgWyZdIChDb2RlQmxvY2tUeXBlKiwgY29uc3QgdHlwZW5hbWUgQ29kZUJsb2NrVHlw
ZTo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlm
IChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKLSAgICAgICAgICAgICAgICB1
c2Uob3BlcmFuZC50b0xvY2FsKCkpOworICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0
ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICAvLyBJZiB3ZSBoYXZl
IGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0
aGUgCkBAIC0xMDQsOCArMTA2LDggQEAgaW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNvZGUKICAgICB9CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci1pbmxpbmUgdm9pZCBCeXRlY29k
ZUxpdmVuZXNzUHJvcGFnYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrVHlwZSog
Y29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBCeXRlY29k
ZUdyYXBoJiBncmFwaCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCwg
RmFzdEJpdFZlY3RvciYgb3V0KQordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZSwgdHlw
ZW5hbWUgSW5zdHJ1Y3Rpb25zPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24oCiAgICAgICAgIGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBncmFwaCwgYnl0ZWNv
ZGVPZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVSZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVSZXdyaXRlci5jcHAKaW5kZXggMjZhM2I0MjlmNjE0ZTE3NTAyY2M2Mzk3ZTUxOTkzMDAxODY4
ZDNmMy4uY2IyNzhjZjEwNTE5ZWI2MWYxN2M2OTAxMWJmYjM1NzAxZTY0NWM3NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApA
QCAtMzgsMTMgKzM4LDEzIEBAIHZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRp
b24oKQogICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUo
KTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKICAgICAgICAgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBt
X2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOwogICAgICAgICBpZiAoaW5zZXJ0aW9uLnR5cGUg
PT0gSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUpCi0gICAgICAgICAgICBtX3dyaXRlci5tX2luc3Ry
dWN0aW9ucy5yZW1vdmUoaW5zZXJ0aW9uLmluZGV4LmJ5dGVjb2RlT2Zmc2V0LCBpbnNlcnRpb24u
bGVuZ3RoKCkpOworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnMucmVtb3ZlKGluc2VydGlvbi5p
bmRleC5ieXRlY29kZU9mZnNldCwgaW5zZXJ0aW9uLmxlbmd0aCgpKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uLmluY2x1ZGVCcmFuY2ggPT0gSW5jbHVkZUJyYW5j
aDo6WWVzKSB7CiAgICAgICAgICAgICAgICAgaW50IGZpbmFsT2Zmc2V0ID0gaW5zZXJ0aW9uLmlu
ZGV4LmJ5dGVjb2RlT2Zmc2V0ICsgY2FsY3VsYXRlRGlmZmVyZW5jZShtX2luc2VydGlvbnMuYmVn
aW4oKSwgbV9pbnNlcnRpb25zLmJlZ2luKCkgKyBpbnNlcnRpb25JbmRleCk7CiAgICAgICAgICAg
ICAgICAgYWRqdXN0SnVtcFRhcmdldHNJbkZyYWdtZW50KGZpbmFsT2Zmc2V0LCBpbnNlcnRpb24p
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV93cml0ZXIubV9pbnN0cnVjdGlvbnMuaW5z
ZXJ0VmVjdG9yKGluc2VydGlvbi5pbmRleC5ieXRlY29kZU9mZnNldCwgaW5zZXJ0aW9uLmluc3Ry
dWN0aW9ucy5tX2luc3RydWN0aW9ucyk7CisgICAgICAgICAgICBtX2luc3RydWN0aW9ucy5pbnNl
cnRWZWN0b3IoaW5zZXJ0aW9uLmluZGV4LmJ5dGVjb2RlT2Zmc2V0LCBpbnNlcnRpb24uaW5zdHJ1
Y3Rpb25zKTsKICAgICAgICAgfQogICAgIH0KICAgICBtX2luc2VydGlvbnMuY2xlYXIoKTsKQEAg
LTU2LDIzICs1NiwyOCBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmV4ZWN1dGUoKQogICAgICAg
ICByZXR1cm4gbGhzLmluZGV4IDwgcmhzLmluZGV4OwogICAgIH0pOwogCi0gICAgbV9jb2RlQmxv
Y2stPmFwcGx5TW9kaWZpY2F0aW9uKCp0aGlzLCBtX3dyaXRlcik7CisgICAgbV9jb2RlQmxvY2st
PmFwcGx5TW9kaWZpY2F0aW9uKCp0aGlzLCBtX2luc3RydWN0aW9ucyk7CiB9CiAKIHZvaWQgQnl0
ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldHNJbkZyYWdtZW50KHVuc2lnbmVkIGZpbmFs
T2Zmc2V0LCBJbnNlcnRpb24mIGluc2VydGlvbikKIHsKLSAgICBmb3IgKGF1dG8mIGluc3RydWN0
aW9uIDogaW5zZXJ0aW9uLmluc3RydWN0aW9ucykgewotICAgICAgICBpZiAoaXNCcmFuY2goaW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCkpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IGZpbmFsT2Zmc2V0ICsgaW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7Ci0gICAgICAgICAgICB1
cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBmaW5hbE9m
ZnNldCwgaW5zdHJ1Y3Rpb24sIFsmXShpbnQzMl90IGxhYmVsKSB7CisgICAgYXV0byYgZnJhZ21l
bnQgPSBpbnNlcnRpb24uaW5zdHJ1Y3Rpb25zOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gZnJhZ21lbnQuZGF0YSgpOworICAgIGZvciAodW5zaWduZWQgZnJh
Z21lbnRPZmZzZXQgPSAwLCBmcmFnbWVudENvdW50ID0gZnJhZ21lbnQuc2l6ZSgpOyBmcmFnbWVu
dE9mZnNldCA8IGZyYWdtZW50Q291bnQ7KSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24m
IGluc3RydWN0aW9uID0gZnJhZ21lbnRbZnJhZ21lbnRPZmZzZXRdOworICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLnUub3Bjb2RlOworICAgICAgICBpZiAoaXNCcmFuY2go
b3Bjb2RlSUQpKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGZpbmFs
T2Zmc2V0ICsgZnJhZ21lbnRPZmZzZXQ7CisgICAgICAgICAgICBleHRyYWN0U3RvcmVkSnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGZy
YWdtZW50T2Zmc2V0LCBbJl0oaW50MzJfdCYgbGFiZWwpIHsKICAgICAgICAgICAgICAgICBpbnQg
YWJzb2x1dGVPZmZzZXQgPSBhZGp1c3RBYnNvbHV0ZU9mZnNldChsYWJlbCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGFic29sdXRlT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZU9m
ZnNldCk7CisgICAgICAgICAgICAgICAgbGFiZWwgPSBhYnNvbHV0ZU9mZnNldCAtIHN0YXRpY19j
YXN0PGludD4oYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KKyAg
ICAgICAgZnJhZ21lbnRPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKICAgICB9CiB9
CiAKLXZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludCBpbnNl
cnRpb25Qb2ludCwgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoLCBJbnN0cnVjdGlvblN0cmVh
bVdyaXRlciYmIHdyaXRlcikKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbChJbnNl
cnRpb25Qb2ludCBpbnNlcnRpb25Qb2ludCwgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoLCBW
ZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mJiBmcmFnbWVudCkKIHsKICAgICBBU1NFUlQoaW5z
ZXJ0aW9uUG9pbnQucG9zaXRpb24gPT0gUG9zaXRpb246OkJlZm9yZSB8fCBpbnNlcnRpb25Qb2lu
dC5wb3NpdGlvbiA9PSBQb3NpdGlvbjo6QWZ0ZXIpOwogICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQo
SW5zZXJ0aW9uIHsKQEAgLTgwLDExICs4NSwxMSBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6Omlu
c2VydEltcGwoSW5zZXJ0aW9uUG9pbnQgaW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2ggaQog
ICAgICAgICBJbnNlcnRpb246OlR5cGU6Okluc2VydCwKICAgICAgICAgaW5jbHVkZUJyYW5jaCwK
ICAgICAgICAgMCwKLSAgICAgICAgV1RGTW92ZSh3cml0ZXIpCisgICAgICAgIFdURk1vdmUoZnJh
Z21lbnQpCiAgICAgfSk7CiB9CiAKLWludDMyX3QgQnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVt
cFRhcmdldChJbnNlcnRpb25Qb2ludCBzdGFydFBvaW50LCBJbnNlcnRpb25Qb2ludCBqdW1wVGFy
Z2V0UG9pbnQpCitpbnQgQnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldChJbnNlcnRp
b25Qb2ludCBzdGFydFBvaW50LCBJbnNlcnRpb25Qb2ludCBqdW1wVGFyZ2V0UG9pbnQpCiB7CiAg
ICAgaWYgKHN0YXJ0UG9pbnQgPCBqdW1wVGFyZ2V0UG9pbnQpIHsKICAgICAgICAgaW50IGp1bXBU
YXJnZXQgPSBqdW1wVGFyZ2V0UG9pbnQuYnl0ZWNvZGVPZmZzZXQ7CkBAIC0xMDYsNDQgKzExMSw0
IEBAIGludDMyX3QgQnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Q
b2ludCBzdGFydFBvaW50LCBJbnNlcnRpb25QCiAgICAgcmV0dXJuIC1hZGp1c3RKdW1wVGFyZ2V0
KGp1bXBUYXJnZXRQb2ludCwgc3RhcnRQb2ludCk7CiB9CiAKLS8vIEZJWE1FOiB1bml0IHRlc3Qg
dGhlIGxvZ2ljIGluIHRoaXMgbWV0aG9kCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwOTUwCi12b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJn
ZXRzKCkKLXsKLSAgICBhdXRvIGN1cnJlbnRJbnNlcnRpb24gPSBtX2luc2VydGlvbnMuYmVnaW4o
KTsKLSAgICBhdXRvIG91dE9mTGluZUp1bXBUYXJnZXRzID0gbV9jb2RlQmxvY2stPnJlcGxhY2VP
dXRPZkxpbmVKdW1wVGFyZ2V0cygpOwotCi0gICAgaW50IG9mZnNldCA9IDA7Ci0gICAgZm9yIChJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGkgPSAwOyBpIDwgbV93cml0ZXIuc2l6ZSgpOykgewot
ICAgICAgICBpbnQgYmVmb3JlID0gMDsKLSAgICAgICAgaW50IGFmdGVyID0gMDsKLSAgICAgICAg
aW50IHJlbW92ZSA9IDA7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50SW5zZXJ0aW9uICE9IG1faW5z
ZXJ0aW9ucy5lbmQoKSAmJiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0Pihj
dXJyZW50SW5zZXJ0aW9uLT5pbmRleC5ieXRlY29kZU9mZnNldCkgPT0gaSkgewotICAgICAgICAg
ICAgYXV0byBzaXplID0gY3VycmVudEluc2VydGlvbi0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBp
ZiAoY3VycmVudEluc2VydGlvbi0+dHlwZSA9PSBJbnNlcnRpb246OlR5cGU6OlJlbW92ZSkKLSAg
ICAgICAgICAgICAgICByZW1vdmUgKz0gc2l6ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJl
bnRJbnNlcnRpb24tPmluZGV4LnBvc2l0aW9uID09IFBvc2l0aW9uOjpCZWZvcmUpCi0gICAgICAg
ICAgICAgICAgYmVmb3JlICs9IHNpemU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50SW5z
ZXJ0aW9uLT5pbmRleC5wb3NpdGlvbiA9PSBQb3NpdGlvbjo6QWZ0ZXIpCi0gICAgICAgICAgICAg
ICAgYWZ0ZXIgKz0gc2l6ZTsKLSAgICAgICAgICAgICsrY3VycmVudEluc2VydGlvbjsKLSAgICAg
ICAgfQotCi0gICAgICAgIG9mZnNldCArPSBiZWZvcmU7Ci0KLSAgICAgICAgaWYgKCFyZW1vdmUp
IHsKLSAgICAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBtX3dyaXRlci5yZWYoaSk7Ci0gICAg
ICAgICAgICB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKG1fY29kZUJsb2Nr
LCBvZmZzZXQsIGluc3RydWN0aW9uLCBbJl0oaW50MzJfdCByZWxhdGl2ZU9mZnNldCkgewotICAg
ICAgICAgICAgICAgIHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0KGluc3RydWN0aW9uLm9mZnNldCgp
LCBpbnN0cnVjdGlvbi5vZmZzZXQoKSArIHJlbGF0aXZlT2Zmc2V0KTsKLSAgICAgICAgICAgIH0s
IG91dE9mTGluZUp1bXBUYXJnZXRzKTsKLSAgICAgICAgICAgIGkgKz0gaW5zdHJ1Y3Rpb24tPnNp
emUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG9mZnNldCAtPSByZW1vdmU7Ci0g
ICAgICAgICAgICBpICs9IHJlbW92ZTsKLSAgICAgICAgfQotCi0gICAgICAgIG9mZnNldCArPSBh
ZnRlcjsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKaW5kZXggZGU1ZWQ0ODIxOGFj
YmExYmI4ZmVlNjY2YThkNjg0YjZkNDNjYTJkNi4uYTQ3MjM4NjdhZDBjZTIzNjkyYTNlNTY0NGVj
OTRkMWE0YjRjMmI1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlUmV3cml0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVSZXdyaXRlci5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCkBAIC05NCwxMCAr
OTMsMTAgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdHJ1Y3QgSW5zZXJ0aW9uUG9pbnQgewot
ICAgICAgICBpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBpbnQgYnl0ZWNvZGVPZmZz
ZXQ7CiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOwogCi0gICAgICAgIEluc2VydGlvblBvaW50
KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBQb3NpdGlvbiBwb3MpCisgICAgICAg
IEluc2VydGlvblBvaW50KGludCBvZmZzZXQsIFBvc2l0aW9uIHBvcykKICAgICAgICAgICAgIDog
Ynl0ZWNvZGVPZmZzZXQob2Zmc2V0KQogICAgICAgICAgICAgLCBwb3NpdGlvbihwb3MpCiAgICAg
ICAgIHsKQEAgLTEzMSw4OCArMTMwLDg1IEBAIHByaXZhdGU6CiAgICAgICAgIFR5cGUgdHlwZTsK
ICAgICAgICAgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoOwogICAgICAgICBzaXplX3QgcmVt
b3ZlTGVuZ3RoOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBpbnN0cnVjdGlvbnM7
CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CiAgICAg
fTsKIAogcHVibGljOgogICAgIGNsYXNzIEZyYWdtZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShGcmFnbWVudCk7CiAgICAgcHVibGljOgotICAgICAgICBGcmFnbWVudChCeXRlY29kZUdl
bmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3IsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiB3cml0
ZXIsIEluY2x1ZGVCcmFuY2gmIGluY2x1ZGVCcmFuY2gpCi0gICAgICAgICAgICA6IG1fYnl0ZWNv
ZGVHZW5lcmF0b3IoYnl0ZWNvZGVHZW5lcmF0b3IpCi0gICAgICAgICAgICAsIG1fd3JpdGVyKHdy
aXRlcikKKyAgICAgICAgRnJhZ21lbnQoVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+JiBmcmFn
bWVudCwgSW5jbHVkZUJyYW5jaCYgaW5jbHVkZUJyYW5jaCkKKyAgICAgICAgICAgIDogbV9mcmFn
bWVudChmcmFnbWVudCkKICAgICAgICAgICAgICwgbV9pbmNsdWRlQnJhbmNoKGluY2x1ZGVCcmFu
Y2gpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIE9wLCBj
bGFzcy4uLiBBcmdzPgotICAgICAgICB2b2lkIGFwcGVuZEluc3RydWN0aW9uKEFyZ3MuLi4gYXJn
cykKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgdm9pZCBhcHBlbmRJ
bnN0cnVjdGlvbihPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoaXNCcmFuY2goT3A6Om9wY29kZUlEKSkKKyAgICAgICAgICAgIGlmIChp
c0JyYW5jaChvcGNvZGVJRCkpCiAgICAgICAgICAgICAgICAgbV9pbmNsdWRlQnJhbmNoID0gSW5j
bHVkZUJyYW5jaDo6WWVzOwogCi0gICAgICAgICAgICBtX2J5dGVjb2RlR2VuZXJhdG9yLndpdGhX
cml0ZXIobV93cml0ZXIsIFsmXSB7Ci0gICAgICAgICAgICAgICAgT3A6OmVtaXQoJm1fYnl0ZWNv
ZGVHZW5lcmF0b3IsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW3NpemVvZi4u
LihhcmdzKSArIDFdID0geworICAgICAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ob3Bj
b2RlSUQpLAorICAgICAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oYXJncykuLi4KKyAg
ICAgICAgICAgIH07CisgICAgICAgICAgICBtX2ZyYWdtZW50LmFwcGVuZChpbnN0cnVjdGlvbnMs
IHNpemVvZi4uLihhcmdzKSArIDEpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvciYgbV9ieXRlY29kZUdlbmVyYXRvcjsKLSAgICAgICAgSW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXImIG1fd3JpdGVyOworICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0
cnVjdGlvbj4mIG1fZnJhZ21lbnQ7CiAgICAgICAgIEluY2x1ZGVCcmFuY2gmIG1faW5jbHVkZUJy
YW5jaDsKICAgICB9OwogCi0gICAgQnl0ZWNvZGVSZXdyaXRlcihCeXRlY29kZUdlbmVyYXRvciYg
Ynl0ZWNvZGVHZW5lcmF0b3IsIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgd3JpdGVyKQotICAgICAgICA6
IG1fYnl0ZWNvZGVHZW5lcmF0b3IoYnl0ZWNvZGVHZW5lcmF0b3IpCi0gICAgICAgICwgbV9ncmFw
aChncmFwaCkKKyAgICBCeXRlY29kZVJld3JpdGVyKEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCBVbmxp
bmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQogICAgICAg
ICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKLSAgICAgICAgLCBtX3dyaXRlcih3cml0ZXIpCisg
ICAgICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQogICAgIHsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KLSAgICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3Jl
KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5j
dGlvbikKKyAgICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5j
bHVkZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6Ok5vOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVh
bVdyaXRlciB3cml0ZXI7Ci0gICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1fYnl0ZWNvZGVHZW5l
cmF0b3IsIHdyaXRlciwgaW5jbHVkZUJyYW5jaCk7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZElu
c3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3Ry
dWN0aW9ucywgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKLSAg
ICAgICAgaW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludChpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9z
aXRpb246OkJlZm9yZSksIGluY2x1ZGVCcmFuY2gsIFdURk1vdmUod3JpdGVyKSk7CisgICAgICAg
IGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpCZWZv
cmUpLCBpbmNsdWRlQnJhbmNoLCBXVEZNb3ZlKGluc3RydWN0aW9ucykpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgotICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcihj
b25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rp
b24pCisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBGdW5jdGlvbiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVk
ZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6Ok5vOwotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdy
aXRlciB3cml0ZXI7Ci0gICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1fYnl0ZWNvZGVHZW5lcmF0
b3IsIHdyaXRlciwgaW5jbHVkZUJyYW5jaCk7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3Ry
dWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3RydWN0
aW9ucywgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKLSAgICAg
ICAgaW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludChpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9zaXRp
b246OkFmdGVyKSwgaW5jbHVkZUJyYW5jaCwgV1RGTW92ZSh3cml0ZXIpKTsKKyAgICAgICAgaW5z
ZXJ0SW1wbChJbnNlcnRpb25Qb2ludChieXRlY29kZU9mZnNldCwgUG9zaXRpb246OkFmdGVyKSwg
aW5jbHVkZUJyYW5jaCwgV1RGTW92ZShpbnN0cnVjdGlvbnMpKTsKICAgICB9CiAKLSAgICB2b2lk
IHJlbW92ZUJ5dGVjb2RlKGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9u
KQorICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiAgICAg
ewotICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbiB7IEluc2VydGlvblBvaW50
KGluc3RydWN0aW9uLm9mZnNldCgpLCBQb3NpdGlvbjo6T3JpZ2luYWxCeXRlY29kZVBvaW50KSwg
SW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUsIEluY2x1ZGVCcmFuY2g6Ok5vLCBpbnN0cnVjdGlvbi0+
c2l6ZSgpLCB7IH0gfSk7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsg
SW5zZXJ0aW9uUG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpPcmlnaW5hbEJ5dGVjb2Rl
UG9pbnQpLCBJbnNlcnRpb246OlR5cGU6OlJlbW92ZSwgSW5jbHVkZUJyYW5jaDo6Tm8sIG9wY29k
ZUxlbmd0aChtX2luc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF0udS5vcGNvZGUpLCB7IH0gfSk7
CiAgICAgfQogCiAgICAgdm9pZCBleGVjdXRlKCk7CiAKICAgICBCeXRlY29kZUdyYXBoJiBncmFw
aCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KIAotICAgIGludDMyX3QgYWRqdXN0QWJzb2x1dGVPZmZz
ZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBhYnNvbHV0ZU9mZnNldCkKKyAgICBpbnQgYWRq
dXN0QWJzb2x1dGVPZmZzZXQoaW50IGFic29sdXRlT2Zmc2V0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkanVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQoMCwgUG9zaXRpb246OkVudHJ5UG9p
bnQpLCBJbnNlcnRpb25Qb2ludChhYnNvbHV0ZU9mZnNldCwgUG9zaXRpb246OkxhYmVsUG9pbnQp
KTsKICAgICB9CiAKLSAgICBpbnQzMl90IGFkanVzdEp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0LCBpbnQzMl90IG9yaWdpbmFsSnVtcFRh
cmdldCkKKyAgICBpbnQgYWRqdXN0SnVtcFRhcmdldChpbnQgb3JpZ2luYWxCeXRlY29kZU9mZnNl
dCwgaW50IG9yaWdpbmFsSnVtcFRhcmdldCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZGp1c3RK
dW1wVGFyZ2V0KEluc2VydGlvblBvaW50KG9yaWdpbmFsQnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9u
OjpMYWJlbFBvaW50KSwgSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxKdW1wVGFyZ2V0LCBQb3NpdGlv
bjo6TGFiZWxQb2ludCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRqdXN0SnVtcFRhcmdldHMoKTsK
LQogcHJpdmF0ZToKLSAgICB2b2lkIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVC
cmFuY2gsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiYgZnJhZ21lbnQpOworICAgIHZvaWQgaW5z
ZXJ0SW1wbChJbnNlcnRpb25Qb2ludCwgSW5jbHVkZUJyYW5jaCwgVmVjdG9yPFVubGlua2VkSW5z
dHJ1Y3Rpb24+JiYgZnJhZ21lbnQpOwogCiAgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrOwogICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKQEAgLTIyMSwxMCArMjE3LDkgQEAg
cHJpdmF0ZToKICAgICBpbnQgYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludCBzdGFydFBv
aW50LCBJbnNlcnRpb25Qb2ludCBqdW1wVGFyZ2V0UG9pbnQpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEl0ZXJhdG9yPiBpbnQgY2FsY3VsYXRlRGlmZmVyZW5jZShJdGVyYXRvciBiZWdpbiwgSXRl
cmF0b3IgZW5kKTsKIAotICAgIEJ5dGVjb2RlR2VuZXJhdG9yJiBtX2J5dGVjb2RlR2VuZXJhdG9y
OwogICAgIEJ5dGVjb2RlR3JhcGgmIG1fZ3JhcGg7CiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIG1f
Y29kZUJsb2NrOwotICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX3dyaXRlcjsKKyAgICBV
bmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIG1faW5zdHJ1Y3Rpb25zOwog
ICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNjU3ZjNlNzdh
NjI0ZGVmZGRiODI4MDczNDEyMTk1ZDUxNDhiZGYwMy4uM2UzNzcxZjViNzczY2EzYzM4MzdkZGRi
M2QyYzE0NzBiMjMyNGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKQEAgLTI2LDUwICsyNiwxNiBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi0jZGVmaW5lIENBTExfRlVOQ1RP
UihfX2FyZykgXAotICAgIGZ1bmN0b3IoX19ieXRlY29kZS5fX2FyZyk7Ci0KLSNkZWZpbmUgVVNF
U19PUl9ERUZTKF9fb3Bjb2RlLCAuLi4pIFwKLSAgICBjYXNlIF9fb3Bjb2RlOjpvcGNvZGVJRDog
eyBcCi0gICAgICAgIGF1dG8gX19ieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxfX29wY29kZT4o
KTsgXAotICAgICAgICBXVEZfTEFaWV9GT1JfRUFDSF9URVJNKENBTExfRlVOQ1RPUiwgX19WQV9B
UkdTX18pIFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgfQotCi0jZGVmaW5lIFVTRVMgVVNFU19P
Ul9ERUZTCi0jZGVmaW5lIERFRlMgVVNFU19PUl9ERUZTCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEJs
b2NrLCB0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
bG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2Rl
SUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsK
ICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgKGNvZGVCbG9jay0+d2FzQ29tcGlsZWRX
aXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkgJiYgY29kZUJs
b2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQotICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
ay0+c2NvcGVSZWdpc3RlcigpKTsKLQotICAgIGF1dG8gaGFuZGxlTmV3QXJyYXlMaWtlID0gWyZd
KGF1dG8gb3ApIHsKLSAgICAgICAgaW50IGJhc2UgPSBvcC5hcmd2Lm9mZnNldCgpOwotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4ob3AuYXJnYyk7IGkrKykKLSAg
ICAgICAgICAgIGZ1bmN0b3IoVmlydHVhbFJlZ2lzdGVyIHsgYmFzZSAtIGkgfSk7Ci0gICAgfTsK
LQotICAgIGF1dG8gaGFuZGxlT3BDYWxsTGlrZSA9IFsmXShhdXRvIG9wKSB7Ci0gICAgICAgIGZ1
bmN0b3Iob3AuY2FsbGVlKTsKLSAgICAgICAgaW50IGxhc3RBcmcgPSAtc3RhdGljX2Nhc3Q8aW50
PihvcC5hcmd2KSArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCk7Ci0gICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8aW50PihvcC5hcmdjKTsgaSsrKQotICAgICAg
ICAgICAgZnVuY3RvcihWaXJ0dWFsUmVnaXN0ZXIgeyBsYXN0QXJnICsgaSB9KTsKLSAgICAgICAg
aWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLT5zY29wZVJlZ2lzdGVyKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfTsKKyAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29w
ZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogCiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNh
c2Ugb3Bfd2lkZToKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQogICAg
IC8vIE5vIHVzZXMuCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgogICAgIGNhc2Ugb3BfZGVidWc6
CkBAIC05MSwyMDMgKzU3LDI4MSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
QmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIGNhc2Ug
b3Bfc3VwZXJfc2FtcGxlcl9iZWdpbjoKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfZW5kOgog
ICAgICAgICByZXR1cm47Ci0KLSAgICBVU0VTKE9wR2V0U2NvcGUsIGRzdCkKLSAgICBVU0VTKE9w
VG9UaGlzLCBzcmNEc3QpCi0gICAgVVNFUyhPcENoZWNrVGR6LCB0YXJnZXQpCi0gICAgVVNFUyhP
cElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKLSAgICBVU0VTKE9wUHJvZmlsZVR5cGUsIHRh
cmdldCk7Ci0gICAgVVNFUyhPcFRocm93LCB2YWx1ZSkKLSAgICBVU0VTKE9wVGhyb3dTdGF0aWNF
cnJvciwgbWVzc2FnZSkKLSAgICBVU0VTKE9wRW5kLCB2YWx1ZSkKLSAgICBVU0VTKE9wUmV0LCB2
YWx1ZSkKLSAgICBVU0VTKE9wSnRydWUsIGNvbmRpdGlvbikKLSAgICBVU0VTKE9wSmZhbHNlLCBj
b25kaXRpb24pCi0gICAgVVNFUyhPcEplcU51bGwsIHZhbHVlKQotICAgIFVTRVMoT3BKbmVxTnVs
bCwgdmFsdWUpCi0gICAgVVNFUyhPcERlYywgc3JjRHN0KQotICAgIFVTRVMoT3BJbmMsIHNyY0Rz
dCkKLSAgICBVU0VTKE9wTG9nU2hhZG93Q2hpY2tlblByb2xvZ3VlLCBzY29wZSkKLQotICAgIFVT
RVMoT3BKbGVzcywgbGhzLCByaHMpCi0gICAgVVNFUyhPcEpsZXNzZXEsIGxocywgcmhzKQotICAg
IFVTRVMoT3BKZ3JlYXRlciwgbGhzLCByaHMpCi0gICAgVVNFUyhPcEpncmVhdGVyZXEsIGxocywg
cmhzKQotICAgIFVTRVMoT3BKbmxlc3MsIGxocywgcmhzKQotICAgIFVTRVMoT3BKbmxlc3NlcSwg
bGhzLCByaHMpCi0gICAgVVNFUyhPcEpuZ3JlYXRlciwgbGhzLCByaHMpCi0gICAgVVNFUyhPcEpu
Z3JlYXRlcmVxLCBsaHMsIHJocykKLSAgICBVU0VTKE9wSmVxLCBsaHMsIHJocykKLSAgICBVU0VT
KE9wSm5lcSwgbGhzLCByaHMpCi0gICAgVVNFUyhPcEpzdHJpY3RlcSwgbGhzLCByaHMpCi0gICAg
VVNFUyhPcEpuc3RyaWN0ZXEsIGxocywgcmhzKQotICAgIFVTRVMoT3BKYmVsb3csIGxocywgcmhz
KQotICAgIFVTRVMoT3BKYmVsb3dlcSwgbGhzLCByaHMpCi0gICAgVVNFUyhPcFNldEZ1bmN0aW9u
TmFtZSwgZnVuY3Rpb24sIG5hbWUpCi0gICAgVVNFUyhPcExvZ1NoYWRvd0NoaWNrZW5UYWlsLCB0
aGlzVmFsdWUsIHNjb3BlKQotCi0gICAgVVNFUyhPcFB1dEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSwg
dmFsdWUpCi0gICAgVVNFUyhPcFB1dEJ5VmFsRGlyZWN0LCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUp
Ci0KLSAgICBVU0VTKE9wUHV0QnlJZCwgYmFzZSwgdmFsdWUpCi0gICAgVVNFUyhPcFB1dFRvU2Nv
cGUsIHNjb3BlLCB2YWx1ZSkKLSAgICBVU0VTKE9wUHV0VG9Bcmd1bWVudHMsIGFyZ3VtZW50cywg
dmFsdWUpCi0KLSAgICBVU0VTKE9wUHV0QnlJZFdpdGhUaGlzLCBiYXNlLCB0aGlzVmFsdWUsIHZh
bHVlKQotCi0gICAgVVNFUyhPcFB1dEJ5VmFsV2l0aFRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJv
cGVydHksIHZhbHVlKQotCi0gICAgVVNFUyhPcFB1dEdldHRlckJ5SWQsIGJhc2UsIGFjY2Vzc29y
KQotICAgIFVTRVMoT3BQdXRTZXR0ZXJCeUlkLCBiYXNlLCBhY2Nlc3NvcikKLQotICAgIFVTRVMo
T3BQdXRHZXR0ZXJTZXR0ZXJCeUlkLCBiYXNlLCBnZXR0ZXIsIHNldHRlcikKLQotICAgIFVTRVMo
T3BQdXRHZXR0ZXJCeVZhbCwgYmFzZSwgcHJvcGVydHksIGFjY2Vzc29yKQotICAgIFVTRVMoT3BQ
dXRTZXR0ZXJCeVZhbCwgYmFzZSwgcHJvcGVydHksIGFjY2Vzc29yKQotCi0gICAgVVNFUyhPcERl
ZmluZURhdGFQcm9wZXJ0eSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKQotCi0g
ICAgVVNFUyhPcERlZmluZUFjY2Vzc29yUHJvcGVydHksIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIs
IHNldHRlciwgYXR0cmlidXRlcykKLQotICAgIFVTRVMoT3BTcHJlYWQsIGFyZ3VtZW50KQotICAg
IFVTRVMoT3BHZXRQcm9wZXJ0eUVudW1lcmF0b3IsIGJhc2UpCi0gICAgVVNFUyhPcEdldEVudW1l
cmFibGVMZW5ndGgsIGJhc2UpCi0gICAgVVNFUyhPcE5ld0Z1bmNFeHAsIHNjb3BlKQotICAgIFVT
RVMoT3BOZXdHZW5lcmF0b3JGdW5jRXhwLCBzY29wZSkKLSAgICBVU0VTKE9wTmV3QXN5bmNGdW5j
RXhwLCBzY29wZSkKLSAgICBVU0VTKE9wVG9JbmRleFN0cmluZywgaW5kZXgpCi0gICAgVVNFUyhP
cENyZWF0ZUxleGljYWxFbnZpcm9ubWVudCwgc2NvcGUpCi0gICAgVVNFUyhPcFJlc29sdmVTY29w
ZSwgc2NvcGUpCi0gICAgVVNFUyhPcFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2
YWwsIHNjb3BlKQotICAgIFVTRVMoT3BHZXRGcm9tU2NvcGUsIHNjb3BlKQotICAgIFVTRVMoT3BU
b1ByaW1pdGl2ZSwgc3JjKQotICAgIFVTRVMoT3BUcnlHZXRCeUlkLCBiYXNlKQotICAgIFVTRVMo
T3BHZXRCeUlkLCBiYXNlKQotICAgIFVTRVMoT3BHZXRCeUlkRGlyZWN0LCBiYXNlKQotICAgIFVT
RVMoT3BJbkJ5SWQsIGJhc2UpCi0gICAgVVNFUyhPcFR5cGVvZiwgdmFsdWUpCi0gICAgVVNFUyhP
cElzRW1wdHksIG9wZXJhbmQpCi0gICAgVVNFUyhPcElzVW5kZWZpbmVkLCBvcGVyYW5kKQotICAg
IFVTRVMoT3BJc0Jvb2xlYW4sIG9wZXJhbmQpCi0gICAgVVNFUyhPcElzTnVtYmVyLCBvcGVyYW5k
KQotICAgIFVTRVMoT3BJc09iamVjdCwgb3BlcmFuZCkKLSAgICBVU0VTKE9wSXNPYmplY3RPck51
bGwsIG9wZXJhbmQpCi0gICAgVVNFUyhPcElzQ2VsbFdpdGhUeXBlLCBvcGVyYW5kKQotICAgIFVT
RVMoT3BJc0Z1bmN0aW9uLCBvcGVyYW5kKQotICAgIFVTRVMoT3BUb051bWJlciwgb3BlcmFuZCkK
LSAgICBVU0VTKE9wVG9TdHJpbmcsIG9wZXJhbmQpCi0gICAgVVNFUyhPcFRvT2JqZWN0LCBvcGVy
YW5kKQotICAgIFVTRVMoT3BOZWdhdGUsIG9wZXJhbmQpCi0gICAgVVNFUyhPcEVxTnVsbCwgb3Bl
cmFuZCkKLSAgICBVU0VTKE9wTmVxTnVsbCwgb3BlcmFuZCkKLSAgICBVU0VTKE9wTm90LCBvcGVy
YW5kKQotICAgIFVTRVMoT3BVbnNpZ25lZCwgb3BlcmFuZCkKLSAgICBVU0VTKE9wTW92LCBzcmMp
Ci0gICAgVVNFUyhPcE5ld0FycmF5V2l0aFNpemUsIGxlbmd0aCkKLSAgICBVU0VTKE9wQ3JlYXRl
VGhpcywgY2FsbGVlKQotICAgIFVTRVMoT3BEZWxCeUlkLCBiYXNlKQotICAgIFVTRVMoT3BOZXdG
dW5jLCBzY29wZSkKLSAgICBVU0VTKE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jLCBzY29wZSkKLSAg
ICBVU0VTKE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jRXhwLCBzY29wZSkKLSAgICBVU0VTKE9wTmV3
R2VuZXJhdG9yRnVuYywgc2NvcGUpCi0gICAgVVNFUyhPcE5ld0FzeW5jRnVuYywgc2NvcGUpCi0g
ICAgVVNFUyhPcEdldFBhcmVudFNjb3BlLCBzY29wZSkKLSAgICBVU0VTKE9wQ3JlYXRlU2NvcGVk
QXJndW1lbnRzLCBzY29wZSkKLSAgICBVU0VTKE9wQ3JlYXRlUmVzdCwgYXJyYXlTaXplKQotICAg
IFVTRVMoT3BHZXRGcm9tQXJndW1lbnRzLCBhcmd1bWVudHMpCi0gICAgVVNFUyhPcE5ld0FycmF5
QnVmZmVyLCBpbW11dGFibGVCdXR0ZXJmbHkpCi0KLSAgICBVU0VTKE9wSGFzR2VuZXJpY1Byb3Bl
cnR5LCBiYXNlLCBwcm9wZXJ0eSkKLSAgICBVU0VTKE9wSGFzSW5kZXhlZFByb3BlcnR5LCBiYXNl
LCBwcm9wZXJ0eSkKLSAgICBVU0VTKE9wRW51bWVyYXRvclN0cnVjdHVyZVBuYW1lLCBlbnVtZXJh
dG9yLCBpbmRleCkKLSAgICBVU0VTKE9wRW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRv
ciwgaW5kZXgpCi0gICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKLSAgICBVU0VT
KE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCi0gICAgVVNFUyhPcE92ZXJyaWRlc0hhc0luc3Rh
bmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKLSAgICBVU0VTKE9wSW5zdGFuY2Vv
ZiwgdmFsdWUsIHByb3RvdHlwZSkKLSAgICBVU0VTKE9wQWRkLCBsaHMsIHJocykKLSAgICBVU0VT
KE9wTXVsLCBsaHMsIHJocykKLSAgICBVU0VTKE9wRGl2LCBsaHMsIHJocykKLSAgICBVU0VTKE9w
TW9kLCBsaHMsIHJocykKLSAgICBVU0VTKE9wU3ViLCBsaHMsIHJocykKLSAgICBVU0VTKE9wUG93
LCBsaHMsIHJocykKLSAgICBVU0VTKE9wTHNoaWZ0LCBsaHMsIHJocykKLSAgICBVU0VTKE9wUnNo
aWZ0LCBsaHMsIHJocykKLSAgICBVU0VTKE9wVXJzaGlmdCwgbGhzLCByaHMpCi0gICAgVVNFUyhP
cEJpdGFuZCwgbGhzLCByaHMpCi0gICAgVVNFUyhPcEJpdHhvciwgbGhzLCByaHMpCi0gICAgVVNF
UyhPcEJpdG9yLCBsaHMsIHJocykKLSAgICBVU0VTKE9wTGVzcywgbGhzLCByaHMpCi0gICAgVVNF
UyhPcExlc3NlcSwgbGhzLCByaHMpCi0gICAgVVNFUyhPcEdyZWF0ZXIsIGxocywgcmhzKQotICAg
IFVTRVMoT3BHcmVhdGVyZXEsIGxocywgcmhzKQotICAgIFVTRVMoT3BCZWxvdywgbGhzLCByaHMp
Ci0gICAgVVNFUyhPcEJlbG93ZXEsIGxocywgcmhzKQotICAgIFVTRVMoT3BOc3RyaWN0ZXEsIGxo
cywgcmhzKQotICAgIFVTRVMoT3BTdHJpY3RlcSwgbGhzLCByaHMpCi0gICAgVVNFUyhPcE5lcSwg
bGhzLCByaHMpCi0gICAgVVNFUyhPcEVxLCBsaHMsIHJocykKLSAgICBVU0VTKE9wUHVzaFdpdGhT
Y29wZSwgY3VycmVudFNjb3BlLCBuZXdTY29wZSkKLSAgICBVU0VTKE9wR2V0QnlJZFdpdGhUaGlz
LCBiYXNlLCB0aGlzVmFsdWUpCi0gICAgVVNFUyhPcERlbEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkK
LSAgICBVU0VTKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLCBjYWxsZWUsIHRoaXNWYWx1ZSkK
LQotICAgIFVTRVMoT3BHZXRCeVZhbFdpdGhUaGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5
KQotICAgIFVTRVMoT3BJbnN0YW5jZW9mQ3VzdG9tLCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0lu
c3RhbmNlVmFsdWUpCi0gICAgVVNFUyhPcEhhc1N0cnVjdHVyZVByb3BlcnR5LCBiYXNlLCBwcm9w
ZXJ0eSwgZW51bWVyYXRvcikKLSAgICBVU0VTKE9wQ29uc3RydWN0VmFyYXJncywgY2FsbGVlLCB0
aGlzVmFsdWUsIGFyZ3VtZW50cykKLSAgICBVU0VTKE9wQ2FsbFZhcmFyZ3MsIGNhbGxlZSwgdGhp
c1ZhbHVlLCBhcmd1bWVudHMpCi0gICAgVVNFUyhPcFRhaWxDYWxsVmFyYXJncywgY2FsbGVlLCB0
aGlzVmFsdWUsIGFyZ3VtZW50cykKLQotICAgIFVTRVMoT3BHZXREaXJlY3RQbmFtZSwgYmFzZSwg
cHJvcGVydHksIGluZGV4LCBlbnVtZXJhdG9yKQotCi0gICAgVVNFUyhPcFN3aXRjaFN0cmluZywg
c2NydXRpbmVlKQotICAgIFVTRVMoT3BTd2l0Y2hDaGFyLCBzY3J1dGluZWUpCi0gICAgVVNFUyhP
cFN3aXRjaEltbSwgc2NydXRpbmVlKQotCi0gICAgVVNFUyhPcFlpZWxkLCBnZW5lcmF0b3IsIGFy
Z3VtZW50KQotCi0gICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQ6Ci0gICAgICAgIGhh
bmRsZU5ld0FycmF5TGlrZShpbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheVdpdGhTcHJlYWQ+KCkp
OworICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgorICAgIGNhc2Ugb3BfdG9fdGhpczoKKyAgICBjYXNl
IG9wX2NoZWNrX3RkejoKKyAgICBjYXNlIG9wX2lkZW50aXR5X3dpdGhfcHJvZmlsZToKKyAgICBj
YXNlIG9wX3Byb2ZpbGVfdHlwZToKKyAgICBjYXNlIG9wX3Rocm93OgorICAgIGNhc2Ugb3BfdGhy
b3dfc3RhdGljX2Vycm9yOgorICAgIGNhc2Ugb3BfZW5kOgorICAgIGNhc2Ugb3BfcmV0OgorICAg
IGNhc2Ugb3BfanRydWU6CisgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgY2FzZSBvcF9qZXFfbnVs
bDoKKyAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICBjYXNlIG9wX2RlYzoKKyAgICBjYXNlIG9w
X2luYzoKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZTogeworICAgICAg
ICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKKyAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ugb3BfbmV3X2FycmF5OgotICAgICAgICBoYW5k
bGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXk+KCkpOworICAgIH0KKyAg
ICBjYXNlIG9wX2psZXNzZXE6CisgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2pn
cmVhdGVyZXE6CisgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAg
ICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNhc2Ug
b3Bfamxlc3M6CisgICAgY2FzZSBvcF9qZXE6CisgICAgY2FzZSBvcF9qbmVxOgorICAgIGNhc2Ug
b3BfanN0cmljdGVxOgorICAgIGNhc2Ugb3Bfam5zdHJpY3RlcToKKyAgICBjYXNlIG9wX2piZWxv
dzoKKyAgICBjYXNlIG9wX2piZWxvd2VxOgorICAgIGNhc2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6
CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbDogeworICAgICAgICBBU1NFUlQo
b3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAyKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwotCisgICAgfQorICAgIGNhc2Ugb3BfcHV0
X2J5X3ZhbF9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CisgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDMpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgor
ICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50czogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVu
Z3Roc1tvcGNvZGVJRF0gPiAzKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRo
X3RoaXM6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7Cisg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhf
dGhpczogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNl
IG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOiB7Cisg
ICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6IHsKKyAgICAgICAgQVNTRVJUKG9wY29k
ZUxlbmd0aHNbb3Bjb2RlSURdID4gNSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzVdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X3ZhbDoKKyAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlf
dmFsOiB7CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVy
dHk6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7
CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBv
cF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0
aHNbb3Bjb2RlSURdID4gNSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzVdLnUu
b3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9zcHJlYWQ6Cisg
ICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoKKyAgICBjYXNlIG9wX2dldF9lbnVt
ZXJhYmxlX2xlbmd0aDoKKyAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25l
d19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6Cisg
ICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CisgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudDoKKyAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CisgICAgY2FzZSBvcF9yZXNv
bHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbDoKKyAgICBjYXNlIG9wX2dl
dF9mcm9tX3Njb3BlOgorICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOgorICAgIGNhc2Ugb3BfdHJ5
X2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9p
ZF9wcm90b19sb2FkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgorICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX2RpcmVjdDoKKyAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CisgICAgY2Fz
ZSBvcF9pbl9ieV9pZDoKKyAgICBjYXNlIG9wX3R5cGVvZjoKKyAgICBjYXNlIG9wX2lzX2VtcHR5
OgorICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkOgorICAgIGNhc2Ugb3BfaXNfYm9vbGVhbjoKKyAg
ICBjYXNlIG9wX2lzX251bWJlcjoKKyAgICBjYXNlIG9wX2lzX29iamVjdDoKKyAgICBjYXNlIG9w
X2lzX29iamVjdF9vcl9udWxsOgorICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6CisgICAg
Y2FzZSBvcF9pc19mdW5jdGlvbjoKKyAgICBjYXNlIG9wX3RvX251bWJlcjoKKyAgICBjYXNlIG9w
X3RvX3N0cmluZzoKKyAgICBjYXNlIG9wX3RvX29iamVjdDoKKyAgICBjYXNlIG9wX25lZ2F0ZToK
KyAgICBjYXNlIG9wX25lcV9udWxsOgorICAgIGNhc2Ugb3BfZXFfbnVsbDoKKyAgICBjYXNlIG9w
X25vdDoKKyAgICBjYXNlIG9wX21vdjoKKyAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6
CisgICAgY2FzZSBvcF9jcmVhdGVfdGhpczoKKyAgICBjYXNlIG9wX2RlbF9ieV9pZDoKKyAgICBj
YXNlIG9wX3Vuc2lnbmVkOgorICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CisgICAgY2FzZSBvcF9uZXdf
YXN5bmNfZ2VuZXJhdG9yX2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1
bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3
X2FzeW5jX2Z1bmM6CisgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgorICAgIGNhc2Ugb3Bf
Y3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CisgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKKyAgICBj
YXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKKyAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6
IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMik7CisgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9oYXNfZ2Vu
ZXJpY19wcm9wZXJ0eToKKyAgICBjYXNlIG9wX2hhc19pbmRleGVkX3Byb3BlcnR5OgorICAgIGNh
c2Ugb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWU6CisgICAgY2FzZSBvcF9lbnVtZXJhdG9y
X2dlbmVyaWNfcG5hbWU6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsOgorICAgIGNhc2Ugb3BfaW5f
YnlfdmFsOgorICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKKyAgICBjYXNlIG9w
X2luc3RhbmNlb2Y6CisgICAgY2FzZSBvcF9hZGQ6CisgICAgY2FzZSBvcF9tdWw6CisgICAgY2Fz
ZSBvcF9kaXY6CisgICAgY2FzZSBvcF9tb2Q6CisgICAgY2FzZSBvcF9zdWI6CisgICAgY2FzZSBv
cF9wb3c6CisgICAgY2FzZSBvcF9sc2hpZnQ6CisgICAgY2FzZSBvcF9yc2hpZnQ6CisgICAgY2Fz
ZSBvcF91cnNoaWZ0OgorICAgIGNhc2Ugb3BfYml0YW5kOgorICAgIGNhc2Ugb3BfYml0eG9yOgor
ICAgIGNhc2Ugb3BfYml0b3I6CisgICAgY2FzZSBvcF9sZXNzOgorICAgIGNhc2Ugb3BfbGVzc2Vx
OgorICAgIGNhc2Ugb3BfZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2dyZWF0ZXJlcToKKyAgICBjYXNl
IG9wX2JlbG93OgorICAgIGNhc2Ugb3BfYmVsb3dlcToKKyAgICBjYXNlIG9wX25zdHJpY3RlcToK
KyAgICBjYXNlIG9wX3N0cmljdGVxOgorICAgIGNhc2Ugb3BfbmVxOgorICAgIGNhc2Ugb3BfZXE6
CisgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0
aF90aGlzOgorICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50czogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJ
RF0gPiAzKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOiB7Cisg
ICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfaW5zdGFuY2VvZl9jdXN0b206CisgICAgY2Fz
ZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OgorICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFy
Z3M6CisgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CisgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFy
YXJnczogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5k
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9kaXJlY3RfcG5hbWU6
IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNSk7CisgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7Cisg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzVdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9z
d2l0Y2hfc3RyaW5nOgorICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CisgICAgY2FzZSBvcF9zd2l0
Y2hfaW1tOiB7CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDMpOwor
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3Bf
bmV3X2FycmF5X3dpdGhfc3ByZWFkOgorICAgIGNhc2Ugb3BfbmV3X2FycmF5OgogICAgIGNhc2Ug
b3Bfc3RyY2F0OiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BT
dHJjYXQ+KCk7Ci0gICAgICAgIGludCBiYXNlID0gYnl0ZWNvZGUuc3JjLm9mZnNldCgpOwotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ5dGVjb2RlLmNvdW50OyBpKyspCi0gICAgICAgICAg
ICBmdW5jdG9yKFZpcnR1YWxSZWdpc3RlciB7IGJhc2UgLSBpIH0pOworICAgICAgICBpbnQgYmFz
ZSA9IGluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAgICAgaW50IGNvdW50ID0gaW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBp
KyspCisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBiYXNlIC0gaSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBjYXNlIG9wX2NvbnN0
cnVjdDoKLSAgICAgICAgaGFuZGxlT3BDYWxsTGlrZShpbnN0cnVjdGlvbi0+YXM8T3BDb25zdHJ1
Y3Q+KCkpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9jYWxsX2V2YWw6Ci0gICAgICAg
IGhhbmRsZU9wQ2FsbExpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wQ2FsbEV2YWw+KCkpOwotICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBvcF9jYWxsOgotICAgICAgICBoYW5kbGVPcENhbGxMaWtlKGlu
c3RydWN0aW9uLT5hczxPcENhbGw+KCkpOworICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7CisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7CisgICAgICAgIGludCBhcmdDb3VudCA9IGluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKKyAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZDsKKyAgICAgICAgaW50IGxhc3RBcmcgPSByZWdpc3Rlck9mZnNldCArIENhbGxGcmFt
ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJn
Q291bnQ7IGkrKykKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxf
ZXZhbCkKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJu
OwotICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgotICAgICAgICBoYW5kbGVPcENhbGxMaWtlKGluc3Ry
dWN0aW9uLT5hczxPcFRhaWxDYWxsPigpKTsKKyAgICB9CisgICAgY2FzZSBvcF95aWVsZDogewor
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47
Ci0KKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
aywgdHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxv
Y2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlE
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAg
ICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNhc2Ugb3Bfd2lkZToKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQogICAgIC8vIFRoZXNlIGRvbid0IGRlZmluZSBhbnl0
aGluZy4KICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKICAgICBjYXNlIG9wX2VuZDoKQEAgLTM0
OCwxMjcgKzM5MiwxMzMgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2Nr
KiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICN1bmRlZiBMTElOVF9I
RUxQRVJfT1BDT0RFUwogICAgICAgICByZXR1cm47CiAgICAgLy8gVGhlc2UgYWxsIGhhdmUgYSBz
aW5nbGUgZGVzdGluYXRpb24gZm9yIHRoZSBmaXJzdCBhcmd1bWVudC4KLSAgICBERUZTKE9wQXJn
dW1lbnRDb3VudCwgZHN0KQotICAgIERFRlMoT3BUb0luZGV4U3RyaW5nLCBkc3QpCi0gICAgREVG
UyhPcEdldEVudW1lcmFibGVMZW5ndGgsIGRzdCkKLSAgICBERUZTKE9wSGFzSW5kZXhlZFByb3Bl
cnR5LCBkc3QpCi0gICAgREVGUyhPcEhhc1N0cnVjdHVyZVByb3BlcnR5LCBkc3QpCi0gICAgREVG
UyhPcEhhc0dlbmVyaWNQcm9wZXJ0eSwgZHN0KQotICAgIERFRlMoT3BHZXREaXJlY3RQbmFtZSwg
ZHN0KQotICAgIERFRlMoT3BHZXRQcm9wZXJ0eUVudW1lcmF0b3IsIGRzdCkKLSAgICBERUZTKE9w
RW51bWVyYXRvclN0cnVjdHVyZVBuYW1lLCBkc3QpCi0gICAgREVGUyhPcEVudW1lcmF0b3JHZW5l
cmljUG5hbWUsIGRzdCkKLSAgICBERUZTKE9wR2V0UGFyZW50U2NvcGUsIGRzdCkKLSAgICBERUZT
KE9wUHVzaFdpdGhTY29wZSwgZHN0KQotICAgIERFRlMoT3BDcmVhdGVMZXhpY2FsRW52aXJvbm1l
bnQsIGRzdCkKLSAgICBERUZTKE9wUmVzb2x2ZVNjb3BlLCBkc3QpCi0gICAgREVGUyhPcFJlc29s
dmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIGRzdCkKLSAgICBERUZTKE9wU3RyY2F0
LCBkc3QpCi0gICAgREVGUyhPcFRvUHJpbWl0aXZlLCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZVRo
aXMsIGRzdCkKLSAgICBERUZTKE9wTmV3QXJyYXksIGRzdCkKLSAgICBERUZTKE9wTmV3QXJyYXlX
aXRoU3ByZWFkLCBkc3QpCi0gICAgREVGUyhPcFNwcmVhZCwgZHN0KQotICAgIERFRlMoT3BOZXdB
cnJheUJ1ZmZlciwgZHN0KQotICAgIERFRlMoT3BOZXdBcnJheVdpdGhTaXplLCBkc3QpCi0gICAg
REVGUyhPcE5ld1JlZ2V4cCwgZHN0KQotICAgIERFRlMoT3BOZXdGdW5jLCBkc3QpCi0gICAgREVG
UyhPcE5ld0Z1bmNFeHAsIGRzdCkKLSAgICBERUZTKE9wTmV3R2VuZXJhdG9yRnVuYywgZHN0KQot
ICAgIERFRlMoT3BOZXdHZW5lcmF0b3JGdW5jRXhwLCBkc3QpCi0gICAgREVGUyhPcE5ld0FzeW5j
R2VuZXJhdG9yRnVuYywgZHN0KQotICAgIERFRlMoT3BOZXdBc3luY0dlbmVyYXRvckZ1bmNFeHAs
IGRzdCkKLSAgICBERUZTKE9wTmV3QXN5bmNGdW5jLCBkc3QpCi0gICAgREVGUyhPcE5ld0FzeW5j
RnVuY0V4cCwgZHN0KQotICAgIERFRlMoT3BDYWxsVmFyYXJncywgZHN0KQotICAgIERFRlMoT3BU
YWlsQ2FsbFZhcmFyZ3MsIGRzdCkKLSAgICBERUZTKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
LCBkc3QpCi0gICAgREVGUyhPcENvbnN0cnVjdFZhcmFyZ3MsIGRzdCkKLSAgICBERUZTKE9wR2V0
RnJvbVNjb3BlLCBkc3QpCi0gICAgREVGUyhPcENhbGwsIGRzdCkKLSAgICBERUZTKE9wVGFpbENh
bGwsIGRzdCkKLSAgICBERUZTKE9wQ2FsbEV2YWwsIGRzdCkKLSAgICBERUZTKE9wQ29uc3RydWN0
LCBkc3QpCi0gICAgREVGUyhPcFRyeUdldEJ5SWQsIGRzdCkKLSAgICBERUZTKE9wR2V0QnlJZCwg
ZHN0KQotICAgIERFRlMoT3BHZXRCeUlkRGlyZWN0LCBkc3QpCi0gICAgREVGUyhPcEdldEJ5SWRX
aXRoVGhpcywgZHN0KQotICAgIERFRlMoT3BHZXRCeVZhbFdpdGhUaGlzLCBkc3QpCi0gICAgREVG
UyhPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBkc3QpCi0gICAgREVGUyhPcEluc3RhbmNlb2YsIGRz
dCkKLSAgICBERUZTKE9wSW5zdGFuY2VvZkN1c3RvbSwgZHN0KQotICAgIERFRlMoT3BHZXRCeVZh
bCwgZHN0KQotICAgIERFRlMoT3BUeXBlb2YsIGRzdCkKLSAgICBERUZTKE9wSWRlbnRpdHlXaXRo
UHJvZmlsZSwgc3JjRHN0KQotICAgIERFRlMoT3BJc0VtcHR5LCBkc3QpCi0gICAgREVGUyhPcElz
VW5kZWZpbmVkLCBkc3QpCi0gICAgREVGUyhPcElzQm9vbGVhbiwgZHN0KQotICAgIERFRlMoT3BJ
c051bWJlciwgZHN0KQotICAgIERFRlMoT3BJc09iamVjdCwgZHN0KQotICAgIERFRlMoT3BJc09i
amVjdE9yTnVsbCwgZHN0KQotICAgIERFRlMoT3BJc0NlbGxXaXRoVHlwZSwgZHN0KQotICAgIERF
RlMoT3BJc0Z1bmN0aW9uLCBkc3QpCi0gICAgREVGUyhPcEluQnlJZCwgZHN0KQotICAgIERFRlMo
T3BJbkJ5VmFsLCBkc3QpCi0gICAgREVGUyhPcFRvTnVtYmVyLCBkc3QpCi0gICAgREVGUyhPcFRv
U3RyaW5nLCBkc3QpCi0gICAgREVGUyhPcFRvT2JqZWN0LCBkc3QpCi0gICAgREVGUyhPcE5lZ2F0
ZSwgZHN0KQotICAgIERFRlMoT3BBZGQsIGRzdCkKLSAgICBERUZTKE9wTXVsLCBkc3QpCi0gICAg
REVGUyhPcERpdiwgZHN0KQotICAgIERFRlMoT3BNb2QsIGRzdCkKLSAgICBERUZTKE9wU3ViLCBk
c3QpCi0gICAgREVGUyhPcFBvdywgZHN0KQotICAgIERFRlMoT3BMc2hpZnQsIGRzdCkKLSAgICBE
RUZTKE9wUnNoaWZ0LCBkc3QpCi0gICAgREVGUyhPcFVyc2hpZnQsIGRzdCkKLSAgICBERUZTKE9w
Qml0YW5kLCBkc3QpCi0gICAgREVGUyhPcEJpdHhvciwgZHN0KQotICAgIERFRlMoT3BCaXRvciwg
ZHN0KQotICAgIERFRlMoT3BJbmMsIHNyY0RzdCkKLSAgICBERUZTKE9wRGVjLCBzcmNEc3QpCi0g
ICAgREVGUyhPcEVxLCBkc3QpCi0gICAgREVGUyhPcE5lcSwgZHN0KQotICAgIERFRlMoT3BTdHJp
Y3RlcSwgZHN0KQotICAgIERFRlMoT3BOc3RyaWN0ZXEsIGRzdCkKLSAgICBERUZTKE9wTGVzcywg
ZHN0KQotICAgIERFRlMoT3BMZXNzZXEsIGRzdCkKLSAgICBERUZTKE9wR3JlYXRlciwgZHN0KQot
ICAgIERFRlMoT3BHcmVhdGVyZXEsIGRzdCkKLSAgICBERUZTKE9wQmVsb3csIGRzdCkKLSAgICBE
RUZTKE9wQmVsb3dlcSwgZHN0KQotICAgIERFRlMoT3BOZXFOdWxsLCBkc3QpCi0gICAgREVGUyhP
cEVxTnVsbCwgZHN0KQotICAgIERFRlMoT3BOb3QsIGRzdCkKLSAgICBERUZTKE9wTW92LCBkc3Qp
Ci0gICAgREVGUyhPcE5ld09iamVjdCwgZHN0KQotICAgIERFRlMoT3BUb1RoaXMsIHNyY0RzdCkK
LSAgICBERUZTKE9wQ2hlY2tUZHosIHRhcmdldCkKLSAgICBERUZTKE9wR2V0U2NvcGUsIGRzdCkK
LSAgICBERUZTKE9wQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBkc3QpCi0gICAgREVGUyhPcENyZWF0
ZVNjb3BlZEFyZ3VtZW50cywgZHN0KQotICAgIERFRlMoT3BDcmVhdGVDbG9uZWRBcmd1bWVudHMs
IGRzdCkKLSAgICBERUZTKE9wRGVsQnlJZCwgZHN0KQotICAgIERFRlMoT3BEZWxCeVZhbCwgZHN0
KQotICAgIERFRlMoT3BVbnNpZ25lZCwgZHN0KQotICAgIERFRlMoT3BHZXRGcm9tQXJndW1lbnRz
LCBkc3QpCi0gICAgREVGUyhPcEdldEFyZ3VtZW50LCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZVJl
c3QsIGRzdCkKLSAgICBERUZTKE9wR2V0UmVzdExlbmd0aCwgZHN0KQotCi0gICAgREVGUyhPcENh
dGNoLCBleGNlcHRpb24sIHRocm93blZhbHVlKQotCisgICAgY2FzZSBvcF9hcmd1bWVudF9jb3Vu
dDoKKyAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKKyAgICBjYXNlIG9wX2dldF9lbnVtZXJh
YmxlX2xlbmd0aDoKKyAgICBjYXNlIG9wX2hhc19pbmRleGVkX3Byb3BlcnR5OgorICAgIGNhc2Ug
b3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eToKKyAgICBjYXNlIG9wX2hhc19nZW5lcmljX3Byb3Bl
cnR5OgorICAgIGNhc2Ugb3BfZ2V0X2RpcmVjdF9wbmFtZToKKyAgICBjYXNlIG9wX2dldF9wcm9w
ZXJ0eV9lbnVtZXJhdG9yOgorICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWU6
CisgICAgY2FzZSBvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWU6CisgICAgY2FzZSBvcF9nZXRf
cGFyZW50X3Njb3BlOgorICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgorICAgIGNhc2Ugb3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CisgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOgor
ICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWw6
CisgICAgY2FzZSBvcF9zdHJjYXQ6CisgICAgY2FzZSBvcF90b19wcmltaXRpdmU6CisgICAgY2Fz
ZSBvcF9jcmVhdGVfdGhpczoKKyAgICBjYXNlIG9wX25ld19hcnJheToKKyAgICBjYXNlIG9wX25l
d19hcnJheV93aXRoX3NwcmVhZDoKKyAgICBjYXNlIG9wX3NwcmVhZDoKKyAgICBjYXNlIG9wX25l
d19hcnJheV9idWZmZXI6CisgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgorICAgIGNh
c2Ugb3BfbmV3X3JlZ2V4cDoKKyAgICBjYXNlIG9wX25ld19mdW5jOgorICAgIGNhc2Ugb3BfbmV3
X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3luY19nZW5lcmF0b3Jf
ZnVuYzoKKyAgICBjYXNlIG9wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgY2Fz
ZSBvcF9uZXdfYXN5bmNfZnVuYzoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoKKyAg
ICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgor
ICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfY29u
c3RydWN0X3ZhcmFyZ3M6CisgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToKKyAgICBjYXNlIG9w
X2NhbGw6CisgICAgY2FzZSBvcF90YWlsX2NhbGw6CisgICAgY2FzZSBvcF9jYWxsX2V2YWw6Cisg
ICAgY2FzZSBvcF9jb25zdHJ1Y3Q6CisgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOgorICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CisgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfdW5zZXQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfZGlyZWN0Ogor
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICBjYXNlIG9wX2dldF9ieV92YWxf
d2l0aF90aGlzOgorICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBjYXNlIG9wX292
ZXJyaWRlc19oYXNfaW5zdGFuY2U6CisgICAgY2FzZSBvcF9pbnN0YW5jZW9mOgorICAgIGNhc2Ug
b3BfaW5zdGFuY2VvZl9jdXN0b206CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsOgorICAgIGNhc2Ug
b3BfdHlwZW9mOgorICAgIGNhc2Ugb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlOgorICAgIGNhc2Ug
b3BfaXNfZW1wdHk6CisgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6CisgICAgY2FzZSBvcF9pc19i
b29sZWFuOgorICAgIGNhc2Ugb3BfaXNfbnVtYmVyOgorICAgIGNhc2Ugb3BfaXNfb2JqZWN0Ogor
ICAgIGNhc2Ugb3BfaXNfb2JqZWN0X29yX251bGw6CisgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhf
dHlwZToKKyAgICBjYXNlIG9wX2lzX2Z1bmN0aW9uOgorICAgIGNhc2Ugb3BfaW5fYnlfaWQ6Cisg
ICAgY2FzZSBvcF9pbl9ieV92YWw6CisgICAgY2FzZSBvcF90b19udW1iZXI6CisgICAgY2FzZSBv
cF90b19zdHJpbmc6CisgICAgY2FzZSBvcF90b19vYmplY3Q6CisgICAgY2FzZSBvcF9uZWdhdGU6
CisgICAgY2FzZSBvcF9hZGQ6CisgICAgY2FzZSBvcF9tdWw6CisgICAgY2FzZSBvcF9kaXY6Cisg
ICAgY2FzZSBvcF9tb2Q6CisgICAgY2FzZSBvcF9zdWI6CisgICAgY2FzZSBvcF9wb3c6CisgICAg
Y2FzZSBvcF9sc2hpZnQ6CisgICAgY2FzZSBvcF9yc2hpZnQ6CisgICAgY2FzZSBvcF91cnNoaWZ0
OgorICAgIGNhc2Ugb3BfYml0YW5kOgorICAgIGNhc2Ugb3BfYml0eG9yOgorICAgIGNhc2Ugb3Bf
Yml0b3I6CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBvcF9kZWM6CisgICAgY2FzZSBvcF9l
cToKKyAgICBjYXNlIG9wX25lcToKKyAgICBjYXNlIG9wX3N0cmljdGVxOgorICAgIGNhc2Ugb3Bf
bnN0cmljdGVxOgorICAgIGNhc2Ugb3BfbGVzczoKKyAgICBjYXNlIG9wX2xlc3NlcToKKyAgICBj
YXNlIG9wX2dyZWF0ZXI6CisgICAgY2FzZSBvcF9ncmVhdGVyZXE6CisgICAgY2FzZSBvcF9iZWxv
dzoKKyAgICBjYXNlIG9wX2JlbG93ZXE6CisgICAgY2FzZSBvcF9uZXFfbnVsbDoKKyAgICBjYXNl
IG9wX2VxX251bGw6CisgICAgY2FzZSBvcF9ub3Q6CisgICAgY2FzZSBvcF9tb3Y6CisgICAgY2Fz
ZSBvcF9uZXdfb2JqZWN0OgorICAgIGNhc2Ugb3BfdG9fdGhpczoKKyAgICBjYXNlIG9wX2NoZWNr
X3RkejoKKyAgICBjYXNlIG9wX2dldF9zY29wZToKKyAgICBjYXNlIG9wX2NyZWF0ZV9kaXJlY3Rf
YXJndW1lbnRzOgorICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CisgICAgY2Fz
ZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoKKyAgICBjYXNlIG9wX2RlbF9ieV9pZDoKKyAg
ICBjYXNlIG9wX2RlbF9ieV92YWw6CisgICAgY2FzZSBvcF91bnNpZ25lZDoKKyAgICBjYXNlIG9w
X2dldF9mcm9tX2FyZ3VtZW50czogCisgICAgY2FzZSBvcF9nZXRfYXJndW1lbnQ6CisgICAgY2Fz
ZSBvcF9jcmVhdGVfcmVzdDoKKyAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogeworICAgICAg
ICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKKyAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2NhdGNoOiB7CisgICAgICAg
IEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDIpOworICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2Ug
b3BfZW50ZXI6IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1WYXJz
KCk7IGktLTspCi0gICAgICAgICAgICBmdW5jdG9yKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkp
KTsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICB9CiB9CiAKLSN1bmRlZiBDQUxMX0ZVTkNUT1IKLSN1bmRlZiBVU0VTX09SX0RF
RlMKLSN1bmRlZiBVU0VTCi0jdW5kZWYgREVGUwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCA0
MzE1M2ZlODEwNGY5ZmYwMmM2NmRkZjhmMjI0ZGRkMTdlNWVjZjE4Li5hMmFkNDFlNGY2N2FlMGRj
Y2VlM2Q1NjIwZTIyMWQ0MzljYTgxYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCi0jaW5jbHVkZSAiQnl0
ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgpAQCAtNjcsMjQgKzY2LDEyIEBAIENh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIENvZGVCCiAgICAgfQogI2VuZGlmCiAKLSAgICBhdXRvIGluc3RydWN0
aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleCk7Ci0g
ICAgT3Bjb2RlSUQgb3AgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKLQotICAgIExMSW50Q2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm87Ci0gICAgc3dpdGNoIChvcCkgewotICAgIGNhc2Ugb3Bf
Y2FsbDoKLSAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9uLT5hczxPcENhbGw+KCku
bWV0YWRhdGEocHJvZmlsZWRCbG9jaykuY2FsbExpbmtJbmZvOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIG9wX2NvbnN0cnVjdDoKLSAgICAgICAgY2FsbExpbmtJbmZvID0gJmluc3RydWN0aW9u
LT5hczxPcENvbnN0cnVjdD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5jYWxsTGlua0luZm87
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgotICAgICAgICBjYWxsTGlu
a0luZm8gPSAmaW5zdHJ1Y3Rpb24tPmFzPE9wVGFpbENhbGw+KCkubWV0YWRhdGEocHJvZmlsZWRC
bG9jaykuY2FsbExpbmtJbmZvOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgorICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKVti
eXRlY29kZUluZGV4XTsKKyAgICBPcGNvZGVJRCBvcCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChpbnN0cnVjdGlvblswXS51Lm9wY29kZSk7CisgICAgaWYgKG9wICE9IG9wX2NhbGwgJiYgb3Ag
IT0gb3BfY29uc3RydWN0ICYmIG9wICE9IG9wX3RhaWxfY2FsbCkKICAgICAgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKCk7Ci0gICAgfQogICAgIAorICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gPSBpbnN0cnVjdGlvbls1XS51LmNhbGxMaW5rSW5mbzsKICAgICAKICAgICByZXR1
cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDlm
N2E2YzNmZDdlN2M0ZDAxMjZiYmU4M2FjNGRmZjgyYTYwOGNhOTEuLjQ5NzY2NjJlZDcwOTRlZTYy
OGJkMTQ0MDNiY2UzYzkxNzczMzk1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVT
dHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlu
a1N0YXR1cy5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdD
b21tb24uaCIKQEAgLTUyLDggKzUxLDYgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVE
dW1wLmgiCiAjaW5jbHVkZSAiR2V0UHV0SW5mby5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFt
ZS5oIgotI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCi0jaW5jbHVkZSAiSW5zdHJ1Y3Rpb25TdHJl
YW0uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJJc29DZWxs
U2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgpAQCAtNzEsMTAgKzY4LDggQEAKICNpbmNs
dWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1D
b2RlQmxvY2suaCIKICNpbmNsdWRlICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaCIK
LSNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUENUb0NvZGVPcmlnaW5NYXAu
aCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0
YWJhc2UuaCIKQEAgLTg2LDEwICs4MSwxMCBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZv
LmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmls
ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAi
Vk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9Db21tYVByaW50ZXIuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9TaW1wbGVTdGF0cy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CkBAIC0yNDgsMTUgKzI0MywyOSBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgQnl0
ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJsb2NrKHRoaXMsIGluc3RydWN0aW9ucygpLCBv
dXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCit2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBp
dCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKLSAgICBCeXRlY29kZUR1bXBlcjxD
b2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBpdCwgc3RhdHVzTWFwKTsKKyAgICBC
eXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwg
aXQsIHN0YXR1c01hcCk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiBz
dGF0dXNNYXApCiB7Ci0gICAgY29uc3QgYXV0byBpdCA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlT2Zmc2V0KTsKLSAgICBkdW1wQnl0ZWNvZGUob3V0LCBpdCwgc3RhdHVzTWFwKTsKKyAgICBj
b25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOwor
ICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNN
YXApOworfQorCisjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKKyAgICBt
YWNybyhpbnN0cnVjdGlvbnMpIFwKKyAgICBtYWNybyhjYWxsTGlua0luZm9zKSBcCisgICAgbWFj
cm8obGlua2VkQ2FsbGVyTGlzdCkgXAorICAgIG1hY3JvKGlkZW50aWZpZXJzKSBcCisgICAgbWFj
cm8oZnVuY3Rpb25FeHByZXNzaW9ucykgXAorICAgIG1hY3JvKGNvbnN0YW50UmVnaXN0ZXJzKQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIHNpemVfdCBzaXplSW5CeXRlcyhjb25zdCBW
ZWN0b3I8VD4mIHZlY3RvcikKK3sKKyAgICByZXR1cm4gdmVjdG9yLmNhcGFjaXR5KCkgKiBzaXpl
b2YoVCk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0zMDMsNyArMzEyLDYgQEAgQ29kZUJsb2NrOjpD
b2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBDb2RlQmxvY2sKICAgICAsIG1fdW5saW5rZWRDb2RlKCpvdGhlci52bSgpLCB0aGlzLCBvdGhl
ci5tX3VubGlua2VkQ29kZS5nZXQoKSkKICAgICAsIG1fb3duZXJFeGVjdXRhYmxlKCpvdGhlci52
bSgpLCB0aGlzLCBvdGhlci5tX293bmVyRXhlY3V0YWJsZS5nZXQoKSkKICAgICAsIG1fcG9pc29u
ZWRWTShvdGhlci5tX3BvaXNvbmVkVk0pCi0gICAgLCBtX2luc3RydWN0aW9uQ291bnQob3RoZXIu
bV9pbnN0cnVjdGlvbkNvdW50KQogICAgICwgbV9pbnN0cnVjdGlvbnMob3RoZXIubV9pbnN0cnVj
dGlvbnMpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihvdGhlci5tX3RoaXNSZWdpc3RlcikKICAgICAs
IG1fc2NvcGVSZWdpc3RlcihvdGhlci5tX3Njb3BlUmVnaXN0ZXIpCkBAIC0zMTgsNyArMzI2LDYg
QEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29w
eVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sKICAgICAsIG1fb3NyRXhpdENvdW50ZXIoMCkKICAg
ICAsIG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKDApCiAgICAgLCBtX3Jlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyKDApCi0gICAgLCBtX21ldGFkYXRhKG90aGVyLm1fbWV0YWRhdGEpCiAgICAg
LCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKIHsKICAgICBBU1NFUlQoaGVh
cCgpLT5pc0RlZmVycmVkKCkpOwpAQCAtMzY4LDcgKzM3NSw2IEBAIENvZGVCbG9jazo6Q29kZUJs
b2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0CiAgICAgLCBtX3VubGlua2VkQ29kZSgqdm0sIHRoaXMsIHVubGlua2VkQ29kZUJsb2Nr
KQogICAgICwgbV9vd25lckV4ZWN1dGFibGUoKnZtLCB0aGlzLCBvd25lckV4ZWN1dGFibGUpCiAg
ICAgLCBtX3BvaXNvbmVkVk0odm0pCi0gICAgLCBtX2luc3RydWN0aW9ucygmdW5saW5rZWRDb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpKQogICAgICwgbV90aGlzUmVnaXN0ZXIodW5saW5rZWRDb2Rl
QmxvY2stPnRoaXNSZWdpc3RlcigpKQogICAgICwgbV9zY29wZVJlZ2lzdGVyKHVubGlua2VkQ29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpCiAgICAgLCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZVBy
b3ZpZGVyKSkKQEAgLTM3Nyw3ICszODMsNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dAogICAg
ICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIo
MCkKICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKLSAgICAsIG1fbWV0YWRh
dGEodW5saW5rZWRDb2RlQmxvY2stPm1ldGFkYXRhKCkubGluaygpKQogICAgICwgbV9jcmVhdGlv
blRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCiB7CiAgICAgQVNTRVJUKGhlYXAoKS0+aXNEZWZl
cnJlZCgpKTsKQEAgLTQ5MCwyMTggKzQ5NSwyNjUgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsK
ICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIEFsbG9jYXRlIG1ldGFkYXRhIGJ1ZmZlcnMgZm9y
IHRoZSBieXRlY29kZQorICAgIGlmIChzaXplX3Qgc2l6ZSA9IHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkxMaW50Q2FsbExpbmtJbmZvcygpKQorICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZv
cyA9IFJlZkNvdW50ZWRBcnJheTxMTEludENhbGxMaW5rSW5mbz4oc2l6ZSk7CisgICAgaWYgKHNp
emVfdCBzaXplID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mQXJyYXlQcm9maWxlcygpKQor
ICAgICAgICBtX2FycmF5UHJvZmlsZXMuZ3JvdyhzaXplKTsKKyAgICBpZiAoc2l6ZV90IHNpemUg
PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZBcnJheUFsbG9jYXRpb25Qcm9maWxlcygpKQor
ICAgICAgICBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzID0gUmVmQ291bnRlZEFycmF5PEFycmF5
QWxsb2NhdGlvblByb2ZpbGU+KHNpemUpOworICAgIGlmIChzaXplX3Qgc2l6ZSA9IHVubGlua2Vk
Q29kZUJsb2NrLT5udW1iZXJPZlZhbHVlUHJvZmlsZXMoKSkKKyAgICAgICAgbV92YWx1ZVByb2Zp
bGVzID0gUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4oc2l6ZSk7CisgICAgaWYgKCF2bS5j
YW5Vc2VKSVQoKSkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdmFsdWVQcm9maWxlcy5zaXpl
KCkpOworICAgIGlmIChzaXplX3Qgc2l6ZSA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZk9i
amVjdEFsbG9jYXRpb25Qcm9maWxlcygpKQorICAgICAgICBtX29iamVjdEFsbG9jYXRpb25Qcm9m
aWxlcyA9IFJlZkNvdW50ZWRBcnJheTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZT4oc2l6ZSk7CisK
ICNpZiAhRU5BQkxFKENfTE9PUCkKICAgICBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVy
U2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICNlbmRpZgogCisgICAg
Ly8gQ29weSBhbmQgdHJhbnNsYXRlIHRoZSBVbmxpbmtlZEluc3RydWN0aW9ucworICAgIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
Y291bnQoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtOjpSZWFkZXIgaW5zdHJ1Y3Rp
b25SZWFkZXIodW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpKTsKKwogICAgIC8vIEJv
b2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAg
SGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52
aXJvbm1lbnRzOwogCi0gICAgYXV0byBsaW5rX3Byb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgaW5z
dHJ1Y3Rpb24sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICBt
X251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7Ci0gICAgICAgIG1ldGFkYXRhLnBy
b2ZpbGUubV9ieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uLm9mZnNldCgpOwotICAgIH07Ci0K
LSAgICBhdXRvIGxpbmtfYXJyYXlQcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9u
LCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgbWV0YWRhdGEu
YXJyYXlQcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbi5vZmZzZXQoKTsKLSAg
ICB9OwotCi0gICAgYXV0byBsaW5rX29iamVjdEFsbG9jYXRpb25Qcm9maWxlID0gWyZdKGNvbnN0
IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byBieXRlY29kZSwgYXV0byYgbWV0YWRhdGEpIHsK
LSAgICAgICAgbWV0YWRhdGEub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaW5pdGlhbGl6ZVByb2Zp
bGUodm0sIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCB0aGlzLCBtX2dsb2JhbE9iamVjdC0+b2JqZWN0
UHJvdG90eXBlKCksIGJ5dGVjb2RlLmlubGluZUNhcGFjaXR5KTsKLSAgICB9OworICAgIFJlZkNv
dW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOwog
Ci0gICAgYXV0byBsaW5rX2FycmF5QWxsb2NhdGlvblByb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYg
LyppbnN0cnVjdGlvbiovLCBhdXRvIGJ5dGVjb2RlLCBhdXRvJiBtZXRhZGF0YSkgewotICAgICAg
ICBtZXRhZGF0YS5hcnJheUFsbG9jYXRpb25Qcm9maWxlLmluaXRpYWxpemVJbmRleGluZ01vZGUo
Ynl0ZWNvZGUucmVjb21tZW5kZWRJbmRleGluZ1R5cGUpOwotICAgIH07CisgICAgdW5zaWduZWQg
dmFsdWVQcm9maWxlQ291bnQgPSAwOworICAgIGF1dG8gbGlua1ZhbHVlUHJvZmlsZSA9IFsmXSh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQgb3BMZW5ndGgpIHsKKyAgICAgICAgaWYg
KCF2bS5jYW5Vc2VKSVQoKSkgeworICAgICAgICAgICAgQVNTRVJUKHZtLm5vSklUVmFsdWVQcm9m
aWxlU2luZ2xldG9uKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldCAr
IG9wTGVuZ3RoIC0gMV0gPSB2bS5ub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbi5nZXQoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgYXV0byBsaW5rX2hpdENvdW50Rm9y
TExJbnRDYWNoaW5nID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5
dGVjb2RlKi8sIGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRhLmhpdENvdW50Rm9y
TExJbnRDYWNoaW5nID0gT3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JMTEludENhY2hpbmco
KTsKKyAgICAgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlSW5kZXggPSB2YWx1ZVByb2ZpbGVDb3Vu
dCsrOworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3Zh
bHVlUHJvZmlsZUluZGV4XTsKKyAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQgPT0gLTEpOworICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVP
ZmZzZXQ7CisgICAgICAgIGluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0g
MV0gPSBwcm9maWxlOwogICAgIH07CiAKLSNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCi0g
ICAgV1RGX0xBWllfSk9JTihsaW5rXywgX19maWVsZCkoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLCBt
ZXRhZGF0YSk7Ci0KLSNkZWZpbmUgSU5JVElBTElaRV9NRVRBREFUQShfX29wKSBcCi0gICAgYXV0
byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxfX29wPigpOyBcCi0gICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsgXAotICAgIG5ldyAoJm1ldGFkYXRhKSBfX29w
OjpNZXRhZGF0YSB7IGJ5dGVjb2RlIH07IFwKLQotI2RlZmluZSBDQVNFKF9fb3ApIGNhc2UgX19v
cDo6b3Bjb2RlSUQKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIu
YXRFbmQoKTsgKSB7CisgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5z
dHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCi0jZGVmaW5lIExJTksoLi4uKSBcCi0gICAgQ0FTRShX
VEZfTEFaWV9GSVJTVChfX1ZBX0FSR1NfXykpOiB7IFwKLSAgICAgICAgSU5JVElBTElaRV9NRVRB
REFUQShXVEZfTEFaWV9GSVJTVChfX1ZBX0FSR1NfXykpIFwKLSAgICAgICAgV1RGX0xBWllfSEFT
X1JFU1QoX19WQV9BUkdTX18pKHsgXAotICAgICAgICAgICAgV1RGX0xBWllfRk9SX0VBQ0hfVEVS
TShMSU5LX0ZJRUxELCAgV1RGX0xBWllfUkVTVF8oX19WQV9BUkdTX18pKSBcCi0gICAgICAgIH0p
IFwKLSAgICAgICAgYnJlYWs7IFwKLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3Ry
dWN0aW9uIDogKm1faW5zdHJ1Y3Rpb25zKSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7Ci0gICAgICAgIG1faW5zdHJ1Y3Rpb25Db3VudCArPSBv
cGNvZGVMZW5ndGhzW29wY29kZUlEXTsKLSAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAg
ICAgICBMSU5LKE9wSGFzSW5kZXhlZFByb3BlcnR5LCBhcnJheVByb2ZpbGUpCi0KLSAgICAgICAg
TElOSyhPcENhbGxWYXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTkso
T3BUYWlsQ2FsbFZhcmFyZ3MsIGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cywgYXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAg
ICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgYXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAg
ICBMSU5LKE9wR2V0QnlWYWwsIGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLQotICAgICAgICBMSU5L
KE9wR2V0RGlyZWN0UG5hbWUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRCeUlkV2l0aFRo
aXMsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BUcnlHZXRCeUlkLCBwcm9maWxlKQotICAgICAg
ICBMSU5LKE9wR2V0QnlJZERpcmVjdCwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcEdldEJ5VmFs
V2l0aFRoaXMsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRGcm9tQXJndW1lbnRzLCBwcm9m
aWxlKQotICAgICAgICBMSU5LKE9wVG9OdW1iZXIsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BU
b09iamVjdCwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcEdldEFyZ3VtZW50LCBwcm9maWxlKQot
ICAgICAgICBMSU5LKE9wVG9UaGlzLCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wQml0YW5kLCBw
cm9maWxlKQotICAgICAgICBMSU5LKE9wQml0b3IsIHByb2ZpbGUpCisgICAgICAgIHVuc2lnbmVk
IG9wTGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKHBjWzBdLnUub3Bjb2RlKTsKIAotICAgICAgICBMSU5L
KE9wR2V0QnlJZCwgcHJvZmlsZSwgaGl0Q291bnRGb3JMTEludENhY2hpbmcpCi0KLSAgICAgICAg
TElOSyhPcENhbGwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhPcFRhaWxD
YWxsLCBwcm9maWxlLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDYWxsRXZhbCwgcHJv
ZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAgICBMSU5LKE9wQ29uc3RydWN0LCBwcm9maWxlLCBh
cnJheVByb2ZpbGUpCi0KLSAgICAgICAgTElOSyhPcEluQnlWYWwsIGFycmF5UHJvZmlsZSkKLSAg
ICAgICAgTElOSyhPcFB1dEJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRC
eVZhbERpcmVjdCwgYXJyYXlQcm9maWxlKQorICAgICAgICBpbnN0cnVjdGlvbnNbaV0gPSBJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlKHBjWzBdLnUub3Bjb2RlKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDE7IGogPCBvcExlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBpZiAoc2l6ZW9mKGludDMy
X3QpICE9IHNpemVvZihpbnRwdHJfdCkpCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyBqXS51LnBvaW50ZXIgPSAwOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBqXS51Lm9w
ZXJhbmQgPSBwY1tqXS51Lm9wZXJhbmQ7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChwY1sw
XS51Lm9wY29kZSkgeworICAgICAgICBjYXNlIG9wX2hhc19pbmRleGVkX3Byb3BlcnR5OiB7Cisg
ICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDFdLnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBB
cnJheVByb2ZpbGUoaSk7CiAKLSAgICAgICAgTElOSyhPcE5ld0FycmF5KQotICAgICAgICBMSU5L
KE9wTmV3QXJyYXlXaXRoU2l6ZSkKLSAgICAgICAgTElOSyhPcE5ld0FycmF5QnVmZmVyLCBhcnJh
eUFsbG9jYXRpb25Qcm9maWxlKQorICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0
aCAtIDFdID0gJm1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF07CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKKyAgICAg
ICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKKyAgICAgICAgY2FzZSBvcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHM6CisgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6Cisg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDogeworICAgICAgICAgICAgaW50IGFycmF5UHJvZmls
ZUluZGV4ID0gcGNbb3BMZW5ndGggLSAyXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBtX2FycmF5
UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdID0gQXJyYXlQcm9maWxlKGkpOworCisgICAgICAg
ICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2Fy
cmF5UHJvZmlsZUluZGV4XTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfZ2V0X2RpcmVjdF9wbmFtZToKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICAgICAgY2FzZSBv
cF90cnlfZ2V0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9kaXJlY3Q6CisgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2Zy
b21fYXJndW1lbnRzOgorICAgICAgICBjYXNlIG9wX3RvX251bWJlcjoKKyAgICAgICAgY2FzZSBv
cF90b19vYmplY3Q6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50OiB7CisgICAgICAgICAg
ICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAKLSAgICAgICAgTElOSyhPcE5ld09iamVjdCwgb2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUpCisgICAgICAgIGNhc2Ugb3BfYml0YW5kOgorICAgICAgICBjYXNlIG9wX2JpdG9yOgorICAg
ICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwg
b3BMZW5ndGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAotICAgICAgICBMSU5L
KE9wUHV0QnlJZCkKLSAgICAgICAgTElOSyhPcENyZWF0ZVRoaXMpCisgICAgICAgIGNhc2Ugb3Bf
aW5fYnlfdmFsOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X3ZhbF9kaXJlY3Q6IHsKKyAgICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9
IHBjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kOworICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVz
W2FycmF5UHJvZmlsZUluZGV4XSA9IEFycmF5UHJvZmlsZShpKTsKKyAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxl
SW5kZXhdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAotICAgICAgICBMSU5LKE9w
QWRkKQotICAgICAgICBMSU5LKE9wTXVsKQotICAgICAgICBMSU5LKE9wRGl2KQotICAgICAgICBM
SU5LKE9wU3ViKQotICAgICAgICBMSU5LKE9wQml0eG9yKQorICAgICAgICBjYXNlIG9wX25ld19h
cnJheToKKyAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgorICAgICAgICBjYXNl
IG9wX25ld19hcnJheV9idWZmZXI6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGFycmF5QWxsb2Nh
dGlvblByb2ZpbGVJbmRleDsKKyAgICAgICAgICAgIEluZGV4aW5nVHlwZSByZWNvbW1lbmRlZElu
ZGV4aW5nVHlwZTsKKyAgICAgICAgICAgIHN0ZDo6dGllKGFycmF5QWxsb2NhdGlvblByb2ZpbGVJ
bmRleCwgcmVjb21tZW5kZWRJbmRleGluZ1R5cGUpID0gVW5saW5rZWRDb2RlQmxvY2s6OmRlY29t
cHJlc3NBcnJheUFsbG9jYXRpb25Qcm9maWxlKHBjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kKTsK
KworICAgICAgICAgICAgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSA9ICZtX2FycmF5
QWxsb2NhdGlvblByb2ZpbGVzW2FycmF5QWxsb2NhdGlvblByb2ZpbGVJbmRleF07CisgICAgICAg
ICAgICBpZiAocGNbMF0udS5vcGNvZGUgPT0gb3BfbmV3X2FycmF5X2J1ZmZlcikKKyAgICAgICAg
ICAgICAgICBwcm9maWxlLT5pbml0aWFsaXplSW5kZXhpbmdNb2RlKHJlY29tbWVuZGVkSW5kZXhp
bmdUeXBlKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHBy
b2ZpbGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgIExJTksoT3BO
ZWdhdGUpCisgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogeworICAgICAgICAgICAgaW50IG9i
amVjdEFsbG9jYXRpb25Qcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZDsK
KyAgICAgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSA9ICZtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlc1tvYmplY3RBbGxvY2F0aW9uUHJvZmls
ZUluZGV4XTsKKyAgICAgICAgICAgIGludCBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gcGNbb3BM
ZW5ndGggLSAyXS51Lm9wZXJhbmQ7CiAKLSAgICAgICAgTElOSyhPcEpuZXFQdHIpCisgICAgICAg
ICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBvYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTsKKyAgICAgICAgICAgIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5pbml0aWFsaXplUHJv
ZmlsZSh2bSwKKyAgICAgICAgICAgICAgICBtX2dsb2JhbE9iamVjdC5nZXQoKSwgdGhpcywgbV9n
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLCBpbmZlcnJlZElubGluZUNhcGFjaXR5KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgTElOSyhPcENhdGNoKQot
ICAgICAgICBMSU5LKE9wUHJvZmlsZUNvbnRyb2xGbG93KQorICAgICAgICBjYXNlIG9wX2NhbGw6
CisgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgorICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDog
eworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CisgICAgICAgICAg
ICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2Zp
bGUoaSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9h
cnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKKyAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgNV0gPSAmbV9sbGludENhbGxMaW5rSW5mb3NbcGNbNV0udS5vcGVyYW5kXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7Cisg
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1fbGxpbnRDYWxsTGlua0luZm9zW3Bj
WzVdLnUub3BlcmFuZF07CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3Ro
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2Fy
cmF5X2xlbmd0aDoKKyAgICAgICAgICAgIENSQVNIKCk7CiAKICAgICAgICAgY2FzZSBvcF9yZXNv
bHZlX3Njb3BlOiB7Ci0gICAgICAgICAgICBJTklUSUFMSVpFX01FVEFEQVRBKE9wUmVzb2x2ZVNj
b3BlKQotCi0gICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIo
Ynl0ZWNvZGUudmFyKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlLnJlc29s
dmVUeXBlICE9IExvY2FsQ2xvc3VyZVZhcik7CisgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCA9IGlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIFJlc29s
dmVUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4ocGNbNF0udS5vcGVyYW5kKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHR5cGUgIT0gTG9jYWxDbG9zdXJlVmFyKTsKKyAg
ICAgICAgICAgIGludCBsb2NhbFNjb3BlRGVwdGggPSBwY1s1XS51Lm9wZXJhbmQ7CiAKLSAgICAg
ICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBieXRlY29kZS5sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVu
dCwgR2V0LCBieXRlY29kZS5yZXNvbHZlVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0
aWFsaXphdGlvbik7CisgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFj
dFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBz
Y29wZSwgaWRlbnQsIEdldCwgdHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKIAotICAgICAgICAgICAgbWV0YWRhdGEucmVzb2x2ZVR5cGUgPSBvcC50eXBlOwotICAgICAg
ICAgICAgbWV0YWRhdGEubG9jYWxTY29wZURlcHRoID0gb3AuZGVwdGg7CisgICAgICAgICAgICBp
bnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IG9wLnR5cGU7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIDVdLnUub3BlcmFuZCA9IG9wLmRlcHRoOwogICAgICAgICAgICAgaWYgKG9w
LmxleGljYWxFbnZpcm9ubWVudCkgewogICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1v
ZHVsZVZhcikgewogICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHRoZSBsaW5rZWQgbW9kdWxl
IGVudmlyb25tZW50IHN0cm9uZ2x5IHJlZmVyZW5jZWQuCiAgICAgICAgICAgICAgICAgICAgIGlm
IChzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHMuYWRkKGpzQ2FzdDxKU01vZHVs
ZUVudmlyb25tZW50Kj4ob3AubGV4aWNhbEVudmlyb25tZW50KSkuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZENvbnN0YW50KG9wLmxleGljYWxFbnZpcm9ubWVudCk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLmxleGljYWxFbnZpcm9ubWVudC5zZXQodm0sIHRo
aXMsIG9wLmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0
aW9uc1tpICsgNl0udS5qc0NlbGwuc2V0KHZtLCB0aGlzLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQp
OwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5z
eW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFi
bGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5zeW1ib2xU
YWJsZS5zZXQodm0sIHRoaXMsIG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKSk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBKU1Njb3Bl
Ojpjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKG9wLnR5cGUsIHRoaXMpKQotICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLmNvbnN0YW50U2NvcGUuc2V0KHZtLCB0aGlzLCBjb25zdGFudFNjb3BlKTsK
KyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuanNDZWxsLnNldCh2bSwgdGhp
cywgY29uc3RhbnRTY29wZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbWV0
YWRhdGEuZ2xvYmFsT2JqZWN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDZdLnUucG9pbnRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAgICAgICAgIElO
SVRJQUxJWkVfTUVUQURBVEEoT3BHZXRGcm9tU2NvcGUpCisgICAgICAgICAgICBsaW5rVmFsdWVQ
cm9maWxlKGksIG9wTGVuZ3RoKTsKIAotICAgICAgICAgICAgbGlua19wcm9maWxlKGluc3RydWN0
aW9uLCBieXRlY29kZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgbWV0YWRhdGEud2F0Y2hwb2lu
dFNldCA9IG51bGxwdHI7CisgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNjb3Bl
LCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKLSAgICAgICAgICAgIEFTU0VS
VCghaXNJbml0aWFsaXphdGlvbihieXRlY29kZS5nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpKSk7Ci0gICAgICAgICAgICBpZiAoYnl0ZWNvZGUuZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgp
ID09IExvY2FsQ2xvc3VyZVZhcikgewotICAgICAgICAgICAgICAgIG1ldGFkYXRhLmdldFB1dElu
Zm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLmdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xvc3Vy
ZVZhciwgYnl0ZWNvZGUuZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAg
ICAgICBpbnQgbG9jYWxTY29wZURlcHRoID0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyA1XS51LnBvaW50ZXIgPSBudWxscHRyOworCisgICAgICAgICAgICBH
ZXRQdXRJbmZvIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHBjWzRdLnUub3BlcmFuZCk7CisgICAg
ICAgICAgICBBU1NFUlQoIWlzSW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlv
bk1vZGUoKSkpOworICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBM
b2NhbENsb3N1cmVWYXIpIHsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdID0g
R2V0UHV0SW5mbyhnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGdldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpLm9wZXJhbmQoKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQg
PSBpZGVudGlmaWVyKGJ5dGVjb2RlLnZhcik7Ci0gICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBK
U1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0
ZWNvZGUubG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUuZ2V0UHV0
SW5mby5yZXNvbHZlVHlwZSgpLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
KTsKKyAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1sz
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJh
Y3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwg
c2NvcGUsIGlkZW50LCBHZXQsIGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgICAgICAgICAgbWV0YWRhdGEuZ2V0UHV0SW5m
byA9IEdldFB1dEluZm8oYnl0ZWNvZGUuZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBl
LCBieXRlY29kZS5nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAg
IGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gR2V0UHV0SW5mbyhnZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCksIG9wLnR5cGUsIGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpLm9w
ZXJhbmQoKTsKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikKLSAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLmdldFB1dEluZm8uaW5pdGlh
bGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5v
cGVyYW5kID0gR2V0UHV0SW5mbyhnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIs
IGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpLm9wZXJhbmQoKTsKICAgICAgICAgICAg
IGlmIChvcC50eXBlID09IEdsb2JhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IG9wLnR5cGUg
PT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICAg
ICAgbWV0YWRhdGEud2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CisgICAgICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LndhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50
U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQotICAgICAgICAgICAgICAg
IG1ldGFkYXRhLnN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIG9wLnN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICBtZXRhZGF0YS5vcGVyYW5kID0gb3Aub3BlcmFuZDsKKyAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCh2bSwgdGhpcywgb3Auc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ob3Aub3BlcmFuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7Ci0gICAgICAgICAgICBJTklUSUFMSVpF
X01FVEFEQVRBKE9wUHV0VG9TY29wZSkKLQotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLmdldFB1
dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBMb2NhbENsb3N1cmVWYXIpIHsKKyAgICAgICAgICAgIC8v
IHB1dF90b19zY29wZSBzY29wZSwgaWQsIHZhbHVlLCBHZXRQdXRJbmZvLCBTdHJ1Y3R1cmUsIE9w
ZXJhbmQKKyAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocGNb
NF0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGlmIChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkg
PT0gTG9jYWxDbG9zdXJlVmFyKSB7CiAgICAgICAgICAgICAgICAgLy8gT25seSBkbyB3YXRjaGlu
ZyBpZiB0aGUgcHJvcGVydHkgd2UncmUgcHV0dGluZyB0byBpcyBub3QgYW5vbnltb3VzLgotICAg
ICAgICAgICAgICAgIGlmIChieXRlY29kZS52YXIgIT0gVUlOVF9NQVgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0ganNDYXN0PFN5bWJvbFRhYmxlKj4o
Z2V0Q29uc3RhbnQoYnl0ZWNvZGUuc3ltYm9sVGFibGVPclNjb3BlRGVwdGgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2Rl
LnZhcik7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwY1syXS51
Lm9wZXJhbmQpICE9IFVJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBzeW1ib2xU
YWJsZUluZGV4ID0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBqc0Nhc3Q8U3ltYm9sVGFibGUqPihnZXRDb25zdGFudChzeW1i
b2xUYWJsZUluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50ID0gaWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICAg
ICAgICAgICAgICBhdXRvIGl0ZXIgPSBzeW1ib2xUYWJsZS0+ZmluZChsb2NrZXIsIGlkZW50Lmlt
cGwoKSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpdGVyICE9IHN5bWJvbFRhYmxlLT5l
bmQobG9ja2VyKSk7CiAgICAgICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlLnByZXBhcmVUb1dh
dGNoKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLndhdGNocG9pbnRTZXQgPSBpdGVy
LT52YWx1ZS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgNV0udS53YXRjaHBvaW50U2V0ID0gaXRlci0+dmFsdWUud2F0Y2hwb2ludFNldCgpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS53YXRj
aHBvaW50U2V0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA1XS51LndhdGNocG9pbnRTZXQgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlk
ZW50aWZpZXIoYnl0ZWNvZGUudmFyKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLndhdGNocG9pbnRT
ZXQgPSBudWxscHRyOwotICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJh
Y3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGJ5dGVjb2RlLnN5bWJvbFRh
YmxlT3JTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIFB1dCwgYnl0ZWNvZGUuZ2V0UHV0SW5mby5y
ZXNvbHZlVHlwZSgpLCBieXRlY29kZS5nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsK
KyAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgaW50IGxvY2FsU2NvcGVEZXB0aCA9IHBjWzVdLnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0udS5wb2ludGVyID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZSht
X2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVu
dCwgUHV0LCBnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIGdldFB1dEluZm8uaW5pdGlhbGl6YXRp
b25Nb2RlKCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAKLSAgICAgICAgICAgIG1ldGFkYXRhLmdldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5
dGVjb2RlLmdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUuZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IDRdLnUub3BlcmFuZCA9IEdldFB1dEluZm8oZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50
eXBlLCBnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKS5vcGVyYW5kKCk7CiAgICAgICAg
ICAgICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50
eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLndhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OworICAgICAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0udS53YXRjaHBvaW50U2V0ID0gb3Aud2F0Y2hw
b2ludFNldDsKICAgICAgICAgICAgIGVsc2UgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBv
cC50eXBlID09IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG9wLndhdGNocG9pbnRTZXQpCiAgICAgICAgICAgICAgICAgICAgIG9wLndhdGNo
cG9pbnRTZXQtPmludmFsaWRhdGUodm0sIFB1dFRvU2NvcGVGaXJlRGV0YWlsKHRoaXMsIGlkZW50
KSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKLSAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5zdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBvcC5zdHJ1Y3R1cmUpOwotICAgICAg
ICAgICAgbWV0YWRhdGEub3BlcmFuZCA9IG9wLm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA1XS51LnN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIG9wLnN0cnVjdHVyZSk7
CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUucG9pbnRlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG9wLm9wZXJhbmQpOworCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlOiB7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCh2bS50eXBlUHJvZmlsZXIoKSk7Ci0KLSAgICAgICAgICAgIElOSVRJQUxJWkVfTUVU
QURBVEEoT3BQcm9maWxlVHlwZSkKLQotICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zm
c2V0ID0gaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyBpbnN0cnVjdGlvbi0+c2l6ZSgpIC0gMTsKKyAg
ICAgICAgICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBpczogb3BfcHJvZmls
ZV90eXBlIHJlZ1RvUHJvZmlsZSwgVHlwZUxvY2F0aW9uKiwgZmxhZywgaWRlbnRpZmllcj8sIHJl
c29sdmVUeXBlPworICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9w
TGVuZ3RoIC0gMTsKICAgICAgICAgICAgIHVuc2lnbmVkIGRpdm90U3RhcnQsIGRpdm90RW5kOwog
ICAgICAgICAgICAgR2xvYmFsVmFyaWFibGVJRCBnbG9iYWxWYXJpYWJsZUlEID0gMDsKICAgICAg
ICAgICAgIFJlZlB0cjxUeXBlU2V0PiBnbG9iYWxUeXBlU2V0OwogICAgICAgICAgICAgYm9vbCBz
aG91bGRBbmFseXplID0gbV91bmxpbmtlZENvZGUtPnR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZv
Rm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90U3RhcnQsIGRpdm90RW5k
KTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBwcm9maWxlUmVnaXN0ZXIocGNbMV0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnIGZsYWcgPSBzdGF0
aWNfY2FzdDxQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZz4ocGNbM10udS5vcGVyYW5kKTsKICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG51bGxwdHI7CiAKLSAgICAgICAgICAg
IHN3aXRjaCAoYnl0ZWNvZGUuZmxhZykgeworICAgICAgICAgICAgc3dpdGNoIChmbGFnKSB7CiAg
ICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlQnl0ZWNvZGVDbG9zdXJlVmFyOiB7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLmlk
ZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvY2FsU2NvcGVEZXB0aCA9IGJ5
dGVjb2RlLnN5bWJvbFRhYmxlT3JTY29wZURlcHRoOworICAgICAgICAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1s0XS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgICAgIGludCBsb2NhbFNjb3BlRGVwdGggPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICAgICAgUmVzb2x2ZVR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihwY1s1XS51
Lm9wZXJhbmQpOwogICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHR5cGUgcHJvZmlsaW5n
IG1heSBiZSBwcm9maWxpbmcgZWl0aGVyIGEgR2V0IG9yIGEgUHV0LCB3ZSBjYW4gYWx3YXlzIGNs
YWltIGEgR2V0IGJlY2F1c2UKICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBhYnN0cmFjdGx5ICJy
ZWFkImluZyBmcm9tIGEgSlNTY29wZS4KLSAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBK
U1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9j
YWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUucmVzb2x2ZVR5cGUsIElu
aXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgICAgIFJl
c29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBlLCBJbml0
aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKICAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAogICAgICAgICAgICAgICAgIGlm
IChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBNb2R1bGVWYXIpCkBAIC03MjIs
OSArNzc0LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGVCeXRlY29kZUxv
Y2FsbHlSZXNvbHZlZDogewotICAgICAgICAgICAgICAgIGludCBzeW1ib2xUYWJsZUluZGV4ID0g
Ynl0ZWNvZGUuc3ltYm9sVGFibGVPclNjb3BlRGVwdGg7CisgICAgICAgICAgICAgICAgaW50IHN5
bWJvbFRhYmxlSW5kZXggPSBwY1syXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICAgICAgU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlID0ganNDYXN0PFN5bWJvbFRhYmxlKj4oZ2V0Q29uc3RhbnQoc3lt
Ym9sVGFibGVJbmRleCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
ID0gaWRlbnRpZmllcihieXRlY29kZS5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIocGNbNF0udS5vcGVyYW5kKTsKICAgICAg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2sp
OwogICAgICAgICAgICAgICAgIC8vIElmIG91ciBwYXJlbnQgc2NvcGUgd2FzIGNyZWF0ZWQgd2hp
bGUgcHJvZmlsaW5nIHdhcyBkaXNhYmxlZCwgaXQgd2lsbCBub3QgaGF2ZSBwcmVwYXJlZCBmb3Ig
cHJvZmlsaW5nIHlldC4KICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9s
VGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksIHZtKTsKQEAg
LTc1OSwyNCArODExLDI0IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBU
eXBlTG9jYXRpb24qIGxvY2F0aW9uID0gbG9jYXRpb25QYWlyLmZpcnN0OwogICAgICAgICAgICAg
Ym9vbCBpc05ld0xvY2F0aW9uID0gbG9jYXRpb25QYWlyLnNlY29uZDsKIAotICAgICAgICAgICAg
aWYgKGJ5dGVjb2RlLmZsYWcgPT0gUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3Rh
dGVtZW50KQorICAgICAgICAgICAgaWYgKGZsYWcgPT0gUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0
aW9uUmV0dXJuU3RhdGVtZW50KQogICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90Rm9y
RnVuY3Rpb25PZmZzZXRJZlJldHVyblN0YXRlbWVudCA9IG93bmVyRXhlY3V0YWJsZS0+dHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0KCk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGRBbmFseXplICYm
IGlzTmV3TG9jYXRpb24pCiAgICAgICAgICAgICAgICAgdm0udHlwZVByb2ZpbGVyKCktPmluc2Vy
dE5ld0xvY2F0aW9uKGxvY2F0aW9uKTsKIAotICAgICAgICAgICAgbWV0YWRhdGEudHlwZUxvY2F0
aW9uID0gbG9jYXRpb247CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDJdLnUubG9jYXRp
b24gPSBsb2NhdGlvbjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBvcF9kZWJ1ZzogewotICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uLT5hczxPcERlYnVn
PigpLmRlYnVnSG9va1R5cGUgPT0gRGlkUmVhY2hCcmVha3BvaW50KQorICAgICAgICAgICAgaWYg
KHBjWzFdLnUudW5zaWduZWRWYWx1ZSA9PSBEaWRSZWFjaEJyZWFrcG9pbnQpCiAgICAgICAgICAg
ICAgICAgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6IHsKLSAgICAgICAgICAg
IGludCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IGluc3RydWN0aW9uLT5hczxPcENyZWF0ZVJl
c3Q+KCkubnVtUGFyYW1ldGVyc1RvU2tpcDsKKyAgICAgICAgICAgIGludCBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcCA9IGluc3RydWN0aW9uc1tpICsgM10udS5vcGVyYW5kOwogICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgbnVtYmVyT2ZBcmd1bWVudHNU
b1NraXAgPj0gMCk7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHVzZWQgd2hlbiByZW1hdGVyaWFs
aXppbmcgdGhlIHJlc3QgcGFyYW1ldGVyIGR1cmluZyBPU1IgZXhpdCBpbiB0aGUgRlRMIEpJVC4i
KTsKICAgICAgICAgICAgIG1fbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcDsKQEAgLTc4NiwxNSArODM4LDE0IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0K
IAotI3VuZGVmIENBU0UKLSN1bmRlZiBJTklUSUFMSVpFX01FVEFEQVRBCi0jdW5kZWYgTElOS19G
SUVMRAotI3VuZGVmIExJTksKKyAgICAgICAgaSArPSBvcExlbmd0aDsKKyAgICB9CiAKICAgICBp
ZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKKyAgICAgICAgaW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKGluc3RydWN0aW9ucyk7CisKKyAgICBt
X2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAogICAgIC8vIFNldCBvcHRp
bWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxp
emVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChh
bmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQpAQCAtODEwLDkg
Kzg2MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBH
ZW5lcmF0ZWRCeXRlY29kZXMoKSkKICAgICAgICAgZHVtcEJ5dGVjb2RlKCk7CiAKLSAgICBoZWFw
KCktPnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1faW5zdHJ1Y3Rpb25zLT5zaXplSW5CeXRl
cygpKTsKLQotICAgIGhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQobV9tZXRhZGF0
YS0+c2l6ZUluQnl0ZXMoKSk7CisgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRl
ZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtOTUzLDcgKzEwMDIsNyBAQCBDb2RlQmxvY2sqIENvZGVCbG9jazo6
c3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKQogc2l6ZV90IENvZGVCbG9jazo6ZXN0aW1hdGVk
U2l6ZShKU0NlbGwqIGNlbGwsIFZNJiB2bSkKIHsKICAgICBDb2RlQmxvY2sqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8Q29kZUJsb2NrKj4oY2VsbCk7Ci0gICAgc2l6ZV90IGV4dHJhTWVtb3J5QWxsb2Nh
dGVkID0gdGhpc09iamVjdC0+bV9pbnN0cnVjdGlvbnMtPnNpemVJbkJ5dGVzKCk7CisgICAgc2l6
ZV90IGV4dHJhTWVtb3J5QWxsb2NhdGVkID0gdGhpc09iamVjdC0+bV9pbnN0cnVjdGlvbnMuc2l6
ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKTsKICAgICBpZiAodGhpc09iamVjdC0+bV9qaXRDb2Rl
KQogICAgICAgICBleHRyYU1lbW9yeUFsbG9jYXRlZCArPSB0aGlzT2JqZWN0LT5tX2ppdENvZGUt
PnNpemUoKTsKICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsLCB2bSkgKyBleHRy
YU1lbW9yeUFsbG9jYXRlZDsKQEAgLTk3Niw4ICsxMDI1LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgaWYgKG1faml0Q29kZSkK
ICAgICAgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQobV9qaXRDb2RlLT5zaXpl
KCkpOwotICAgIGlmIChtX2luc3RydWN0aW9ucy0+c2l6ZUluQnl0ZXMoKSkgewotICAgICAgICB2
aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChtX2luc3RydWN0aW9ucy0+c2l6ZUluQnl0
ZXMoKSk7CisgICAgaWYgKG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkgeworICAgICAgICB1bnNpZ25l
ZCByZWZDb3VudCA9IG1faW5zdHJ1Y3Rpb25zLnJlZkNvdW50KCk7CisgICAgICAgIGlmICghcmVm
Q291bnQpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkNvZGVCbG9jazogIiwgUmF3UG9pbnRlcih0
aGlzKSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJtX2luc3RydWN0aW9ucy5kYXRhKCk6
ICIsIFJhd1BvaW50ZXIobV9pbnN0cnVjdGlvbnMuZGF0YSgpKSwgIlxuIik7CisgICAgICAgICAg
ICBkYXRhTG9nKCJyZWZDb3VudDogIiwgcmVmQ291bnQsICJcbiIpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICB2aXNpdG9yLnJl
cG9ydEV4dHJhTWVtb3J5VmlzaXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pIC8gcmVmQ291bnQpOwogICAgIH0KIAogICAgIHN0cm9uZ2x5VmlzaXRTdHJvbmdS
ZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CkBAIC0xMDc3LDIyICsxMTMzLDI1IEBAIHZvaWQg
Q29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBTbG90VmlzaXRvciYgdmlzCiAgICAgVk0mIHZtID0gKm1fcG9pc29uZWRWTTsKIAogICAgIGlm
IChqaXRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgewotICAgICAgICBjb25z
dCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zID0gbV91bmxpbmtlZENvZGUtPnByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
ID0gbV91bmxpbmtlZENvZGUtPnByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBtX2luc3RydWN0aW9ucy0+
YXQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOwotICAgICAgICAgICAgaWYgKGluc3Ry
dWN0aW9uLT5pczxPcFB1dEJ5SWQ+KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0
YSA9IGluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCkubWV0YWRhdGEodGhpcyk7Ci0gICAgICAg
ICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5vbGRTdHJ1Y3R1
cmU7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5uZXdTdHJ1Y3R1cmU7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAm
aW5zdHJ1Y3Rpb25zKClbcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAg
ICAgc3dpdGNoIChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0pKSB7Cisg
ICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogeworICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZUlEIG9sZFN0cnVjdHVyZUlEID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9uWzZdLnUu
c3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCAhbmV3
U3RydWN0dXJlSUQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9
CiAgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRT
dHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQog
ICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpOwogICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChvbGRTdHJ1Y3R1
cmUpKQogICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5ld1N0
cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTE4OCw4NCArMTI0
Nyw3NSBAQCB2b2lkIENvZGVCbG9jazo6ZGV0ZXJtaW5lTGl2ZW5lc3MoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgU2xvdFZpc2l0b3ImIHZpc2l0bwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQogfQogCit2b2lkIENvZGVCbG9jazo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pCit7CisgICAgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBMTEludDo6
Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZCk7CisgICAgaW5zdHJ1Y3Rpb25bNF0udS5wb2ludGVyID0g
bnVsbHB0cjsKKyAgICBpbnN0cnVjdGlvbls1XS51LnBvaW50ZXIgPSBudWxscHRyOworICAgIGlu
c3RydWN0aW9uWzZdLnUucG9pbnRlciA9IG51bGxwdHI7Cit9CisKIHZvaWQgQ29kZUJsb2NrOjpm
aW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIHsKICAgICBWTSYgdm0gPSAqbV9wb2lzb25lZFZN
OwotICAgIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMgPSBtX3VubGlua2VkQ29kZS0+cHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnMoKTsKLQotICAgIGF1dG8gaGFuZGxlR2V0UHV0RnJvbVNjb3BlID0gW10oYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvID0gbWV0YWRhdGEuZ2V0UHV0
SW5mbzsKLSAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBHbG9iYWxWYXIg
fHwgZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MgCi0gICAgICAgICAgICB8fCBnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgPT0gTG9jYWxD
bG9zdXJlVmFyIHx8IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBHbG9iYWxMZXhpY2FsVmFy
IHx8IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgV3JpdGVCYXJyaWVy
QmFzZTxTdHJ1Y3R1cmU+JiBzdHJ1Y3R1cmUgPSBtZXRhZGF0YS5zdHJ1Y3R1cmU7Ci0gICAgICAg
IGlmICghc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKHN0cnVjdHVyZS5nZXQoKSkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAg
ICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgc2NvcGUgYWNjZXNzIHdpdGggc3RydWN0dXJlICVw
LlxuIiwgc3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgc3RydWN0dXJlLmNsZWFyKCk7Ci0gICAg
fTsKLQorICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zID0gbV91bmxpbmtlZENvZGUtPnByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCk7CiAgICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgY29uc3QgYXV0byBjdXJJbnN0cnVjdGlvbiA9
IG1faW5zdHJ1Y3Rpb25zLT5hdChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7Ci0gICAg
ICAgIHN3aXRjaCAoY3VySW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKKyAgICAgICAgSW5zdHJ1
Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgc3dpdGNoIChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQo
Y3VySW5zdHJ1Y3Rpb25bMF0pKSB7CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7Ci0gICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCku
bWV0YWRhdGEodGhpcyk7Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubW9kZSAhPSBHZXRCeUlk
TW9kZTo6RGVmYXVsdCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIFN0cnVj
dHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubW9kZU1ldGFkYXRhLmRlZmF1bHRNb2Rl
LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIGlmICghb2xkU3RydWN0
dXJlSUQgfHwgSGVhcDo6aXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9s
ZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmlu
ZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4iKTsKLSAgICAgICAgICAgIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSht
ZXRhZGF0YSk7CisgICAgICAgICAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKGN1ckluc3RydWN0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkX2RpcmVjdDogewotICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAg
U3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5zdHJ1Y3R1cmU7CisgICAgICAg
ICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IEhlYXA6OmlzTWFy
a2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNj
ZXNzLlxuIik7Ci0gICAgICAgICAgICBtZXRhZGF0YS5zdHJ1Y3R1cmUgPSAwOwotICAgICAgICAg
ICAgbWV0YWRhdGEub2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUu
cG9pbnRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51LnBvaW50
ZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWQ6IHsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VySW5zdHJ1
Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgICAgIFN0cnVj
dHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEub2xkU3RydWN0dXJlOwotICAgICAgICAg
ICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5uZXdTdHJ1Y3R1cmU7Ci0g
ICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBtZXRhZGF0YS5zdHJ1Y3R1cmVDaGFp
bi5nZXQoKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0
cnVjdHVyZUlEID0gY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAg
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hh
aW4uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCBIZWFwOjppc01h
cmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAg
ICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IEhlYXA6OmlzTWFya2VkKHZtLmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAg
ICAgICYmICghY2hhaW4gfHwgSGVhcDo6aXNNYXJrZWQoY2hhaW4pKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0aW9uLlxuIik7Ci0g
ICAgICAgICAgICBtZXRhZGF0YS5vbGRTdHJ1Y3R1cmUgPSAwOwotICAgICAgICAgICAgbWV0YWRh
dGEub2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm5ld1N0cnVjdHVyZSA9IDA7Ci0g
ICAgICAgICAgICBtZXRhZGF0YS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOworICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0u
dS5zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVj
dHVyZUNoYWluLmNsZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQx
OAogICAgICAgICAvLyBXZSBuZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9yZXNvbHZl
X3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRpbWUgc2Nv
cGUgcmVzb2x1dGlvbi4KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGlu
Z19mdW5jX2RlY2xfaW5fZXZhbDoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIG9w
X3RvX3RoaXM6IHsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VySW5zdHJ1Y3Rpb24t
PmFzPE9wVG9UaGlzPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYgKCFtZXRhZGF0
YS5jYWNoZWRTdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQobWV0YWRhdGEuY2FjaGVkU3RydWN0
dXJlLmdldCgpKSkKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKKyAgICAg
ICAgY2FzZSBvcF9nZXRfYnlfaWRfdW5zZXQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xl
bmd0aDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIG9wX3RvX3RoaXM6CisgICAg
ICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzJdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzJdLnUuc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUg
JXAuXG4iLCBtZXRhZGF0YS5jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAgICAgICAgbWV0
YWRhdGEuY2FjaGVkU3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS50b1Ro
aXNTdGF0dXMgPSBtZXJnZShtZXRhZGF0YS50b1RoaXNTdGF0dXMsIFRvVGhpc0NsZWFyZWRCeUdD
KTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgdG9fdGhpcyB3aXRo
IHN0cnVjdHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzJdLnUuc3RydWN0dXJlLmdldCgpKTsK
KyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzJdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvblszXS51LnRvVGhpc1N0YXR1cyA9IG1lcmdlKAorICAgICAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUudG9UaGlzU3RhdHVzLCBUb1RoaXNDbGVhcmVk
QnlHQyk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Ny
ZWF0ZV90aGlzOiB7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9u
LT5hczxPcENyZWF0ZVRoaXM+KCkubWV0YWRhdGEodGhpcyk7Ci0gICAgICAgICAgICBhdXRvJiBj
YWNoZVdyaXRlQmFycmllciA9IG1ldGFkYXRhLmNhY2hlZENhbGxlZTsKKyAgICAgICAgICAgIGF1
dG8mIGNhY2hlV3JpdGVCYXJyaWVyID0gY3VySW5zdHJ1Y3Rpb25bNF0udS5qc0NlbGw7CiAgICAg
ICAgICAgICBpZiAoIWNhY2hlV3JpdGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFs
aWRhdGVkR2V0KCkgPT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0g
Y2FjaGVXcml0ZUJhcnJpZXIuZ2V0KCk7CkBAIC0xMjgwLDggKzEzMzAsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICAvLyBSaWdodCBu
b3cgdGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkuIEFueSBzeW1ib2wgdGFibGVzIHRoYXQg
dGhpcyB3aWxsIHJlZmVyIHRvCiAgICAgICAgICAgICAvLyBhcmUgZm9yIG91dGVyIGZ1bmN0aW9u
cywgYW5kIHdlIHJlZmVyIHRvIHRob3NlIGZ1bmN0aW9ucyBzdHJvbmdseSwgYW5kIHRoZXkgcmVm
ZXIKICAgICAgICAgICAgIC8vIHRvIHRoZSBzeW1ib2wgdGFibGUgc3Ryb25nbHkuIEJ1dCBpdCdz
IG5pY2UgdG8gYmUgb24gdGhlIHNhZmUgc2lkZS4KLSAgICAgICAgICAgIGF1dG8gbWV0YWRhdGEg
PSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BSZXNvbHZlU2NvcGU+KCkubWV0YWRhdGEodGhpcyk7Ci0g
ICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN5bWJvbFRhYmxlPiYgc3ltYm9sVGFibGUgPSBt
ZXRhZGF0YS5zeW1ib2xUYWJsZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3ltYm9s
VGFibGU+JiBzeW1ib2xUYWJsZSA9IGN1ckluc3RydWN0aW9uWzZdLnUuc3ltYm9sVGFibGU7CiAg
ICAgICAgICAgICBpZiAoIXN5bWJvbFRhYmxlIHx8IEhlYXA6OmlzTWFya2VkKHN5bWJvbFRhYmxl
LmdldCgpKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCkBAIC0xMjkwLDEzICsxMzM5LDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6Ci0gICAgICAgICAgICBoYW5kbGVHZXRQ
dXRGcm9tU2NvcGUoY3VySW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbVNjb3BlPigpLm1ldGFkYXRh
KHRoaXMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIG9wX3B1dF90b19zY29w
ZToKLSAgICAgICAgICAgIGhhbmRsZUdldFB1dEZyb21TY29wZShjdXJJbnN0cnVjdGlvbi0+YXM8
T3BQdXRUb1Njb3BlPigpLm1ldGFkYXRhKHRoaXMpKTsKKyAgICAgICAgY2FzZSBvcF9wdXRfdG9f
c2NvcGU6IHsKKyAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
Y3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGlmIChnZXRQdXRJbmZv
LnJlc29sdmVUeXBlKCkgPT0gR2xvYmFsVmFyIHx8IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9
PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIAorICAgICAgICAgICAgICAgIHx8IGdl
dFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBMb2NhbENsb3N1cmVWYXIgfHwgZ2V0UHV0SW5mby5y
ZXNvbHZlVHlwZSgpID09IEdsb2JhbExleGljYWxWYXIgfHwgZ2V0UHV0SW5mby5yZXNvbHZlVHlw
ZSgpID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+
JiBzdHJ1Y3R1cmUgPSBjdXJJbnN0cnVjdGlvbls1XS51LnN0cnVjdHVyZTsKKyAgICAgICAgICAg
IGlmICghc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKHN0cnVjdHVyZS5nZXQoKSkpCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigp
KQorICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBzY29wZSBhY2Nlc3Mgd2l0aCBz
dHJ1Y3R1cmUgJXAuXG4iLCBzdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgc3RydWN0dXJl
LmNsZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJJbnN0cnVjdGlvbi0+b3Bjb2Rl
SUQoKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9w
Y29kZUlEKGN1ckluc3RydWN0aW9uWzBdKTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0VfVU5VU0VEKG9wY29kZUlELCBmYWxzZSwgIlVuaGFuZGxlZCBvcGNvZGUgaW4gQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSwgJXMoJWQpIGF0IGJjICV1Iiwgb3Bjb2RlTmFtZXNb
b3Bjb2RlSURdLCBvcGNvZGVJRCwgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTMwNSwxMiArMTM2MiwxMiBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgLy8gdGhlbiBjbGVhcmVkIHRoZSBjYWNoZSB3
aXRob3V0IEdDaW5nIGluIGJldHdlZW4uCiAgICAgbV9sbGludEdldEJ5SWRXYXRjaHBvaW50TWFw
LnJlbW92ZUlmKFsmXSAoY29uc3QgU3RydWN0dXJlV2F0Y2hwb2ludE1hcDo6S2V5VmFsdWVQYWly
VHlwZSYgcGFpcikgLT4gYm9vbCB7CiAgICAgICAgIGF1dG8gY2xlYXIgPSBbJl0gKCkgewotICAg
ICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gc3RkOjpnZXQ8MT4ocGFp
ci5rZXkpOwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29k
ZUlEKCk7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgeworICAgICAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gc3RkOjpnZXQ8MT4ocGFpci5rZXkpOwor
ICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKCpp
bnN0cnVjdGlvbik7CisgICAgICAgICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZF9wcm90
b19sb2FkIHx8IG9wY29kZSA9PSBvcF9nZXRfYnlfaWRfdW5zZXQpIHsKICAgICAgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
RigiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLlxuIik7Ci0gICAgICAgICAgICAgICAg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50
R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEodGhpcykp
OworICAgICAgICAgICAgICAgIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24pOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC0x
MzI2LDE1ICsxMzgzLDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2Fj
aGVzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwogCi0gICAgZm9yRWFjaExMSW50
Q2FsbExpbmtJbmZvKFsmXShMTEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7Ci0gICAg
ICAgIGlmIChjYWxsTGlua0luZm8uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQoY2FsbExp
bmtJbmZvLmNhbGxlZS5nZXQoKSkpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9s
bGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlT1NSKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJbnQgY2FsbCBm
cm9tICIsICp0aGlzLCAiXG4iKTsKLSAgICAgICAgICAgIGNhbGxMaW5rSW5mby51bmxpbmsoKTsK
KyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOwogICAgICAgICB9
Ci0gICAgICAgIGlmICghIWNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNN
YXJrZWQoY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKLSAgICAgICAgICAgIGNh
bGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOwotICAgIH0pOworICAgICAgICBpZiAo
ISFtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJr
ZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQorICAgICAg
ICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUJhc2VsaW5lSklUSW5saW5lQ2FjaGVz
KCkKQEAgLTE0MTIsMjIgKzE0NjksMjIgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6
YWRkU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBtX3N0dWJJbmZv
cy5hZGQoYWNjZXNzVHlwZSk7CiB9CiAKLUpJVEFkZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElD
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24pCitKSVRBZGRJQyogQ29kZUJsb2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIHJldHVybiBtX2FkZElD
cy5hZGQoYXJpdGhQcm9maWxlLCBpbnN0cnVjdGlvbik7CiB9CiAKLUpJVE11bElDKiBDb2RlQmxv
Y2s6OmFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCitKSVRNdWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAg
IHJldHVybiBtX211bElDcy5hZGQoYXJpdGhQcm9maWxlLCBpbnN0cnVjdGlvbik7CiB9CiAKLUpJ
VFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
LCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCitKSVRTdWJJQyogQ29kZUJsb2NrOjph
ZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogewogICAgIHJldHVybiBtX3N1YklDcy5hZGQoYXJpdGhQcm9maWxlLCBpbnN0cnVj
dGlvbik7CiB9CiAKLUpJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCitKSVROZWdJ
QyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIHJldHVybiBtX25lZ0lDcy5hZGQoYXJpdGhQ
cm9maWxlLCBpbnN0cnVjdGlvbik7CiB9CkBAIC0xNTE1LDkgKzE1NzIsOCBAQCB2b2lkIENvZGVC
bG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiBsb2NrZXIsCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGZ1bmN0aW9uRXhwcik7CiAgICAg
Zm9yIChhdXRvJiBmdW5jdGlvbkRlY2wgOiBtX2Z1bmN0aW9uRGVjbHMpCiAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKGZ1bmN0aW9uRGVjbCk7Ci0gICAgZm9yRWFjaE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKFsmXShPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSYgb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUp
IHsKKyAgICBmb3IgKGF1dG8mIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlIDogbV9vYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZXMpCiAgICAgICAgIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlLnZpc2l0QWdn
cmVnYXRlKHZpc2l0b3IpOwotICAgIH0pOwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBmb3IgKEJ5
VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQpAQCAtMTY0Myw0MiArMTY5OSwxNiBA
QCBDYWxsU2l0ZUluZGV4IENvZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUlu
ZGV4KENhbGxTaXRlSW5kZXggb3JpZ2luYQogI2VuZGlmCiB9CiAKLQotCi12b2lkIENvZGVCbG9j
azo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIGF1dG8gaW5zdHJ1Y3Rp
b24gPSBtX2luc3RydWN0aW9ucy0+YXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgIE9wQ2F0Y2ggb3Ag
PSBpbnN0cnVjdGlvbi0+YXM8T3BDYXRjaD4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IG9wLm1l
dGFkYXRhKHRoaXMpOwotICAgIGlmICghIW1ldGFkYXRhLmJ1ZmZlcikgewotI2lmICFBU1NFUlRf
RElTQUJMRUQKLSAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
ICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvZmlsZSA6IG1f
Y2F0Y2hQcm9maWxlcykgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUuZ2V0KCkgPT0gbWV0YWRh
dGEuYnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChmb3Vu
ZCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGVuc3VyZUNhdGNoTGl2
ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXRTbG93KG9wLCBieXRlY29kZU9mZnNldCk7
Ci19Ci0KLXZvaWQgQ29kZUJsb2NrOjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5
dGVjb2RlT2Zmc2V0U2xvdyhjb25zdCBPcENhdGNoJiBvcCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCBieXRlY29kZU9mZnNldCkKK3ZvaWQgQ29kZUJsb2NrOjplbnN1cmVDYXRjaExpdmVuZXNz
SXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0U2xvdyh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
IHsKKyAgICBBU1NFUlQoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKG1faW5zdHJ1Y3Rpb25zW2J5
dGVjb2RlT2Zmc2V0XSkgPT0gb3BfY2F0Y2gpOwogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyYgYnl0ZWNvZGVMaXZlbmVzcyA9IGxpdmVuZXNzQW5hbHlzaXMoKTsKIAogICAgIC8vIFdlIGdl
dCB0aGUgbGl2ZS1vdXQgc2V0IG9mIHZhcmlhYmxlcyBhdCBvcF9jYXRjaCwgbm90IHRoZSBsaXZl
LWluLiBUaGlzCiAgICAgLy8gaXMgYmVjYXVzZSB0aGUgdmFyaWFibGVzIHRoYXQgdGhlIG9wX2Nh
dGNoIGRlZmluZXMgbWlnaHQgYmUgZGVhZCwgYW5kCiAgICAgLy8gd2UgY2FuIGF2b2lkIHByb2Zp
bGluZyB0aGVtIGFuZCBleHRyYWN0aW5nIHRoZW0gd2hlbiBkb2luZyBPU1IgZW50cnkKICAgICAv
LyBpbnRvIHRoZSBERkcuCi0KLSAgICBhdXRvIG5leHRPZmZzZXQgPSBtX2luc3RydWN0aW9ucy0+
YXQoYnl0ZWNvZGVPZmZzZXQpLm5leHQoKS5vZmZzZXQoKTsKLSAgICBGYXN0Qml0VmVjdG9yIGxp
dmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZz
ZXQodGhpcywgbmV4dE9mZnNldCk7CisgICAgRmFzdEJpdFZlY3RvciBsaXZlTG9jYWxzID0gYnl0
ZWNvZGVMaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHRoaXMsIGJ5dGVj
b2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9jYXRjaCkpOwogICAgIFZlY3RvcjxWaXJ0dWFs
UmVnaXN0ZXI+IGxpdmVPcGVyYW5kczsKICAgICBsaXZlT3BlcmFuZHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShsaXZlTG9jYWxzLmJpdENvdW50KCkpOwogICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNl
dEJpdChbJl0gKHVuc2lnbmVkIGxpdmVMb2NhbCkgewpAQCAtMTY5OCw3ICsxNzI4LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZz
ZXRTbG93KGNvbnN0IE9wQ2F0Y2gKICAgICAvLyB0aGUgY29tcGlsZXIgdGhyZWFkIHJlYWRzIGZ1
bGx5IGluaXRpYWxpemVkIGRhdGEuCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgCiAKLSAg
ICBvcC5tZXRhZGF0YSh0aGlzKS5idWZmZXIgPSBwcm9maWxlcy5nZXQoKTsKKyAgICBtX2luc3Ry
dWN0aW9uc1tieXRlY29kZU9mZnNldCArIDNdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOwog
CiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CkBAIC0x
NzQ5LDE1ICsxNzc5LDIwIEBAIHZvaWQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRl
Y29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50JiBkCiAKIGJvb2wgQ29kZUJs
b2NrOjpoYXNPcERlYnVnRm9yTGluZUFuZENvbHVtbih1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBj
b2x1bW4pCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdCA6ICptX2luc3RydWN0aW9ucykgewot
ICAgICAgICBpZiAoaXQtPmlzPE9wRGVidWc+KCkpIHsKKyAgICBjb25zdCBJbnN0cnVjdGlvbiog
YmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGNvbnN0IEluc3RydWN0aW9uKiBl
bmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKKyAgICBmb3IgKGNvbnN0IEluc3RydWN0aW9uKiBp
dCA9IGJlZ2luOyBpdCAhPSBlbmQ7KSB7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKCppdCk7CisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9k
ZWJ1ZykgeworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBpdCAtIGJlZ2lu
OwogICAgICAgICAgICAgaW50IHVudXNlZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wRGVidWdM
aW5lOwogICAgICAgICAgICAgdW5zaWduZWQgb3BEZWJ1Z0NvbHVtbjsKLSAgICAgICAgICAgIGV4
cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGl0Lm9mZnNldCgpLCB1bnVzZWQsIHVudXNl
ZCwgdW51c2VkLCBvcERlYnVnTGluZSwgb3BEZWJ1Z0NvbHVtbik7CisgICAgICAgICAgICBleHBy
ZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCwgdW51c2VkLCB1bnVz
ZWQsIHVudXNlZCwgb3BEZWJ1Z0xpbmUsIG9wRGVidWdDb2x1bW4pOwogICAgICAgICAgICAgaWYg
KGxpbmUgPT0gb3BEZWJ1Z0xpbmUgJiYgKGNvbHVtbiA9PSBCcmVha3BvaW50Ojp1bnNwZWNpZmll
ZENvbHVtbiB8fCBjb2x1bW4gPT0gb3BEZWJ1Z0NvbHVtbikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgaXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJ
RF07CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTI0NzIsMjcgKzI1MDcsNiBAQCBi
b29sIENvZGVCbG9jazo6c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkKIAogQXJyYXlQcm9m
aWxlKiBDb2RlQmxvY2s6OmdldEFycmF5UHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gbV9p
bnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICBzd2l0Y2ggKGluc3RydWN0aW9u
LT5vcGNvZGVJRCgpKSB7Ci0jZGVmaW5lIENBU0UoT3ApIFwKLSAgICBjYXNlIE9wOjpvcGNvZGVJ
RDogXAotICAgICAgICByZXR1cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlz
KS5hcnJheVByb2ZpbGU7Ci0KLSAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxF
KENBU0UpCi0jdW5kZWYgQ0FTRQotCi0gICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29kZUlEOiB7Ci0g
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOwotICAg
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICBp
ZiAobWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAgICAgICAg
ICByZXR1cm4gJm1ldGFkYXRhLm1vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9m
aWxlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBicmVh
azsKLSAgICB9Ci0KICAgICBmb3IgKGF1dG8mIG1fYXJyYXlQcm9maWxlIDogbV9hcnJheVByb2Zp
bGVzKSB7CiAgICAgICAgIGlmIChtX2FycmF5UHJvZmlsZS5ieXRlY29kZU9mZnNldCgpID09IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuICZtX2FycmF5UHJvZmlsZTsKQEAgLTI1
MzIsNyArMjU0Niw2IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRPckFkZEFycmF5UHJv
ZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKICAgICByZXR1cm4gZ2V0T3JBZGRBcnJheVBy
b2ZpbGUobG9ja2VyLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLQogI2lmIEVOQUJMRShERkdfSklU
KQogVmVjdG9yPENvZGVPcmlnaW4sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgQ29kZUJsb2Nr
Ojpjb2RlT3JpZ2lucygpCiB7CkBAIC0yNTk5LDEzICsyNjEyLDEyIEBAIHZvaWQgQ29kZUJsb2Nr
Ojp1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CiAgICAgCi0gICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQ
cm9maWxlJiBwcm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGxvY2tlciwgdGhpcyk7Ci0gICAgfSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9hcnJh
eVByb2ZpbGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9hcnJheVByb2ZpbGVzW2ldLmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIHRoaXMpOwogICAgIAotICAgIGZvckVhY2hBcnJh
eUFsbG9jYXRpb25Qcm9maWxlKFsmXShBcnJheUFsbG9jYXRpb25Qcm9maWxlJiBwcm9maWxlKSB7
Ci0gICAgICAgIHByb2ZpbGUudXBkYXRlUHJvZmlsZSgpOwotICAgIH0pOworICAgIC8vIERvbid0
IGNvdW50IHRoZXNlIGVpdGhlciwgZm9yIHNpbWlsYXIgcmVhc29ucy4KKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAg
bV9hcnJheUFsbG9jYXRpb25Qcm9maWxlc1tpXS51cGRhdGVQcm9maWxlKCk7CiB9CiAKIHZvaWQg
Q29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9ucygpCkBAIC0yNzU5LDcgKzI3NzEsNyBAQCBz
aXplX3QgQ29kZUJsb2NrOjpwcmVkaWN0ZWRNYWNoaW5lQ29kZVNpemUoKQogICAgIGlmIChtdWx0
aXBsaWVyIDwgMCB8fCBtdWx0aXBsaWVyID4gMTAwMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ci0gICAgZG91YmxlIGRvdWJsZVJlc3VsdCA9IG11bHRpcGxpZXIgKiBpbnN0cnVjdGlvbkNvdW50
KCk7CisgICAgZG91YmxlIGRvdWJsZVJlc3VsdCA9IG11bHRpcGxpZXIgKiBtX2luc3RydWN0aW9u
cy5zaXplKCk7CiAgICAgCiAgICAgLy8gQmUgZXZlbiBtb3JlIHBhcmFub2lkOiBzaWxlbnRseSBy
ZWplY3QgdmFsdWVzIHRoYXQgd29uJ3QgZml0IGludG8gYSBzaXplX3QuIElmCiAgICAgLy8gdGhl
IGZ1bmN0aW9uIGlzIHNvIGh1Z2UgdGhhdCB3ZSBjYW4ndCBldmVuIGZpdCBpdCBpbnRvIHZpcnR1
YWwgbWVtb3J5IHRoZW4gd2UKQEAgLTI3OTgsMzMgKzI4MTAsMTcgQEAgU3RyaW5nIENvZGVCbG9j
azo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAKIFZh
bHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChpbnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1
Y3Rpb25zLT5hdChieXRlY29kZU9mZnNldCk7Ci0gICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bj
b2RlSUQoKSkgewotCi0jZGVmaW5lIENBU0UoT3ApIFwKLSAgICBjYXNlIE9wOjpvcGNvZGVJRDog
XAotICAgICAgICByZXR1cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5w
cm9maWxlOwotCi0gICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoQ0FT
RSkKLQotI3VuZGVmIENBU0UKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgfQotfQotCi1TcGVjdWxhdGVkVHlwZSBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVBy
ZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tl
ciwgaW50IGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIGlmIChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJv
ZmlsZSA9IHRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KSkKLSAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KGxvY2tlcik7Ci0gICAgcmV0dXJuIFNwZWNOb25lOworICAgIHJldHVybiB0cnlCaW5hcnlTZWFy
Y2g8VmFsdWVQcm9maWxlLCBpbnQ+KAorICAgICAgICBtX3ZhbHVlUHJvZmlsZXMsIG1fdmFsdWVQ
cm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBnZXRWYWx1ZVByb2ZpbGVC
eXRlY29kZU9mZnNldDxWYWx1ZVByb2ZpbGU+KTsKIH0KIAogVmFsdWVQcm9maWxlJiBDb2RlQmxv
Y2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIHsK
LSAgICByZXR1cm4gKnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0pOworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgQVNTRVJUKCEhdHJ5R2V0VmFsdWVQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICByZXR1cm4gKmluc3RydWN0
aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwogfQogCiB2b2lk
IENvZGVCbG9jazo6dmFsaWRhdGUoKQpAQCAtMjg1MSwxMCArMjg0NywxOCBAQCB2b2lkIENvZGVC
bG9jazo6dmFsaWRhdGUoKQogICAgICAgICAgICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKICAg
ICAgICAgfQogICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgKyAxIDwgbnVtYmVy
T2ZWYWx1ZVByb2ZpbGVzKCk7ICsraSkgeworICAgICAgICBpZiAodmFsdWVQcm9maWxlKGkpLm1f
Ynl0ZWNvZGVPZmZzZXQgPiB2YWx1ZVByb2ZpbGUoaSArIDEpLm1fYnl0ZWNvZGVPZmZzZXQpIHsK
KyAgICAgICAgICAgIGJlZ2luVmFsaWRhdGlvbkRpZEZhaWwoKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIiAgICBWYWx1ZSBwcm9maWxlcyBhcmUgbm90IHNvcnRlZC5cbiIpOworICAgICAgICAgICAg
ZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKKyAgICAgICAgfQorICAgIH0KICAgICAgCi0gICAgZm9y
IChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6ICptX2luc3RydWN0aW9ucykgewotICAgICAgICBP
cGNvZGVJRCBvcGNvZGUgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKLSAgICAgICAgaWYgKCEh
YmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rp
b24ub2Zmc2V0KCkpKSB7CisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5
dGVjb2RlT2Zmc2V0IDwgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyApIHsKKyAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKG1faW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0XSk7CisgICAgICAgIGlmICghIWJhc2VsaW5lQWx0ZXJuYXRpdmUoKS0+aGFuZGxl
ckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewogICAgICAgICAgICAgaWYgKG9w
Y29kZSA9PSBvcF9jYXRjaCB8fCBvcGNvZGUgPT0gb3BfZW50ZXIpIHsKICAgICAgICAgICAgICAg
ICAvLyBvcF9jYXRjaC9vcF9lbnRlciBsb2dpY2FsbHkgcmVwcmVzZW50IGFuIGVudHJ5cG9pbnQu
IEVudHJ5cG9pbnRzIGFyZSBub3QgYWxsb3dlZCB0byBiZQogICAgICAgICAgICAgICAgIC8vIGlu
c2lkZSBvZiBhIHRyeSBibG9jayBiZWNhdXNlIHRoZXkgYXJlIHJlc3BvbnNpYmxlIGZvciBib290
c3RyYXBwaW5nIHN0YXRlLiBBbmQgdGhleQpAQCAtMjg2Niw2ICsyODcwLDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OnZhbGlkYXRlKCkKICAgICAgICAgICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9w
Y29kZUxlbmd0aChvcGNvZGUpOwogICAgIH0KIH0KIApAQCAtMjg5OSwxOSArMjkwNCw2IEBAIHZv
aWQgQ29kZUJsb2NrOjpzZXRTdGVwcGluZ01vZGUoQ29kZUJsb2NrOjpTdGVwcGluZ01vZGUgbW9k
ZSkKICAgICAgICAgamV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9EZWJ1Z2dlclN0ZXBw
aW5nKTsKIH0KIAotaW50IENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0
cnVjdGlvbiogcGMpCi17Ci0gICAgaW50IG9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0KHBjKTsKLSAg
ICByZXR1cm4gbV91bmxpbmtlZENvZGUtPm91dE9mTGluZUp1bXBPZmZzZXQob2Zmc2V0KTsKLX0K
LQotY29uc3QgSW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcFRhcmdldChjb25z
dCBJbnN0cnVjdGlvbiogcGMpCi17Ci0gICAgaW50IG9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0KHBj
KTsKLSAgICBpbnQgdGFyZ2V0ID0gbV91bmxpbmtlZENvZGUtPm91dE9mTGluZUp1bXBPZmZzZXQo
b2Zmc2V0KTsKLSAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMtPmF0KG9mZnNldCArIHRhcmdldCku
cHRyKCk7Ci19Ci0KIFJhcmVDYXNlUHJvZmlsZSogQ29kZUJsb2NrOjphZGRSYXJlQ2FzZVByb2Zp
bGUoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIG1fcmFyZUNhc2VQcm9maWxlcy5hcHBlbmQo
UmFyZUNhc2VQcm9maWxlKGJ5dGVjb2RlT2Zmc2V0KSk7CkBAIC0yOTMzLDI2ICsyOTI1LDIzIEBA
IHVuc2lnbmVkIENvZGVCbG9jazo6cmFyZUNhc2VQcm9maWxlQ291bnRGb3JCeXRlY29kZU9mZnNl
dChpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLUFyaXRoUHJvZmlsZSog
Q29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQorQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIHsKLSAgICByZXR1
cm4gYXJpdGhQcm9maWxlRm9yUEMobV9pbnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KS5w
dHIoKSk7CisgICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKCZpbnN0cnVjdGlvbnMoKVtieXRl
Y29kZU9mZnNldF0pOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFy
aXRoUHJvZmlsZUZvclBDKEluc3RydWN0aW9uKiBwYykKIHsKLSAgICBzd2l0Y2ggKHBjLT5vcGNv
ZGVJRCgpKSB7CisgICAgYXV0byBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChw
Y1swXSk7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3BfbmVnYXRlOgotICAg
ICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0aGlzKS5hcml0aFByb2Zp
bGU7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QXJpdGhQcm9maWxlKj4oJnBjWzNdLnUu
b3BlcmFuZCk7CiAgICAgY2FzZSBvcF9iaXR4b3I6Ci0gICAgICAgIHJldHVybiAmcGMtPmFzPE9w
Qml0eG9yPigpLm1ldGFkYXRhKHRoaXMpLmFyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoK
LSAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykuYXJpdGhQcm9m
aWxlOwogICAgIGNhc2Ugb3BfbXVsOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE11bD4oKS5t
ZXRhZGF0YSh0aGlzKS5hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBvcF9zdWI6Ci0gICAgICAgIHJl
dHVybiAmcGMtPmFzPE9wU3ViPigpLm1ldGFkYXRhKHRoaXMpLmFyaXRoUHJvZmlsZTsKICAgICBj
YXNlIG9wX2RpdjoKLSAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BEaXY+KCkubWV0YWRhdGEodGhp
cykuYXJpdGhQcm9maWxlOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEFyaXRoUHJvZmls
ZSo+KCZwY1s0XS51Lm9wZXJhbmQpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTI5NjAsNyArMjk0OSw3IEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjphcml0aFBy
b2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLWJvb2wgQ29kZUJsb2NrOjpjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK2Jvb2wgQ29kZUJsb2NrOjpjb3VsZFRha2VT
cGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIGlmICghaGFzQmFzZWxp
bmVKSVRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk3OSwyNiArMjk2
OCwyMiBAQCBERkc6OkNhcGFiaWxpdHlMZXZlbCBDb2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbCgp
CiB9CiAjZW5kaWYKIAotdm9pZCBDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVz
Rm9yQ29udHJvbEZsb3dQcm9maWxlcigpCit2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKFJlZkNvdW50ZWRBcnJheTxJbnN0cnVj
dGlvbj4mIGluc3RydWN0aW9ucykKIHsKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKCktPmhh
c09wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIGJ5dGVjb2RlT2Zm
c2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVP
ZmZzZXRzKCk7CisgICAgY29uc3QgVmVjdG9yPHNpemVfdD4mIGJ5dGVjb2RlT2Zmc2V0cyA9IHVu
bGlua2VkQ29kZUJsb2NrKCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBieXRlY29kZU9mZnNldHMu
c2l6ZSgpOyBpIDwgb2Zmc2V0c0xlbmd0aDsgaSsrKSB7CiAgICAgICAgIC8vIEJlY2F1c2Ugb3Bf
cHJvZmlsZV9jb250cm9sX2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5
IGJhc2ljIGJsb2NrLCBmaW5kaW5nIAogICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2Nv
bnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMg
YmxvY2suCiAgICAgICAgIHNpemVfdCBzdGFydElkeCA9IGJ5dGVjb2RlT2Zmc2V0c1tpXTsKLSAg
ICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdChzdGFydElkeCk7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3Byb2Zp
bGVfY29udHJvbF9mbG93KTsKLSAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcFByb2ZpbGVDb250cm9sRmxvdz4oKTsKLSAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgaW50IGJhc2ljQmxvY2tTdGFydE9mZnNldCA9
IGJ5dGVjb2RlLnRleHRPZmZzZXQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNbc3RhcnRJZHhdKSA9PSBvcF9wcm9maWxlX2NvbnRy
b2xfZmxvdyk7CisgICAgICAgIGludCBiYXNpY0Jsb2NrU3RhcnRPZmZzZXQgPSBpbnN0cnVjdGlv
bnNbc3RhcnRJZHggKyAxXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBiYXNpY0Jsb2NrRW5kT2Zm
c2V0OwogICAgICAgICBpZiAoaSArIDEgPCBvZmZzZXRzTGVuZ3RoKSB7CiAgICAgICAgICAgICBz
aXplX3QgZW5kSWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2kgKyAxXTsKLSAgICAgICAgICAgIGF1dG8g
ZW5kSW5zdHJ1Y3Rpb24gPSBtX2luc3RydWN0aW9ucy0+YXQoZW5kSWR4KTsKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGVuZEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3Byb2ZpbGVf
Y29udHJvbF9mbG93KTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQgPSBlbmRJbnN0
cnVjdGlvbi0+YXM8T3BQcm9maWxlQ29udHJvbEZsb3c+KCkudGV4dE9mZnNldCAtIDE7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zW2VuZElkeF0pID09IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93KTsKKyAgICAgICAgICAgIGJh
c2ljQmxvY2tFbmRPZmZzZXQgPSBpbnN0cnVjdGlvbnNbZW5kSWR4ICsgMV0udS5vcGVyYW5kIC0g
MTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQgPSBt
X3NvdXJjZU9mZnNldCArIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2UoKS5sZW5ndGgo
KSAtIDE7IC8vIE9mZnNldCBiZWZvcmUgdGhlIGNsb3NpbmcgYnJhY2UuCiAgICAgICAgICAgICBi
YXNpY0Jsb2NrU3RhcnRPZmZzZXQgPSBzdGQ6Om1pbihiYXNpY0Jsb2NrU3RhcnRPZmZzZXQsIGJh
c2ljQmxvY2tFbmRPZmZzZXQpOyAvLyBTb21lIHN0YXJ0IG9mZnNldHMgbWF5IGJlIGF0IHRoZSBj
bG9zaW5nIGJyYWNlLCBlbnN1cmUgaXQgaXMgdGhlIG9mZnNldCBiZWZvcmUuCkBAIC0zMDI0LDcg
KzMwMDksNyBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JD
b250cm9sRmxvd1Byb2ZpbGVyKCkKICAgICAgICAgLy8gbTogb3BfcHJvZmlsZV9jb250cm9sX2Zs
b3cKICAgICAgICAgaWYgKGJhc2ljQmxvY2tFbmRPZmZzZXQgPCBiYXNpY0Jsb2NrU3RhcnRPZmZz
ZXQpIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgKyAxIDwgb2Zmc2V0c0xlbmd0aCk7
IC8vIFdlIHNob3VsZCBuZXZlciBlbmNvdW50ZXIgZHVtbXkgYmxvY2tzIGF0IHRoZSBlbmQgb2Yg
YSBDb2RlQmxvY2suCi0gICAgICAgICAgICBtZXRhZGF0YS5iYXNpY0Jsb2NrTG9jYXRpb24gPSB2
bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmR1bW15QmFzaWNCbG9jaygpOworICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW3N0YXJ0SWR4ICsgMV0udS5iYXNpY0Jsb2NrTG9jYXRpb24gPSB2bSgp
LT5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmR1bW15QmFzaWNCbG9jaygpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIApAQCAtMzA0OCw3ICszMDMzLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6Omluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpCiAg
ICAgICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4mIGV4ZWN1
dGFibGUgOiBtX2Z1bmN0aW9uRXhwcnMpCiAgICAgICAgICAgICBpbnNlcnRGdW5jdGlvbkdhcHMo
ZXhlY3V0YWJsZSk7CiAKLSAgICAgICAgbWV0YWRhdGEuYmFzaWNCbG9ja0xvY2F0aW9uID0gYmFz
aWNCbG9ja0xvY2F0aW9uOworICAgICAgICBpbnN0cnVjdGlvbnNbc3RhcnRJZHggKyAxXS51LmJh
c2ljQmxvY2tMb2NhdGlvbiA9IGJhc2ljQmxvY2tMb2NhdGlvbjsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiOGY4NDBiM2U1YjZm
MGQzNzllOWVkOGQ4NDU3YjEzNWY4NTFjMDczLi4zOTYyNTc2ODkyOTI5MGZjZmZhYTZhODk0OGM3
NTUwOGU5ODFiMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRl
ICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCi0jaW5jbHVkZSAiSW5z
dHJ1Y3Rpb25TdHJlYW0uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUQ29k
ZU1hcC5oIgogI2luY2x1ZGUgIkpJVE1hdGhJQ0ZvcndhcmRzLmgiCkBAIC01Niw4ICs1NSw4IEBA
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKICNp
bmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIkxMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIkxhenlPcGVyYW5kVmFs
dWVQcm9maWxlLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIk1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aCIKICNpbmNsdWRlICJPcHRpb25zLmgiCkBAIC04NiwxMSArODUsMTAgQEAgc3RydWN0IE9TUkV4
aXRTdGF0ZTsKIAogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJs
b2NrU2V0OworY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTsKIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7Ci1jbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ7
Ci1jbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUENUb0NvZGVPcmlnaW5NYXA7CiBjbGFzcyBS
ZWdpc3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwpAQCAtOTgsNyAr
OTYsNiBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6
IGludDhfdDsKIAogc3RydWN0IEFyaXRoUHJvZmlsZTsKLXN0cnVjdCBPcENhdGNoOwogCiBlbnVt
IFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBDb3VudFJlb3B0
aW1pemF0aW9uIH07CiAKQEAgLTIwMCw3ICsxOTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1
bXBCeXRlY29kZSgpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0gICAg
dm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW06OlJlZiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOworICAgIHZv
aWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdp
biwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNN
YXAoKSk7CiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAg
ICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0mKTsKQEAgLTI0NSwyMiAr
MjQyLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiBy
ZXN1bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCi0gICAgSklUQWRkSUMqIGFkZEpJVEFkZElD
KEFyaXRoUHJvZmlsZSosIGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgSklUTXVsSUMqIGFkZEpJ
VE11bElDKEFyaXRoUHJvZmlsZSosIGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgSklUTmVnSUMq
IGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSosIGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgSklU
U3ViSUMqIGFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSosIGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7Cisg
ICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7Cisg
ICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7Cisg
ICAgSklUU3ViSUMqIGFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVEFkZEdlbmVyYXRvcj46OnZh
bHVlPjo6dHlwZT4KLSAgICBKSVRBZGRJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmls
ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlLCBpbnN0cnVjdGlvbik7IH0KKyAgICBKSVRBZGRJQyogYWRkTWF0aElDKEFyaXRoUHJv
ZmlsZSogcHJvZmlsZSwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKSB7IHJldHVybiBhZGRKSVRB
ZGRJQyhwcm9maWxlLCBpbnN0cnVjdGlvbik7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PEdlbmVyYXRvciwgSklUTXVsR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVE11bElD
KiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlLCBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUsIGluc3RydWN0aW9uKTsgfQor
ICAgIEpJVE11bElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlLCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUsIGluc3RydWN0aW9u
KTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVROZWdHZW5lcmF0
b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTmVnSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUq
IHByb2ZpbGUsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikgeyByZXR1cm4gYWRkSklU
TmVnSUMocHJvZmlsZSwgaW5zdHJ1Y3Rpb24pOyB9CisgICAgSklUTmVnSUMqIGFkZE1hdGhJQyhB
cml0aFByb2ZpbGUqIHByb2ZpbGUsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikgeyByZXR1cm4g
YWRkSklUTmVnSUMocHJvZmlsZSwgaW5zdHJ1Y3Rpb24pOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfc2FtZTxHZW5lcmF0b3IsIEpJVFN1YkdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBK
SVRTdWJJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uKSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxlLCBpbnN0cnVjdGlv
bik7IH0KKyAgICBKSVRTdWJJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxlLCBpbnN0
cnVjdGlvbik7IH0KIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRTdHViSW5mbyhBY2Nlc3NU
eXBlKTsKICAgICBhdXRvIHN0dWJJbmZvQmVnaW4oKSB7IHJldHVybiBtX3N0dWJJbmZvcy5iZWdp
bigpOyB9CkBAIC0zMDksMjYgKzMwNiwyNCBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAg
ICBjb25zdCBJbnN0cnVjdGlvbiogb3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlv
biogcGMpOwotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0aW9uKiBw
Yyk7Ci0gICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24pCi0gICAgewotICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9m
ZnNldChpbnN0cnVjdGlvbi5wdHIoKSk7Ci0gICAgfQorICAgIHR5cGVkZWYgSlNDOjpJbnN0cnVj
dGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFBvaXNvbmVkUmVmQ291bnRlZEFycmF5PENv
ZGVCbG9ja1BvaXNvbiwgSW5zdHJ1Y3Rpb24+JiBVbnBhY2tlZEluc3RydWN0aW9uczsKKworICAg
IHN0YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoSW5zdHJ1Y3Rpb24qKTsKIAotICAg
IGlubGluZSB1bnNpZ25lZCBieXRlY29kZU9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcmV0dXJu
QWRkcmVzcykKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJu
QWRkcmVzcykKICAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0g
aW5zdHJ1Y3Rpb25zKCkuYXQoMCkucHRyKCk7Ci0gICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0
aW9uc0VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlv
bnNCZWdpbiAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zRW5kKTsKLSAgICAgICAgcmV0
dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFk
ZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
ICAgICB9CiAKLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29u
c3QgeyByZXR1cm4gKm1faW5zdHJ1Y3Rpb25zOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnN0
cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7IH0KKyAgICBQ
b2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiYgaW5z
dHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKyAgICBjb25zdCBQb2lzb25l
ZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KIAogICAgIHNpemVfdCBwcmVk
aWN0ZWRNYWNoaW5lQ29kZVNpemUoKTsKIAotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KKyAgICB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAK
ICAgICAvLyBFeGFjdGx5IGVxdWl2YWxlbnQgdG8gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tGb3IoY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktp
bmQoKSkKICAgICBDb2RlQmxvY2sqIG5ld1JlcGxhY2VtZW50KCk7CkBAIC00MzAsMTMgKzQyNSwy
MCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpOwotICAgIFNwZWN1bGF0ZWRUeXBlIHZh
bHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBpbnQgYnl0ZWNvZGVPZmZzZXQpOworICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJv
ZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
IGxvY2tlciwgaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgaWYgKFZhbHVlUHJv
ZmlsZSogdmFsdWVQcm9maWxlID0gdHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHJldHVybiBTcGVjTm9uZTsKKyAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hWYWx1ZVBy
b2ZpbGUoY29uc3QgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgZm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQXJyYXlBbGxvY2F0aW9uUHJvZmlsZShjb25zdCBG
dW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExMSW50Q2FsbExpbmtJbmZvKGNvbnN0IEZ1bmN0b3Im
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hWYWx1ZVByb2Zp
bGUoY29uc3QgRnVuY3RvciYgZnVuYykKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgICAg
ICBmdW5jKHZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgICAgICBm
dW5jKHZhbHVlUHJvZmlsZShpKSk7CisgICAgfQogCiAgICAgUmFyZUNhc2VQcm9maWxlKiBhZGRS
YXJlQ2FzZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTsKICAgICB1bnNpZ25lZCBudW1iZXJP
ZlJhcmVDYXNlUHJvZmlsZXMoKSB7IHJldHVybiBtX3JhcmVDYXNlUHJvZmlsZXMuc2l6ZSgpOyB9
CkBAIC00NTksMTAgKzQ2MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBP
cHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCgpOwogICAgIH0KIAotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBieXRlY29kZU9mZnNldCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOworICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZUZvclBDKEluc3RydWN0aW9uKik7CiAKLSAgICBib29sIGNvdWxkVGFr
ZVNwZWNpYWxGYXN0Q2FzZShJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0
KTsKKyAgICBib29sIGNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQp
OwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4g
bV9hcnJheVByb2ZpbGVzLnNpemUoKTsgfQogICAgIGNvbnN0IEFycmF5UHJvZmlsZVZlY3RvciYg
YXJyYXlQcm9maWxlcygpIHsgcmV0dXJuIG1fYXJyYXlQcm9maWxlczsgfQpAQCAtNjEyLDcgKzYx
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKICAg
ICB9CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjp0dXBsZTxTdHJ1Y3R1cmUqLCBjb25zdCBJ
bnN0cnVjdGlvbio+LCBCYWc8TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50Pj4gU3RydWN0dXJlV2F0Y2hwb2ludE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8c3Rk
Ojp0dXBsZTxTdHJ1Y3R1cmUqLCBJbnN0cnVjdGlvbio+LCBCYWc8TExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Pj4gU3RydWN0dXJlV2F0Y2hwb2ludE1hcDsKICAg
ICBTdHJ1Y3R1cmVXYXRjaHBvaW50TWFwJiBsbGludEdldEJ5SWRXYXRjaHBvaW50TWFwKCkgeyBy
ZXR1cm4gbV9sbGludEdldEJ5SWRXYXRjaHBvaW50TWFwOyB9CiAKICAgICAvLyBGdW5jdGlvbnMg
Zm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCkBA
IC02NTAsNyArNjUyLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBjYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoKTsKICNlbHNlCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mTExJ
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGlj
IHNpemVfdCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkg
eyByZXR1cm4gMTsgfTsKKyAgICBzdGF0aWMgc2l6ZV90IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9OwogICAgIHNpemVfdCBjYWxs
ZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKIApA
QCAtODQ3LDcgKzg0OSwyNSBAQCBwdWJsaWM6CiAKICAgICBDYWxsU2l0ZUluZGV4IG5ld0V4Y2Vw
dGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IG9yaWdpbmFsQ2FsbFNpdGUp
OwogCi0gICAgdm9pZCBlbnN1cmVDYXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zm
c2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOworICAgIHZvaWQg
ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIGlmICghIW1faW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgM10udS5wb2ludGVyKSB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9maWxlIDogbV9jYXRj
aFByb2ZpbGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGUuZ2V0KCkgPT0gbV9pbnN0
cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQgKyAzXS51LnBvaW50ZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoZm91bmQpOworI2Vu
ZGlmCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBlbnN1cmVDYXRj
aExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0U2xvdyhieXRlY29kZU9mZnNldCk7
CisgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2b2lkIHNldFBDVG9Db2RlT3JpZ2luTWFw
KHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4mJik7CkBAIC04NTYsMTcgKzg3Niw2
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZENvZGUtPmhhc1RhaWxDYWxscygpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBN
ZXRhZGF0YT4KLSAgICBNZXRhZGF0YSYgbWV0YWRhdGEoT3Bjb2RlSUQgb3Bjb2RlSUQsIHVuc2ln
bmVkIG1ldGFkYXRhSUQpCi0gICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxN
ZXRhZGF0YSo+KG1fbWV0YWRhdGEtPmdldChvcGNvZGVJRCkpW21ldGFkYXRhSURdOwotICAgIH0K
LQotICAgIHNpemVfdCBtZXRhZGF0YVNpemVJbkJ5dGVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX3VubGlua2VkQ29kZS0+bWV0YWRhdGFTaXplSW5CeXRlcygpOwotICAgIH0KLQogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOwogICAgIHZvaWQgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwpAQCAtOTEyLDggKzkyMSwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCB2aXNpdE9TUkV4aXRUYXJnZXRz
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJik7CiAKLSAgICB1bnNpZ25l
ZCBudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcygpIHsgcmV0dXJuIG1fbnVtYmVyT2ZO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXM7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJv
ZmlsZXMoKSB7IHJldHVybiBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpOyB9CisgICAgdW5zaWduZWQg
bnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMoKSB7IHJldHVybiBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgfQogICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkg
eyByZXR1cm4gbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKSArIG51bWJlck9mTm9uQXJn
dW1lbnRWYWx1ZVByb2ZpbGVzKCk7IH0KKyAgICBWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZShp
bnQgaW5kZXgpIHsgcmV0dXJuIG1fdmFsdWVQcm9maWxlc1tpbmRleF07IH0KICAgICBWYWx1ZVBy
b2ZpbGUqIHRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9m
ZnNldCk7CiAKICAgICBTZWNvbmRzIHRpbWVTaW5jZUNyZWF0aW9uKCkKQEAgLTkyNywxNCArOTM4
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxSYXJlRGF0YT4oKTsKICAgICB9CiAKLSAgICB2b2lkIGluc2VydEJhc2ljQmxvY2tCb3VuZGFy
aWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpOwotICAgIHZvaWQgZW5zdXJlQ2F0Y2hMaXZlbmVz
c0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29uc3QgT3BDYXRjaCYsIEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQpOworICAgIHZvaWQgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNG
b3JDb250cm9sRmxvd1Byb2ZpbGVyKFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mKTsKKyAg
ICB2b2lkIGVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXRTbG93
KHVuc2lnbmVkKTsKIAogICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9udW1W
YXJzOwogICAgIGludCBtX251bVBhcmFtZXRlcnM7CiAgICAgaW50IG1fbnVtYmVyT2ZBcmd1bWVu
dHNUb1NraXAgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQ
cm9maWxlcyB7IDAgfTsKICAgICB1bmlvbiB7CiAgICAgICAgIHVuc2lnbmVkIG1fZGVidWdnZXJS
ZXF1ZXN0czsKICAgICAgICAgc3RydWN0IHsKQEAgLTk0OCw4ICs5NTgsNyBAQCBwcml2YXRlOgog
ICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293bmVyRWRnZTsK
ICAgICBQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9wb2lzb25lZFZNOwogCi0gICAg
dW5zaWduZWQgbV9pbnN0cnVjdGlvbkNvdW50IHsgMCB9OwotICAgIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtKiBtX2luc3RydWN0aW9uczsKKyAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2Rl
QmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3Rl
cjsKICAgICBtdXRhYmxlIENvZGVCbG9ja0hhc2ggbV9oYXNoOwpAQCAtOTU4LDYgKzk2Nyw3IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9m
aXJzdExpbmVDb2x1bW5PZmZzZXQ7CiAKKyAgICBSZWZDb3VudGVkQXJyYXk8TExJbnRDYWxsTGlu
a0luZm8+IG1fbGxpbnRDYWxsTGlua0luZm9zOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTElu
dENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+PiBt
X2luY29taW5nTExJbnRDYWxsczsKICAgICBTdHJ1Y3R1cmVXYXRjaHBvaW50TWFwIG1fbGxpbnRH
ZXRCeUlkV2F0Y2hwb2ludE1hcDsKICAgICBQb2lzb25lZFJlZlB0cjxDb2RlQmxvY2tQb2lzb24s
IEpJVENvZGU+IG1faml0Q29kZTsKQEAgLTk4Myw5ICs5OTMsMTIgQEAgcHJpdmF0ZToKICAgICBD
b21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIgbV9sYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZXM7CiAjZW5kaWYKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX2Fy
Z3VtZW50VmFsdWVQcm9maWxlczsKKyAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBt
X3ZhbHVlUHJvZmlsZXM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxS
YXJlQ2FzZVByb2ZpbGUsIDg+IG1fcmFyZUNhc2VQcm9maWxlczsKKyAgICBSZWZDb3VudGVkQXJy
YXk8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZT4gbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlczsKICAg
ICBBcnJheVByb2ZpbGVWZWN0b3IgbV9hcnJheVByb2ZpbGVzOworICAgIFJlZkNvdW50ZWRBcnJh
eTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZT4gbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZXM7CiAK
ICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVy
KSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1l
X3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpAQCAtMTAwNSw4ICsxMDE4LDYgQEAgcHJp
dmF0ZToKICAgICB1aW50MTZfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICB1aW50
MTZfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwogCi0gICAgUmVmUHRyPE1ldGFkYXRh
VGFibGU+IG1fbWV0YWRhdGE7Ci0KICAgICBNb25vdG9uaWNUaW1lIG1fY3JlYXRpb25UaW1lOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQyMGNlNWM1NTBmMTUwODlmZDBmYWM4MjE5ZTdkNWRlMzMyZTQx
NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKLSNp
bmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJVbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxp
bmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgot
dm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykK
LXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJv
ZmlsZXMoKTsgKytpKQotICAgICAgICBmdW5jKHZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGkpKTsK
LQotI2RlZmluZSBWSVNJVChfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEucHJvZmlsZSk7IH0pOwotCi1GT1Jf
RUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQotCi0jdW5kZWYgVklTSVQKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJy
YXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCi17Ci0gICAgZm9yIChhdXRvJiBhcnJheVBy
b2ZpbGUgOiBtX2FycmF5UHJvZmlsZXMpCi0gICAgICAgIGZ1bmMoYXJyYXlQcm9maWxlKTsKLQot
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
Ci0gICAgICAgIGlmIChtZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkK
LSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5h
cnJheVByb2ZpbGUpOwotICAgIH0pOwotCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0
YS5hcnJheVByb2ZpbGUpOyB9KTsKLQotRk9SX0VBQ0hfT1BDT0RFX1dJVEhfQVJSQVlfUFJPRklM
RShWSVNJVCkKLQotI3VuZGVmIFZJU0lUCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
Ci12b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUoY29uc3QgRnVu
Y3RvciYgZnVuYykKLXsKLSNkZWZpbmUgVklTSVQoX19vcCkgXAotICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLmFycmF5QWxs
b2NhdGlvblByb2ZpbGUpOyB9KTsKLQotRk9SX0VBQ0hfT1BDT0RFX1dJVEhfQVJSQVlfQUxMT0NB
VElPTl9QUk9GSUxFKFZJU0lUKQotCi0jdW5kZWYgVklTSVQKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KLXZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUoY29uc3QgRnVuY3RvciYgZnVuYykKLXsKLSNkZWZpbmUgVklTSVQoX19vcCkgXAotICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFk
YXRhLm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKTsgfSk7Ci0KLUZPUl9FQUNIX09QQ09ERV9XSVRI
X09CSkVDVF9BTExPQ0FUSU9OX1BST0ZJTEUoVklTSVQpCi0KLSN1bmRlZiBWSVNJVAotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hMTEludENh
bGxMaW5rSW5mbyhjb25zdCBGdW5jdG9yJiBmdW5jKQotewotI2RlZmluZSBWSVNJVChfX29wKSBc
Ci0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1
bmMobWV0YWRhdGEuY2FsbExpbmtJbmZvKTsgfSk7Ci0KLUZPUl9FQUNIX09QQ09ERV9XSVRIX0xM
SU5UX0NBTExfTElOS19JTkZPKFZJU0lUKQotCi0jdW5kZWYgVklTSVQKLX0KLQotfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTdmNjQyMDQyN2YwMWE5MjMwNjY5NDBkYWFjZWEwYzIwNjNhM2Nm
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjk2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkdldFB1dEluZm8uaCIKLSNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgotI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKLSNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVj
b2RlRmxhZy5oIgotI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9p
bnRlci5oIgotI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgotI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBGaXRzQXNzZXJ0aW9uIHsKLSAgICBBc3Nl
cnQsCi0gICAgTm9Bc3NlcnQKLX07Ci0KLS8vIEZpdHMgdGVtcGxhdGUKLXRlbXBsYXRlPHR5cGVu
YW1lLCBPcGNvZGVTaXplLCB0eXBlbmFtZSA9IHN0ZDo6dHJ1ZV90eXBlPgotc3RydWN0IEZpdHM7
Ci0KLS8vIEltcGxpY2l0IGNvbnZlcnNpb24gZm9yIHR5cGVzIG9mIHRoZSBzYW1lIHNpemUKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBGaXRzPFQsIHNpemUs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKFQpID09IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4gewot
ICAgIHN0YXRpYyBib29sIGNoZWNrKFQpIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIHN0YXRpYyB0
eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp0eXBlIGNvbnZlcnQoVCB0KSB7IHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDx0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp0eXBlKj4oJnQpOyB9Ci0K
LSAgICB0ZW1wbGF0ZTxjbGFzcyBUMSA9IFQsIE9wY29kZVNpemUgc2l6ZTEgPSBzaXplLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxUMSwgdHlwZW5hbWUgVHlwZUJ5
U2l6ZTxzaXplMT46OnR5cGU+Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PgotICAgIHN0YXRpYyBU
MSBjb252ZXJ0KHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZTE+Ojp0eXBlIHQpIHsgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PFQxKj4oJnQpOyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBP
cGNvZGVTaXplIHNpemU+Ci1zdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNp
emVvZihUKSA8IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4gewotICAgIHN0YXRpYyBib29sIGNoZWNr
KFQpIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIHN0YXRpYyB0eXBlbmFtZSBUeXBlQnlTaXplPHNp
emU+Ojp0eXBlIGNvbnZlcnQoVCB0KSB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBUeXBl
QnlTaXplPHNpemU+Ojp0eXBlPih0KTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVDEgPSBULCBP
cGNvZGVTaXplIHNpemUxID0gc2l6ZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6
OmlzX3NhbWU8VDEsIHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZTE+Ojp0eXBlPjo6dmFsdWUsIHN0
ZDo6dHJ1ZV90eXBlPj4KLSAgICBzdGF0aWMgVDEgY29udmVydCh0eXBlbmFtZSBUeXBlQnlTaXpl
PHNpemUxPjo6dHlwZSB0KSB7IHJldHVybiBzdGF0aWNfY2FzdDxUMT4odCk7IH0KLX07Ci0KLXRl
bXBsYXRlPD4KLXN0cnVjdCBGaXRzPHVpbnQzMl90LCBPcGNvZGVTaXplOjpOYXJyb3c+IHsKLSAg
ICBzdGF0aWMgYm9vbCBjaGVjayh1bnNpZ25lZCB1KSB7IHJldHVybiB1IDw9IFVJTlQ4X01BWDsg
fQotCi0gICAgc3RhdGljIHVpbnQ4X3QgY29udmVydCh1bnNpZ25lZCB1KQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGNoZWNrKHUpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHUpOwotICAgIH0KLSAgICBzdGF0aWMgdW5zaWduZWQgY29udmVydCh1aW50OF90IHUpCi0gICAg
ewotICAgICAgICByZXR1cm4gdTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgRml0
czxpbnQsIE9wY29kZVNpemU6Ok5hcnJvdz4gewotICAgIHN0YXRpYyBib29sIGNoZWNrKGludCBp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGkgPj0gSU5UOF9NSU4gJiYgaSA8PSBJTlQ4X01BWDsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdWludDhfdCBjb252ZXJ0KGludCBpKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGNoZWNrKGkpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGkpOwotICAgIH0KLQotICAgIHN0YXRpYyBpbnQgY29udmVydCh1aW50OF90IGkpCi0gICAgewot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50OF90PihpKTsKLSAgICB9Ci19OwotCi10ZW1w
bGF0ZTw+Ci1zdHJ1Y3QgRml0czxWaXJ0dWFsUmVnaXN0ZXIsIE9wY29kZVNpemU6Ok5hcnJvdz4g
ewotICAgIC8vIC0xMjguLi0xICBsb2NhbCB2YXJpYWJsZXMKLSAgICAvLyAgICAwLi4xNSAgYXJn
dW1lbnRzCi0gICAgLy8gICAxNi4uMTI3IGNvbnN0YW50cwotICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfZmlyc3RDb25zdGFudEluZGV4ID0gMTY7Ci0gICAgc3RhdGljIGJvb2wgY2hlY2soVmly
dHVhbFJlZ2lzdGVyIHIpCi0gICAgewotICAgICAgICBpZiAoci5pc0NvbnN0YW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gKHNfZmlyc3RDb25zdGFudEluZGV4ICsgci50b0NvbnN0YW50SW5kZXgo
KSkgPD0gSU5UOF9NQVg7Ci0gICAgICAgIHJldHVybiByLm9mZnNldCgpID49IElOVDhfTUlOICYm
IHIub2Zmc2V0KCkgPCBzX2ZpcnN0Q29uc3RhbnRJbmRleDsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dWludDhfdCBjb252ZXJ0KFZpcnR1YWxSZWdpc3RlciByKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KGNoZWNrKHIpKTsKLSAgICAgICAgaWYgKHIuaXNDb25zdGFudCgpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludDhfdD4oc19maXJzdENvbnN0YW50SW5kZXggKyByLnRvQ29uc3Rh
bnRJbmRleCgpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDhfdD4oci5vZmZzZXQo
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFZpcnR1YWxSZWdpc3RlciBjb252ZXJ0KHVpbnQ4X3Qg
dSkKLSAgICB7Ci0gICAgICAgIGludCBpID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxp
bnQ4X3Q+KHUpKTsKLSAgICAgICAgaWYgKGkgPj0gc19maXJzdENvbnN0YW50SW5kZXgpCi0gICAg
ICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyIHsgKGkgLSBzX2ZpcnN0Q29uc3RhbnRJbmRl
eCkgKyBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCB9OwotICAgICAgICByZXR1cm4gVmlydHVh
bFJlZ2lzdGVyIHsgaSB9OwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBGaXRzPFNw
ZWNpYWw6OlBvaW50ZXIsIE9wY29kZVNpemU6Ok5hcnJvdz4gOiBGaXRzPGludCwgT3Bjb2RlU2l6
ZTo6TmFycm93PiB7Ci0gICAgdXNpbmcgQmFzZSA9IEZpdHM8aW50LCBPcGNvZGVTaXplOjpOYXJy
b3c+OwotICAgIHN0YXRpYyBib29sIGNoZWNrKFNwZWNpYWw6OlBvaW50ZXIgc3ApIHsgcmV0dXJu
IEJhc2U6OmNoZWNrKHN0YXRpY19jYXN0PGludD4oc3ApKTsgfQotICAgIHN0YXRpYyB1aW50OF90
IGNvbnZlcnQoU3BlY2lhbDo6UG9pbnRlciBzcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNl
Ojpjb252ZXJ0KHN0YXRpY19jYXN0PGludD4oc3ApKTsKLSAgICB9Ci0gICAgc3RhdGljIFNwZWNp
YWw6OlBvaW50ZXIgY29udmVydCh1aW50OF90IHNwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNwZWNpYWw6OlBvaW50ZXI+KEJhc2U6OmNvbnZlcnQoc3ApKTsKLSAgICB9Ci19
OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBPcGNvZGVTaXplOjpOYXJy
b3c+IHsKLSAgICAvLyAxMyBSZXNvbHZlIFR5cGVzCi0gICAgLy8gMyBJbml0aWFsaXphdGlvbiBN
b2RlcwotICAgIC8vIDIgUmVzb2x2ZSBNb2RlcwotICAgIC8vCi0gICAgLy8gVHJ5IHRvIGVuY29k
ZSBlbmNvZGUgYXMKLSAgICAvLwotICAgIC8vICAgICAgICAgICBpbml0aWFsaXphdGlvbiBtb2Rl
Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgIHYKLSAgICAvLyBmcmVlIGJpdC0+IDB8MDAwMHww
MHwwCi0gICAgLy8gICAgICAgICAgICAgICAgIF4gICAgXgotICAgIC8vICAgIHJlc29sdmUgIHR5
cGUgICByZXNvbHZlIG1vZGUKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3Jlc29sdmVUeXBl
TWF4ID0gMSA8PCA0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25N
b2RlTWF4ID0gMSA8PCAyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZU1vZGVN
YXggPSAxIDw8IDE7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3Jlc29sdmVUeXBlQml0
cyA9IChzX3Jlc29sdmVUeXBlTWF4IC0gMSkgPDwgMzsKLSAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBzX2luaXRpYWxpemF0aW9uTW9kZUJpdHMgPSAoc19pbml0aWFsaXphdGlvbk1vZGVNYXggLSAx
KSA8PCAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZU1vZGVCaXRzID0gKHNf
cmVzb2x2ZU1vZGVNYXggLSAxKTsKLQotICAgIHN0YXRpY19hc3NlcnQoIShzX3Jlc29sdmVUeXBl
Qml0cyAmIHNfaW5pdGlhbGl6YXRpb25Nb2RlQml0cyAmIHNfcmVzb2x2ZU1vZGVCaXRzKSwgIlRo
ZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNvbHZlTW9kZSwgUmVzb2x2
ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwotCi0gICAgc3RhdGljIGJvb2wgY2hlY2so
R2V0UHV0SW5mbyBncGkpCi0gICAgewotICAgICAgICBhdXRvIHJlc29sdmVUeXBlID0gc3RhdGlj
X2Nhc3Q8aW50PihncGkucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgIGF1dG8gaW5pdGlhbGl6YXRp
b25Nb2RlID0gc3RhdGljX2Nhc3Q8aW50PihncGkuaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAg
ICAgICBhdXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8aW50PihncGkucmVzb2x2ZU1vZGUo
KSk7Ci0gICAgICAgIHJldHVybiByZXNvbHZlVHlwZSA8IHNfcmVzb2x2ZVR5cGVNYXggJiYgaW5p
dGlhbGl6YXRpb25Nb2RlIDwgc19pbml0aWFsaXphdGlvbk1vZGVNYXggJiYgcmVzb2x2ZU1vZGUg
PCBzX3Jlc29sdmVNb2RlTWF4OwotICAgIH0KLQotICAgIHN0YXRpYyB1aW50OF90IGNvbnZlcnQo
R2V0UHV0SW5mbyBncGkpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hlY2soZ3BpKSk7Ci0gICAg
ICAgIGF1dG8gcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkucmVzb2x2ZVR5
cGUoKSk7Ci0gICAgICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZ3BpLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgYXV0byByZXNvbHZlTW9k
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlTW9kZSgpKTsKLSAgICAgICAgcmV0
dXJuIChyZXNvbHZlVHlwZSA8PCAzKSB8IChpbml0aWFsaXphdGlvbk1vZGUgPDwgMSkgfCByZXNv
bHZlTW9kZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgR2V0UHV0SW5mbyBjb252ZXJ0KHVpbnQ4X3Qg
Z3BpKQotICAgIHsKLSAgICAgICAgYXV0byByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29s
dmVUeXBlPigoZ3BpICYgc19yZXNvbHZlVHlwZUJpdHMpID4+IDMpOwotICAgICAgICBhdXRvIGlu
aXRpYWxpemF0aW9uTW9kZSA9IHN0YXRpY19jYXN0PEluaXRpYWxpemF0aW9uTW9kZT4oKGdwaSAm
IHNfaW5pdGlhbGl6YXRpb25Nb2RlQml0cykgPj4gMSk7Ci0gICAgICAgIGF1dG8gcmVzb2x2ZU1v
ZGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTW9kZT4oZ3BpICYgc19yZXNvbHZlTW9kZUJpdHMpOwot
ICAgICAgICByZXR1cm4gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUsIGluaXRp
YWxpemF0aW9uTW9kZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEZpdHM8RGVi
dWdIb29rVHlwZSwgT3Bjb2RlU2l6ZTo6TmFycm93PiA6IEZpdHM8aW50LCBPcGNvZGVTaXplOjpO
YXJyb3c+IHsKLSAgICB1c2luZyBCYXNlID0gRml0czxpbnQsIE9wY29kZVNpemU6Ok5hcnJvdz47
Ci0gICAgc3RhdGljIGJvb2wgY2hlY2soRGVidWdIb29rVHlwZSBkaHQpIHsgcmV0dXJuIEJhc2U6
OmNoZWNrKHN0YXRpY19jYXN0PGludD4oZGh0KSk7IH0KLSAgICBzdGF0aWMgdWludDhfdCBjb252
ZXJ0KERlYnVnSG9va1R5cGUgZGh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZl
cnQoc3RhdGljX2Nhc3Q8aW50PihkaHQpKTsKLSAgICB9Ci0gICAgc3RhdGljIERlYnVnSG9va1R5
cGUgY29udmVydCh1aW50OF90IGRodCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEZWJ1Z0hvb2tUeXBlPihCYXNlOjpjb252ZXJ0KGRodCkpOwotICAgIH0KLX07Ci0KLXRlbXBs
YXRlPD4KLXN0cnVjdCBGaXRzPFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLCBPcGNvZGVTaXplOjpO
YXJyb3c+IDogRml0czxpbnQsIE9wY29kZVNpemU6Ok5hcnJvdz4gewotICAgIHVzaW5nIEJhc2Ug
PSBGaXRzPGludCwgT3Bjb2RlU2l6ZTo6TmFycm93PjsKLSAgICBzdGF0aWMgYm9vbCBjaGVjayhQ
cm9maWxlVHlwZUJ5dGVjb2RlRmxhZyBwdGJmKSB7IHJldHVybiBCYXNlOjpjaGVjayhzdGF0aWNf
Y2FzdDxpbnQ+KHB0YmYpKTsgfQotICAgIHN0YXRpYyB1aW50OF90IGNvbnZlcnQoUHJvZmlsZVR5
cGVCeXRlY29kZUZsYWcgcHRiZikKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpjb252ZXJ0
KHN0YXRpY19jYXN0PGludD4ocHRiZikpOwotICAgIH0KLSAgICBzdGF0aWMgUHJvZmlsZVR5cGVC
eXRlY29kZUZsYWcgY29udmVydCh1aW50OF90IHB0YmYpCi0gICAgewotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UHJvZmlsZVR5cGVCeXRlY29kZUZsYWc+KEJhc2U6OmNvbnZlcnQocHRiZikp
OwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBGaXRzPFJlc29sdmVUeXBlLCBPcGNv
ZGVTaXplOjpOYXJyb3c+IDogRml0czxpbnQsIE9wY29kZVNpemU6Ok5hcnJvdz4gewotICAgIHVz
aW5nIEJhc2UgPSBGaXRzPGludCwgT3Bjb2RlU2l6ZTo6TmFycm93PjsKLSAgICBzdGF0aWMgYm9v
bCBjaGVjayhSZXNvbHZlVHlwZSBydCkgeyByZXR1cm4gQmFzZTo6Y2hlY2soc3RhdGljX2Nhc3Q8
aW50PihydCkpOyB9Ci0gICAgc3RhdGljIHVpbnQ4X3QgY29udmVydChSZXNvbHZlVHlwZSBydCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpjb252ZXJ0KHN0YXRpY19jYXN0PGludD4ocnQp
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVzb2x2ZVR5cGUgY29udmVydCh1aW50OF90IHJ0KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihCYXNlOjpjb252
ZXJ0KHJ0KSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEZpdHM8T3BlcmFuZFR5
cGVzLCBPcGNvZGVTaXplOjpOYXJyb3c+IHsKLSAgICAvLyBhIHBhaXIgb2YgKFJlc3VsdFR5cGU6
OlR5cGUsIFJlc3VsdFR5cGU6OlR5cGUpIC0gdHJ5IHRvIGZpdCBlYWNoIHR5cGUgaW50byA0IGJp
dHMKLSAgICAvLyBhZGRpdGlvbmFsbHksIGVuY29kZSB1bmtub3duIHR5cGVzIGFzIDAgcmF0aGVy
IHRoYW4gdGhlIHwgb2YgYWxsIHR5cGVzCi0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19tYXhU
eXBlID0gMHgxMDsKLQotICAgIHN0YXRpYyBib29sIGNoZWNrKE9wZXJhbmRUeXBlcyB0eXBlcykK
LSAgICB7Ci0gICAgICAgIGF1dG8gZmlyc3QgPSB0eXBlcy5maXJzdCgpLmJpdHMoKTsKLSAgICAg
ICAgYXV0byBzZWNvbmQgPSB0eXBlcy5zZWNvbmQoKS5iaXRzKCk7Ci0gICAgICAgIGlmIChmaXJz
dCA9PSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLmJpdHMoKSkKLSAgICAgICAgICAgIGZpcnN0
ID0gMDsKLSAgICAgICAgaWYgKHNlY29uZCA9PSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLmJp
dHMoKSkKLSAgICAgICAgICAgIHNlY29uZCA9IDA7Ci0gICAgICAgIHJldHVybiBmaXJzdCA8IHNf
bWF4VHlwZSAmJiBzZWNvbmQgPCBzX21heFR5cGU7Ci0gICAgfQotCi0gICAgc3RhdGljIHVpbnQ4
X3QgY29udmVydChPcGVyYW5kVHlwZXMgdHlwZXMpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hl
Y2sodHlwZXMpKTsKLSAgICAgICAgYXV0byBmaXJzdCA9IHR5cGVzLmZpcnN0KCkuYml0cygpOwot
ICAgICAgICBhdXRvIHNlY29uZCA9IHR5cGVzLnNlY29uZCgpLmJpdHMoKTsKLSAgICAgICAgaWYg
KGZpcnN0ID09IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkuYml0cygpKQotICAgICAgICAgICAg
Zmlyc3QgPSAwOwotICAgICAgICBpZiAoc2Vjb25kID09IFJlc3VsdFR5cGU6OnVua25vd25UeXBl
KCkuYml0cygpKQotICAgICAgICAgICAgc2Vjb25kID0gMDsKLSAgICAgICAgcmV0dXJuIChmaXJz
dCA8PCA0KSB8IHNlY29uZDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgT3BlcmFuZFR5cGVzIGNvbnZl
cnQodWludDhfdCB0eXBlcykKLSAgICB7Ci0gICAgICAgIGF1dG8gZmlyc3QgPSAodHlwZXMgJiAo
MHhmIDw8IDQpKSA+PiA0OwotICAgICAgICBhdXRvIHNlY29uZCA9ICh0eXBlcyAmIDB4Zik7Ci0g
ICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICBmaXJzdCA9IFJlc3VsdFR5cGU6OnVua25v
d25UeXBlKCkuYml0cygpOwotICAgICAgICBpZiAoIXNlY29uZCkKLSAgICAgICAgICAgIHNlY29u
ZCA9IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkuYml0cygpOwotICAgICAgICByZXR1cm4gT3Bl
cmFuZFR5cGVzKFJlc3VsdFR5cGUoZmlyc3QpLCBSZXN1bHRUeXBlKHNlY29uZCkpOwotICAgIH0K
LX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgT3Bjb2RlU2l6ZTo6
TmFycm93PiA6IEZpdHM8aW50LCBPcGNvZGVTaXplOjpOYXJyb3c+IHsKLSAgICAvLyBvbmx5IGV2
ZXIgZW5jb2RlZCBpbiB0aGUgYnl0ZWNvZGUgc3RyZWFtIGFzIDAgb3IgMSwgc28gdGhlIHRyaXZp
YWwgZW5jb2Rpbmcgc2hvdWxkIGJlIGdvb2QgZW5vdWdoCi0gICAgdXNpbmcgQmFzZSA9IEZpdHM8
aW50LCBPcGNvZGVTaXplOjpOYXJyb3c+OwotICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5SWRG
bGFncyBmbGFncykgeyByZXR1cm4gQmFzZTo6Y2hlY2soc3RhdGljX2Nhc3Q8aW50PihmbGFncykp
OyB9Ci0gICAgc3RhdGljIHVpbnQ4X3QgY29udmVydChQdXRCeUlkRmxhZ3MgZmxhZ3MpCi0gICAg
ewotICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChzdGF0aWNfY2FzdDxpbnQ+KGZsYWdzKSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIFB1dEJ5SWRGbGFncyBjb252ZXJ0KHVpbnQ4X3QgZmxhZ3Mp
Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHV0QnlJZEZsYWdzPihCYXNlOjpj
b252ZXJ0KGZsYWdzKSk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZTk2MTFjMmYwM2M1NjlmNThmNjY2ODI3NmZlMWM4ZjZm
YjJlZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBjbGFzcyBH
ZXRCeUlkTW9kZSA6IHVpbnQ4X3QgewotICAgIERlZmF1bHQgPSAwLAotICAgIFVuc2V0ID0gMSwK
LSAgICBQcm90b0xvYWQgPSAyLAotICAgIEFycmF5TGVuZ3RoID0gMywKLX07Ci0KLXVuaW9uIEdl
dEJ5SWRNb2RlTWV0YWRhdGEgewotICAgIEdldEJ5SWRNb2RlTWV0YWRhdGEoKQotICAgIHsgfQot
Ci0gICAgc3RydWN0IERlZmF1bHQgewotICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmU7Ci0g
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKLSAgICB9IGRlZmF1bHRNb2RlOwot
Ci0gICAgc3RydWN0IFVuc2V0IHsKLSAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlOwotICAg
IH0gdW5zZXRNb2RlOwotCi0gICAgc3RydWN0IFByb3RvTG9hZCB7Ci0gICAgICAgIFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZTsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwotICAg
ICAgICBKU09iamVjdCogY2FjaGVkU2xvdDsKLSAgICB9IHByb3RvTG9hZE1vZGU7Ci0KLSAgICBz
dHJ1Y3QgQXJyYXlMZW5ndGggewotICAgICAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwot
ICAgIH0gYXJyYXlMZW5ndGhNb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggOTdj
YzExMzdkNDg2YzdmNzgxYjBhMTgzNmYxYmRjOTIxMWUzNDNmYS4uOWY0ZGZjYzE1ODc5ZmRhOWU2
MTk2OTRiN2Q0ZjQyMmZmM2U5ZWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKIAotI2luY2x1ZGUgIkJ5dGVjb2Rl
U3RydWN0cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXhHZXRT
dGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgiCkBAIC01NiwyNCAr
NTUsMzUgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQKIHsKICAgICBWTSYgdm0gPSAqcHJvZmls
ZWRCbG9jay0+dm0oKTsKICAgICAKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleCk7CisgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gJnByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhd
OwogCi0gICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAgc3dpdGNoIChpbnN0cnVjdGlv
bi0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7Ci0gICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShwcm9maWxl
ZEJsb2NrKTsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdl
IHNlZSBhIGdldF9ieV9pZF9wcm90b19sb2FkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDM5Ci0gICAgICAgIGlmIChtZXRhZGF0YS5tb2Rl
ICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgIHN3aXRjaCAoSW50ZXJwcmV0ZXI6OmdldE9w
Y29kZUlEKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
OgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2RpcmVjdDogeworICAgICAgICBTdHJ1Y3R1cmVJRCBz
dHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlSUQ7CisgICAgICAgIGlmICgh
c3RydWN0dXJlSUQpCiAgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBmYWxzZSk7Ci0gICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubW9kZU1ldGFkYXRh
LmRlZmF1bHRNb2RlLnN0cnVjdHVyZTsKLSAgICAgICAgYnJlYWs7CisKKyAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJl
SUQpOworCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnRha2VzU2xvd1BhdGhJbkRGR0ZvckltcHVy
ZVByb3BlcnR5KCkpCisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBmYWxzZSk7CisKKyAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkLCBhdHRy
aWJ1dGVzKTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCisgICAgICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CisgICAgICAgIGlm
IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKQorICAgICAg
ICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOworCisgICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2UsIEdldEJ5SWRWYXJpYW50KFN0
cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQpKTsKICAgICB9Ci0gICAgY2FzZSBvcF9nZXRf
YnlfaWRfZGlyZWN0OgotICAgICAgICBzdHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9uLT5hczxPcEdl
dEJ5SWREaXJlY3Q+KCkubWV0YWRhdGEocHJvZmlsZWRCbG9jaykuc3RydWN0dXJlOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6IHsKLSAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIHRyeV9nZXRfYnlfaWQuCisKKyAg
ICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CisgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOgor
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRf
dW5zZXQ6IHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdl
IHNlZSBhIHRyeV9nZXRfYnlfaWQgb3IgYSBnZXRfYnlfaWRfcHJvdG9fbG9hZC4KICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODAzOQogICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAgICAgfQpAQCAt
ODMsMjMgKzkzLDYgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxM
SW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQKICAgICAgICAgcmV0dXJuIEdl
dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogICAgIH0KICAgICB9Ci0KLSAgICBp
ZiAoIXN0cnVjdHVyZUlEKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBmYWxzZSk7Ci0KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCk7Ci0KLSAgICBpZiAoc3RydWN0dXJlLT50YWtl
c1Nsb3dQYXRoSW5ERkdGb3JJbXB1cmVQcm9wZXJ0eSgpKQotICAgICAgICByZXR1cm4gR2V0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7Ci0KLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OwotICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5
KHVpZCwgYXR0cmlidXRlcyk7Ci0gICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCi0gICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKLSAgICBpZiAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikKLSAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwotCi0gICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwgR2V0QnlJZFZhcmlhbnQoU3RydWN0dXJlU2V0
KHN0cnVjdHVyZSksIG9mZnNldCkpOwogfQogCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyBk
aWRFeGl0LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IGQ5NGZj
NjcxOGQ1M2FjOTBhY2ZkNmNkMjUxYjIzNDgyYTc2OTU0MjQuLmMxMzM1NzhiMzI2M2QzMDI5ODQ1
ZTQ4Mzc5YTM1OTYwNzA0YTZlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oCkBAIC0xLDExNyArMSwxNjAgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCiAgKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgog
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJPcGNvZGUuaCIKLSNpbmNsdWRlICJPcGNvZGVTaXplLmgiCisjaW5j
bHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCisjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisj
aW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKKyNpbmNs
dWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAi
VG9UaGlzU3RhdHVzLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RydWN0IEluc3RydWN0aW9uIHsKLQotICAgIHN0cnVjdCBNZXRhZGF0YSB7
IH07Ci0KLXByb3RlY3RlZDoKLSAgICBJbnN0cnVjdGlvbigpCi0gICAgeyB9Ci0KLXByaXZhdGU6
Ci0gICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBXaWR0aD4KLSAgICBjbGFzcyBJbXBsIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8T3Bjb2RlSUQ+KG1fb3Bjb2RlKTsgfQorY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZTsKK2NsYXNzIEFycmF5UHJvZmlsZTsKK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwor
Y2xhc3MgV2F0Y2hwb2ludFNldDsKK3N0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKK3N0cnVjdCBW
YWx1ZVByb2ZpbGU7CiAKLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBUeXBlQnlTaXpl
PFdpZHRoPjo6dHlwZSBtX29wY29kZTsKLSAgICB9OworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X09QQ09ERVMpCit0eXBlZGVmIHZvaWQqIE9wY29kZTsKKyNlbHNlCit0eXBlZGVmIE9wY29kZUlE
IE9wY29kZTsKKyNlbmRpZgogCi1wdWJsaWM6Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQoKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKGlzV2lkZSgpKQotICAgICAgICAgICAgcmV0dXJuIHdpZGUo
KS0+b3Bjb2RlSUQoKTsKLSAgICAgICAgcmV0dXJuIG5hcnJvdygpLT5vcGNvZGVJRCgpOwotICAg
IH0KLQotICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdAorc3RydWN0IEluc3RydWN0aW9uIHsK
KyAgICBjb25zdGV4cHIgSW5zdHJ1Y3Rpb24oKQorICAgICAgICA6IHUoeyBudWxscHRyIH0pCiAg
ICAgewotICAgICAgICByZXR1cm4gb3Bjb2RlTmFtZXNbb3Bjb2RlSUQoKV07CiAgICAgfQogCi0g
ICAgYm9vbCBpc1dpZGUoKSBjb25zdAorICAgIEluc3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmFycm93KCktPm9wY29kZUlEKCkgPT0gb3Bfd2lkZTsKKyNp
ZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBp
bml0aWFsaXplIG9uZSBvZiB0aGUgcG9pbnRlciBtZW1iZXJzIHRvIGVuc3VyZSB0aGF0CisgICAg
ICAgIC8vIHRoZSBlbnRpcmUgc3RydWN0IGlzIGluaXRpYWxpemVkLCB3aGVuIG9wY29kZSBpcyBu
b3QgYSBwb2ludGVyLgorICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworI2VuZGlmCisgICAgICAg
IHUub3Bjb2RlID0gb3Bjb2RlOwogICAgIH0KIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QKKyAg
ICBJbnN0cnVjdGlvbihpbnQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIGF1dG8gd2lkZSA9IGlz
V2lkZSgpOwotICAgICAgICBhdXRvIHBhZGRpbmcgPSB3aWRlID8gMSA6IDA7Ci0gICAgICAgIGF1
dG8gc2l6ZSA9IHdpZGUgPyA0IDogMTsKLSAgICAgICAgcmV0dXJuIG9wY29kZUxlbmd0aHNbb3Bj
b2RlSUQoKV0gKiBzaXplICsgcGFkZGluZzsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBpbml0aWFs
aXplIG9uZSBvZiB0aGUgcG9pbnRlciBtZW1iZXJzIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIC8v
IHRoZSBlbnRpcmUgc3RydWN0IGlzIGluaXRpYWxpemVkIGluIDY0LWJpdC4KKyAgICAgICAgdS5q
c0NlbGwuY2xlYXIoKTsKKyAgICAgICAgdS5vcGVyYW5kID0gb3BlcmFuZDsKICAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGJvb2wgaXMoKSBjb25zdAorICAgIEluc3RydWN0aW9u
KHVuc2lnbmVkIHVuc2lnbmVkVmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gb3Bjb2RlSUQo
KSA9PSBUOjpvcGNvZGVJRDsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBpbml0aWFsaXplIG9uZSBv
ZiB0aGUgcG9pbnRlciBtZW1iZXJzIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIC8vIHRoZSBlbnRp
cmUgc3RydWN0IGlzIGluaXRpYWxpemVkIGluIDY0LWJpdC4KKyAgICAgICAgdS5qc0NlbGwuY2xl
YXIoKTsKKyAgICAgICAgdS51bnNpZ25lZFZhbHVlID0gdW5zaWduZWRWYWx1ZTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIFQgYXMoKSBjb25zdAorICAgIEluc3RydWN0aW9u
KFB1dEJ5SWRGbGFncyBmbGFncykKICAgICB7Ci0gICAgICAgIEFTU0VSVChpczxUPigpKTsKLSAg
ICAgICAgcmV0dXJuIFQ6OmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0
aGlzKSk7CisgICAgICAgIHUucHV0QnlJZEZsYWdzID0gZmxhZ3M7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8Y2xhc3MgVD4KLSAgICBUKiBjYXN0KCkKKyAgICBJbnN0cnVjdGlvbihWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KGlzPFQ+KCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4odGhpcyk7Cisg
ICAgICAgIHUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIHUuc3RydWN0dXJlLnNldCh2bSwg
b3duZXIsIHN0cnVjdHVyZSk7CiAgICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBj
b25zdCBUKiBjYXN0KCkgY29uc3QKKyAgICBJbnN0cnVjdGlvbihWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbikKICAgICB7Ci0gICAgICAgIEFTU0VS
VChpczxUPigpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHRo
aXMpOworICAgICAgICB1LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAgIHUuc3RydWN0
dXJlQ2hhaW4uc2V0KHZtLCBvd25lciwgc3RydWN0dXJlQ2hhaW4pOwogICAgIH0KLQotICAgIGNv
bnN0IEltcGw8T3Bjb2RlU2l6ZTo6TmFycm93PiogbmFycm93KCkgY29uc3QKKyAgICBJbnN0cnVj
dGlvbihWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTQ2VsbCoganNDZWxsKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW1wbDxPcGNvZGVTaXplOjpOYXJyb3c+
Kj4odGhpcyk7CisgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIHUuanNDZWxsLnNl
dCh2bSwgb3duZXIsIGpzQ2VsbCk7CiAgICAgfQogCi0gICAgY29uc3QgSW1wbDxPcGNvZGVTaXpl
OjpXaWRlPiogd2lkZSgpIGNvbnN0Ci0gICAgewotCi0gICAgICAgIEFTU0VSVChpc1dpZGUoKSk7
Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6
V2lkZT4qPigodWludHB0cl90KXRoaXMgKyAxKTsKLSAgICB9CisgICAgSW5zdHJ1Y3Rpb24oUHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1LmdldHRlckZ1bmMgPSBnZXR0
ZXJGdW5jOyB9CisgICAgICAgIAorICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICBJbnN0
cnVjdGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQor
ICAgIEluc3RydWN0aW9uKEFycmF5UHJvZmlsZSogcHJvZmlsZSkgeyB1LmFycmF5UHJvZmlsZSA9
IHByb2ZpbGU7IH0KKyAgICBJbnN0cnVjdGlvbihBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9m
aWxlKSB7IHUuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZSA9IHByb2ZpbGU7IH0KKyAgICBJbnN0cnVj
dGlvbihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSkgeyB1Lm9iamVjdEFsbG9jYXRp
b25Qcm9maWxlID0gcHJvZmlsZTsgfQorICAgIEluc3RydWN0aW9uKFdyaXRlQmFycmllcjxVbmtu
b3duPiogdmFyaWFibGVQb2ludGVyKSB7IHUudmFyaWFibGVQb2ludGVyID0gdmFyaWFibGVQb2lu
dGVyOyB9CisgICAgSW5zdHJ1Y3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKSB7IHUuc3Bl
Y2lhbFBvaW50ZXIgPSBwb2ludGVyOyB9CisgICAgSW5zdHJ1Y3Rpb24oVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkgeyB1LnVpZCA9IHVpZDsgfQorICAgIEluc3RydWN0aW9uKGJvb2wqIHByZWRpY2F0
ZVBvaW50ZXIpIHsgdS5wcmVkaWNhdGVQb2ludGVyID0gcHJlZGljYXRlUG9pbnRlcjsgfQorCisg
ICAgdW5pb24geworICAgICAgICB2b2lkKiBwb2ludGVyOworICAgICAgICBPcGNvZGUgb3Bjb2Rl
OworICAgICAgICBpbnQgb3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgdW5zaWduZWRWYWx1ZTsK
KyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IHN0cnVjdHVyZTsKKyAgICAgICAg
U3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CisgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3ltYm9s
VGFibGU+IHN5bWJvbFRhYmxlOworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNo
YWluPiBzdHJ1Y3R1cmVDaGFpbjsKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpz
Q2VsbDsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2YXJpYWJsZVBvaW50ZXI7Cisg
ICAgICAgIFNwZWNpYWw6OlBvaW50ZXIgc3BlY2lhbFBvaW50ZXI7CisgICAgICAgIFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgIExMSW50Q2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm87CisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQ7CisgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGU7CisgICAgICAgIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIGFycmF5QWxsb2NhdGlvblByb2Zp
bGU7CisgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTsKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKKyAgICAgICAgYm9v
bCogcHJlZGljYXRlUG9pbnRlcjsKKyAgICAgICAgVG9UaGlzU3RhdHVzIHRvVGhpc1N0YXR1czsK
KyAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbjsKKyAgICAgICAgQmFzaWNCbG9ja0xvY2F0
aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb247CisgICAgICAgIFB1dEJ5SWRGbGFncyBwdXRCeUlkRmxh
Z3M7CisgICAgfSB1OworICAgICAgICAKK3ByaXZhdGU6CisgICAgSW5zdHJ1Y3Rpb24oU3RydWN0
dXJlQ2hhaW4qKTsKKyAgICBJbnN0cnVjdGlvbihTdHJ1Y3R1cmUqKTsKIH07CitzdGF0aWNfYXNz
ZXJ0KHNpemVvZihJbnN0cnVjdGlvbikgPT0gc2l6ZW9mKHZvaWQqKSwgIiIpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFZlY3Rv
clRyYWl0czxKU0M6Okluc3RydWN0aW9uPiA6IFZlY3RvclRyYWl0c0Jhc2U8dHJ1ZSwgSlNDOjpJ
bnN0cnVjdGlvbj4geyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxNDYxYWZkYTI4NTIwODBhODZjYjYyMzBiMjM5Y2UyOGRiMmQz
MDM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3RydWN0aW9uU3Ry
ZWFtLmgiCi0KLSNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgotI2luY2x1ZGUgIk9wY29kZS5oIgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotSW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFt
KEluc3RydWN0aW9uQnVmZmVyJiYgaW5zdHJ1Y3Rpb25zKQotICAgIDogbV9pbnN0cnVjdGlvbnMo
V1RGTW92ZShpbnN0cnVjdGlvbnMpKQoteyB9Ci0KLXNpemVfdCBJbnN0cnVjdGlvblN0cmVhbTo6
c2l6ZUluQnl0ZXMoKSBjb25zdAotewotICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvblN0cmVhbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uU3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZWRhYmEzNGNhNGI1
OWNhOWFhOWQ5NzcwZWU2YWQ5NjZlNjM3YzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uU3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJJbnN0cnVjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLXN0cnVjdCBJbnN0cnVjdGlvbjsKLQotY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW0g
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi0gICAgdXNpbmcgSW5zdHJ1Y3Rpb25C
dWZmZXIgPSBWZWN0b3I8dWludDhfdCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+OwotCi0gICAg
ZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwotcHVibGljOgotICAgIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0OwotCi0gICAgdXNpbmcgT2Zmc2V0ID0gdW5zaWduZWQ7Ci0K
LXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8Y2xhc3MgSW5zdHJ1Y3Rpb25CdWZmZXI+Ci0gICAgY2xh
c3MgQmFzZVJlZiB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCi0gICAgICAg
IGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbTsKLQotICAgIHB1YmxpYzoKLSAgICAgICAg
QmFzZVJlZihjb25zdCBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiYgb3RoZXIpCi0gICAgICAg
ICAgICA6IG1faW5zdHJ1Y3Rpb25zKG90aGVyLm1faW5zdHJ1Y3Rpb25zKQotICAgICAgICAgICAg
LCAgbV9pbmRleChvdGhlci5tX2luZGV4KQotICAgICAgICB7IH0KLQotICAgICAgICB2b2lkIG9w
ZXJhdG9yPShjb25zdCBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiYgb3RoZXIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zID0gb3RoZXIubV9pbnN0cnVjdGlvbnM7Ci0g
ICAgICAgICAgICBtX2luZGV4ID0gb3RoZXIubV9pbmRleDsKLSAgICAgICAgfQotCi0gICAgICAg
IGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVu
d3JhcCgpOyB9Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogcHRyKCkgY29uc3Qg
eyByZXR1cm4gdW53cmFwKCk7IH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQmFz
ZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj4mIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gJm1faW5zdHJ1Y3Rpb25zICE9ICZvdGhlci5tX2luc3RydWN0aW9ucyB8fCBt
X2luZGV4ICE9IG90aGVyLm1faW5kZXg7Ci0gICAgICAgIH0KLQotICAgICAgICBCYXNlUmVmIG5l
eHQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQmFzZVJlZiB7IG1faW5z
dHJ1Y3Rpb25zLCBtX2luZGV4ICsgcHRyKCktPnNpemUoKSB9OwotICAgICAgICB9Ci0KLSAgICAg
ICAgaW5saW5lIE9mZnNldCBvZmZzZXQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9pbmRleDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2luZGV4IDwgbV9pbnN0cnVjdGlvbnMu
c2l6ZSgpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgSW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9Ci0KLSAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIEJhc2VSZWYoSW5zdHJ1Y3Rpb25CdWZmZXImIGluc3RydWN0aW9ucywg
c2l6ZV90IGluZGV4KQotICAgICAgICAgICAgOiBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMp
Ci0gICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCi0gICAgICAgIHsgfQotCi0gICAgICAgIElu
c3RydWN0aW9uQnVmZmVyJiBtX2luc3RydWN0aW9uczsKLSAgICAgICAgT2Zmc2V0IG1faW5kZXg7
Ci0gICAgfTsKLQotcHVibGljOgotICAgIHVzaW5nIFJlZiA9IEJhc2VSZWY8Y29uc3QgSW5zdHJ1
Y3Rpb25CdWZmZXI+OwotCi0gICAgY2xhc3MgTXV0YWJsZVJlZiA6IHB1YmxpYyBCYXNlUmVmPElu
c3RydWN0aW9uQnVmZmVyPiB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVh
bVdyaXRlcjsKLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVj
dGlvbkJ1ZmZlcj46OkJhc2VSZWY7Ci0KLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlZiBmcmVlemUo
KSBjb25zdCAgeyByZXR1cm4gUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1faW5kZXggfTsgfQotICAg
ICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIG9wZXJhdG9yLT4oKSB7IHJldHVybiB1bndyYXAoKTsg
fQotICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIHB0cigpIHsgcmV0dXJuIHVud3JhcCgpOyB9
Ci0gICAgICAgIGlubGluZSBvcGVyYXRvciBSZWYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1faW5kZXggfTsKLSAgICAgICAgfQotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiB1bndyYXAoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uKj4oJm1faW5zdHJ1Y3Rpb25zW21faW5kZXhdKTsg
fQotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgaXRlcmF0b3IgOiBwdWJsaWMgUmVmIHsK
LSAgICAgICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtOwotCi0gICAgcHVibGljOgot
ICAgICAgICB1c2luZyBSZWY6OlJlZjsKLQotICAgICAgICBSZWYmIG9wZXJhdG9yKigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGl0
ZXJhdG9yIG9wZXJhdG9yKysoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2luZGV4ICs9IHB0
cigpLT5zaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSAgICB9
OwotCi1wdWJsaWM6Ci0gICAgaW5saW5lIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBpdGVyYXRvciB7IG1faW5zdHJ1Y3Rpb25zLCAwIH07Ci0gICAgfQotCi0g
ICAgaW5saW5lIGl0ZXJhdG9yIGVuZCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXRl
cmF0b3IgeyBtX2luc3RydWN0aW9ucywgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpIH07Ci0gICAgfQot
Ci0gICAgaW5saW5lIGNvbnN0IFJlZiBhdChPZmZzZXQgb2Zmc2V0KSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG9mZnNldCA8IG1faW5zdHJ1Y3Rpb25zLnNpemUoKSk7Ci0gICAgICAgIHJl
dHVybiBSZWYgeyBtX2luc3RydWN0aW9ucywgb2Zmc2V0IH07Ci0gICAgfQotCi0gICAgaW5saW5l
IHNpemVfdCBzaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2luc3RydWN0aW9u
cy5zaXplKCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSW5zdHJ1Y3Rpb25T
dHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJik7Ci0KLSAgICBJbnN0cnVjdGlvbkJ1ZmZlciBtX2lu
c3RydWN0aW9uczsKLX07Ci0KLWNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyIDogcHVibGlj
IEluc3RydWN0aW9uU3RyZWFtIHsKLSAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVSZXdyaXRlcjsK
LXB1YmxpYzoKLSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcigpCi0gICAgICAgIDogSW5zdHJ1
Y3Rpb25TdHJlYW0oeyB9KQotICAgIHsgfQotCi0gICAgaW5saW5lIE11dGFibGVSZWYgcmVmKE9m
ZnNldCBvZmZzZXQpCi0gICAgewotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgbV9pbnN0cnVjdGlv
bnMuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIE11dGFibGVSZWYgeyBtX2luc3RydWN0aW9ucywg
b2Zmc2V0IH07Ci0gICAgfQotCi0gICAgdm9pZCBzZWVrKHVuc2lnbmVkIHBvc2l0aW9uKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKHBvc2l0aW9uIDw9IG1faW5zdHJ1Y3Rpb25zLnNpemUoKSk7Ci0g
ICAgICAgIG1fcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBwb3Np
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgICB9Ci0KLSAgICB2
b2lkIHdyaXRlKHVpbnQ4X3QgYnl0ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9maW5hbGl6
ZWQpOwotICAgICAgICBpZiAobV9wb3NpdGlvbiA8IG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkKLSAg
ICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW21fcG9zaXRpb24rK10gPSBieXRlOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zLmFwcGVuZChieXRlKTsKLSAgICAgICAg
ICAgIG1fcG9zaXRpb24rKzsKLSAgICAgICAgfQotICAgIH0KLSAgICB2b2lkIHdyaXRlKHVpbnQz
Ml90IGkpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fZmluYWxpemVkKTsKLSAgICAgICAgdW5p
b24gewotICAgICAgICAgICAgdWludDMyX3QgaTsKLSAgICAgICAgICAgIHVpbnQ4X3QgYnl0ZXNb
NF07Ci0gICAgICAgIH0gdSB7IGkgfTsKLSNpZiBDUFUoQklHX0VORElBTikKLSAgICAgICAgd3Jp
dGUodS5ieXRlc1szXSk7Ci0gICAgICAgIHdyaXRlKHUuYnl0ZXNbMl0pOwotICAgICAgICB3cml0
ZSh1LmJ5dGVzWzFdKTsKLSAgICAgICAgd3JpdGUodS5ieXRlc1swXSk7Ci0jZWxzZSAvLyAhQ1BV
KEJJR19FTkRJQU4pCi0gICAgICAgIHdyaXRlKHUuYnl0ZXNbMF0pOwotICAgICAgICB3cml0ZSh1
LmJ5dGVzWzFdKTsKLSAgICAgICAgd3JpdGUodS5ieXRlc1syXSk7Ci0gICAgICAgIHdyaXRlKHUu
Ynl0ZXNbM10pOwotI2VuZGlmIC8vICFDUFUoQklHX0VORElBTikKLSAgICB9Ci0KLSAgICB2b2lk
IHJld2luZChNdXRhYmxlUmVmJiByZWYpCi0gICAgewotICAgICAgICBBU1NFUlQocmVmLm9mZnNl
dCgpIDwgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnN0cnVjdGlvbnMuc2hy
aW5rKHJlZi5vZmZzZXQoKSk7Ci0gICAgICAgIG1fcG9zaXRpb24gPSByZWYub2Zmc2V0KCk7Ci0g
ICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBmaW5hbGl6ZSgp
Ci0gICAgewotICAgICAgICBtX2ZpbmFsaXplZCA9IHRydWU7Ci0gICAgICAgIG1faW5zdHJ1Y3Rp
b25zLnNocmlua1RvRml0KCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1
Y3Rpb25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtKFdURk1vdmUobV9pbnN0cnVjdGlv
bnMpKSB9OwotICAgIH0KLQotICAgIE11dGFibGVSZWYgcmVmKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBNdXRhYmxlUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1faW5zdHJ1Y3Rpb25zLnNpemUoKSB9
OwotICAgIH0KLQotICAgIHZvaWQgc3dhcChJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgb3RoZXIp
Ci0gICAgewotICAgICAgICBzdGQ6OnN3YXAobV9maW5hbGl6ZWQsIG90aGVyLm1fZmluYWxpemVk
KTsKLSAgICAgICAgc3RkOjpzd2FwKG1fcG9zaXRpb24sIG90aGVyLm1fcG9zaXRpb24pOwotICAg
ICAgICBtX2luc3RydWN0aW9ucy5zd2FwKG90aGVyLm1faW5zdHJ1Y3Rpb25zKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgY2xhc3MgaXRlcmF0b3IgOiBwdWJsaWMgTXV0YWJsZVJlZiB7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKLQotICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgdXNpbmcgTXV0YWJsZVJlZjo6TXV0YWJsZVJlZjsKLQotICAgIHB1YmxpYzoK
LSAgICAgICAgTXV0YWJsZVJlZiYgb3BlcmF0b3IqKCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3Igb3BlcmF0b3IrKygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1faW5kZXggKz0gcHRyKCktPnNpemUoKTsKLSAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotICAgIH07Ci0KLXB1YmxpYzoKLSAgICBp
dGVyYXRvciBiZWdpbigpCi0gICAgewotICAgICAgICByZXR1cm4gaXRlcmF0b3IgeyBtX2luc3Ry
dWN0aW9ucywgMCB9OwotICAgIH0KLQotICAgIGl0ZXJhdG9yIGVuZCgpCi0gICAgewotICAgICAg
ICByZXR1cm4gaXRlcmF0b3IgeyBtX2luc3RydWN0aW9ucywgbV9pbnN0cnVjdGlvbnMuc2l6ZSgp
IH07Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fcG9zaXRpb24geyAwIH07Ci0g
ICAgYm9vbCBtX2ZpbmFsaXplZCB7IGZhbHNlIH07Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmNwcAppbmRleCAwZThjMjI1ZTVkNmQ2Y2U2YTEzMjg3M2UxNGMxYzNmNzNkZWUwYzcxLi5l
ZWNkOGZiYzU5YTM3ZWFjOTJhZjhhYjgwODg3OTdlOGYxMGZiMzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtMzIs
OSArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotTExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSwgT3BHZXRCeUlk
OjpNZXRhZGF0YSYgZ2V0QnlJZE1ldGFkYXRhKQorTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50OjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSwgSW5zdHJ1Y3Rpb24q
IGdldEJ5SWRJbnN0cnVjdGlvbikKICAgICA6IG1fa2V5KGtleSkKLSAgICAsIG1fZ2V0QnlJZE1l
dGFkYXRhKGdldEJ5SWRNZXRhZGF0YSkKKyAgICAsIG1fZ2V0QnlJZEluc3RydWN0aW9uKGdldEJ5
SWRJbnN0cnVjdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChrZXkud2F0Y2hpbmdSZXF1aXJl
c1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFr
ZXkud2F0Y2hpbmdSZXF1aXJlc1JlcGxhY2VtZW50V2F0Y2hwb2ludCgpKTsKQEAgLTU0LDE1ICs1
NCw3IEBAIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
OjpmaXJlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBjbGVhckxMSW50R2V0QnlJZENhY2hlKG1fZ2V0QnlJZE1ldGFkYXRhKTsKKyAgICBDb2Rl
QmxvY2s6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobV9nZXRCeUlkSW5zdHJ1Y3Rpb24pOwogfQog
Ci12b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xl
YXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAg
ICBtZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7Ci0gICAgbWV0YWRhdGEubW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7Ci0gICAgbWV0YWRhdGEubW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZSA9IDA7Ci19Ci0KLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50LmgKaW5kZXggMjdhOGUzMTdmNDYzYTY3ZDVkM2UyNjg2YWE4ZDQ0MzNkOGFhYjQ0Ny4u
ZTBlMWJlOGQwNzA1N2JkNmI2MTFmOGE1MzkxZDVkODdiMmEzMmQ1NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgor
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRp
b24uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAKQEAgLTM0LDEyICszNCwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKIHB1YmxpYzoKICAgICBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQoKSA9IGRlZmF1bHQ7Ci0gICAgTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uJiwgT3BHZXRCeUlkOjpNZXRhZGF0YSYpOworICAgIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYsIEluc3RydWN0aW9uKik7CiAKICAgICB2b2lkIGluc3RhbGwoVk0mKTsKIAotICAgIHN0
YXRpYyB2b2lkIGNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYpOwot
CiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fa2V5OyB9CiAKIHByb3RlY3RlZDoKQEAgLTQ3LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogCiBw
cml2YXRlOgogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwotICAgIE9wR2V0QnlJ
ZDo6TWV0YWRhdGEmIG1fZ2V0QnlJZE1ldGFkYXRhOworICAgIEluc3RydWN0aW9uKiBtX2dldEJ5
SWRJbnN0cnVjdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTEzYmJjYzRiMWVkMzhiMzFkMjNkYTEwYmViMzQw
ZWZlODZlMDIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFUYWJs
ZS5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5o
IgotI2luY2x1ZGUgIlVubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotTWV0YWRhdGFUYWJsZTo6TWV0
YWRhdGFUYWJsZShVbmxpbmtlZE1ldGFkYXRhVGFibGUmIHVubGlua2VkTWV0YWRhdGEsIFVubGlu
a2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0KiBidWZmZXIpCi0gICAgOiBtX2J1ZmZlcihidWZmZXIp
Ci0gICAgLCBtX3VubGlua2VkTWV0YWRhdGEodW5saW5rZWRNZXRhZGF0YSkKLXsKLX0KLQotc3Ry
dWN0IERlYWxsb2NUYWJsZSB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgc3RhdGlj
IHZvaWQgd2l0aE9wY29kZVR5cGUoTWV0YWRhdGFUYWJsZSogdGFibGUpCi0gICAgewotICAgICAg
ICB0YWJsZS0+Zm9yRWFjaDxPcD4oW10oYXV0byYgZW50cnkpIHsKLSAgICAgICAgICAgIGVudHJ5
Ln5NZXRhZGF0YSgpOwotICAgICAgICB9KTsKLSAgICB9Ci19OwotCi1NZXRhZGF0YVRhYmxlOjp+
TWV0YWRhdGFUYWJsZSgpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE5VTUJFUl9P
Rl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBOyBpKyspCi0gICAgICAgIGdldE9wY29kZVR5cGU8RGVh
bGxvY1RhYmxlPihzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSksIHRoaXMpOwotICAgIG1fdW5saW5r
ZWRNZXRhZGF0YS51bmxpbmsoKnRoaXMpOwotfQotCi1zaXplX3QgTWV0YWRhdGFUYWJsZTo6c2l6
ZUluQnl0ZXMoKQotewotICAgIHJldHVybiBtX3VubGlua2VkTWV0YWRhdGEuc2l6ZUluQnl0ZXMo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGFkYXRhVGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcw
ZDEwYWI4ZTJmNjRjZmI5MzdmM2U1MDg4NzkxN2E2NzI0MTk5Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0YWRhdGFUYWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKLSNpbmNsdWRlICJPcGNvZGUuaCIKLSNpbmNsdWRlICJV
bmxpbmtlZE1ldGFkYXRhVGFibGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQ29kZUJsb2NrOwotCi1jbGFzcyBNZXRhZGF0YVRhYmxl
IDogcHVibGljIFJlZkNvdW50ZWQ8TWV0YWRhdGFUYWJsZT4gewotICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgZnJpZW5kIGNsYXNzIFVubGlua2VkTWV0YWRhdGFU
YWJsZTsKLQotcHVibGljOgotICAgIH5NZXRhZGF0YVRhYmxlKCk7Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIEluc3RydWN0aW9uOjpNZXRhZGF0YSogZ2V0KE9wY29kZUlEIG9wY29kZUlEKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fYnVmZmVyICYmIG9wY29kZUlEIDwgTlVNQkVSX09GX0JZVEVDT0RF
X1dJVEhfTUVUQURBVEEpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVj
dGlvbjo6TWV0YWRhdGEqPihnZXRJbXBsKG9wY29kZUlEKSk7Ci0gICAgfQotCi0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZm9yRWFjaChjb25zdCBGdW5jdG9yJiBmdW5jKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvKiBtZXRhZGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhKj4oZ2V0KE9wOjpvcGNvZGVJRCkp
OwotICAgICAgICBhdXRvKiBlbmQgPSByZWludGVycHJldF9jYXN0PHR5cGVuYW1lIE9wOjpNZXRh
ZGF0YSo+KGdldEltcGwoT3A6Om9wY29kZUlEICsgMSkpOwotICAgICAgICBmb3IgKDsgbWV0YWRh
dGEgIT0gZW5kOyArK21ldGFkYXRhKQotICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEpOwotICAg
IH0KLQotICAgIHNpemVfdCBzaXplSW5CeXRlcygpOwotCi1wcml2YXRlOgotICAgIE1ldGFkYXRh
VGFibGUoVW5saW5rZWRNZXRhZGF0YVRhYmxlJiwgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZz
ZXQqKTsKLQotICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCogZ2V0SW1wbCh1bnNpZ25lZCBpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1fYnVmZmVy
KSArIG1fYnVmZmVyW2ldOwotICAgIH0KLQotICAgIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zm
c2V0KiBtX2J1ZmZlcjsKLSAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUmIG1fdW5saW5rZWRNZXRh
ZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmNwcAppbmRleCA2NDg4YjIyNTQzODEyMjQzNmUzMmU2ODYzYzFmOWJjNjVh
MGZjN2UzLi4zYTg0OWM0N2YwMTcxNjQyMDQ5ZDIyMDcyNmFhZDczMjk0YzM0OTNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcApAQCAtMzAsNyArMzAsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogCi0jaW5jbHVkZSAiQnl0
ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKICNpZiBFTkFC
TEUoT1BDT0RFX1NUQVRTKQpAQCAtMTg1LDIwICsxODQsNiBAQCB2b2lkIE9wY29kZVN0YXRzOjpy
ZXNldExhc3RJbnN0cnVjdGlvbigpCiAKICNlbmRpZgogCi1zdGF0aWMgdW5zaWduZWQgbWV0YWRh
dGFTaXplc1tdID0gewotCi0jZGVmaW5lIE1FVEFEQVRBX1NJWkUoc2l6ZSkgc2l6ZSwKLSAgICBG
T1JfRUFDSF9CWVRFQ09ERV9NRVRBREFUQV9TSVpFKE1FVEFEQVRBX1NJWkUpCi0jdW5kZWYgTUVU
QURBVEFfU0laRQotCi19OwotCi11bnNpZ25lZCBtZXRhZGF0YVNpemUoT3Bjb2RlSUQgb3Bjb2Rl
SUQpCi17Ci0gICAgcmV0dXJuIG1ldGFkYXRhU2l6ZXNbb3Bjb2RlSURdOwotfQotCi0KIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAppbmRleCBmNTMwN2ZmMTU4ZGExOTY1ZWE0Yjg1NGJlMzljOWUzYmI4YWI2
MDRlLi5iZTM4OGUxODljOTM3NjZlNGUwZGZhYjEyMmJhNTE1YzYwMTQxNjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC01Myw4NyArNTMsMjYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgKQogCiAKLWNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA0MDsKLSNp
ZiBFTkFCTEUoQ19MT09QKQotY29uc3QgaW50IG51bU9wY29kZUlEcyA9IE5VTUJFUl9PRl9CWVRF
Q09ERV9JRFMgKyBOVU1CRVJfT0ZfQ0xPT1BfQllURUNPREVfSEVMUEVSX0lEUyArIE5VTUJFUl9P
Rl9CWVRFQ09ERV9IRUxQRVJfSURTOwotI2Vsc2UKLWNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBO
VU1CRVJfT0ZfQllURUNPREVfSURTICsgTlVNQkVSX09GX0JZVEVDT0RFX0hFTFBFUl9JRFM7Ci0j
ZW5kaWYKLQogI2RlZmluZSBPUENPREVfSURfRU5VTShvcGNvZGUsIGxlbmd0aCkgb3Bjb2RlLAog
ICAgIGVudW0gT3Bjb2RlSUQgOiB1bnNpZ25lZCB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVf
SURfRU5VTSkgfTsKICN1bmRlZiBPUENPREVfSURfRU5VTQogCi0jaWYgRU5BQkxFKENfTE9PUCkg
JiYgIUhBVkUoQ09NUFVURURfR09UTykKLQotI2RlZmluZSBPUENPREVfSURfRU5VTShvcGNvZGUs
IGxlbmd0aCkgb3Bjb2RlIyNfd2lkZSA9IG51bU9wY29kZUlEcyArIG9wY29kZSwKLSAgICBlbnVt
IE9wY29kZUlEV2lkZSA6IHVuc2lnbmVkIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9F
TlVNKSB9OwotI3VuZGVmIE9QQ09ERV9JRF9FTlVNCitjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3Ro
ID0gOTsKKyNpZiBFTkFCTEUoQ19MT09QKQorY29uc3QgaW50IG51bU9wY29kZUlEcyA9IE5VTUJF
Ul9PRl9CWVRFQ09ERV9JRFMgKyBOVU1CRVJfT0ZfQ0xPT1BfQllURUNPREVfSEVMUEVSX0lEUyAr
IE5VTUJFUl9PRl9CWVRFQ09ERV9IRUxQRVJfSURTOworI2Vsc2UKK2NvbnN0IGludCBudW1PcGNv
ZGVJRHMgPSBOVU1CRVJfT0ZfQllURUNPREVfSURTICsgTlVNQkVSX09GX0JZVEVDT0RFX0hFTFBF
Ul9JRFM7CiAjZW5kaWYKIAotI2RlZmluZSBPUENPREVfTEVOR1RIKG9wY29kZSwgbGVuZ3RoKSBs
ZW5ndGgsCi0gICAgc3RhdGljIHVuc2lnbmVkIG9wY29kZUxlbmd0aHNbXSA9IHsKLSAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9MRU5HVEgpCi0gICAgfTsKLSN1bmRlZiBPUENPREVf
TEVOR1RICi0KICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50
IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwogICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURf
TEVOR1RIUyk7CiAjdW5kZWYgT1BDT0RFX0lEX0xFTkdUSFMKIAotI2RlZmluZSBGT1JfRUFDSF9P
UENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKG1hY3JvKSBcCi0gICAgbWFjcm8oT3BDYWxsVmFyYXJn
cykgXAotICAgIG1hY3JvKE9wVGFpbENhbGxWYXJhcmdzKSBcCi0gICAgbWFjcm8oT3BUYWlsQ2Fs
bEZvcndhcmRBcmd1bWVudHMpIFwKLSAgICBtYWNybyhPcENvbnN0cnVjdFZhcmFyZ3MpIFwKLSAg
ICBtYWNybyhPcEdldEJ5VmFsKSBcCi0gICAgbWFjcm8oT3BHZXREaXJlY3RQbmFtZSkgXAotICAg
IG1hY3JvKE9wR2V0QnlJZCkgXAotICAgIG1hY3JvKE9wR2V0QnlJZFdpdGhUaGlzKSBcCi0gICAg
bWFjcm8oT3BUcnlHZXRCeUlkKSBcCi0gICAgbWFjcm8oT3BHZXRCeUlkRGlyZWN0KSBcCi0gICAg
bWFjcm8oT3BHZXRCeVZhbFdpdGhUaGlzKSBcCi0gICAgbWFjcm8oT3BHZXRGcm9tQXJndW1lbnRz
KSBcCi0gICAgbWFjcm8oT3BUb051bWJlcikgXAotICAgIG1hY3JvKE9wVG9PYmplY3QpIFwKLSAg
ICBtYWNybyhPcEdldEFyZ3VtZW50KSBcCi0gICAgbWFjcm8oT3BUb1RoaXMpIFwKLSAgICBtYWNy
byhPcENhbGwpIFwKLSAgICBtYWNybyhPcFRhaWxDYWxsKSBcCi0gICAgbWFjcm8oT3BDYWxsRXZh
bCkgXAotICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCi0gICAgbWFjcm8oT3BHZXRGcm9tU2NvcGUp
IFwKLSAgICBtYWNybyhPcEJpdGFuZCkgXAotICAgIG1hY3JvKE9wQml0b3IpIFwKLQotI2RlZmlu
ZSBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKG1hY3JvKSBcCi0gICAgbWFjcm8o
T3BIYXNJbmRleGVkUHJvcGVydHkpIFwKLSAgICBtYWNybyhPcENhbGxWYXJhcmdzKSBcCi0gICAg
bWFjcm8oT3BUYWlsQ2FsbFZhcmFyZ3MpIFwKLSAgICBtYWNybyhPcFRhaWxDYWxsRm9yd2FyZEFy
Z3VtZW50cykgXAotICAgIG1hY3JvKE9wQ29uc3RydWN0VmFyYXJncykgXAotICAgIG1hY3JvKE9w
R2V0QnlWYWwpIFwKLSAgICBtYWNybyhPcENhbGwpIFwKLSAgICBtYWNybyhPcFRhaWxDYWxsKSBc
Ci0gICAgbWFjcm8oT3BDYWxsRXZhbCkgXAotICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCi0gICAg
bWFjcm8oT3BJbkJ5VmFsKSBcCi0gICAgbWFjcm8oT3BQdXRCeVZhbCkgXAotICAgIG1hY3JvKE9w
UHV0QnlWYWxEaXJlY3QpIFwKLQotI2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9B
TExPQ0FUSU9OX1BST0ZJTEUobWFjcm8pIFwKLSAgICBtYWNybyhPcE5ld0FycmF5KSBcCi0gICAg
bWFjcm8oT3BOZXdBcnJheVdpdGhTaXplKSBcCi0gICAgbWFjcm8oT3BOZXdBcnJheUJ1ZmZlcikg
XAotCi0jZGVmaW5lIEZPUl9FQUNIX09QQ09ERV9XSVRIX09CSkVDVF9BTExPQ0FUSU9OX1BST0ZJ
TEUobWFjcm8pIFwKLSAgICBtYWNybyhPcE5ld09iamVjdCkgXAotCi0jZGVmaW5lIEZPUl9FQUNI
X09QQ09ERV9XSVRIX0xMSU5UX0NBTExfTElOS19JTkZPKG1hY3JvKSBcCi0gICAgbWFjcm8oT3BD
YWxsKSBcCi0gICAgbWFjcm8oT3BUYWlsQ2FsbCkgXAotICAgIG1hY3JvKE9wQ2FsbEV2YWwpIFwK
LSAgICBtYWNybyhPcENvbnN0cnVjdCkgXAorI2RlZmluZSBPUENPREVfTEVOR1RIKG9wY29kZSkg
b3Bjb2RlIyNfbGVuZ3RoCisKKyNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSF9NQVAob3Bjb2RlLCBs
ZW5ndGgpIGxlbmd0aCwKKyAgICBjb25zdCBpbnQgb3Bjb2RlTGVuZ3Roc1tudW1PcGNvZGVJRHNd
ID0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0xFTkdUSF9NQVApIH07CisjdW5kZWYg
T1BDT0RFX0lEX0xFTkdUSF9NQVAKIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0
cyIpCiAKQEAgLTE3OSw2ICsxMTgsMTcgQEAgc3RydWN0IE9wY29kZVN0YXRzIHsKIAogI2VuZGlm
CiAKK2lubGluZSBzaXplX3Qgb3Bjb2RlTGVuZ3RoKE9wY29kZUlEIG9wY29kZSkKK3sKKyAgICBz
d2l0Y2ggKG9wY29kZSkgeworI2RlZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBj
YXNlIGlkOiByZXR1cm4gT1BDT0RFX0xFTkdUSChpZCk7CisgICAgICAgICBGT1JfRUFDSF9PUENP
REVfSUQoT1BDT0RFX0lEX0xFTkdUSFMpCisjdW5kZWYgT1BDT0RFX0lEX0xFTkdUSFMKKyAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwog
aW5saW5lIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CiAgICAgc3dpdGNoIChv
cGNvZGVJRCkgewpAQCAtMjQ0LDggKzE5NCw2IEBAIGlubGluZSBib29sIGlzVGhyb3coT3Bjb2Rl
SUQgb3Bjb2RlSUQpCiAgICAgfQogfQogCi11bnNpZ25lZCBtZXRhZGF0YVNpemUoT3Bjb2RlSUQp
OwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZUlubGluZXMuaAppbmRleCA0YTJhZjZhMTA2YTQ3
OTQ2Yzg4YzA5ZGU4YzVjMWQwMTkxZWY2MWU3Li44YWJmNmQ4ZmI1ZGE5MzExODFjODA2YWQ5NWU2
NDJkYjlhM2NhMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGVJbmxpbmVzLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QXJyYXlQcm9maWxlLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAi
SW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKQEAgLTM2LDEyICszNSwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIGVudW0gT3Bj
b2RlU2hhcGUgewogICAgIEFueU9wY29kZVNoYXBlLAogICAgIE9wQ2FsbFNoYXBlLAorICAgIE9w
SGFzSW5kZXhlZFByb3BlcnR5U2hhcGUsCisgICAgT3BHZXRBcnJheUxlbmd0aFNoYXBlLAorICAg
IE9wR2V0QnlWYWxTaGFwZSwKKyAgICBPcEluQnlWYWxTaGFwZSwKKyAgICBPcFB1dEJ5VmFsU2hh
cGUsCiB9OwogCiB0ZW1wbGF0ZTxPcGNvZGVTaGFwZSBzaGFwZSwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PHNoYXBlICE9IEFueU9wY29kZVNoYXBlPj4KIGlubGluZSBib29sIGlzT3Bjb2Rl
U2hhcGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CiAgICAgaWYgKHNoYXBlID09IE9wQ2FsbFNoYXBl
KSB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBPUENP
REVfTEVOR1RIKG9wX3RhaWxfY2FsbCksICIiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChPUENP
REVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSwgIiIpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xF
TkdUSChvcF9jYWxsX3ZhcmFyZ3MpLCAiIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoT1BDT0RF
X0xFTkdUSChvcF9jYWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbF92YXJhcmdzKSwg
IiIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BD
T0RFX0xFTkdUSChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpLCAiIik7CiAgICAgICAg
IHJldHVybiBvcGNvZGVJRCA9PSBvcF9jYWxsCiAgICAgICAgICAgICB8fCBvcGNvZGVJRCA9PSBv
cF90YWlsX2NhbGwKICAgICAgICAgICAgIHx8IG9wY29kZUlEID09IG9wX2NhbGxfZXZhbApAQCAt
NTAsMzEgKzU5LDY4IEBAIGlubGluZSBib29sIGlzT3Bjb2RlU2hhcGUoT3Bjb2RlSUQgb3Bjb2Rl
SUQpCiAgICAgICAgICAgICB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHM7CiAgICAgfQogCisgICAgaWYgKHNoYXBlID09IE9wSGFzSW5kZXhlZFByb3BlcnR5U2hh
cGUpCisgICAgICAgIHJldHVybiBvcGNvZGVJRCA9PSBvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eTsK
KworICAgIGlmIChzaGFwZSA9PSBPcEdldEFycmF5TGVuZ3RoU2hhcGUpCisgICAgICAgIHJldHVy
biBvcGNvZGVJRCA9PSBvcF9nZXRfYXJyYXlfbGVuZ3RoOworCisgICAgaWYgKHNoYXBlID09IE9w
R2V0QnlWYWxTaGFwZSkKKyAgICAgICAgcmV0dXJuIG9wY29kZUlEID09IG9wX2dldF9ieV92YWw7
CisKKyAgICBpZiAoc2hhcGUgPT0gT3BJbkJ5VmFsU2hhcGUpCisgICAgICAgIHJldHVybiBvcGNv
ZGVJRCA9PSBvcF9pbl9ieV92YWw7CisKKyAgICBpZiAoc2hhcGUgPT0gT3BQdXRCeVZhbFNoYXBl
KSB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfdmFsKSA9
PSBPUENPREVfTEVOR1RIKG9wX3B1dF9ieV92YWxfZGlyZWN0KSwgIiIpOworICAgICAgICByZXR1
cm4gb3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbAorICAgICAgICAgICAgfHwgb3Bjb2RlSUQgPT0g
b3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAogdGVtcGxhdGU8T3Bjb2RlU2hhcGUgc2hhcGUsIHR5cGVuYW1lID0gc3Rk
OjplbmFibGVfaWZfdDxzaGFwZSAhPSBBbnlPcGNvZGVTaGFwZT4+CiBpbmxpbmUgYm9vbCBpc09w
Y29kZVNoYXBlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKLSAgICByZXR1cm4g
aXNPcGNvZGVTaGFwZTxzaGFwZT4oaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpOworICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7Cisg
ICAgcmV0dXJuIGlzT3Bjb2RlU2hhcGU8c2hhcGU+KG9wY29kZUlEKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLXZvaWQgZ2V0T3Bjb2RlVHlwZShPcGNvZGVJ
RCBvcGNvZGVJRCwgQXJncyYmLi4uIGFyZ3MpCit0ZW1wbGF0ZTxPcGNvZGVTaGFwZSBzaGFwZSA9
IEFueU9wY29kZVNoYXBlPgoraW5saW5lIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlRm9yKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKKyAgICBBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSA9IG51bGxwdHI7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6
Z2V0T3Bjb2RlSUQoKmluc3RydWN0aW9uKTsKKyAgICBpZiAoT3BDYWxsU2hhcGUgPT0gc2hhcGUg
fHwgKEFueU9wY29kZVNoYXBlID09IHNoYXBlICYmIGlzT3Bjb2RlU2hhcGU8T3BDYWxsU2hhcGU+
KG9wY29kZUlEKSkpIHsKKyAgICAgICAgQVNTRVJUKGlzT3Bjb2RlU2hhcGU8T3BDYWxsU2hhcGU+
KGluc3RydWN0aW9uKSk7CisgICAgICAgIGFycmF5UHJvZmlsZSA9IGluc3RydWN0aW9uW09QQ09E
RV9MRU5HVEgob3BfY2FsbCkgLSAyXS51LmFycmF5UHJvZmlsZTsKIAotI2RlZmluZSBDQVNFKF9f
T3ApIFwKLSAgICBjYXNlIF9fT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIFQ6OnRlbXBsYXRlIHdp
dGhPcGNvZGVUeXBlPF9fT3A+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7IFwKLSAgICAg
ICAgYnJlYWs7IFwKKyAgICB9IGVsc2UgaWYgKE9wSGFzSW5kZXhlZFByb3BlcnR5U2hhcGUgPT0g
c2hhcGUgfHwgKEFueU9wY29kZVNoYXBlID09IHNoYXBlICYmIGlzT3Bjb2RlU2hhcGU8T3BIYXNJ
bmRleGVkUHJvcGVydHlTaGFwZT4ob3Bjb2RlSUQpKSkgeworICAgICAgICBBU1NFUlQoaXNPcGNv
ZGVTaGFwZTxPcEhhc0luZGV4ZWRQcm9wZXJ0eVNoYXBlPihpbnN0cnVjdGlvbikpOworICAgICAg
ICBhcnJheVByb2ZpbGUgPSBpbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsKIAotICAgIHN3
aXRjaCAob3Bjb2RlSUQpIHsKLSAgICAgICAgRk9SX0VBQ0hfQllURUNPREVfU1RSVUNUKENBU0Up
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQorICAg
IH0gZWxzZSBpZiAoT3BHZXRBcnJheUxlbmd0aFNoYXBlID09IHNoYXBlIHx8IChBbnlPcGNvZGVT
aGFwZSA9PSBzaGFwZSAmJiBpc09wY29kZVNoYXBlPE9wR2V0QXJyYXlMZW5ndGhTaGFwZT4ob3Bj
b2RlSUQpKSkgeworICAgICAgICBBU1NFUlQoaXNPcGNvZGVTaGFwZTxPcEdldEFycmF5TGVuZ3Ro
U2hhcGU+KGluc3RydWN0aW9uKSk7CisgICAgICAgIGFycmF5UHJvZmlsZSA9IGluc3RydWN0aW9u
WzRdLnUuYXJyYXlQcm9maWxlOworCisgICAgfSBlbHNlIGlmIChPcEdldEJ5VmFsU2hhcGUgPT0g
c2hhcGUgfHwgKEFueU9wY29kZVNoYXBlID09IHNoYXBlICYmIGlzT3Bjb2RlU2hhcGU8T3BHZXRC
eVZhbFNoYXBlPihvcGNvZGVJRCkpKSB7CisgICAgICAgIEFTU0VSVChpc09wY29kZVNoYXBlPE9w
R2V0QnlWYWxTaGFwZT4oaW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgYXJyYXlQcm9maWxlID0gaW5z
dHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGU7CisKKyAgICB9IGVsc2UgaWYgKE9wSW5CeVZhbFNo
YXBlID09IHNoYXBlIHx8IChBbnlPcGNvZGVTaGFwZSA9PSBzaGFwZSAmJiBpc09wY29kZVNoYXBl
PE9wSW5CeVZhbFNoYXBlPihvcGNvZGVJRCkpKSB7CisgICAgICAgIEFTU0VSVChpc09wY29kZVNo
YXBlPE9wSW5CeVZhbFNoYXBlPihpbnN0cnVjdGlvbikpOworICAgICAgICBhcnJheVByb2ZpbGUg
PSBpbnN0cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2luX2J5X3ZhbCkgLSAxXS51LmFycmF5UHJv
ZmlsZTsKKworICAgIH0gZWxzZSBpZiAoT3BQdXRCeVZhbFNoYXBlID09IHNoYXBlIHx8IChBbnlP
cGNvZGVTaGFwZSA9PSBzaGFwZSAmJiBpc09wY29kZVNoYXBlPE9wUHV0QnlWYWxTaGFwZT4ob3Bj
b2RlSUQpKSkgeworICAgICAgICBBU1NFUlQoaXNPcGNvZGVTaGFwZTxPcFB1dEJ5VmFsU2hhcGU+
KGluc3RydWN0aW9uKSk7CisgICAgICAgIGFycmF5UHJvZmlsZSA9IGluc3RydWN0aW9uWzRdLnUu
YXJyYXlQcm9maWxlOworCisgICAgfSBlbHNlIGlmIChBbnlPcGNvZGVTaGFwZSAhPSBzaGFwZSkK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotI3VuZGVmIENBU0UKKyAg
ICBBU1NFUlQoIWFycmF5UHJvZmlsZSB8fCBhcnJheVByb2ZpbGUtPmlzVmFsaWQoKSk7CisgICAg
cmV0dXJuIGFycmF5UHJvZmlsZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTg5NDNmMzlkOGVmMDhlZmE4Zjg3NmI4ODJmZWMwZWJlYWM3ZDc4Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBPcGNvZGVTaXplIHsKLSAgICBOYXJyb3cg
PSAxLAotICAgIFdpZGUgPSA0LAotfTsKLQotdGVtcGxhdGU8T3Bjb2RlU2l6ZT4KLXN0cnVjdCBU
eXBlQnlTaXplOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgVHlwZUJ5U2l6ZTxPcGNvZGVTaXplOjpO
YXJyb3c+IHsKLSAgICB1c2luZyB0eXBlID0gdWludDhfdDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0
cnVjdCBUeXBlQnlTaXplPE9wY29kZVNpemU6OldpZGU+IHsKLSAgICB1c2luZyB0eXBlID0gdWlu
dDMyX3Q7Ci19OwotCi10ZW1wbGF0ZTxPcGNvZGVTaXplPgotc3RydWN0IFBhZGRpbmdCeVNpemU7
Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBQYWRkaW5nQnlTaXplPE9wY29kZVNpemU6Ok5hcnJvdz4g
ewotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWx1ZSA9IDA7Ci19OwotCi10ZW1wbGF0
ZTw+Ci1zdHJ1Y3QgUGFkZGluZ0J5U2l6ZTxPcGNvZGVTaXplOjpXaWRlPiB7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50OF90IHZhbHVlID0gMTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcAppbmRleCAxZTcxMjJjNzUwMDMzMzNhNzMzYjFhZjU4ODZhZWExNTgyZjEwOTQ3Li41
NjMwNmZkN2NlOGJjMTM2N2U2YjFlZWY5Yzk4ZmVlYjRkNjU3M2M3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAt
MzIsMjAgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZl
Y3RvclNpemUsIHR5cGVuYW1lIEJsb2NrPgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JJ
bnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVm
JiBpbnN0cnVjdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNp
emU+JiBvdXQpCit0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYg
b3V0KQogewotICAgIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIFsmXShpbnQzMl90IHJlbGF0aXZlT2Zmc2V0KSB7Ci0gICAgICAg
IG91dC5hcHBlbmQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkgKyByZWxhdGl2ZU9mZnNldCk7CisgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKKyAgICBleHRyYWN0U3RvcmVkSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNl
dCwgWyZdKGludDMyX3QmIHJlbGF0aXZlT2Zmc2V0KSB7CisgICAgICAgIG91dC5hcHBlbmQoYnl0
ZWNvZGVPZmZzZXQgKyByZWxhdGl2ZU9mZnNldCk7CiAgICAgfSk7Ci0gICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAvLyBvcF9sb29wX2hpbnQgZG9l
cyBub3QgaGF2ZSBqdW1wIHRhcmdldCBzdG9yZWQgaW4gYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zLgog
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9sb29wX2hpbnQpCi0gICAgICAgIG91dC5hcHBlbmQoaW5z
dHJ1Y3Rpb24ub2Zmc2V0KCkpOworICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0KTsK
ICAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPmhhc1RhaWxD
YWxscygpICYmIE9wdGlvbnM6Om9wdGltaXplUmVjdXJzaXZlVGFpbENhbGxzKCkpIHsKICAgICAg
ICAgLy8gV2UgbmVlZCB0byBpbnNlcnQgYSBqdW1wIGFmdGVyIG9wX2VudGVyLCBzbyByZWN1cnNp
dmUgdGFpbCBjYWxscyBoYXZlIHNvbWV3aGVyZSB0byBqdW1wIHRvLgogICAgICAgICAvLyBCdXQg
d2Ugb25seSB3YW50IHRvIHBheSB0aGF0IHByaWNlIGZvciBmdW5jdGlvbnMgdGhhdCBoYXZlIGF0
IGxlYXN0IG9uZSB0YWlsIGNhbGwuCi0gICAgICAgIG91dC5hcHBlbmQoaW5zdHJ1Y3Rpb24ubmV4
dCgpLm9mZnNldCgpKTsKKyAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIG9wY29k
ZUxlbmd0aHNbb3BfZW50ZXJdKTsKICAgICB9CiB9CiAKQEAgLTU0LDggKzU0LDggQEAgZW51bSBj
bGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSB7CiAgICAgRm9yY2VDb21wdXRlLAog
fTsKIAotdGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5h
bWUgQmxvY2ssIHNpemVfdCB2ZWN0b3JTaXplPgotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIHZlY3RvclNpemU+
JiBvdXQpCit0ZW1wbGF0ZTxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSBNb2RlLCB0eXBl
bmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHNpemVfdCB2ZWN0b3JTaXplPgordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5pc0Vt
cHR5KCkpOwogCkBAIC02OSw4ICs2OSwxMCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbQogICAg
ICAgICBvdXQuYXBwZW5kKGNvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKS5lbmQpOwogICAg
IH0KIAotICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb24gOiBpbnN0cnVjdGlvbnMpIHsK
LSAgICAgICAgZ2V0SnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvdXQpOworICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29k
ZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XSk7CisgICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0KICAgICAKICAgICBz
dGQ6OnNvcnQob3V0LmJlZ2luKCksIG91dC5lbmQoKSk7CkBAIC04OSwzNCArOTEsMzQgQEAgdm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0KICAgICBvdXQuc2hyaW5rQ2FwYWNpdHkodG9JbmRleCk7CiB9
CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiYgb3V0KQordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KQogewotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9j
aywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSwgb3V0KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0Nv
ZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG91dCk7CiB9CiAKLXZvaWQgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7Ci0gICAgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpG
b2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIG91dCk7CisgICAg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdp
biwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKIH0KIAotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4m
IG91dCkKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKIHsKLSAgICBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgb3V0
KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0
aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOwogfQogCi12b2lkIHJlY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0
cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldD4mIG91dCkKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpCiB7Ci0g
ICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBvdXQpOwor
ICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBp
bnN0cnVjdGlvbkNvdW50LCBvdXQpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0Zvckluc3Ry
dWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVm
JiBpbnN0cnVjdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDE+JiBvdXQp
Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCiB7Ci0gICAgZ2V0SnVtcFRhcmdldHNGb3JJ
bnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvdXQpOworICAgIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNv
ZGVPZmZzZXQsIG91dCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24o
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaW5zdHJ1Y3Rpb24sIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0
KQordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKIHsKLSAgICBn
ZXRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG91dCk7
CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGluc3RydWN0
aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmgKaW5kZXggZDkzNGY5YTQ5NWI5Y2M5NjZkNTI2MDdmYWY0ZjA5YjY5NTJhNDA3ZS4uYmNj
OTM0NmNkNWQ3MDIwNDY1ZGVmMDlhNWIyNTljZjQ4NzJkOWI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaApAQCAtMzAsMTUg
KzMwLDE2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7Citz
dHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2Yg
Ynl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KLXZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCwgMzI+JiBvdXQpOwotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIFZlY3Rv
cjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Ci12b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBjb25zdCBJbnN0cnVjdGlvblN0cmVh
bSYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAzMj4mIG91dCk7Cit2b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhV
bmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsK
IAotdm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBj
b25zdCBJbnN0cnVjdGlvblN0cmVhbSYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
PiYgb3V0KTsKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJs
b2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBU
YXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYsIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCAxPiYgb3V0KTsKLXZvaWQg
ZmluZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbTo6UmVmJiwgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQs
IDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAppbmRl
eCAyMWRmZDgxYTQ1M2Y1YmI3ZTI4YWQyOGViNTJjMzlkMjNjZjZlZTA1Li4wNzBmZGU5YTBiM2Q2
YWZkYzNkNGI1ZmI5ODY5NDA0MWYxNjM3ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKQEAgLTI1
LDE1OSArMjUsNjQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJCeXRlY29kZVN0cnVj
dHMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJPcGNvZGUu
aCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LSNkZWZpbmUgU1dJVENIX0pNUChDQVNFX09QLCBTV0lUQ0hfQ0FTRSwgU1dJVENIX0RFRkFVTFRf
T0ZGU0VUKSBcCi0gICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgeyBcCi0gICAg
Q0FTRV9PUChPcEptcCkgXAotICAgIFwKLSAgICBDQVNFX09QKE9wSnRydWUpIFwKLSAgICBDQVNF
X09QKE9wSmZhbHNlKSBcCi0gICAgQ0FTRV9PUChPcEplcU51bGwpIFwKLSAgICBDQVNFX09QKE9w
Sm5lcU51bGwpIFwKLSAgICBDQVNFX09QKE9wSm5lcVB0cikgXAotICAgIFwKLSAgICBDQVNFX09Q
KE9wSmxlc3MpIFwKLSAgICBDQVNFX09QKE9wSmxlc3NlcSkgXAotICAgIENBU0VfT1AoT3BKZ3Jl
YXRlcikgXAotICAgIENBU0VfT1AoT3BKZ3JlYXRlcmVxKSBcCi0gICAgQ0FTRV9PUChPcEpubGVz
cykgXAotICAgIENBU0VfT1AoT3BKbmxlc3NlcSkgXAotICAgIENBU0VfT1AoT3BKbmdyZWF0ZXIp
IFwKLSAgICBDQVNFX09QKE9wSm5ncmVhdGVyZXEpIFwKLSAgICBDQVNFX09QKE9wSmVxKSBcCi0g
ICAgQ0FTRV9PUChPcEpuZXEpIFwKLSAgICBDQVNFX09QKE9wSnN0cmljdGVxKSBcCi0gICAgQ0FT
RV9PUChPcEpuc3RyaWN0ZXEpIFwKLSAgICBDQVNFX09QKE9wSmJlbG93KSBcCi0gICAgQ0FTRV9P
UChPcEpiZWxvd2VxKSBcCi0gICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7IFwKLSAgICAgICAgYXV0
byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcFN3aXRjaEltbT4oKTsgXAotICAgICAgICBh
dXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLnRhYmxlSW5k
ZXgpOyBcCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6
ZSgpOyBpLS07KSBcCi0gICAgICAgICAgICBTV0lUQ0hfQ0FTRSh0YWJsZS5icmFuY2hPZmZzZXRz
W2ldKTsgXAotICAgICAgICBTV0lUQ0hfREVGQVVMVF9PRkZTRVQoT3BTd2l0Y2hJbW0pOyBcCi0g
ICAgICAgIGJyZWFrOyBcCi0gICAgfSBcCi0gICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogeyBcCi0g
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BTd2l0Y2hDaGFyPigpOyBc
Ci0gICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoYnl0ZWNv
ZGUudGFibGVJbmRleCk7IFwKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNo
T2Zmc2V0cy5zaXplKCk7IGktLTspIFwKLSAgICAgICAgICAgIFNXSVRDSF9DQVNFKHRhYmxlLmJy
YW5jaE9mZnNldHNbaV0pOyBcCi0gICAgICAgIFNXSVRDSF9ERUZBVUxUX09GRlNFVChPcFN3aXRj
aENoYXIpOyBcCi0gICAgICAgIGJyZWFrOyBcCi0gICAgfSBcCi0gICAgY2FzZSBvcF9zd2l0Y2hf
c3RyaW5nOiB7IFwKLSAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcFN3
aXRjaFN0cmluZz4oKTsgXAotICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGJ5dGVjb2RlLnRhYmxlSW5kZXgpOyBcCi0gICAgICAgIGF1dG8gaXRl
ciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7IFwKLSAgICAgICAgYXV0byBlbmQgPSB0YWJs
ZS5vZmZzZXRUYWJsZS5lbmQoKTsgXAotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRl
cikgXAotICAgICAgICAgICAgU1dJVENIX0NBU0UoaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsg
XAotICAgICAgICBTV0lUQ0hfREVGQVVMVF9PRkZTRVQoT3BTd2l0Y2hTdHJpbmcpOyBcCi0gICAg
ICAgIGJyZWFrOyBcCi0gICAgfSBcCi0gICAgZGVmYXVsdDogXAotICAgICAgICBicmVhazsgXAot
ICAgIH0gXAotCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgotaW5saW5lIGludCBqdW1wVGFy
Z2V0Rm9ySW5zdHJ1Y3Rpb24oQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJl
YW06OlJlZiYgaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIHRhcmdldCkKLXsKLSAgICBpZiAodGFyZ2V0
KQotICAgICAgICByZXR1cm4gdGFyZ2V0OwotICAgIHJldHVybiBjb2RlQmxvY2stPm91dE9mTGlu
ZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFw
PgotaW5saW5lIGludCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oSGFzaE1hcCYgb3V0T2ZMaW5l
SnVtcFRhcmdldHMsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uLCB1
bnNpZ25lZCB0YXJnZXQpCi17Ci0gICAgaWYgKHRhcmdldCkKLSAgICAgICAgcmV0dXJuIHRhcmdl
dDsKLSAgICBBU1NFUlQob3V0T2ZMaW5lSnVtcFRhcmdldHMuY29udGFpbnMoaW5zdHJ1Y3Rpb24u
b2Zmc2V0KCkpKTsKLSAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGluc3RydWN0
aW9uLm9mZnNldCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEJsb2Nr
PgotaW5saW5lIGludCBqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ss
IGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQordGVtcGxhdGU8dHlw
ZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdGlvbj4KK2lu
bGluZSB2b2lkIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIEZ1bmN0aW9uIGZ1bmN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgcmV0dXJuIGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlv
bihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBieXRlY29kZS50YXJnZXQpOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rpb24+Ci1pbmxpbmUgdm9pZCBleHRyYWN0
U3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29uc3Qg
SW5zdHJ1Y3Rpb25TdHJlYW06OlJlZiYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uKQot
ewotI2RlZmluZSBDQVNFX09QKF9fb3ApIFwKLSAgICBjYXNlIF9fb3A6Om9wY29kZUlEOiBcCi0g
ICAgICAgIGZ1bmN0aW9uKGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbjxfX29wPihjb2RlQmxvY2ss
IGluc3RydWN0aW9uKSk7IFwKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpn
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOworICAgIEluc3Ry
dWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKKyAg
ICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF9qbXA6CisgICAgICAgIGZ1bmN0aW9u
KGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9qdHJ1
ZToKKyAgICBjYXNlIG9wX2pmYWxzZToKKyAgICBjYXNlIG9wX2plcV9udWxsOgorICAgIGNhc2Ug
b3Bfam5lcV9udWxsOgorICAgICAgICBmdW5jdGlvbihjdXJyZW50WzJdLnUub3BlcmFuZCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgY2FzZSBvcF9qbGVzczoK
KyAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICBjYXNlIG9w
X2pncmVhdGVyZXE6CisgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgY2FzZSBvcF9qbmxlc3NlcToK
KyAgICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNh
c2Ugb3BfamVxOgorICAgIGNhc2Ugb3Bfam5lcToKKyAgICBjYXNlIG9wX2pzdHJpY3RlcToKKyAg
ICBjYXNlIG9wX2puc3RyaWN0ZXE6CisgICAgY2FzZSBvcF9qYmVsb3c6CisgICAgY2FzZSBvcF9q
YmVsb3dlcToKKyAgICAgICAgZnVuY3Rpb24oY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIG9wX3N3aXRjaF9pbW06CisgICAgY2FzZSBvcF9zd2l0Y2hfY2hh
cjogeworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1
cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJh
bmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBmdW5jdGlvbih0YWJsZS5icmFu
Y2hPZmZzZXRzW2ldKTsKKyAgICAgICAgZnVuY3Rpb24oY3VycmVudFsyXS51Lm9wZXJhbmQpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7CisgICAg
ICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVu
dFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5i
ZWdpbigpOworICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAg
ICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgIGZ1bmN0aW9uKGl0
ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uKGN1cnJlbnRbMl0udS5v
cGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwotCi0jZGVmaW5lIFNXSVRDSF9DQVNFKF9fdGFyZ2V0KSBcCi0gICAgZnVuY3Rpb24oX190
YXJnZXQpCi0KLSNkZWZpbmUgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKF9fb3ApIFwKLSAgICBmdW5j
dGlvbihqdW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgYnl0
ZWNvZGUuZGVmYXVsdE9mZnNldCkpIFwKLQotU1dJVENIX0pNUChDQVNFX09QLCBTV0lUQ0hfQ0FT
RSwgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKQotCi0jdW5kZWYgQ0FTRV9PUAotI3VuZGVmIFNXSVRD
SF9DQVNFCi0jdW5kZWYgU1dJVENIX0RFRkFVTFRfT0ZGU0VUCi19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdGlvbiwgdHlwZW5hbWUgQ29kZUJsb2NrT3JIYXNoTWFw
PgotaW5saW5lIHZvaWQgdXBkYXRlU3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9j
ayYmIGNvZGVCbG9jaywgdW5zaWduZWQgZmluYWxPZmZzZXQsIEluc3RydWN0aW9uU3RyZWFtOjpN
dXRhYmxlUmVmIGluc3RydWN0aW9uLCBGdW5jdGlvbiBmdW5jdGlvbiwgQ29kZUJsb2NrT3JIYXNo
TWFwIGNvZGVCbG9ja09ySGFzaE1hcCkKLXsKLSNkZWZpbmUgQ0FTRV9PUChfX29wKSBcCi0gICAg
Y2FzZSBfX29wOjpvcGNvZGVJRDogeyBcCi0gICAgICAgIGludDMyX3QgdGFyZ2V0ID0ganVtcFRh
cmdldEZvckluc3RydWN0aW9uPF9fb3A+KGNvZGVCbG9ja09ySGFzaE1hcCwgaW5zdHJ1Y3Rpb24p
OyBcCi0gICAgICAgIGludDMyX3QgbmV3VGFyZ2V0ID0gZnVuY3Rpb24odGFyZ2V0KTsgXAotICAg
ICAgICBpZiAobmV3VGFyZ2V0ICE9IHRhcmdldCB8fCBmaW5hbE9mZnNldCkgeyBcCi0gICAgICAg
ICAgICBpbnN0cnVjdGlvbi0+Y2FzdDxfX29wPigpLT5zZXRUYXJnZXQobmV3VGFyZ2V0LCBbJl0o
KSB7IFwKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmFkZE91dE9mTGluZUp1bXBUYXJnZXQo
ZmluYWxPZmZzZXQgKyBpbnN0cnVjdGlvbi5vZmZzZXQoKSwgbmV3VGFyZ2V0KTsgXAotICAgICAg
ICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgICAgICB9KTsgXAotICAgICAgICB9IFwKLSAg
ICAgICAgYnJlYWs7IFwKICAgICB9Ci0KLSNkZWZpbmUgU1dJVENIX0NBU0UoX190YXJnZXQpIFwK
LSAgICBkbyB7IFwKLSAgICAgICAgaW50MzJfdCB0YXJnZXQgPSBfX3RhcmdldDsgXAotICAgICAg
ICBpbnQzMl90IG5ld1RhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCk7IFwKLSAgICAgICAgaWYgKG5l
d1RhcmdldCAhPSB0YXJnZXQpIFwKLSAgICAgICAgICAgIF9fdGFyZ2V0ID0gbmV3VGFyZ2V0OyBc
Ci0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLSNkZWZpbmUgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKF9f
b3ApIFwKLSAgICBkbyB7IFwKLSAgICAgICAgaW50MzJfdCB0YXJnZXQgPSBqdW1wVGFyZ2V0Rm9y
SW5zdHJ1Y3Rpb24oY29kZUJsb2NrT3JIYXNoTWFwLCBpbnN0cnVjdGlvbiwgYnl0ZWNvZGUuZGVm
YXVsdE9mZnNldCk7IFwKLSAgICAgICAgaW50MzJfdCBuZXdUYXJnZXQgPSBmdW5jdGlvbih0YXJn
ZXQpOyBcCi0gICAgICAgIGlmIChuZXdUYXJnZXQgIT0gdGFyZ2V0IHx8IGZpbmFsT2Zmc2V0KSB7
IFwKLSAgICAgICAgICAgIGluc3RydWN0aW9uLT5jYXN0PF9fb3A+KCktPnNldERlZmF1bHRPZmZz
ZXQobmV3VGFyZ2V0LCBbJl0oKSB7IFwKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmFkZE91
dE9mTGluZUp1bXBUYXJnZXQoZmluYWxPZmZzZXQgKyBpbnN0cnVjdGlvbi5vZmZzZXQoKSwgbmV3
VGFyZ2V0KTsgXAotICAgICAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgICAgICB9KTsg
XAotICAgICAgICB9IFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQotU1dJVENIX0pNUChDQVNFX09Q
LCBTV0lUQ0hfQ0FTRSwgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKQotCi0jdW5kZWYgQ0FTRV9PUAot
I3VuZGVmIEpNUF9UQVJHRVQKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1l
IEZ1bmN0aW9uPgotaW5saW5lIHZvaWQgdXBkYXRlU3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVj
dGlvbihCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zdHJ1Y3Rpb25T
dHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uKQotewotICAg
IHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBmaW5hbE9m
ZnNldCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0aW9uLCBjb2RlQmxvY2spOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcAppbmRleCA2NzA5NTExNTNhMGZiZWQxN2U0YzYzYjc1NzU1Njc4ZTEyNGU1MjYyLi5m
Mzk4M2RmNDBhODUzOTgyNjczZTUwZDFjY2E0ZGQ1ZjUzMDJjZGVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogCi0j
aW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiQ29tcGxleEdldFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlckFjY2Vzc0Nh
c2UuaCIKQEAgLTU2LDE4ICs1NSwyMSBAQCBFeGl0RmxhZyBQdXRCeUlkU3RhdHVzOjpoYXNFeGl0
U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSQogCiBQdXRC
eUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQogeworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0o
Ynl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKHVpZCk7CisKICAgICBWTSYgdm0gPSAq
cHJvZmlsZWRCbG9jay0+dm0oKTsKICAgICAKLSAgICBhdXRvIGluc3RydWN0aW9uID0gcHJvZmls
ZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgYXV0byYgbWV0
YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpLm1ldGFkYXRhKHByb2ZpbGVkQmxv
Y2spOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxlZEJsb2NrLT5pbnN0
cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XTsKIAotICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlE
ID0gbWV0YWRhdGEub2xkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0g
aW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICBpZiAoIXN0cnVjdHVyZUlEKQogICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uKTsKICAgICAKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1
cmVJRCk7CiAKLSAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm5ld1N0
cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9uWzZd
LnUuc3RydWN0dXJlSUQ7CiAgICAgaWYgKCFuZXdTdHJ1Y3R1cmVJRCkgewogICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkKQEAgLTg1LDcgKzg3LDcgQEAgUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbik7CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0
OwotICAgIGlmICghKG1ldGFkYXRhLmZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgIGlm
ICghKGluc3RydWN0aW9uWzhdLnUucHV0QnlJZEZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgewog
ICAgICAgICBjb25kaXRpb25TZXQgPQogICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb25zRm9y
UHJvcGVydHlTZXR0ZXJNaXNzQ29uY3VycmVudGx5KAogICAgICAgICAgICAgICAgIHZtLCBwcm9m
aWxlZEJsb2NrLT5nbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlLCB1aWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKaW5kZXggNWFkM2Yy
NGNhMDQ4MWQxMWE2N2ViZDFiZmJhYmU4NjZmZDMxZDQ4Yi4uZGM1YTM2M2I2Mzg2MDY0MjFlN2Qy
MGRmYmQ3NGY5NDRjN2QwM2U2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCkBAIC00NCwyNyArNDQsMyBAQCB2b2lkKiBhY3R1YWxQ
b2ludGVyRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCBTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIp
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQot
ewotICAgIHN3aXRjaCAocG9pbnRlcikgewotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpDYWxsRnVu
Y3Rpb246Ci0gICAgICAgIG91dC5wcmludCgiQ2FsbEZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6QXBwbHlGdW5jdGlvbjoKLSAgICAgICAgb3V0LnBy
aW50KCJBcHBseUZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3Bl
Y2lhbDo6T2JqZWN0Q29uc3RydWN0b3I6Ci0gICAgICAgIG91dC5wcmludCgiT2JqZWN0Q29uc3Ry
dWN0b3IiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpBcnJheUNv
bnN0cnVjdG9yOgotICAgICAgICBvdXQucHJpbnQoIkFycmF5Q29uc3RydWN0b3IiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpUYWJsZVNpemU6Ci0gICAgICAgIG91
dC5wcmludCgiVGFibGVTaXplIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWNpYWxQb2ludGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lh
bFBvaW50ZXIuaAppbmRleCA5ZGY3YWUwMDY3NWIwNTI3OGQwMDRlYTFlMzU0ZjAwZDQ2YTQ1ZGJl
Li4yMTMyOWVjNDNmY2Y3NTZkNGQ4MzM4ODU1ZDZiODU4YzA0YzRjY2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaApAQCAtNjEsMTEgKzYx
LDMgQEAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihKU0dsb2JhbE9iamVjdCosIFNwZWNpYWw6OlBv
aW50ZXIpOwogdm9pZCogYWN0dWFsUG9pbnRlckZvcihDb2RlQmxvY2sqLCBTcGVjaWFsOjpQb2lu
dGVyKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQ
cmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpTcGVj
aWFsOjpQb2ludGVyKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA3YjIxNmEz
NTQ4ZWFiOTVjMTliYzM1YWY3MjZhNDBmMTM5MTk3YzI0Li4yZTJkNjRmMDZmOTdmYTFkYTU2MjVi
YTZiNTg0ZGNmZDhkOTExZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTM0LDEwICszNCw4IEBACiAjaW5jbHVk
ZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUluZm8uaCIKICNpbmNsdWRlICJG
dW5jdGlvbk92ZXJyaWRlcy5oIgotI2luY2x1ZGUgIkluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiT3Bj
b2RlLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRz
SW5saW5lcy5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCkBAIC00NSw3ICs0Myw3IEBA
CiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKICNpbmNsdWRlICJVbmxpbmtlZEV2YWxDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAi
VW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oIgorI2luY2x1ZGUgIlVubGlua2VkSW5zdHJ1
Y3Rpb25TdHJlYW0uaCIKICNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2su
aCIKICNpbmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgpAQCAtNzUsNiArNzMsMTEgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2Vk
Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAg
ICAsIG1fZGlkT3B0aW1pemUoTWl4ZWRUcmlTdGF0ZSkKICAgICAsIG1fcGFyc2VNb2RlKGluZm8u
cGFyc2VNb2RlKCkpCiAgICAgLCBtX2NvZGVUeXBlKGNvZGVUeXBlKQorICAgICwgbV9hcnJheVBy
b2ZpbGVDb3VudCgwKQorICAgICwgbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlQ291bnQoMCkKKyAg
ICAsIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVDb3VudCgwKQorICAgICwgbV92YWx1ZVByb2Zp
bGVDb3VudCgwKQorICAgICwgbV9sbGludENhbGxMaW5rSW5mb0NvdW50KDApCiB7CiAgICAgZm9y
IChhdXRvJiBjb25zdGFudFJlZ2lzdGVySW5kZXggOiBtX2xpbmtUaW1lQ29uc3RhbnRzKQogICAg
ICAgICBjb25zdGFudFJlZ2lzdGVySW5kZXggPSAwOwpAQCAtOTIsMjAgKzk1LDIwIEBAIHZvaWQg
VW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3Ig
cHRyID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmpl
Y3QtPm1fZnVuY3Rpb25FeHBycy5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCiAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCpwdHIpOwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3Qt
Pm1fY29uc3RhbnRSZWdpc3RlcnMuZGF0YSgpLCB0aGlzT2JqZWN0LT5tX2NvbnN0YW50UmVnaXN0
ZXJzLnNpemUoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPm1faW5zdHJ1Y3Rpb25zKQotICAgICAg
ICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tX2luc3RydWN0
aW9ucy0+c2l6ZUluQnl0ZXMoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fdW5saW5rZWRJbnN0
cnVjdGlvbnMpCisgICAgICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNP
YmplY3QtPm1fdW5saW5rZWRJbnN0cnVjdGlvbnMtPnNpemVJbkJ5dGVzKCkpOwogfQogCiBzaXpl
X3QgVW5saW5rZWRDb2RlQmxvY2s6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0p
CiB7CiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRD
b2RlQmxvY2sqPihjZWxsKTsKLSAgICBzaXplX3QgZXh0cmFTaXplID0gdGhpc09iamVjdC0+bV9p
bnN0cnVjdGlvbnMgPyB0aGlzT2JqZWN0LT5tX2luc3RydWN0aW9ucy0+c2l6ZUluQnl0ZXMoKSA6
IDA7CisgICAgc2l6ZV90IGV4dHJhU2l6ZSA9IHRoaXNPYmplY3QtPm1fdW5saW5rZWRJbnN0cnVj
dGlvbnMgPyB0aGlzT2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1Y3Rpb25zLT5zaXplSW5CeXRlcygp
IDogMDsKICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsLCB2bSkgKyBleHRyYVNp
emU7CiB9CiAKIGludCBVbmxpbmtlZENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIEFTU0VSVChieXRlY29kZU9mZnNl
dCA8IGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwg
aW5zdHJ1Y3Rpb25zKCkuY291bnQoKSk7CiAgICAgaW50IGRpdm90IHsgMCB9OwogICAgIGludCBz
dGFydE9mZnNldCB7IDAgfTsKICAgICBpbnQgZW5kT2Zmc2V0IHsgMCB9OwpAQCAtMTM2LDEyICsx
MzksMTMgQEAgaW5saW5lIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmdldExpbmVBbmRDb2x1bW4o
Y29uc3QgRXhwcmVzc2lvblJhbmdlSW5mbyYgaW5mbywKIH0KIAogI2lmbmRlZiBOREVCVUcKLXN0
YXRpYyB2b2lkIGR1bXBMaW5lQ29sdW1uRW50cnkoc2l6ZV90IGluZGV4LCBjb25zdCBJbnN0cnVj
dGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0sIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0
LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4pCitzdGF0aWMgdm9pZCBkdW1wTGluZUNv
bHVtbkVudHJ5KHNpemVfdCBpbmRleCwgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYg
aW5zdHJ1Y3Rpb25TdHJlYW0sIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBs
aW5lLCB1bnNpZ25lZCBjb2x1bW4pCiB7Ci0gICAgY29uc3QgYXV0byBpbnN0cnVjdGlvbiA9IGlu
c3RydWN0aW9uU3RyZWFtLmF0KGluc3RydWN0aW9uT2Zmc2V0KTsKKyAgICBjb25zdCBhdXRvJiBp
bnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvblN0cmVhbS51bnBhY2tGb3JEZWJ1Z2dpbmcoKTsKKyAg
ICBPcGNvZGVJRCBvcGNvZGUgPSBpbnN0cnVjdGlvbnNbaW5zdHJ1Y3Rpb25PZmZzZXRdLnUub3Bj
b2RlOwogICAgIGNvbnN0IGNoYXIqIGV2ZW50ID0gIiI7Ci0gICAgaWYgKGluc3RydWN0aW9uLT5p
czxPcERlYnVnPigpKSB7Ci0gICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPmFzPE9wRGVidWc+
KCkuZGVidWdIb29rVHlwZSkgeworICAgIGlmIChvcGNvZGUgPT0gb3BfZGVidWcpIHsKKyAgICAg
ICAgc3dpdGNoIChpbnN0cnVjdGlvbnNbaW5zdHJ1Y3Rpb25PZmZzZXQgKyAxXS51Lm9wZXJhbmQp
IHsKICAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVByb2dyYW06IGV2ZW50ID0gIiBXaWxsRXhlY3V0
ZVByb2dyYW0iOyBicmVhazsKICAgICAgICAgY2FzZSBEaWRFeGVjdXRlUHJvZ3JhbTogZXZlbnQg
PSAiIERpZEV4ZWN1dGVQcm9ncmFtIjsgYnJlYWs7CiAgICAgICAgIGNhc2UgRGlkRW50ZXJDYWxs
RnJhbWU6IGV2ZW50ID0gIiBEaWRFbnRlckNhbGxGcmFtZSI7IGJyZWFrOwpAQCAtMTUxLDcgKzE1
NSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBMaW5lQ29sdW1uRW50cnkoc2l6ZV90IGluZGV4LCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3RpCiAgICAgICAgIGNhc2UgV2lsbEV4ZWN1dGVF
eHByZXNzaW9uOiBldmVudCA9ICIgV2lsbEV4ZWN1dGVFeHByZXNzaW9uIjsgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgZGF0YUxvZ0YoIiAgWyV6dV0gcGMgJXUgQCBsaW5lICV1IGNvbCAl
dSA6ICVzJXNcbiIsIGluZGV4LCBpbnN0cnVjdGlvbk9mZnNldCwgbGluZSwgY29sdW1uLCBpbnN0
cnVjdGlvbi0+bmFtZSgpLCBldmVudCk7CisgICAgZGF0YUxvZ0YoIiAgWyV6dV0gcGMgJXUgQCBs
aW5lICV1IGNvbCAldSA6ICVzJXNcbiIsIGluZGV4LCBpbnN0cnVjdGlvbk9mZnNldCwgbGluZSwg
Y29sdW1uLCBvcGNvZGVOYW1lc1tvcGNvZGVdLCBldmVudCk7CiB9CiAKIHZvaWQgVW5saW5rZWRD
b2RlQmxvY2s6OmR1bXBFeHByZXNzaW9uUmFuZ2VJbmZvKCkKQEAgLTE3NCw3ICsxNzgsNyBAQCB2
b2lkIFVubGlua2VkQ29kZUJsb2NrOjpkdW1wRXhwcmVzc2lvblJhbmdlSW5mbygpCiB2b2lkIFVu
bGlua2VkQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwKICAgICBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQm
IGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBB
U1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbnMoKS5jb3VudCgpKTsKIAogICAgIGlm
ICghbV9leHByZXNzaW9uSW5mby5zaXplKCkpIHsKICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwpA
QCAtMzAwLDIxICszMDQsMjAgQEAgVW5saW5rZWRDb2RlQmxvY2s6On5VbmxpbmtlZENvZGVCbG9j
aygpCiB7CiB9CiAKLXZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnNldEluc3RydWN0aW9ucyhzdGQ6
OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGluc3RydWN0aW9ucykKK3ZvaWQgVW5saW5r
ZWRDb2RlQmxvY2s6OnNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbT4gaW5zdHJ1Y3Rpb25zKQogewogICAgIEFTU0VSVChpbnN0cnVjdGlvbnMp
OwogICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKLSAg
ICAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7Ci0gICAgICAgIG1f
bWV0YWRhdGEuZmluYWxpemUoKTsKKyAgICAgICAgbV91bmxpbmtlZEluc3RydWN0aW9ucyA9IFdU
Rk1vdmUoaW5zdHJ1Y3Rpb25zKTsKICAgICB9Ci0gICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0
RXh0cmFNZW1vcnlBbGxvY2F0ZWQobV9pbnN0cnVjdGlvbnMtPnNpemVJbkJ5dGVzKCkpOworICAg
IEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1fdW5saW5rZWRJ
bnN0cnVjdGlvbnMtPnNpemVJbkJ5dGVzKCkpOwogfQogCi1jb25zdCBJbnN0cnVjdGlvblN0cmVh
bSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0Citjb25zdCBVbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQobV9pbnN0cnVjdGlvbnMuZ2V0KCkpOwotICAgIHJldHVybiAqbV9p
bnN0cnVjdGlvbnM7CisgICAgQVNTRVJUKG1fdW5saW5rZWRJbnN0cnVjdGlvbnMuZ2V0KCkpOwor
ICAgIHJldHVybiAqbV91bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAogVW5saW5rZWRIYW5kbGVy
SW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKQEAgLTMy
OSwxMiArMzMyLDIxIEBAIFVubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpo
YW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkCiAgICAgcmV0dXJuIFVubGlu
a2VkSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhh
bmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKIH0KIAotdm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYgcmV3cml0ZXIsIEluc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMpCit2b2lkIFVubGlua2VkQ29kZUJsb2Nr
OjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiByZXdyaXRlciwgVW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykKIHsKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhl
IGNoYW5nZXMsIHdlIGFkanVzdCB0aGUganVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVj
b2RlIG9mZnNldCwgdGhlIG9mZnNldCB0byB0aGUganVtcCB0YXJnZXQsIGFuZAogICAgIC8vIHRo
ZSBpbnNlcnRpb24gaW5mb3JtYXRpb24uCiAKLSAgICByZXdyaXRlci5hZGp1c3RKdW1wVGFyZ2V0
cygpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gaW5zdHJ1
Y3Rpb25zLmJlZ2luKCk7IC8vIE9PUFM6IG1ha2UgdGhpcyBhbiBhY2Nlc3NvciBvbiByZXdyaXRl
ci4KKworICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9
IGluc3RydWN0aW9ucy5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDsp
IHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0Jl
Z2luICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVu
dFswXS51Lm9wY29kZTsKKyAgICAgICAgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQodGhpcywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBbJl0oaW50
MzJfdCYgcmVsYXRpdmVPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlbGF0aXZlT2Zmc2V0ID0gcmV3
cml0ZXIuYWRqdXN0SnVtcFRhcmdldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBy
ZWxhdGl2ZU9mZnNldCk7CisgICAgICAgIH0pOworICAgICAgICBieXRlY29kZU9mZnNldCArPSBv
cGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0KIAogICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBo
YW5kbGVycyBzaG91bGQgYmUgYWRqdXN0ZWQuCiAgICAgaWYgKG1fcmFyZURhdGEpIHsKQEAgLTM2
Niw3ICszNzgsNyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihC
eXRlY29kZVJld3JpdGVyJiByZXdyaXRlciwgSW5zdHJ1Y3RpbwogCiAgICAgLy8gQW5kIHJlY29t
cHV0ZSB0aGUganVtcCB0YXJnZXQgYmFzZWQgb24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGluc3Ry
dWN0aW9ucy4KICAgICBtX2p1bXBUYXJnZXRzLmNsZWFyKCk7Ci0gICAgcmVjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKHRoaXMsIGluc3RydWN0aW9ucywgbV9qdW1wVGFyZ2V0cyk7CisgICAgcmVj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRoaXMsIGluc3RydWN0aW9ucy5iZWdpbigpLCBpbnN0
cnVjdGlvbnMuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKIH0KIAogdm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6c2hyaW5rVG9GaXQoKQpAQCAtNDEzLDE2ICs0MjUsNCBAQCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMmIFVubGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxv
Y2sqIGNvZAogICAgIHJldHVybiAqbV9saXZlbmVzczsKIH0KIAotdm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6YWRkT3V0T2ZMaW5lSnVtcFRhcmdldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5
dGVjb2RlT2Zmc2V0LCBpbnQgdGFyZ2V0KQotewotICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldCk7
Ci0gICAgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5zZXQoYnl0ZWNvZGVPZmZzZXQsIHRhcmdldCk7
Ci19Ci0KLWludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIEFTU0VSVChtX291dE9m
TGluZUp1bXBUYXJnZXRzLmNvbnRhaW5zKGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJuIG1f
b3V0T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCmluZGV4IGYwZTlkNjRjODU0YTNmNTM2NzUyZDQ4NzQ2OTJkMjc4NzdkNjcw
NDkuLmRhNzdiYzkzNzlkYzUyMjQ0NTk4OTQ5OGI3ZWE5ODc3NmQ5MmQxNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0z
MSwxNSArMzEsMTIgQEAKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVk
ZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW5z
dHJ1Y3Rpb25TdHJlYW0uaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJMb2NrRHVy
aW5nTWFya2luZy5oIgotI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlBhcnNlck1vZGVz
LmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIKICNp
bmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIlVubGlua2Vk
TWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CkBAIC02Myw2ICs2MCw3IEBA
IGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU7CitjbGFzcyBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtOwogc3RydWN0IEV4ZWN1dGFibGVJ
bmZvOwogCiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkVmFsdWVQcm9maWxlOwpAQCAtMTAzLDYg
KzEwMSwxNyBAQCBzdHJ1Y3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUgewogICAgIH0KIH07CiAK
K3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKCkg
eyB1Lm9wZXJhbmQgPSAwOyB9CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbihPcGNvZGVJRCBvcGNv
ZGUpIHsgdS5vcGNvZGUgPSBvcGNvZGU7IH0KKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKGludCBv
cGVyYW5kKSB7IHUub3BlcmFuZCA9IG9wZXJhbmQ7IH0KKyAgICB1bmlvbiB7CisgICAgICAgIE9w
Y29kZUlEIG9wY29kZTsKKyAgICAgICAgaW50MzJfdCBvcGVyYW5kOworICAgICAgICB1bnNpZ25l
ZCB1bnNpZ25lZFZhbHVlOworICAgIH0gdTsKK307CisKIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAg
LTExMiw2ICsxMjEsOSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBs
eUZ1bmN0aW9uIH07CiAKKyAgICB0eXBlZGVmIFVubGlua2VkSW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rp
b247CisgICAgdHlwZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgYm9vbCBpc0NvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmlj
dE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2
YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMjUsOCArMjM3LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCi0gICAgdm9pZCBzZXRJbnN0cnVjdGlv
bnMoc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPik7Ci0gICAgY29uc3QgSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgc2V0SW5zdHJ1Y3Rp
b25zKHN0ZDo6dW5pcXVlX3B0cjxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPik7CisgICAgY29u
c3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3Q7CiAKICAg
ICBpbnQgbnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7
IH0KICAgICBpbnQgbnVtVmFycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtVmFyczsgfQpAQCAtMjY5
LDE4ICsyODEsMzcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhjZXB0aW9uSGFuZGxlcihjb25z
dCBVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuYXBwZW5kKGhhbmRs
ZXIpOyB9CiAgICAgVW5saW5rZWRIYW5kbGVySW5mbyYgZXhjZXB0aW9uSGFuZGxlcihpbnQgaW5k
ZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25I
YW5kbGVyc1tpbmRleF07IH0KIAorICAgIFVubGlua2VkQXJyYXlQcm9maWxlIGFkZEFycmF5UHJv
ZmlsZSgpIHsgcmV0dXJuIG1fYXJyYXlQcm9maWxlQ291bnQrKzsgfQorICAgIHVuc2lnbmVkIG51
bWJlck9mQXJyYXlQcm9maWxlcygpIHsgcmV0dXJuIG1fYXJyYXlQcm9maWxlQ291bnQ7IH0KKyAg
ICBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGUgYWRkQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZShJbmRleGluZ1R5cGUgcmVjb21tZW5kZWRJbmRleGluZ1R5cGUpIHsgcmV0dXJuIChtX2FycmF5
QWxsb2NhdGlvblByb2ZpbGVDb3VudCsrKSB8IHJlY29tbWVuZGVkSW5kZXhpbmdUeXBlIDw8IDI0
OyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheUFsbG9jYXRpb25Qcm9maWxlcygpIHsgcmV0
dXJuIG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZUNvdW50OyB9CisgICAgVW5saW5rZWRPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZSBhZGRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpIHsgcmV0dXJuIG1f
b2JqZWN0QWxsb2NhdGlvblByb2ZpbGVDb3VudCsrOyB9CisgICAgc3RhdGljIHN0ZDo6dHVwbGU8
dW5zaWduZWQsIEluZGV4aW5nVHlwZT4gZGVjb21wcmVzc0FycmF5QWxsb2NhdGlvblByb2ZpbGUo
VW5saW5rZWRBcnJheUFsbG9jYXRpb25Qcm9maWxlIGNvbXByZXNzZWRQcm9maWxlKQorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgcHJvZmlsZSA9IChjb21wcmVzc2VkUHJvZmlsZSA8PCA4KSA+PiA4
OworICAgICAgICBJbmRleGluZ1R5cGUgcmVjb21tZW5kZWRJbmRleGluZ1R5cGUgPSBjb21wcmVz
c2VkUHJvZmlsZSA+PiAyNDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTx1bnNpZ25l
ZCwgSW5kZXhpbmdUeXBlPihXVEZNb3ZlKHByb2ZpbGUpLCBXVEZNb3ZlKHJlY29tbWVuZGVkSW5k
ZXhpbmdUeXBlKSk7CisKKyAgICB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZXMoKSB7IHJldHVybiBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlQ291bnQ7IH0K
KyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBhZGRWYWx1ZVByb2ZpbGUoKSB7IHJldHVybiBtX3Zh
bHVlUHJvZmlsZUNvdW50Kys7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMo
KSB7IHJldHVybiBtX3ZhbHVlUHJvZmlsZUNvdW50OyB9CisKKyAgICBVbmxpbmtlZExMSW50Q2Fs
bExpbmtJbmZvIGFkZExMSW50Q2FsbExpbmtJbmZvKCkgeyByZXR1cm4gbV9sbGludENhbGxMaW5r
SW5mb0NvdW50Kys7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZkxMaW50Q2FsbExpbmtJbmZvcygp
IHsgcmV0dXJuIG1fbGxpbnRDYWxsTGlua0luZm9Db3VudDsgfQorCiAgICAgQ29kZVR5cGUgY29k
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdGhpc1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV90aGlzUmVnaXN0ZXI7IH0KICAgICBW
aXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVSZWdp
c3RlcjsgfQogCi0gICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbikKKyAgICB2b2lkIGFk
ZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbikKICAgICB7CiAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5k
KHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOwogICAgIH0KIAogICAgIHNpemVfdCBudW1iZXJP
ZlByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5zaXplKCk7IH0KLSAgICBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsgfQorICAgIGNvbnN0IFZlY3Rvcjx1bnNp
Z25lZD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsgfQogCiAgICAgYm9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7IH0KIApAQCAtMzExLDEyICszNDIsMTIgQEAgcHVi
bGljOgogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRD
b2x1bW47IH0KIAotICAgIHZvaWQgYWRkT3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNl
dChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkKKyAgICB2b2lkIGFkZE9wUHJvZmls
ZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXQoc2l6ZV90IG9mZnNldCkKICAgICB7CiAgICAgICAg
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5hcHBlbmQob2Zmc2V0KTsKICAgICB9Ci0g
ICAgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBvcFByb2ZpbGVDb250
cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cygpIGNvbnN0CisgICAgY29uc3QgVmVjdG9yPHNpemVfdD4m
IG9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX3JhcmVEYXRhKTsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fb3BQ
cm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHM7CkBAIC0zNTcsMTQgKzM4OCw2IEBAIHB1
YmxpYzoKICAgICBERkc6OkV4aXRQcm9maWxlJiBleGl0UHJvZmlsZSgpIHsgcmV0dXJuIG1fZXhp
dFByb2ZpbGU7IH0KICNlbmRpZgogCi0gICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlJiBtZXRhZGF0
YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KLQotICAgIHNpemVfdCBtZXRhZGF0YVNpemVJbkJ5
dGVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21ldGFkYXRhLnNpemVJbkJ5dGVzKCk7Ci0g
ICAgfQotCi0KIHByb3RlY3RlZDoKICAgICBVbmxpbmtlZENvZGVCbG9jayhWTSosIFN0cnVjdHVy
ZSosIENvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYsIERlYnVnZ2VyTW9kZSk7CiAgICAg
flVubGlua2VkQ29kZUJsb2NrKCk7CkBAIC0zNzgsNyArNDAxLDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgQnl0ZWNvZGVSZXdyaXRlcjsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVH
ZW5lcmF0b3I7CiAKLSAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0ZXIm
LCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYpOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24o
Qnl0ZWNvZGVSZXdyaXRlciYsIFVucGFja2VkSW5zdHJ1Y3Rpb25zJik7CiAKICAgICB2b2lkIGNy
ZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKQEAgLTM5MSw3ICs0MTQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZ2V0TGluZUFuZENvbHVtbihjb25zdCBFeHByZXNzaW9uUmFuZ2VJbmZv
JiwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0OwogICAgIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJsb2NrKik7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPiBtX3VubGlua2VkSW5z
dHJ1Y3Rpb25zOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+
IG1fbGl2ZW5lc3M7CiAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7CkBAIC00
MDAsNyArNDIzLDYgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX3NvdXJjZVVSTERpcmVjdGl2
ZTsKICAgICBTdHJpbmcgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwotICAgIFVubGlua2Vk
TWV0YWRhdGFUYWJsZSBtX21ldGFkYXRhOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgREZH
OjpFeGl0UHJvZmlsZSBtX2V4aXRQcm9maWxlOwpAQCAtNDM2LDkgKzQ1OCw5IEBAIHByaXZhdGU6
CiAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVUeXBlIG1fY29kZVR5
cGU7CiAKLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0
czsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fanVtcFRhcmdldHM7CiAKLSAgICBWZWN0b3I8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKKyAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAKICAgICAv
LyBDb25zdGFudCBQb29scwogICAgIFZlY3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwpA
QCAtNDUxLDYgKzQ3MywxMiBAQCBwcml2YXRlOgogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rv
ciBtX2Z1bmN0aW9uRXhwcnM7CiAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25z
dGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3RhbnRzOwogCisgICAgdW5zaWduZWQgbV9hcnJheVBy
b2ZpbGVDb3VudCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVD
b3VudCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlQ291bnQg
eyAwIH07CisgICAgdW5zaWduZWQgbV92YWx1ZVByb2ZpbGVDb3VudCB7IDAgfTsKKyAgICB1bnNp
Z25lZCBtX2xsaW50Q2FsbExpbmtJbmZvQ291bnQgeyAwIH07CisKIHB1YmxpYzoKICAgICBzdHJ1
Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ2OCwy
NyArNDk2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHVuc2lnbmVkIG1fZW5kRGl2b3Q7CiAg
ICAgICAgIH07CiAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFR5cGVQcm9maWxlckV4cHJlc3Np
b25SYW5nZT4gbV90eXBlUHJvZmlsZXJJbmZvTWFwOwotICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsK
KyAgICAgICAgVmVjdG9yPHNpemVfdD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zm
c2V0czsKICAgICB9OwogCi0gICAgdm9pZCBhZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIGludCB0YXJnZXQpOwotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zm
c2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOwotICAgIGludCBvdXRPZkxpbmVKdW1wT2Zm
c2V0KGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwot
ICAgIH0KLQogcHJpdmF0ZToKLSAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hN
YXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKLQotICAgIE91dE9mTGluZUp1bXBU
YXJnZXRzIHJlcGxhY2VPdXRPZkxpbmVKdW1wVGFyZ2V0cygpCi0gICAgewotICAgICAgICBPdXRP
ZkxpbmVKdW1wVGFyZ2V0cyBuZXdKdW1wVGFyZ2V0czsKLSAgICAgICAgc3RkOjpzd2FwKG1fb3V0
T2ZMaW5lSnVtcFRhcmdldHMsIG5ld0p1bXBUYXJnZXRzKTsKLSAgICAgICAgcmV0dXJuIG5ld0p1
bXBUYXJnZXRzOwotICAgIH0KLQotICAgIE91dE9mTGluZUp1bXBUYXJnZXRzIG1fb3V0T2ZMaW5l
SnVtcFRhcmdldHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwog
ICAgIFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvPiBtX2V4cHJlc3Npb25JbmZvOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjODE2YTE0OWIxYmY0MDYwNzVmMDM1NzJl
Yjk1MjAwZWQ3ODYyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcApAQCAtMCwwICsxLDEzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgiCisKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyB2b2lkIGFwcGVuZDgo
dW5zaWduZWQgY2hhciomIHB0ciwgdW5zaWduZWQgY2hhciB2YWx1ZSkKK3sKKyAgICAqKHB0cisr
KSA9IHZhbHVlOworfQorCitzdGF0aWMgdm9pZCBhcHBlbmQzMih1bnNpZ25lZCBjaGFyKiYgcHRy
LCB1bnNpZ25lZCB2YWx1ZSkKK3sKKyAgICBpZiAoISh2YWx1ZSAmIDB4ZmZmZmZmZTApKSB7Cisg
ICAgICAgICoocHRyKyspID0gdmFsdWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoKHZhbHVlICYgMHhmZmZmZmZlMCkgPT0gMHhmZmZmZmZlMCkgeworICAgICAgICAqKHB0cisr
KSA9IChOZWdhdGl2ZTVCaXQgPDwgNSkgfCAodmFsdWUgJiAweDFmKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICgodmFsdWUgJiAweGZmZmZmZmUwKSA9PSAweDQwMDAwMDAwKSB7
CisgICAgICAgICoocHRyKyspID0gKENvbnN0YW50UmVnaXN0ZXI1Qml0IDw8IDUpIHwgKHZhbHVl
ICYgMHgxZik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoISh2YWx1ZSAmIDB4
ZmZmZmUwMDApKSB7CisgICAgICAgICoocHRyKyspID0gKFBvc2l0aXZlMTNCaXQgPDwgNSkgfCAo
KHZhbHVlID4+IDgpICYgMHgxZik7CisgICAgICAgICoocHRyKyspID0gdmFsdWUgJiAweGZmOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCh2YWx1ZSAmIDB4ZmZmZmUwMDApID09
IDB4ZmZmZmUwMDApIHsKKyAgICAgICAgKihwdHIrKykgPSAoTmVnYXRpdmUxM0JpdCA8PCA1KSB8
ICgodmFsdWUgPj4gOCkgJiAweDFmKTsKKyAgICAgICAgKihwdHIrKykgPSB2YWx1ZSAmIDB4ZmY7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoKHZhbHVlICYgMHhmZmZmZTAwMCkg
PT0gMHg0MDAwMDAwMCkgeworICAgICAgICAqKHB0cisrKSA9IChDb25zdGFudFJlZ2lzdGVyMTNC
aXQgPDwgNSkgfCAoKHZhbHVlID4+IDgpICYgMHgxZik7CisgICAgICAgICoocHRyKyspID0gdmFs
dWUgJiAweGZmOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKihwdHIrKykgPSBGdWxs
MzJCaXQgPDwgNTsKKyAgICAqKHB0cisrKSA9IHZhbHVlICYgMHhmZjsKKyAgICAqKHB0cisrKSA9
ICh2YWx1ZSA+PiA4KSAmIDB4ZmY7CisgICAgKihwdHIrKykgPSAodmFsdWUgPj4gMTYpICYgMHhm
ZjsKKyAgICAqKHB0cisrKSA9ICh2YWx1ZSA+PiAyNCkgJiAweGZmOworfQorCitVbmxpbmtlZElu
c3RydWN0aW9uU3RyZWFtOjpVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtKGNvbnN0IFZlY3RvcjxV
bmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0aW9u
cykKKyAgICA6IG1faW5zdHJ1Y3Rpb25Db3VudChpbnN0cnVjdGlvbnMuc2l6ZSgpKQoreworICAg
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZmZXI7CisKKyAgICAvLyBSZXNlcnZlIGVub3VnaCBz
cGFjZSB1cCBmcm9udCBzbyB3ZSBuZXZlciBoYXZlIHRvIHJlYWxsb2NhdGUgd2hlbiBhcHBlbmRp
bmcuCisgICAgYnVmZmVyLnJlc2l6ZVRvRml0KG1faW5zdHJ1Y3Rpb25Db3VudCAqIDUpOworICAg
IHVuc2lnbmVkIGNoYXIqIHB0ciA9IGJ1ZmZlci5kYXRhKCk7CisKKyAgICBjb25zdCBVbmxpbmtl
ZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNEYXRhID0gaW5zdHJ1Y3Rpb25zLmRhdGEoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbnN0cnVjdGlvbkNvdW50OykgeworICAgICAg
ICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZpbnN0cnVjdGlvbnNEYXRhW2ldOwor
ICAgICAgICBPcGNvZGVJRCBvcGNvZGUgPSBwY1swXS51Lm9wY29kZTsKKyAgICAgICAgYXBwZW5k
OChwdHIsIG9wY29kZSk7CisKKyAgICAgICAgdW5zaWduZWQgb3BMZW5ndGggPSBvcGNvZGVMZW5n
dGgob3Bjb2RlKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAxOyBqIDwgb3BMZW5ndGg7
ICsraikKKyAgICAgICAgICAgIGFwcGVuZDMyKHB0ciwgcGNbal0udS51bnNpZ25lZFZhbHVlKTsK
KworICAgICAgICBpICs9IG9wTGVuZ3RoOworICAgIH0KKworICAgIGJ1ZmZlci5zaHJpbmsocHRy
IC0gYnVmZmVyLmRhdGEoKSk7CisgICAgbV9kYXRhID0gUmVmQ291bnRlZEFycmF5PHVuc2lnbmVk
IGNoYXI+KGJ1ZmZlcik7Cit9CisKK3NpemVfdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtOjpz
aXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YS5zaXplKCkgKiBzaXplb2Yo
dW5zaWduZWQgY2hhcik7Cit9CisKKyNpZm5kZWYgTkRFQlVHCitjb25zdCBSZWZDb3VudGVkQXJy
YXk8VW5saW5rZWRJbnN0cnVjdGlvbj4mIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW06OnVucGFj
a0ZvckRlYnVnZ2luZygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3VucGFja2VkSW5zdHJ1Y3Rpb25z
Rm9yRGVidWdnaW5nLnNpemUoKSkgeworICAgICAgICBtX3VucGFja2VkSW5zdHJ1Y3Rpb25zRm9y
RGVidWdnaW5nID0gUmVmQ291bnRlZEFycmF5PFVubGlua2VkSW5zdHJ1Y3Rpb24+KG1faW5zdHJ1
Y3Rpb25Db3VudCk7CisKKyAgICAgICAgUmVhZGVyIGluc3RydWN0aW9uUmVhZGVyKCp0aGlzKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7
ICkgeworICAgICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVj
dGlvblJlYWRlci5uZXh0KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBvcExlbmd0aCA9IG9wY29k
ZUxlbmd0aChwY1swXS51Lm9wY29kZSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAw
OyBqIDwgb3BMZW5ndGg7ICsraikKKyAgICAgICAgICAgICAgICBtX3VucGFja2VkSW5zdHJ1Y3Rp
b25zRm9yRGVidWdnaW5nW2krK10gPSBwY1tqXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBtX3VucGFja2VkSW5zdHJ1Y3Rpb25zRm9yRGVidWdnaW5nOworfQorI2VuZGlmCisKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMwYmY1NzQyZGJmZGQ1MmJjNmVhODIy
YzhiNzdlZmE1MDIxODg2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgKQEAgLTAsMCArMSwxNDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2su
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFt
KGNvbnN0IFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxv
dz4mKTsKKworICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlv
bkNvdW50OyB9CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBS
ZWFkZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgUmVhZGVyKGNvbnN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb25TdHJlYW0mKTsKKworICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0
aW9uKiBuZXh0KCk7CisgICAgICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4
ID09IG1fc3RyZWFtLm1fZGF0YS5zaXplKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVu
c2lnbmVkIGNoYXIgcmVhZDgoKTsKKyAgICAgICAgdW5zaWduZWQgcmVhZDMyKCk7CisKKyAgICAg
ICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgbV9zdHJlYW07CisgICAgICAgIFVu
bGlua2VkSW5zdHJ1Y3Rpb24gbV91bnBhY2tlZEJ1ZmZlclsxNl07CisgICAgICAgIHVuc2lnbmVk
IG1faW5kZXg7CisgICAgfTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBjb25zdCBSZWZDb3VudGVk
QXJyYXk8VW5saW5rZWRJbnN0cnVjdGlvbj4mIHVucGFja0ZvckRlYnVnZ2luZygpIGNvbnN0Owor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlYWRlcjsKKworI2lmbmRlZiBO
REVCVUcKKyAgICBtdXRhYmxlIFJlZkNvdW50ZWRBcnJheTxVbmxpbmtlZEluc3RydWN0aW9uPiBt
X3VucGFja2VkSW5zdHJ1Y3Rpb25zRm9yRGVidWdnaW5nOworI2VuZGlmCisKKyAgICBSZWZDb3Vu
dGVkQXJyYXk8dW5zaWduZWQgY2hhcj4gbV9kYXRhOworICAgIHVuc2lnbmVkIG1faW5zdHJ1Y3Rp
b25Db3VudDsKK307CisKKy8vIFVubGlua2VkIGluc3RydWN0aW9ucyBhcmUgcGFja2VkIGluIGEg
c2ltcGxlIHN0cmVhbSBmb3JtYXQuCisvLworLy8gVGhlIGZpcnN0IGJ5dGUgaXMgYWx3YXlzIHRo
ZSBvcGNvZGUuCisvLyBJdCdzIGZvbGxvd2VkIGJ5IGFuIG9wY29kZS1kZXBlbmRlbnQgbnVtYmVy
IG9mIGFyZ3VtZW50IHZhbHVlcy4KKy8vIFRoZSBmaXJzdCAzIGJpdHMgb2YgZWFjaCB2YWx1ZSBk
ZXRlcm1pbmVzIHRoZSBmb3JtYXQ6CisvLworLy8gICAgIDUtYml0IHBvc2l0aXZlIGludGVnZXIg
KDEgYnl0ZSB0b3RhbCkKKy8vICAgICA1LWJpdCBuZWdhdGl2ZSBpbnRlZ2VyICgxIGJ5dGUgdG90
YWwpCisvLyAgICAgMTMtYml0IHBvc2l0aXZlIGludGVnZXIgKDIgYnl0ZXMgdG90YWwpCisvLyAg
ICAgMTMtYml0IG5lZ2F0aXZlIGludGVnZXIgKDIgYnl0ZXMgdG90YWwpCisvLyAgICAgNS1iaXQg
Y29uc3RhbnQgcmVnaXN0ZXIgaW5kZXgsIGJhc2VkIGF0IDB4NDAwMDAwMDAgKDEgYnl0ZSB0b3Rh
bCkKKy8vICAgICAxMy1iaXQgY29uc3RhbnQgcmVnaXN0ZXIgaW5kZXgsIGJhc2VkIGF0IDB4NDAw
MDAwMDAgKDIgYnl0ZXMgdG90YWwpCisvLyAgICAgMzItYml0IHJhdyB2YWx1ZSAoNSBieXRlcyB0
b3RhbCkKKworZW51bSBQYWNrZWRWYWx1ZVR5cGUgeworICAgIFBvc2l0aXZlNUJpdCA9IDAsCisg
ICAgTmVnYXRpdmU1Qml0LAorICAgIFBvc2l0aXZlMTNCaXQsCisgICAgTmVnYXRpdmUxM0JpdCwK
KyAgICBDb25zdGFudFJlZ2lzdGVyNUJpdCwKKyAgICBDb25zdGFudFJlZ2lzdGVyMTNCaXQsCisg
ICAgRnVsbDMyQml0Cit9OworCitBTFdBWVNfSU5MSU5FIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJl
YW06OlJlYWRlcjo6UmVhZGVyKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIHN0cmVh
bSkKKyAgICA6IG1fc3RyZWFtKHN0cmVhbSkKKyAgICAsIG1faW5kZXgoMCkKK3sKK30KKworQUxX
QVlTX0lOTElORSB1bnNpZ25lZCBjaGFyIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW06OlJlYWRl
cjo6cmVhZDgoKQoreworICAgIHJldHVybiBtX3N0cmVhbS5tX2RhdGEuZGF0YSgpW21faW5kZXgr
K107Cit9CisKK0FMV0FZU19JTkxJTkUgdW5zaWduZWQgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVh
bTo6UmVhZGVyOjpyZWFkMzIoKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEgPSAm
bV9zdHJlYW0ubV9kYXRhLmRhdGEoKVttX2luZGV4XTsKKyAgICB1bnNpZ25lZCBjaGFyIHR5cGUg
PSBkYXRhWzBdID4+IDU7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBvc2l0aXZl
NUJpdDoKKyAgICAgICAgbV9pbmRleCsrOworICAgICAgICByZXR1cm4gZGF0YVswXTsKKyAgICBj
YXNlIE5lZ2F0aXZlNUJpdDoKKyAgICAgICAgbV9pbmRleCsrOworICAgICAgICByZXR1cm4gMHhm
ZmZmZmZlMCB8IGRhdGFbMF07CisgICAgY2FzZSBQb3NpdGl2ZTEzQml0OgorICAgICAgICBtX2lu
ZGV4ICs9IDI7CisgICAgICAgIHJldHVybiAoKGRhdGFbMF0gJiAweDFGKSA8PCA4KSB8IGRhdGFb
MV07CisgICAgY2FzZSBOZWdhdGl2ZTEzQml0OgorICAgICAgICBtX2luZGV4ICs9IDI7CisgICAg
ICAgIHJldHVybiAweGZmZmZlMDAwIHwgKChkYXRhWzBdICYgMHgxRikgPDwgOCkgfCBkYXRhWzFd
OworICAgIGNhc2UgQ29uc3RhbnRSZWdpc3RlcjVCaXQ6CisgICAgICAgIG1faW5kZXgrKzsKKyAg
ICAgICAgcmV0dXJuIDB4NDAwMDAwMDAgfCAoZGF0YVswXSAmIDB4MUYpOworICAgIGNhc2UgQ29u
c3RhbnRSZWdpc3RlcjEzQml0OgorICAgICAgICBtX2luZGV4ICs9IDI7CisgICAgICAgIHJldHVy
biAweDQwMDAwMDAwIHwgKChkYXRhWzBdICYgMHgxRikgPDwgOCkgfCBkYXRhWzFdOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVCh0eXBlID09IEZ1bGwzMkJpdCk7CisgICAgICAgIG1faW5k
ZXggKz0gNTsKKyAgICAgICAgcmV0dXJuIGRhdGFbMV0gfCBkYXRhWzJdIDw8IDggfCBkYXRhWzNd
IDw8IDE2IHwgZGF0YVs0XSA8PCAyNDsKKyAgICB9Cit9CisKK0FMV0FZU19JTkxJTkUgY29uc3Qg
VW5saW5rZWRJbnN0cnVjdGlvbiogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbTo6UmVhZGVyOjpu
ZXh0KCkKK3sKKyAgICBtX3VucGFja2VkQnVmZmVyWzBdLnUub3Bjb2RlID0gc3RhdGljX2Nhc3Q8
T3Bjb2RlSUQ+KHJlYWQ4KCkpOworICAgIHVuc2lnbmVkIG9wTGVuZ3RoID0gb3Bjb2RlTGVuZ3Ro
KG1fdW5wYWNrZWRCdWZmZXJbMF0udS5vcGNvZGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPCBvcExlbmd0aDsgKytpKQorICAgICAgICBtX3VucGFja2VkQnVmZmVyW2ldLnUudW5zaWdu
ZWRWYWx1ZSA9IHJlYWQzMigpOworICAgIHJldHVybiBtX3VucGFja2VkQnVmZmVyOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjVmZDI4MTVlNDBhM2NiMGJmZDQxOWRiZTA5YjgwYzU3NjM4OGJlYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJPcGNvZGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBNZXRhZGF0YVRhYmxlOwotCi1jbGFzcyBVbmxpbmtl
ZE1ldGFkYXRhVGFibGUgewotICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
Ci0gICAgZnJpZW5kIGNsYXNzIE1ldGFkYXRhVGFibGU7Ci0KLXB1YmxpYzoKLSAgICBVbmxpbmtl
ZE1ldGFkYXRhVGFibGUoKTsKLSAgICB+VW5saW5rZWRNZXRhZGF0YVRhYmxlKCk7Ci0KLSAgICB1
bnNpZ25lZCBhZGRFbnRyeShPcGNvZGVJRCk7Ci0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKTsK
LQotICAgIHZvaWQgZmluYWxpemUoKTsKLQotICAgIFJlZjxNZXRhZGF0YVRhYmxlPiBsaW5rKCk7
Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB1bmxpbmsoTWV0YWRhdGFUYWJsZSYpOwotCi0gICAgdXNp
bmcgT2Zmc2V0ID0gdW5zaWduZWQ7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNf
b2Zmc2V0VGFibGVFbnRyaWVzID0gTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEEgKyAx
OyAvLyBvbmUgZXh0cmEgZW50cnkgZm9yIHRoZSAiZW5kIiBvZmZzZXQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBzX29mZnNldFRhYmxlU2l6ZSA9IHNfb2Zmc2V0VGFibGVFbnRyaWVz
ICogc2l6ZW9mKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0KTsKLQotICAgIGJvb2wgbV9o
YXNNZXRhZGF0YSA6IDE7Ci0gICAgYm9vbCBtX2lzRmluYWxpemVkIDogMTsKLSAgICBib29sIG1f
aXNMaW5rZWQgOiAxOwotICAgIE9mZnNldCogbV9idWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZE1ldGFkYXRhVGFibGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1OWJiNTNkMGQzNjM4ZDI1NjhkOWZmMmQzNTM1YTM3MzJiNzAzN2RkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTWV0YWRhdGFUYWJsZS5oIgotI2luY2x1
ZGUgIlVubGlua2VkTWV0YWRhdGFUYWJsZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1BTFdBWVNfSU5MSU5FIFVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6VW5saW5rZWRNZXRhZGF0YVRhYmxlKCkKLXsKLSAgICBtX2hhc01ldGFkYXRhID0gZmFsc2U7
Ci0gICAgbV9pc0ZpbmFsaXplZCA9IGZhbHNlOwotICAgIG1faXNMaW5rZWQgPSBmYWxzZTsKLSAg
ICBtX2J1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8T2Zmc2V0Kj4oZmFzdENhbGxvYyhzX29mZnNl
dFRhYmxlRW50cmllcywgc2l6ZW9mKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0KSkpOwot
fQotCi1BTFdBWVNfSU5MSU5FIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6flVubGlua2VkTWV0YWRh
dGFUYWJsZSgpCi17Ci0gICAgQVNTRVJUKCFtX2lzTGlua2VkKTsKLSAgICBpZiAobV9oYXNNZXRh
ZGF0YSB8fCAhbV9pc0ZpbmFsaXplZCkKLSAgICAgICAgZmFzdEZyZWUobV9idWZmZXIpOwotfQot
Ci1BTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6YWRkRW50cnko
T3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0gICAgQVNTRVJUKCFtX2lzRmluYWxpemVkICYmIG9wY29k
ZUlEIDwgc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxKTsKLSAgICBtX2hhc01ldGFkYXRhID0gdHJ1
ZTsKLSAgICByZXR1cm4gbV9idWZmZXJbb3Bjb2RlSURdKys7Ci19Ci0KLUFMV0FZU19JTkxJTkUg
c2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoKQotewotICAgIGlmICgh
bV9pc0ZpbmFsaXplZCkKLSAgICAgICAgcmV0dXJuIHNfb2Zmc2V0VGFibGVTaXplOwotCi0gICAg
aWYgKCFtX2hhc01ldGFkYXRhKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChtX2lzTGlu
a2VkKQotICAgICAgICByZXR1cm4gbV9idWZmZXJbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsK
LQotICAgIHJldHVybiBzX29mZnNldFRhYmxlU2l6ZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lk
IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6ZmluYWxpemUoKQotewotICAgIEFTU0VSVCghbV9pc0Zp
bmFsaXplZCk7Ci0gICAgbV9pc0ZpbmFsaXplZCA9IHRydWU7Ci0gICAgaWYgKCFtX2hhc01ldGFk
YXRhKSB7Ci0gICAgICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsKLSAgICAgICAgbV9idWZmZXIgPSBu
dWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWduZWQgb2Zmc2V0ID0g
c19vZmZzZXRUYWJsZVNpemU7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNfb2Zmc2V0
VGFibGVFbnRyaWVzIC0gMTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIG51bWJlck9mRW50cmll
cyA9IG1fYnVmZmVyW2ldOwotICAgICAgICBtX2J1ZmZlcltpXSA9IG9mZnNldDsKLSAgICAgICAg
b2Zmc2V0ICs9IG51bWJlck9mRW50cmllcyAqIG1ldGFkYXRhU2l6ZShzdGF0aWNfY2FzdDxPcGNv
ZGVJRD4oaSkpOwotICAgIH0KLSAgICBtX2J1ZmZlcltzX29mZnNldFRhYmxlRW50cmllcyAtIDFd
ID0gb2Zmc2V0OwotfQotCi1BTFdBWVNfSU5MSU5FIFJlZjxNZXRhZGF0YVRhYmxlPiBVbmxpbmtl
ZE1ldGFkYXRhVGFibGU6OmxpbmsoKQotewotICAgIEFTU0VSVChtX2lzRmluYWxpemVkKTsKLQot
ICAgIGlmICghbV9oYXNNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWV0
YWRhdGFUYWJsZSgqdGhpcywgbnVsbHB0cikpOwotCi0gICAgdW5zaWduZWQgdG90YWxTaXplID0g
bV9idWZmZXJbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXTsKLSAgICBPZmZzZXQqIGJ1ZmZlcjsK
LSAgICBpZiAoIW1faXNMaW5rZWQpIHsKLSAgICAgICAgbV9pc0xpbmtlZCA9IHRydWU7Ci0gICAg
ICAgIGJ1ZmZlciA9IG1fYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxPZmZzZXQqPihmYXN0UmVh
bGxvYyhtX2J1ZmZlciwgdG90YWxTaXplKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYnVmZmVy
ID0gcmVpbnRlcnByZXRfY2FzdDxPZmZzZXQqPihmYXN0TWFsbG9jKHRvdGFsU2l6ZSkpOwotICAg
ICAgICBtZW1jcHkoYnVmZmVyLCBtX2J1ZmZlciwgc19vZmZzZXRUYWJsZVNpemUpOwotICAgIH0K
LSAgICBtZW1zZXQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSArIHNfb2Zmc2V0
VGFibGVTaXplLCAwLCB0b3RhbFNpemUgLSBzX29mZnNldFRhYmxlU2l6ZSk7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWV0YWRhdGFUYWJsZSgqdGhpcywgYnVmZmVyKSk7Ci19Ci0KLUFMV0FZ
U19JTkxJTkUgdm9pZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnVubGluayhNZXRhZGF0YVRhYmxl
JiBtZXRhZGF0YVRhYmxlKQotewotICAgIEFTU0VSVChtX2lzRmluYWxpemVkKTsKLSAgICBpZiAo
IW1faGFzTWV0YWRhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtZXRhZGF0YVRhYmxl
Lm1fYnVmZmVyID09IG1fYnVmZmVyKSB7Ci0gICAgICAgIEFTU0VSVChtX2lzTGlua2VkKTsKLSAg
ICAgICAgbV9pc0xpbmtlZCA9IGZhbHNlOwotICAgICAgICBtX2J1ZmZlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8T2Zmc2V0Kj4oZmFzdFJlYWxsb2MobV9idWZmZXIsIHNfb2Zmc2V0VGFibGVTaXplKSk7
Ci0gICAgfSBlbHNlIGlmIChtZXRhZGF0YVRhYmxlLm1fYnVmZmVyKQotICAgICAgICBmYXN0RnJl
ZShtZXRhZGF0YVRhYmxlLm1fYnVmZmVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuY3BwCmlu
ZGV4IDU3ZDlhYTk3OWJkYzk5ZjgxZmM0NTkzYzE5N2MyODI2M2YwZTk0ZGMuLjU3Y2RiNjJjOTU5
YTc2Nzc5NjFkNmU4MTEzNTIxMjgwMWYxNThhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAKLSNpbmNs
dWRlICJSZWdpc3RlcklELmgiCi0KIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIFZpcnR1YWxSZWdp
c3Rlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNjMsMTAgKzYxLDUgQEAgdm9p
ZCBWaXJ0dWFsUmVnaXN0ZXI6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi0KLVZpcnR1YWxSZWdpc3Rlcjo6VmlydHVh
bFJlZ2lzdGVyKFJlZ2lzdGVySUQqIHJlZykKLSAgICA6IFZpcnR1YWxSZWdpc3RlcihyZWctPm1f
dmlydHVhbFJlZ2lzdGVyLm1fdmlydHVhbFJlZ2lzdGVyKQotewotfQotCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1
YWxSZWdpc3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdp
c3Rlci5oCmluZGV4IDE2YWE2ODM1ODk2MDE1OGMwNWE2NWExZDQxZTY5MzNmMjc1NTM3YTkuLmYz
MmU4ZDI0ZjZkNGRjMTM2NmYyZjFlZmI3Nzk2NDAxYjBmNjhiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTQyLDE1ICs0Miwx
MSBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBcmd1bWVudChpbnQgb3BlcmFuZCkKIH0KIAogCi1j
bGFzcyBSZWdpc3RlcklEOwotCiBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXIgewogcHVibGljOgogICAg
IGZyaWVuZCBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW50KTsKICAg
ICBmcmllbmQgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGludCwg
aW50KTsKIAotICAgIFZpcnR1YWxSZWdpc3RlcihSZWdpc3RlcklEKik7Ci0KICAgICBWaXJ0dWFs
UmVnaXN0ZXIoKQogICAgICAgICA6IG1fdmlydHVhbFJlZ2lzdGVyKHNfaW52YWxpZFZpcnR1YWxS
ZWdpc3RlcikKICAgICB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNWRhNDJhMTlmYWYxZmViY2Fl
ODRmNTdkMjIwMzQzNzM0YjkzMjMzOC4uNWZkMTU0ZDBjZTE1ZmFjYTU2NjE1NTE2NmJjYzU2YWIz
Njc1YTE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJC
dWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgotI2luY2x1ZGUgIkJ5dGVjb2Rl
U3RydWN0cy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2F0Y2hT
Y29wZS5oIgogI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgpAQCAtNTIsMTQg
KzUxLDEzIEBACiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVu
dC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXJC
eXRlY29kZVNjb3BlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrLmgiCi0jaW5jbHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCIKICNpbmNsdWRlICJVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2suaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CkBAIC03MCwyMSArNjgsNiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wLCB0eXBlbmFtZSA9IHN0
ZDo6dHJ1ZV90eXBlPgotc3RydWN0IFZhckFyZ3NPcDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2Fs
bE9wPgotc3RydWN0IFZhckFyZ3NPcDxDYWxsT3AsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lPENhbGxPcCwgT3BUYWlsQ2FsbD46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IHsKLSAgICB1
c2luZyB0eXBlID0gT3BUYWlsQ2FsbFZhcmFyZ3M7Ci19OwotCi0KLXRlbXBsYXRlPHR5cGVuYW1l
IENhbGxPcD4KLXN0cnVjdCBWYXJBcmdzT3A8Q2FsbE9wLCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6
OmlzX3NhbWU8Q2FsbE9wLCBPcFRhaWxDYWxsPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gewot
ICAgIHVzaW5nIHR5cGUgPSBPcENhbGxWYXJhcmdzOwotfTsKLQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogc3RhdGljIGlubGluZSB2b2lkIHNocmlua1RvRml0KFQmIHNlZ21lbnRlZFZlY3RvcikK
IHsKQEAgLTk2LDQ5ICs3OSw5IEBAIHZvaWQgTGFiZWw6OnNldExvY2F0aW9uKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIHVuc2lnbmVkIGxvY2F0aW9uKQogewogICAgIG1fbG9jYXRpb24g
PSBsb2NhdGlvbjsKICAgICAKLSAgICBmb3IgKGF1dG8gb2Zmc2V0IDogbV91bnJlc29sdmVkSnVt
cHMpIHsKLSAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IGdlbmVyYXRvci5tX3dyaXRlci5yZWYo
b2Zmc2V0KTsKLSAgICAgICAgaW50IHRhcmdldCA9IG1fbG9jYXRpb24gLSBvZmZzZXQ7Ci0KLSNk
ZWZpbmUgQ0FTRShfX29wKSBcCi0gICAgY2FzZSBfX29wOjpvcGNvZGVJRDogIFwKLSAgICAgICAg
aW5zdHJ1Y3Rpb24tPmNhc3Q8X19vcD4oKS0+c2V0VGFyZ2V0KHRhcmdldCwgWyZdKCkgeyBcCi0g
ICAgICAgICAgICBnZW5lcmF0b3IubV9jb2RlQmxvY2stPmFkZE91dE9mTGluZUp1bXBUYXJnZXQo
aW5zdHJ1Y3Rpb24ub2Zmc2V0KCksIHRhcmdldCk7IFwKLSAgICAgICAgICAgIHJldHVybiAwOyBc
Ci0gICAgICAgIH0pOyBcCi0gICAgICAgIGJyZWFrOwotCi0gICAgICAgIHN3aXRjaCAoaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCkpIHsKLSAgICAgICAgQ0FTRShPcEptcCkKLSAgICAgICAgQ0FTRShP
cEp0cnVlKQotICAgICAgICBDQVNFKE9wSmZhbHNlKQotICAgICAgICBDQVNFKE9wSmVxTnVsbCkK
LSAgICAgICAgQ0FTRShPcEpuZXFOdWxsKQotICAgICAgICBDQVNFKE9wSmVxKQotICAgICAgICBD
QVNFKE9wSnN0cmljdGVxKQotICAgICAgICBDQVNFKE9wSm5lcSkKLSAgICAgICAgQ0FTRShPcEpu
ZXFQdHIpCi0gICAgICAgIENBU0UoT3BKbnN0cmljdGVxKQotICAgICAgICBDQVNFKE9wSmxlc3Mp
Ci0gICAgICAgIENBU0UoT3BKbGVzc2VxKQotICAgICAgICBDQVNFKE9wSmdyZWF0ZXIpCi0gICAg
ICAgIENBU0UoT3BKZ3JlYXRlcmVxKQotICAgICAgICBDQVNFKE9wSm5sZXNzKQotICAgICAgICBD
QVNFKE9wSm5sZXNzZXEpCi0gICAgICAgIENBU0UoT3BKbmdyZWF0ZXIpCi0gICAgICAgIENBU0Uo
T3BKbmdyZWF0ZXJlcSkKLSAgICAgICAgQ0FTRShPcEpiZWxvdykKLSAgICAgICAgQ0FTRShPcEpi
ZWxvd2VxKQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIH0KLSN1bmRlZiBDQVNFCi0gICAgfQotfQotCi1pbnQgTGFiZWw6OmJpbmQo
Qnl0ZWNvZGVHZW5lcmF0b3IqIGdlbmVyYXRvcikKLXsKLSAgICByZXR1cm4gYmluZChnZW5lcmF0
b3ItPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1fdW5yZXNv
bHZlZEp1bXBzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICBnZW5lcmF0b3IuaW5zdHJ1Y3Rpb25zKClbbV91bnJlc29sdmVkSnVtcHNbaV0u
c2Vjb25kXS51Lm9wZXJhbmQgPSBtX2xvY2F0aW9uIC0gbV91bnJlc29sdmVkSnVtcHNbaV0uZmly
c3Q7CiB9CiAKIHZvaWQgVmFyaWFibGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKQEAg
LTIxNyw3ICsxNjAsMTAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKIAogICAgIGZvciAoYXV0byYgdHVwbGUgOiBtX2NhdGNoZXNUb0VtaXQpIHsKICAgICAgICAg
UmVmPExhYmVsPiByZWFsQ2F0Y2hUYXJnZXQgPSBuZXdFbWl0dGVkTGFiZWwoKTsKLSAgICAgICAg
T3BDYXRjaDo6ZW1pdCh0aGlzLCBzdGQ6OmdldDwxPih0dXBsZSksIHN0ZDo6Z2V0PDI+KHR1cGxl
KSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOworICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoc3RkOjpnZXQ8MT4odHVwbGUpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHN0ZDo6Z2V0PDI+KHR1cGxlKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgw
KTsKIAogICAgICAgICBUcnlEYXRhKiB0cnlEYXRhID0gc3RkOjpnZXQ8MD4odHVwbGUpOwogICAg
ICAgICBlbWl0SnVtcCh0cnlEYXRhLT50YXJnZXQuZ2V0KCkpOwpAQCAtMjYyLDEwICsyMDgsMTAg
QEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAKIAogICAg
IGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUobV9jb2RlQmxvY2st
PnBhcnNlTW9kZSgpKSkKLSAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbigqdGhpcywg
bV9jb2RlQmxvY2suZ2V0KCksIG1fd3JpdGVyLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUu
Z2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKyAgICAgICAgcGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
Y29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgpKTsKLSAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rp
b25zKG1fd3JpdGVyLmZpbmFsaXplKCkpOworICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlv
bnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0
aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CiAKQEAgLTUwMywxMiAr
NDQ5LDIwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgICAgIGVu
dHJ5LmRpc2FibGVXYXRjaGluZygqbV92bSk7CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
U3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIGVudHJ5KTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1f
bGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIFVJTlRfTUFYLCB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudCgxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVW
YXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLCBzeW1ib2xUYWJsZUNv
bnN0YW50SW5kZXgsIG9mZnNldC5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdE9wY29k
ZShvcF9wdXRfdG9fc2NvcGUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoVUlOVF9NQVgpOworICAgICAgICAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxICsgaSkub2Zmc2V0
KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChHZXRQdXRJbmZvKFRo
cm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdElu
aXRpYWxpemF0aW9uKS5vcGVyYW5kKCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOworICAgICAgICAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChvZmZzZXQub2Zmc2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBzY29wZWQgYXJndW1lbnRzIG9i
amVjdCBhbmQgY29waWVzIHRoZSBvdmVyZmxvdyBhcmd1bWVudHMgaW50byB0aGUKICAgICAgICAg
ICAgIC8vIHNjb3BlLiBJdCdzIHRoZSBlcXVpdmFsZW50IG9mIGNhbGxpbmcgU2NvcGVkQXJndW1l
bnRzOjpjcmVhdGVCeUNvcHlpbmcoKS4KLSAgICAgICAgICAgIE9wQ3JlYXRlU2NvcGVkQXJndW1l
bnRzOjplbWl0KHRoaXMsIG1fYXJndW1lbnRzUmVnaXN0ZXIsIG1fbGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIpOworICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfc2NvcGVkX2FyZ3Vt
ZW50cyk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9hcmd1bWVudHNSZWdp
c3Rlci0+aW5kZXgoKSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBXZSdyZSBnb2luZyB0byBwdXQgYWxsIHBhcmFtZXRlcnMgaW50byB0aGUgRGly
ZWN0QXJndW1lbnRzIG9iamVjdC4gRmlyc3QgZW5zdXJlCiAgICAgICAgICAgICAvLyB0aGF0IHRo
ZSBzeW1ib2wgdGFibGUga25vd3MgdGhhdCB0aGlzIGlzIGhhcHBlbmluZy4KQEAgLTUxNyw3ICs0
NzEsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvblN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBuYW1lLCBTeW1ib2xUYWJs
ZUVudHJ5KFZhck9mZnNldChEaXJlY3RBcmd1bWVudHNPZmZzZXQoaSkpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE9wQ3JlYXRlRGlyZWN0QXJndW1lbnRzOjpl
bWl0KHRoaXMsIG1fYXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICAgICAgZW1pdE9wY29kZShv
cF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV9hcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewogICAgICAgICAvLyBDcmVhdGUgdGhlIGZv
cm1hbCBwYXJhbWV0ZXJzIHRoZSBub3JtYWwgd2F5LiBBbnkgb2YgdGhlbSBjb3VsZCBiZSBjYXB0
dXJlZCwgb3Igbm90LiBJZgpAQCAtNTQxLDEzICs0OTYsMjAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBCaW5kaW5nTm9kZSo+KHBh
cmFtZXRlcnMuYXQoaSkuZmlyc3QpLT5ib3VuZFByb3BlcnR5KCk7CiAgICAgICAgICAgICBmdW5j
dGlvblN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBuYW1lLCBTeW1ib2xUYWJs
ZUVudHJ5KFZhck9mZnNldChvZmZzZXQpKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE9w
UHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBhZGRD
b25zdGFudChpZGVudCksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEgKyBpKSwgR2V0UHV0
SW5mbyhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2Rl
OjpOb3RJbml0aWFsaXphdGlvbiksIHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgb2Zmc2V0Lm9m
ZnNldCgpKTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlKTsKKyAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVy
LT5pbmRleCgpKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFu
dChpZGVudCkpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KDEgKyBpKS5vZmZzZXQoKSk7CisgICAgICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwg
SW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpKTsKKyAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwor
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG9mZnNldC5vZmZzZXQoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpKSB7CiAgICAgICAgIC8v
IEFsbG9jYXRlIGEgY2xvbmVkIGFyZ3VtZW50cyBvYmplY3QuCi0gICAgICAgIE9wQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzOjplbWl0KHRoaXMsIG1fYXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICBl
bWl0T3Bjb2RlKG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKG1fYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIH0KICAgICAK
ICAgICAvLyBUaGVyZSBhcmUgc29tZSB2YXJpYWJsZXMgdGhhdCBuZWVkIHRvIGJlIHByZWluaXRp
YWxpemVkIHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIFVuZGVmaW5lZDoKQEAgLTEyMDQsOSArMTE2
NiwxNSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplVmFyTGV4aWNhbEVudmly
b25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SQogewogICAgIGlmIChoYXNDYXB0dXJlZFZh
cmlhYmxlcykgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJl
Z2lzdGVyKTsKLSAgICAgICAgT3BDcmVhdGVMZXhpY2FsRW52aXJvbm1lbnQ6OmVtaXQodGhpcywg
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlciwgc2NvcGVSZWdpc3RlcigpLCBWaXJ0dWFsUmVn
aXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSwgYWRkQ29uc3RhbnRWYWx1ZShqc1Vu
ZGVmaW5lZCgpKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9sZXhpY2FsRW52aXJvbm1l
bnRSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29w
ZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3lt
Ym9sVGFibGVDb25zdGFudEluZGV4KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFk
ZENvbnN0YW50VmFsdWUoanNVbmRlZmluZWQoKSktPmluZGV4KCkpOwogCi0gICAgICAgIE9wTW92
OjplbWl0KHRoaXMsIHNjb3BlUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
cik7CisgICAgICAgIGVtaXRPcGNvZGUob3BfbW92KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLT5pbmRleCgpKTsKIAogICAgICAg
ICBwdXNoTG9jYWxDb250cm9sRmxvd1Njb3BlKCk7CiAgICAgfQpAQCAtMTMwMCw5ICsxMjY4LDQ0
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMYWJlbChMYWJlbCYgbDApCiAgICAgbV9s
YXN0T3Bjb2RlSUQgPSBvcF9lbmQ7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRP
cGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWZuZGVmIE5ERUJVRworICAgIHNpemVfdCBv
cGNvZGVQb3NpdGlvbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBBU1NFUlQob3Bjb2Rl
UG9zaXRpb24gLSBtX2xhc3RPcGNvZGVQb3NpdGlvbiA9PSBvcGNvZGVMZW5ndGgobV9sYXN0T3Bj
b2RlSUQpIHx8IG1fbGFzdE9wY29kZUlEID09IG9wX2VuZCk7CisgICAgbV9sYXN0T3Bjb2RlUG9z
aXRpb24gPSBvcGNvZGVQb3NpdGlvbjsKKyNlbmRpZgorICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChvcGNvZGVJRCk7CisgICAgbV9sYXN0T3Bjb2RlSUQgPSBvcGNvZGVJRDsKK30KKworVW5saW5r
ZWRBcnJheVByb2ZpbGUgQnl0ZWNvZGVHZW5lcmF0b3I6Om5ld0FycmF5UHJvZmlsZSgpCit7Cisg
ICAgcmV0dXJuIG1fY29kZUJsb2NrLT5hZGRBcnJheVByb2ZpbGUoKTsKK30KKworVW5saW5rZWRB
cnJheUFsbG9jYXRpb25Qcm9maWxlIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdBcnJheUFsbG9jYXRp
b25Qcm9maWxlKEluZGV4aW5nVHlwZSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZSkKK3sKKyAgICBy
ZXR1cm4gbV9jb2RlQmxvY2stPmFkZEFycmF5QWxsb2NhdGlvblByb2ZpbGUocmVjb21tZW5kZWRJ
bmRleGluZ1R5cGUpOworfQorCitVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIEJ5dGVj
b2RlR2VuZXJhdG9yOjpuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCit7CisgICAgcmV0dXJu
IG1fY29kZUJsb2NrLT5hZGRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOworfQorCitVbmxpbmtl
ZFZhbHVlUHJvZmlsZSBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKE9wY29k
ZUlEIG9wY29kZUlEKQoreworICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQpOworICAgIGlmICghbV92
bS0+Y2FuVXNlSklUKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxVbmxpbmtlZFZhbHVl
UHJvZmlsZT4oLTEpOworICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHJlc3VsdCA9IG1fY29kZUJs
b2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RW50ZXIoKQogewotICAgIE9wRW50ZXI6OmVtaXQodGhpcyk7
CisgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CiAKICAgICBpZiAoTElLRUxZKE9wdGlvbnM6Om9w
dGltaXplUmVjdXJzaXZlVGFpbENhbGxzKCkpKSB7CiAgICAgICAgIC8vIFdlIG11c3QgYWRkIHRo
ZSBlbmQgb2Ygb3BfZW50ZXIgYXMgYSBwb3RlbnRpYWwganVtcCB0YXJnZXQsIGJlY2F1c2UgdGhl
IGJ5dGVjb2RlIHBhcnNlciBtYXkgZGVjaWRlIHRvIHNwbGl0IGl0cyBiYXNpYyBibG9jawpAQCAt
MTMxNSwxNTQgKzEzMTgsMjcyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnRlcigp
CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb29wSGludCgpCiB7Ci0gICAgT3BMb29w
SGludDo6ZW1pdCh0aGlzKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2xvb3BfaGludCk7CiAgICAgZW1p
dENoZWNrVHJhcHMoKTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXAoTGFi
ZWwmIHRhcmdldCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1RyYXBzKCkKIHsK
LSAgICBPcEptcDo6ZW1pdCh0aGlzLCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgZW1pdE9wY29k
ZShvcF9jaGVja190cmFwcyk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVj
a1RyYXBzKCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJldHJpZXZlTGFzdEJpbmFyeU9wKGlu
dCYgZHN0SW5kZXgsIGludCYgc3JjMUluZGV4LCBpbnQmIHNyYzJJbmRleCkKIHsKLSAgICBPcENo
ZWNrVHJhcHM6OmVtaXQodGhpcyk7CisgICAgQVNTRVJUKGluc3RydWN0aW9ucygpLnNpemUoKSA+
PSA0KTsKKyAgICBzaXplX3Qgc2l6ZSA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBkc3RJ
bmRleCA9IGluc3RydWN0aW9ucygpLmF0KHNpemUgLSAzKS51Lm9wZXJhbmQ7CisgICAgc3JjMUlu
ZGV4ID0gaW5zdHJ1Y3Rpb25zKCkuYXQoc2l6ZSAtIDIpLnUub3BlcmFuZDsKKyAgICBzcmMySW5k
ZXggPSBpbnN0cnVjdGlvbnMoKS5hdChzaXplIC0gMSkudS5vcGVyYW5kOwogfQogCi12b2lkIEFM
V0FZU19JTkxJTkUgQnl0ZWNvZGVHZW5lcmF0b3I6OnJld2luZCgpCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpyZXRyaWV2ZUxhc3RVbmFyeU9wKGludCYgZHN0SW5kZXgsIGludCYgc3JjSW5kZXgp
CiB7Ci0gICAgQVNTRVJUKG1fbGFzdEluc3RydWN0aW9uLmlzVmFsaWQoKSk7Ci0gICAgbV9sYXN0
T3Bjb2RlSUQgPSBvcF9lbmQ7Ci0gICAgbV93cml0ZXIucmV3aW5kKG1fbGFzdEluc3RydWN0aW9u
KTsKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpID49IDMpOworICAgIHNpemVfdCBz
aXplID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAgIGRzdEluZGV4ID0gaW5zdHJ1Y3Rpb25z
KCkuYXQoc2l6ZSAtIDIpLnUub3BlcmFuZDsKKyAgICBzcmNJbmRleCA9IGluc3RydWN0aW9ucygp
LmF0KHNpemUgLSAxKS51Lm9wZXJhbmQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJpbk9wLCB0
eXBlbmFtZSBKbXBPcD4KLWJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmZ1c2VDb21wYXJlQW5kSnVt
cChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0LCBib29sIHN3YXBPcGVyYW5kcykKK3Zv
aWQgQUxXQVlTX0lOTElORSBCeXRlY29kZUdlbmVyYXRvcjo6cmV3aW5kQmluYXJ5T3AoKQogewot
ICAgIGF1dG8gYmlub3AgPSBtX2xhc3RJbnN0cnVjdGlvbi0+YXM8QmluT3A+KCk7Ci0gICAgaWYg
KGNvbmQtPmluZGV4KCkgPT0gYmlub3AuZHN0Lm9mZnNldCgpICYmIGNvbmQtPmlzVGVtcG9yYXJ5
KCkgJiYgIWNvbmQtPnJlZkNvdW50KCkpIHsKLSAgICAgICAgcmV3aW5kKCk7Ci0KLSAgICAgICAg
aWYgKHN3YXBPcGVyYW5kcykKLSAgICAgICAgICAgIHN0ZDo6c3dhcChiaW5vcC5saHMsIGJpbm9w
LnJocyk7Ci0KLSAgICAgICAgSm1wT3A6OmVtaXQodGhpcywgYmlub3AubGhzLCBiaW5vcC5yaHMs
IHRhcmdldC5iaW5kKHRoaXMpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpID49IDQpOworICAg
IGluc3RydWN0aW9ucygpLnNocmluayhpbnN0cnVjdGlvbnMoKS5zaXplKCkgLSA0KTsKKyAgICBt
X2xhc3RPcGNvZGVJRCA9IG9wX2VuZDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVW5hcnlPcCwg
dHlwZW5hbWUgSm1wT3A+Ci1ib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpmdXNlVGVzdEFuZEptcChS
ZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQordm9pZCBBTFdBWVNfSU5MSU5FIEJ5dGVj
b2RlR2VuZXJhdG9yOjpyZXdpbmRVbmFyeU9wKCkKIHsKLSAgICBhdXRvIHVub3AgPSBtX2xhc3RJ
bnN0cnVjdGlvbi0+YXM8VW5hcnlPcD4oKTsKLSAgICBpZiAoY29uZC0+aW5kZXgoKSA9PSB1bm9w
LmRzdC5vZmZzZXQoKSAmJiBjb25kLT5pc1RlbXBvcmFyeSgpICYmICFjb25kLT5yZWZDb3VudCgp
KSB7Ci0gICAgICAgIHJld2luZCgpOworICAgIEFTU0VSVChpbnN0cnVjdGlvbnMoKS5zaXplKCkg
Pj0gMyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuc2hyaW5rKGluc3RydWN0aW9ucygpLnNpemUoKSAt
IDMpOworICAgIG1fbGFzdE9wY29kZUlEID0gb3BfZW5kOworfQogCi0gICAgICAgIEptcE9wOjpl
bWl0KHRoaXMsIHVub3Aub3BlcmFuZCwgdGFyZ2V0LmJpbmQodGhpcykpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwordm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEp1bXAoTGFiZWwmIHRhcmdldCkKK3sKKyAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVj
dGlvbnMoKS5zaXplKCk7CisgICAgZW1pdE9wY29kZShvcF9qbXApOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCh0YXJnZXQuYmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9
CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZUcnVlKFJlZ2lzdGVySUQqIGNv
bmQsIExhYmVsJiB0YXJnZXQpCiB7CisgICAgYXV0byBmdXNlQ29tcGFyZUFuZEp1bXAgPSBbJl0g
KE9wY29kZUlEIGp1bXBJRCkgeworICAgICAgICBpbnQgZHN0SW5kZXg7CisgICAgICAgIGludCBz
cmMxSW5kZXg7CisgICAgICAgIGludCBzcmMySW5kZXg7CisKKyAgICAgICAgcmV0cmlldmVMYXN0
QmluYXJ5T3AoZHN0SW5kZXgsIHNyYzFJbmRleCwgc3JjMkluZGV4KTsKKworICAgICAgICBpZiAo
Y29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5pc1RlbXBvcmFyeSgpICYmICFjb25k
LT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRCaW5hcnlPcCgpOworCisgICAgICAg
ICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgICAgICAgICBl
bWl0T3Bjb2RlKGp1bXBJRCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3Jj
MUluZGV4KTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMySW5kZXgpOwor
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC5iaW5kKGJlZ2luLCBpbnN0
cnVjdGlvbnMoKS5zaXplKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OwogCiAgICAgaWYgKG1fbGFzdE9wY29kZUlE
ID09IG9wX2xlc3MpIHsKLSAgICAgICAgaWYgKGZ1c2VDb21wYXJlQW5kSnVtcDxPcExlc3MsIE9w
Smxlc3M+KGNvbmQsIHRhcmdldCkpCisgICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXAob3Bf
amxlc3MpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAobV9sYXN0T3Bjb2Rl
SUQgPT0gb3BfbGVzc2VxKSB7Ci0gICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXA8T3BMZXNz
ZXEsIE9wSmxlc3NlcT4oY29uZCwgdGFyZ2V0KSkKKyAgICAgICAgaWYgKGZ1c2VDb21wYXJlQW5k
SnVtcChvcF9qbGVzc2VxKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG1f
bGFzdE9wY29kZUlEID09IG9wX2dyZWF0ZXIpIHsKLSAgICAgICAgaWYgKGZ1c2VDb21wYXJlQW5k
SnVtcDxPcEdyZWF0ZXIsIE9wSmdyZWF0ZXI+KGNvbmQsIHRhcmdldCkpCisgICAgICAgIGlmIChm
dXNlQ29tcGFyZUFuZEp1bXAob3BfamdyZWF0ZXIpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0gZWxzZSBpZiAobV9sYXN0T3Bjb2RlSUQgPT0gb3BfZ3JlYXRlcmVxKSB7Ci0gICAgICAgIGlm
IChmdXNlQ29tcGFyZUFuZEp1bXA8T3BHcmVhdGVyZXEsIE9wSmdyZWF0ZXJlcT4oY29uZCwgdGFy
Z2V0KSkKKyAgICAgICAgaWYgKGZ1c2VDb21wYXJlQW5kSnVtcChvcF9qZ3JlYXRlcmVxKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09IG9wX2Vx
KSB7Ci0gICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXA8T3BFcSwgT3BKZXE+KGNvbmQsIHRh
cmdldCkpCisgICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXAob3BfamVxKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09IG9wX3N0cmljdGVx
KSB7Ci0gICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXA8T3BTdHJpY3RlcSwgT3BKc3RyaWN0
ZXE+KGNvbmQsIHRhcmdldCkpCisgICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXAob3BfanN0
cmljdGVxKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29k
ZUlEID09IG9wX25lcSkgewotICAgICAgICBpZiAoZnVzZUNvbXBhcmVBbmRKdW1wPE9wTmVxLCBP
cEpuZXE+KGNvbmQsIHRhcmdldCkpCisgICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXAob3Bf
am5lcSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJ
RCA9PSBvcF9uc3RyaWN0ZXEpIHsKLSAgICAgICAgaWYgKGZ1c2VDb21wYXJlQW5kSnVtcDxPcE5z
dHJpY3RlcSwgT3BKbnN0cmljdGVxPihjb25kLCB0YXJnZXQpKQorICAgICAgICBpZiAoZnVzZUNv
bXBhcmVBbmRKdW1wKG9wX2puc3RyaWN0ZXEpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0g
ZWxzZSBpZiAobV9sYXN0T3Bjb2RlSUQgPT0gb3BfYmVsb3cpIHsKLSAgICAgICAgaWYgKGZ1c2VD
b21wYXJlQW5kSnVtcDxPcEJlbG93LCBPcEpiZWxvdz4oY29uZCwgdGFyZ2V0KSkKKyAgICAgICAg
aWYgKGZ1c2VDb21wYXJlQW5kSnVtcChvcF9qYmVsb3cpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgIH0gZWxzZSBpZiAobV9sYXN0T3Bjb2RlSUQgPT0gb3BfYmVsb3dlcSkgewotICAgICAgICBp
ZiAoZnVzZUNvbXBhcmVBbmRKdW1wPE9wQmVsb3dlcSwgT3BKYmVsb3dlcT4oY29uZCwgdGFyZ2V0
KSkKKyAgICAgICAgaWYgKGZ1c2VDb21wYXJlQW5kSnVtcChvcF9qYmVsb3dlcSkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9lcV9udWxs
ICYmIHRhcmdldC5pc0ZvcndhcmQoKSkgewotICAgICAgICBpZiAoZnVzZVRlc3RBbmRKbXA8T3BF
cU51bGwsIE9wSmVxTnVsbD4oY29uZCwgdGFyZ2V0KSkKKyAgICAgICAgaW50IGRzdEluZGV4Owor
ICAgICAgICBpbnQgc3JjSW5kZXg7CisKKyAgICAgICAgcmV0cmlldmVMYXN0VW5hcnlPcChkc3RJ
bmRleCwgc3JjSW5kZXgpOworCisgICAgICAgIGlmIChjb25kLT5pbmRleCgpID09IGRzdEluZGV4
ICYmIGNvbmQtPmlzVGVtcG9yYXJ5KCkgJiYgIWNvbmQtPnJlZkNvdW50KCkpIHsKKyAgICAgICAg
ICAgIHJld2luZFVuYXJ5T3AoKTsKKworICAgICAgICAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOworICAgICAgICAgICAgZW1pdE9wY29kZShvcF9qZXFfbnVsbCk7Cisg
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjSW5kZXgpOworICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
bV9sYXN0T3Bjb2RlSUQgPT0gb3BfbmVxX251bGwgJiYgdGFyZ2V0LmlzRm9yd2FyZCgpKSB7Ci0g
ICAgICAgIGlmIChmdXNlVGVzdEFuZEptcDxPcE5lcU51bGwsIE9wSm5lcU51bGw+KGNvbmQsIHRh
cmdldCkpCisgICAgICAgIGludCBkc3RJbmRleDsKKyAgICAgICAgaW50IHNyY0luZGV4OworCisg
ICAgICAgIHJldHJpZXZlTGFzdFVuYXJ5T3AoZHN0SW5kZXgsIHNyY0luZGV4KTsKKworICAgICAg
ICBpZiAoY29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5pc1RlbXBvcmFyeSgpICYm
ICFjb25kLT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CisKKyAg
ICAgICAgICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICAgICAg
ICAgIGVtaXRPcGNvZGUob3Bfam5lcV9udWxsKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChzcmNJbmRleCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFy
Z2V0LmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAgT3BKdHJ1ZTo6ZW1pdCh0aGlzLCBjb25kLCB0
YXJnZXQuYmluZCh0aGlzKSk7CisgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpOworCisgICAgZW1pdE9wY29kZShvcF9qdHJ1ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGNvbmQtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQuYmlu
ZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRKdW1wSWZGYWxzZShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQog
eworICAgIGF1dG8gZnVzZUNvbXBhcmVBbmRKdW1wID0gWyZdIChPcGNvZGVJRCBqdW1wSUQsIGJv
b2wgcmVwbGFjZU9wZXJhbmRzKSB7CisgICAgICAgIGludCBkc3RJbmRleDsKKyAgICAgICAgaW50
IHNyYzFJbmRleDsKKyAgICAgICAgaW50IHNyYzJJbmRleDsKKworICAgICAgICByZXRyaWV2ZUxh
c3RCaW5hcnlPcChkc3RJbmRleCwgc3JjMUluZGV4LCBzcmMySW5kZXgpOworCisgICAgICAgIGlm
IChjb25kLT5pbmRleCgpID09IGRzdEluZGV4ICYmIGNvbmQtPmlzVGVtcG9yYXJ5KCkgJiYgIWNv
bmQtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgIHJld2luZEJpbmFyeU9wKCk7CisKKyAgICAg
ICAgICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICAgICAgICAg
IGVtaXRPcGNvZGUoanVtcElEKTsKKyAgICAgICAgICAgIC8vIFNpbmNlIG9wX2JlbG93IGFuZCBv
cF9iZWxvd2VxIG9ubHkgYWNjZXB0cyBJbnQzMiwgcmVwbGFjaW5nIG9wZXJhbmRzIGlzIG5vdCBv
YnNlcnZhYmxlIHRvIHVzZXJzLgorICAgICAgICAgICAgaWYgKHJlcGxhY2VPcGVyYW5kcykKKyAg
ICAgICAgICAgICAgICBzdGQ6OnN3YXAoc3JjMUluZGV4LCBzcmMySW5kZXgpOworICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzFJbmRleCk7CisgICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoc3JjMkluZGV4KTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCh0YXJnZXQuYmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fTsKKwogICAgIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9sZXNzICYmIHRhcmdldC5pc0Zvcndh
cmQoKSkgewotICAgICAgICBpZiAoZnVzZUNvbXBhcmVBbmRKdW1wPE9wTGVzcywgT3BKbmxlc3M+
KGNvbmQsIHRhcmdldCkpCisgICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXAob3Bfam5sZXNz
LCBmYWxzZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNv
ZGVJRCA9PSBvcF9sZXNzZXEgJiYgdGFyZ2V0LmlzRm9yd2FyZCgpKSB7Ci0gICAgICAgIGlmIChm
dXNlQ29tcGFyZUFuZEp1bXA8T3BMZXNzZXEsIE9wSm5sZXNzZXE+KGNvbmQsIHRhcmdldCkpCisg
ICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXAob3Bfam5sZXNzZXEsIGZhbHNlKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09IG9wX2dyZWF0
ZXIgJiYgdGFyZ2V0LmlzRm9yd2FyZCgpKSB7Ci0gICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1
bXA8T3BHcmVhdGVyLCBPcEpuZ3JlYXRlcj4oY29uZCwgdGFyZ2V0KSkKKyAgICAgICAgaWYgKGZ1
c2VDb21wYXJlQW5kSnVtcChvcF9qbmdyZWF0ZXIsIGZhbHNlKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09IG9wX2dyZWF0ZXJlcSAmJiB0YXJn
ZXQuaXNGb3J3YXJkKCkpIHsKLSAgICAgICAgaWYgKGZ1c2VDb21wYXJlQW5kSnVtcDxPcEdyZWF0
ZXJlcSwgT3BKbmdyZWF0ZXJlcT4oY29uZCwgdGFyZ2V0KSkKKyAgICAgICAgaWYgKGZ1c2VDb21w
YXJlQW5kSnVtcChvcF9qbmdyZWF0ZXJlcSwgZmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgIH0gZWxzZSBpZiAobV9sYXN0T3Bjb2RlSUQgPT0gb3BfZXEgJiYgdGFyZ2V0LmlzRm9yd2Fy
ZCgpKSB7Ci0gICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXA8T3BFcSwgT3BKbmVxPihjb25k
LCB0YXJnZXQpKQorICAgICAgICBpZiAoZnVzZUNvbXBhcmVBbmRKdW1wKG9wX2puZXEsIGZhbHNl
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09
IG9wX3N0cmljdGVxICYmIHRhcmdldC5pc0ZvcndhcmQoKSkgewotICAgICAgICBpZiAoZnVzZUNv
bXBhcmVBbmRKdW1wPE9wU3RyaWN0ZXEsIE9wSm5zdHJpY3RlcT4oY29uZCwgdGFyZ2V0KSkKKyAg
ICAgICAgaWYgKGZ1c2VDb21wYXJlQW5kSnVtcChvcF9qbnN0cmljdGVxLCBmYWxzZSkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9uZXEg
JiYgdGFyZ2V0LmlzRm9yd2FyZCgpKSB7Ci0gICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXA8
T3BOZXEsIE9wSmVxPihjb25kLCB0YXJnZXQpKQorICAgICAgICBpZiAoZnVzZUNvbXBhcmVBbmRK
dW1wKG9wX2plcSwgZmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAo
bV9sYXN0T3Bjb2RlSUQgPT0gb3BfbnN0cmljdGVxICYmIHRhcmdldC5pc0ZvcndhcmQoKSkgewot
ICAgICAgICBpZiAoZnVzZUNvbXBhcmVBbmRKdW1wPE9wTnN0cmljdGVxLCBPcEpzdHJpY3RlcT4o
Y29uZCwgdGFyZ2V0KSkKKyAgICAgICAgaWYgKGZ1c2VDb21wYXJlQW5kSnVtcChvcF9qc3RyaWN0
ZXEsIGZhbHNlKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG1fbGFzdE9w
Y29kZUlEID09IG9wX2JlbG93ICYmIHRhcmdldC5pc0ZvcndhcmQoKSkgewotICAgICAgICBpZiAo
ZnVzZUNvbXBhcmVBbmRKdW1wPE9wQmVsb3csIE9wSmJlbG93ZXE+KGNvbmQsIHRhcmdldCwgdHJ1
ZSkpCisgICAgICAgIGlmIChmdXNlQ29tcGFyZUFuZEp1bXAob3BfamJlbG93ZXEsIHRydWUpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAobV9sYXN0T3Bjb2RlSUQgPT0gb3Bf
YmVsb3dlcSAmJiB0YXJnZXQuaXNGb3J3YXJkKCkpIHsKLSAgICAgICAgaWYgKGZ1c2VDb21wYXJl
QW5kSnVtcDxPcEJlbG93ZXEsIE9wSmJlbG93Pihjb25kLCB0YXJnZXQsIHRydWUpKQorICAgICAg
ICBpZiAoZnVzZUNvbXBhcmVBbmRKdW1wKG9wX2piZWxvdywgdHJ1ZSkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9ub3QpIHsKLSAgICAg
ICAgaWYgKGZ1c2VUZXN0QW5kSm1wPE9wTm90LCBPcEp0cnVlPihjb25kLCB0YXJnZXQpKQorICAg
ICAgICBpbnQgZHN0SW5kZXg7CisgICAgICAgIGludCBzcmNJbmRleDsKKworICAgICAgICByZXRy
aWV2ZUxhc3RVbmFyeU9wKGRzdEluZGV4LCBzcmNJbmRleCk7CisKKyAgICAgICAgaWYgKGNvbmQt
PmluZGV4KCkgPT0gZHN0SW5kZXggJiYgY29uZC0+aXNUZW1wb3JhcnkoKSAmJiAhY29uZC0+cmVm
Q291bnQoKSkgeworICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworCisgICAgICAgICAgICBz
aXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgICAgICAgICBlbWl0T3Bj
b2RlKG9wX2p0cnVlKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJbmRl
eCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LmJpbmQoYmVnaW4s
IGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9lcV9udWxsICYmIHRhcmdldC5p
c0ZvcndhcmQoKSkgewotICAgICAgICBpZiAoZnVzZVRlc3RBbmRKbXA8T3BFcU51bGwsIE9wSm5l
cU51bGw+KGNvbmQsIHRhcmdldCkpCisgICAgICAgIGludCBkc3RJbmRleDsKKyAgICAgICAgaW50
IHNyY0luZGV4OworCisgICAgICAgIHJldHJpZXZlTGFzdFVuYXJ5T3AoZHN0SW5kZXgsIHNyY0lu
ZGV4KTsKKworICAgICAgICBpZiAoY29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5p
c1RlbXBvcmFyeSgpICYmICFjb25kLT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRV
bmFyeU9wKCk7CisKKyAgICAgICAgICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNp
emUoKTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bfam5lcV9udWxsKTsKKyAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJbmRleCk7CisgICAgICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGFyZ2V0LmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNv
ZGVJRCA9PSBvcF9uZXFfbnVsbCAmJiB0YXJnZXQuaXNGb3J3YXJkKCkpIHsKLSAgICAgICAgaWYg
KGZ1c2VUZXN0QW5kSm1wPE9wTmVxTnVsbCwgT3BKZXFOdWxsPihjb25kLCB0YXJnZXQpKQorICAg
ICAgICBpbnQgZHN0SW5kZXg7CisgICAgICAgIGludCBzcmNJbmRleDsKKworICAgICAgICByZXRy
aWV2ZUxhc3RVbmFyeU9wKGRzdEluZGV4LCBzcmNJbmRleCk7CisKKyAgICAgICAgaWYgKGNvbmQt
PmluZGV4KCkgPT0gZHN0SW5kZXggJiYgY29uZC0+aXNUZW1wb3JhcnkoKSAmJiAhY29uZC0+cmVm
Q291bnQoKSkgeworICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworCisgICAgICAgICAgICBz
aXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgICAgICAgICBlbWl0T3Bj
b2RlKG9wX2plcV9udWxsKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJ
bmRleCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LmJpbmQoYmVn
aW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CiAgICAgfQogCi0gICAgT3BKZmFsc2U6OmVtaXQodGhpcywgY29uZCwgdGFyZ2V0LmJpbmQo
dGhpcykpOworICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBl
bWl0T3Bjb2RlKG9wX2pmYWxzZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQuYmluZChiZWdpbiwgaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRK
dW1wSWZOb3RGdW5jdGlvbkNhbGwoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIHsK
LSAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgU3BlY2lhbDo6Q2FsbEZ1bmN0aW9uLCB0
YXJnZXQuYmluZCh0aGlzKSk7CisgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpOworCisgICAgZW1pdE9wY29kZShvcF9qbmVxX3B0cik7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGNvbmQtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTcGVjaWFs
OjpDYWxsRnVuY3Rpb24pOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQuYmluZChi
ZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25B
cHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6
ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpBcHBseUZ1bmN0aW9uLCB0YXJnZXQuYmluZCh0aGlz
KSk7CisgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworCisgICAgZW1p
dE9wY29kZShvcF9qbmVxX3B0cik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTcGVjaWFsOjpBcHBseUZ1bmN0aW9u
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LmJpbmQoYmVnaW4sIGluc3RydWN0
aW9ucygpLnNpemUoKSkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKIH0KIAogYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6aGFzQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IGNvbnN0CkBAIC0xNTI0LDcgKzE2NDUsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6bW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbgogICAg
IGlmICghZHN0KQogICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2Nv
bnN0YW50SW5kZXhdOwogCi0gICAgT3BNb3Y6OmVtaXQodGhpcywgZHN0LCBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRleF0pOworICAgIGVtaXRPcGNvZGUob3BfbW92KTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdLT5p
bmRleCgpKTsKIAogICAgIHJldHVybiBkc3Q7CiB9CkBAIC0xNTMzLDggKzE2NTYsOSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bW92ZUVtcHR5VmFsdWUoUmVnaXN0ZXJJRCogZHN0
KQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBlbXB0eVZhbHVlID0gYWRkQ29uc3RhbnRFbXB0
eVZhbHVlKCk7CiAKLSAgICBPcE1vdjo6ZW1pdCh0aGlzLCBkc3QsIGVtcHR5VmFsdWUuZ2V0KCkp
OwotCisgICAgZW1pdE9wY29kZShvcF9tb3YpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbXB0eVZhbHVlLT5pbmRl
eCgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNTQyLDE3MCArMTY2NiwxNzMgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKQogewogICAgIEFTU0VSVChzcmMgIT0gbV9lbXB0eVZhbHVlUmVnaXN0ZXIp
OwogCi0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLm1vdihkc3QsIHNyYyk7Ci0gICAgT3BN
b3Y6OmVtaXQodGhpcywgZHN0LCBzcmMpOworICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5t
b3YoZHN0LT5pbmRleCgpLCBzcmMtPmluZGV4KCkpOworICAgIGVtaXRPcGNvZGUob3BfbW92KTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKIAogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcChPcGNvZGVJRCBvcGNvZGVJRCwg
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRUeXBlcyB0eXBlcykKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcChPcGNvZGVJRCBvcGNvZGVJ
RCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiB7Ci0gICAgc3dpdGNoIChvcGNv
ZGVJRCkgewotICAgIGNhc2Ugb3Bfbm90OgotICAgICAgICBlbWl0VW5hcnlPcDxPcE5vdD4oZHN0
LCBzcmMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIG9wX25lZ2F0ZToKLSAgICAgICAgT3BO
ZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGVzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBvcF90b19udW1iZXI6Ci0gICAgICAgIGVtaXRVbmFyeU9wPE9wVG9OdW1iZXI+KGRzdCwg
c3JjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uob3BfdG9fbnVtYmVyICE9
IG9wY29kZUlELCAib3BfdG9fbnVtYmVyIGhhcyBhIFZhbHVlIFByb2ZpbGUuIik7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShvcF9uZWdhdGUgIT0gb3Bjb2RlSUQsICJvcF9uZWdhdGUgaGFzIGFu
IEFyaXRoIFByb2ZpbGUuIik7CisgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNyYy0+aW5kZXgoKSk7CisKICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEJpbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlZ2lzdGVySUQqIHNyYzIsIE9wZXJhbmRUeXBlcyB0
eXBlcykKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcChPcGNvZGVJ
RCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRUeXBl
cyB0eXBlcykKIHsKLSAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF9lcToKLSAg
ICAgICAgcmV0dXJuIGVtaXRCaW5hcnlPcDxPcEVxPihkc3QsIHNyYzEsIHNyYzIsIHR5cGVzKTsK
LSAgICBjYXNlIG9wX25lcToKLSAgICAgICAgcmV0dXJuIGVtaXRCaW5hcnlPcDxPcE5lcT4oZHN0
LCBzcmMxLCBzcmMyLCB0eXBlcyk7Ci0gICAgY2FzZSBvcF9zdHJpY3RlcToKLSAgICAgICAgcmV0
dXJuIGVtaXRCaW5hcnlPcDxPcFN0cmljdGVxPihkc3QsIHNyYzEsIHNyYzIsIHR5cGVzKTsKLSAg
ICBjYXNlIG9wX25zdHJpY3RlcToKLSAgICAgICAgcmV0dXJuIGVtaXRCaW5hcnlPcDxPcE5zdHJp
Y3RlcT4oZHN0LCBzcmMxLCBzcmMyLCB0eXBlcyk7Ci0gICAgY2FzZSBvcF9sZXNzOgotICAgICAg
ICByZXR1cm4gZW1pdEJpbmFyeU9wPE9wTGVzcz4oZHN0LCBzcmMxLCBzcmMyLCB0eXBlcyk7Ci0g
ICAgY2FzZSBvcF9sZXNzZXE6Ci0gICAgICAgIHJldHVybiBlbWl0QmluYXJ5T3A8T3BMZXNzZXE+
KGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwotICAgIGNhc2Ugb3BfZ3JlYXRlcjoKLSAgICAgICAg
cmV0dXJuIGVtaXRCaW5hcnlPcDxPcEdyZWF0ZXI+KGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwot
ICAgIGNhc2Ugb3BfZ3JlYXRlcmVxOgotICAgICAgICByZXR1cm4gZW1pdEJpbmFyeU9wPE9wR3Jl
YXRlcmVxPihkc3QsIHNyYzEsIHNyYzIsIHR5cGVzKTsKLSAgICBjYXNlIG9wX2JlbG93OgotICAg
ICAgICByZXR1cm4gZW1pdEJpbmFyeU9wPE9wQmVsb3c+KGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMp
OwotICAgIGNhc2Ugb3BfYmVsb3dlcToKLSAgICAgICAgcmV0dXJuIGVtaXRCaW5hcnlPcDxPcEJl
bG93ZXE+KGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwotICAgIGNhc2Ugb3BfbW9kOgotICAgICAg
ICByZXR1cm4gZW1pdEJpbmFyeU9wPE9wTW9kPihkc3QsIHNyYzEsIHNyYzIsIHR5cGVzKTsKLSAg
ICBjYXNlIG9wX3BvdzoKLSAgICAgICAgcmV0dXJuIGVtaXRCaW5hcnlPcDxPcFBvdz4oZHN0LCBz
cmMxLCBzcmMyLCB0eXBlcyk7Ci0gICAgY2FzZSBvcF9sc2hpZnQ6Ci0gICAgICAgIHJldHVybiBl
bWl0QmluYXJ5T3A8T3BMc2hpZnQ+KGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwotICAgIGNhc2Ug
b3BfcnNoaWZ0OgotICAgICAgICByZXR1cm4gZW1pdEJpbmFyeU9wPE9wUnNoaWZ0Pihkc3QsIHNy
YzEsIHNyYzIsIHR5cGVzKTsKLSAgICBjYXNlIG9wX3Vyc2hpZnQ6Ci0gICAgICAgIHJldHVybiBl
bWl0QmluYXJ5T3A8T3BVcnNoaWZ0Pihkc3QsIHNyYzEsIHNyYzIsIHR5cGVzKTsKLSAgICBjYXNl
IG9wX2FkZDoKLSAgICAgICAgcmV0dXJuIGVtaXRCaW5hcnlPcDxPcEFkZD4oZHN0LCBzcmMxLCBz
cmMyLCB0eXBlcyk7Ci0gICAgY2FzZSBvcF9tdWw6Ci0gICAgICAgIHJldHVybiBlbWl0QmluYXJ5
T3A8T3BNdWw+KGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwotICAgIGNhc2Ugb3BfZGl2OgotICAg
ICAgICByZXR1cm4gZW1pdEJpbmFyeU9wPE9wRGl2Pihkc3QsIHNyYzEsIHNyYzIsIHR5cGVzKTsK
LSAgICBjYXNlIG9wX3N1YjoKLSAgICAgICAgcmV0dXJuIGVtaXRCaW5hcnlPcDxPcFN1Yj4oZHN0
LCBzcmMxLCBzcmMyLCB0eXBlcyk7Ci0gICAgY2FzZSBvcF9iaXRhbmQ6Ci0gICAgICAgIHJldHVy
biBlbWl0QmluYXJ5T3A8T3BCaXRhbmQ+KGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwotICAgIGNh
c2Ugb3BfYml0eG9yOgotICAgICAgICByZXR1cm4gZW1pdEJpbmFyeU9wPE9wQml0eG9yPihkc3Qs
IHNyYzEsIHNyYzIsIHR5cGVzKTsKLSAgICBjYXNlIG9wX2JpdG9yOgotICAgICAgICByZXR1cm4g
ZW1pdEJpbmFyeU9wPE9wQml0b3I+KGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci19CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShvcF90b19udW1iZXIgIT0gb3Bj
b2RlSUQsICJvcF90b19udW1iZXIgaGFzIGEgVmFsdWUgUHJvZmlsZS4iKTsKKyAgICBlbWl0T3Bj
b2RlKG9wY29kZUlEKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb09iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYywgY29uc3QgSWRlbnRpZmllciYgbWVzc2FnZSkKLXsKLSAgICBPcFRvT2JqZWN0Ojpl
bWl0KHRoaXMsIGRzdCwgc3JjLCBhZGRDb25zdGFudChtZXNzYWdlKSk7CisgICAgaWYgKG9wY29k
ZUlEID09IG9wX25lZ2F0ZSkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEFyaXRoUHJv
ZmlsZSh0eXBlcy5maXJzdCgpKS5iaXRzKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9OdW1iZXIoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzcmMpCi17Ci0gICAgcmV0dXJuIGVtaXRVbmFyeU9wPE9wVG9OdW1iZXI+KGRz
dCwgc3JjKTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1N0cmlu
ZyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKK1JlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0VW5hcnlPcFByb2ZpbGVkKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKIHsKLSAgICByZXR1cm4gZW1pdFVuYXJ5T3A8T3BU
b1N0cmluZz4oZHN0LCBzcmMpOworICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBl
bWl0UHJvZmlsZWRPcGNvZGUob3Bjb2RlSUQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMtPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAgICByZXR1cm4gZHN0OwogfQog
Ci1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFR5cGVPZihSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYykKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
VG9PYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIGNvbnN0IElkZW50aWZp
ZXImIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIGVtaXRVbmFyeU9wPE9wVHlwZW9mPihkc3QsIHNy
Yyk7CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29k
ZShvcF90b19vYmplY3QpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMtPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChtZXNzYWdlKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHByb2ZpbGUpOworICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SW5jKFJlZ2lzdGVySUQqIHNyY0RzdCkKIHsKLSAgICBPcEluYzo6
ZW1pdCh0aGlzLCBzcmNEc3QpOworICAgIGVtaXRPcGNvZGUob3BfaW5jKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoc3JjRHN0LT5pbmRleCgpKTsKICAgICByZXR1cm4gc3JjRHN0OwogfQog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYyhSZWdpc3RlcklEKiBzcmNE
c3QpCiB7Ci0gICAgT3BEZWM6OmVtaXQodGhpcywgc3JjRHN0KTsKKyAgICBlbWl0T3Bjb2RlKG9w
X2RlYyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyY0RzdC0+aW5kZXgoKSk7CiAgICAg
cmV0dXJuIHNyY0RzdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRXFPcD4KLVJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHNyYzEsIFJlZ2lzdGVySUQqIHNyYzIpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEJpbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYzEsIFJlZ2lzdGVySUQqIHNyYzIsIE9wZXJhbmRUeXBlcyB0eXBlcykKK3sK
KworICAgIGlmIChvcGNvZGVJRCA9PSBvcF9iaXRhbmQgfHwgb3Bjb2RlSUQgPT0gb3BfYml0b3Ip
IHsKKyAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9w
Y29kZShvcGNvZGVJRCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMS0+aW5kZXgoKSk7CisgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOworICAgICAgICByZXR1cm4gZHN0OworICAgIH0KKwor
ICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMxLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMi0+aW5kZXgoKSk7CisKKyAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfYml0eG9yIHx8IG9wY29kZUlEID09IG9wX2FkZCB8fAorICAgICAgICBvcGNvZGVJ
RCA9PSBvcF9tdWwgfHwgb3Bjb2RlSUQgPT0gb3Bfc3ViIHx8IG9wY29kZUlEID09IG9wX2RpdikK
KyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEFyaXRoUHJvZmlsZSh0eXBlcy5maXJzdCgp
LCB0eXBlcy5zZWNvbmQoKSkuYml0cygpKTsKKworICAgIHJldHVybiBkc3Q7Cit9CisKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcChPcGNvZGVJRCBvcGNvZGVJ
RCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyKQog
ewotICAgIGlmIChtX2xhc3RJbnN0cnVjdGlvbi0+aXM8T3BUeXBlb2Y+KCkpIHsKLSAgICAgICAg
YXV0byBvcCA9IG1fbGFzdEluc3RydWN0aW9uLT5hczxPcFR5cGVvZj4oKTsKLSAgICAgICAgaWYg
KHNyYzEtPmluZGV4KCkgPT0gb3AuZHN0Lm9mZnNldCgpCisgICAgaWYgKG1fbGFzdE9wY29kZUlE
ID09IG9wX3R5cGVvZikgeworICAgICAgICBpbnQgZHN0SW5kZXg7CisgICAgICAgIGludCBzcmNJ
bmRleDsKKworICAgICAgICByZXRyaWV2ZUxhc3RVbmFyeU9wKGRzdEluZGV4LCBzcmNJbmRleCk7
CisKKyAgICAgICAgaWYgKHNyYzEtPmluZGV4KCkgPT0gZHN0SW5kZXgKICAgICAgICAgICAgICYm
IHNyYzEtPmlzVGVtcG9yYXJ5KCkKICAgICAgICAgICAgICYmIG1fY29kZUJsb2NrLT5pc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChzcmMyLT5pbmRleCgpKQogICAgICAgICAgICAgJiYgbV9jb2RlQmxv
Y2stPmNvbnN0YW50UmVnaXN0ZXIoc3JjMi0+aW5kZXgoKSkuZ2V0KCkuaXNTdHJpbmcoKSkgewog
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGFzU3RyaW5nKG1fY29kZUJsb2NrLT5j
b25zdGFudFJlZ2lzdGVyKHNyYzItPmluZGV4KCkpLmdldCgpKS0+dHJ5R2V0VmFsdWUoKTsKICAg
ICAgICAgICAgIGlmICh2YWx1ZSA9PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgICAgIHJl
d2luZCgpOwotICAgICAgICAgICAgICAgIE9wSXNVbmRlZmluZWQ6OmVtaXQodGhpcywgZHN0LCBv
cC52YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworICAgICAgICAgICAg
ICAgIGVtaXRPcGNvZGUob3BfaXNfdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoc3JjSW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gImJvb2xlYW4iKSB7Ci0gICAgICAg
ICAgICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgT3BJc0Jvb2xlYW46OmVtaXQodGhp
cywgZHN0LCBvcC52YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworICAg
ICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfaXNfYm9vbGVhbik7CisgICAgICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHNyY0luZGV4KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZHN0
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJudW1iZXIiKSB7Ci0g
ICAgICAgICAgICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgT3BJc051bWJlcjo6ZW1p
dCh0aGlzLCBkc3QsIG9wLnZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7
CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19udW1iZXIpOworICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgICAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJbmRleCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGRzdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAic3RyaW5nIikg
ewotICAgICAgICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0
aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC52YWx1ZSwgU3RyaW5nVHlwZSk7CisgICAgICAgICAg
ICAgICAgcmV3aW5kVW5hcnlPcCgpOworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfaXNf
Y2VsbF93aXRoX3R5cGUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJ
bmRleCk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFN0cmluZ1R5cGUp
OwogICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAodmFsdWUgPT0gInN5bWJvbCIpIHsKLSAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAg
ICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AudmFsdWUs
IFN5bWJvbFR5cGUpOworICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3AoKTsKKyAgICAgICAg
ICAgICAgICBlbWl0T3Bjb2RlKG9wX2lzX2NlbGxfd2l0aF90eXBlKTsKKyAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjSW5kZXgpOworICAgICAgICAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChTeW1ib2xUeXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZHN0Owog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIHZh
bHVlID09ICJiaWdpbnQiKSB7Ci0gICAgICAgICAgICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAg
ICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLnZhbHVlLCBCaWdJbnRU
eXBlKTsKKyAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CisgICAgICAgICAgICAgICAg
ZW1pdE9wY29kZShvcF9pc19jZWxsX3dpdGhfdHlwZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHNyY0luZGV4KTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoQmlnSW50VHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAib2JqZWN0IikgewotICAgICAgICAgICAg
ICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAgIE9wSXNPYmplY3RPck51bGw6OmVtaXQodGhp
cywgZHN0LCBvcC52YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworICAg
ICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfaXNfb2JqZWN0X29yX251bGwpOworICAgICAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJbmRleCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGRzdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAiZnVuY3Rp
b24iKSB7Ci0gICAgICAgICAgICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgT3BJc0Z1
bmN0aW9uOjplbWl0KHRoaXMsIGRzdCwgb3AudmFsdWUpOworICAgICAgICAgICAgICAgIHJld2lu
ZFVuYXJ5T3AoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2lzX2Z1bmN0aW9uKTsK
KyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAg
ICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjSW5kZXgpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBFcU9wOjplbWl0KHRoaXMsIGRzdCwgc3JjMSwgc3JjMik7CisgICAgZW1pdE9wY29kZShvcGNv
ZGVJRCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzEtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChzcmMyLT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNzI3LDcgKzE4
NTQsMTIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVUeXBlKFJlZ2lzdGVy
SUQqIHJlZ2lzdGVyVG9Qcm9maWxlLCBQcm9maWxlVHkKICAgICBpZiAoIXJlZ2lzdGVyVG9Qcm9m
aWxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcFByb2ZpbGVUeXBlOjplbWl0KHRoaXMsIHJl
Z2lzdGVyVG9Qcm9maWxlLCAwLCBmbGFnLCB7IH0sIHJlc29sdmVUeXBlKCkpOworICAgIGVtaXRP
cGNvZGUob3BfcHJvZmlsZV90eXBlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0
ZXJUb1Byb2ZpbGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmxhZyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlVHlwZSgpKTsKIAogICAgIC8v
IERvbid0IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHZlcnNpb24gb2YgcHJvZmlsZSB0
eXBlLiBUaGlzIGdlbmVyYWxseSBtZWFucwogICAgIC8vIHdlJ3JlIHByb2ZpbGluZyBpbmZvcm1h
dGlvbiBmb3Igc29tZXRoaW5nIHRoYXQgaXNuJ3QgaW4gdGhlIGFjdHVhbCB0ZXh0IG9mIGEgSmF2
YVNjcmlwdApAQCAtMTc0Nyw3ICsxODc5LDE0IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcm9maWxlVHlwZShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwgUHJvZmlsZVR5CiAg
ICAgaWYgKCFyZWdpc3RlclRvUHJvZmlsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3BQcm9m
aWxlVHlwZTo6ZW1pdCh0aGlzLCByZWdpc3RlclRvUHJvZmlsZSwgMCwgIGZsYWcsIHsgfSwgcmVz
b2x2ZVR5cGUoKSk7CisgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3RydWN0aW9uIGlzOiBv
cF9wcm9maWxlX3R5cGUgcmVnVG9Qcm9maWxlLCBUeXBlTG9jYXRpb24qLCBmbGFnLCBpZGVudGlm
aWVyPywgcmVzb2x2ZVR5cGU/CisgICAgZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGUpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChyZWdpc3RlclRvUHJvZmlsZS0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmbGFn
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHJlc29sdmVUeXBlKCkpOworCiAgICAgZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZv
KHN0YXJ0RGl2b3QsIGVuZERpdm90KTsKIH0KIApAQCAtMTc3MCw3ICsxOTA5LDE0IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZShSZWdpc3RlcklEKiByZWdpc3RlclRv
UHJvZmlsZSwgY29uc3QgVmFyCiAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gbG9j
YWxTY29wZURlcHRoKCk7CiAgICAgfQogCi0gICAgT3BQcm9maWxlVHlwZTo6ZW1pdCh0aGlzLCBy
ZWdpc3RlclRvUHJvZmlsZSwgc3ltYm9sVGFibGVPclNjb3BlRGVwdGgsIGZsYWcsIGFkZENvbnN0
YW50KHZhci5pZGVudCgpKSwgcmVzb2x2ZVR5cGUoKSk7CisgICAgLy8gVGhlIGZvcm1hdCBvZiB0
aGlzIGluc3RydWN0aW9uIGlzOiBvcF9wcm9maWxlX3R5cGUgcmVnVG9Qcm9maWxlLCBUeXBlTG9j
YXRpb24qLCBmbGFnLCBpZGVudGlmaWVyPywgcmVzb2x2ZVR5cGU/CisgICAgZW1pdE9wY29kZShv
cF9wcm9maWxlX3R5cGUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZWdpc3RlclRvUHJv
ZmlsZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHN5bWJvbFRhYmxlT3JT
Y29wZURlcHRoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmxhZyk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHZhci5pZGVudCgpKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHJlc29sdmVUeXBlKCkpOworCiAgICAgZW1pdFR5cGVQcm9maWxlckV4cHJl
c3Npb25JbmZvKHN0YXJ0RGl2b3QsIGVuZERpdm90KTsKIH0KIApAQCAtMTc4MSw3ICsxOTI3LDgg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVDb250cm9sRmxvdyhpbnQgdGV4
dE9mZnNldCkKICAgICAgICAgc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpOwogICAgICAgICBtX2NvZGVCbG9jay0+YWRkT3BQcm9maWxlQ29udHJvbEZsb3dCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAKLSAgICAgICAgT3BQcm9maWxlQ29udHJvbEZs
b3c6OmVtaXQodGhpcywgdGV4dE9mZnNldCk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfcHJvZmls
ZV9jb250cm9sX2Zsb3cpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGV4dE9mZnNl
dCk7CiAgICAgfQogfQogCkBAIC0xOTgwLDcgKzIxMjcsMTEgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6cHVzaExleGljYWxTY29wZUludGVybmFsKFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmly
b25tZW4KICAgICAgICAgaWYgKGNvbnN0YW50U3ltYm9sVGFibGVSZXN1bHQpCiAgICAgICAgICAg
ICAqY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IGNvbnN0YW50U3ltYm9sVGFibGU7CiAKLSAg
ICAgICAgT3BDcmVhdGVMZXhpY2FsRW52aXJvbm1lbnQ6OmVtaXQodGhpcywgbmV3U2NvcGUsIHNj
b3BlUmVnaXN0ZXIoKSwgVmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4
IH0sIGFkZENvbnN0YW50VmFsdWUodGR6UmVxdWlyZW1lbnQgPT0gVERaUmVxdWlyZW1lbnQ6OlVu
ZGVyVERaID8ganNURFpWYWx1ZSgpIDoganNVbmRlZmluZWQoKSkpOworICAgICAgICBlbWl0T3Bj
b2RlKG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG5ld1Njb3BlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUodGR6UmVxdWlyZW1lbnQgPT0gVERaUmVxdWlyZW1l
bnQ6OlVuZGVyVERaID8ganNURFpWYWx1ZSgpIDoganNVbmRlZmluZWQoKSktPmluZGV4KCkpOwog
CiAgICAgICAgIG1vdmUoc2NvcGVSZWdpc3RlcigpLCBuZXdTY29wZSk7CiAKQEAgLTIxMTEsNyAr
MjI2MiwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVTY29w
ZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoUmVnaXN0ZQogICAgIEFTU0VSVChtX2NvZGVUeXBl
ID09IEV2YWxDb2RlKTsKIAogICAgIGRzdCA9IGZpbmFsRGVzdGluYXRpb24oZHN0KTsKLSAgICBP
cFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6OmVtaXQodGhpcywga2lsbChk
c3QpLCBtX3RvcE1vc3RTY29wZSwgYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBlbWl0T3Bj
b2RlKG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV90b3BNb3N0U2NvcGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTIyMDks
NyArMjM2MywxMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVwYXJlTGV4aWNhbFNjb3Bl
Rm9yTmV4dEZvckxvb3BJdGVyYXRpb24oVmFyaWFibGVFbnZpcgogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwYXJlbnRTY29wZSA9IGVtaXRHZXRQYXJlbnRTY29wZShuZXdUZW1wb3JhcnkoKSwgbG9v
cFNjb3BlKTsKICAgICBtb3ZlKHNjb3BlUmVnaXN0ZXIoKSwgcGFyZW50U2NvcGUuZ2V0KCkpOwog
Ci0gICAgT3BDcmVhdGVMZXhpY2FsRW52aXJvbm1lbnQ6OmVtaXQodGhpcywgbG9vcFNjb3BlLCBz
Y29wZVJlZ2lzdGVyKCksIGxvb3BTeW1ib2xUYWJsZSwgYWRkQ29uc3RhbnRWYWx1ZShqc1REWlZh
bHVlKCkpKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobG9vcFNjb3BlLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobG9vcFN5bWJvbFRhYmxlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShqc1REWlZhbHVlKCkpLT5pbmRleCgpKTsKIAog
ICAgIG1vdmUoc2NvcGVSZWdpc3RlcigpLCBsb29wU2NvcGUpOwogCkBAIC0yMzM0LDcgKzI0OTIs
MTAgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlVmFyaWFibGUoCiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogaGFzSW5zdGFuY2VW
YWx1ZSkKIHsKLSAgICBPcE92ZXJyaWRlc0hhc0luc3RhbmNlOjplbWl0KHRoaXMsIGRzdCwgY29u
c3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpOworICAgIGVtaXRPcGNvZGUob3Bfb3ZlcnJpZGVz
X2hhc19pbnN0YW5jZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbnN0cnVjdG9yLT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoaGFzSW5zdGFuY2VWYWx1ZS0+aW5kZXgoKSk7CiAgICAgcmV0
dXJuIGRzdDsKIH0KIApAQCAtMjM5OSw3ICsyNTYwLDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFi
bGUmCiAgICAgICAgIAogICAgICAgICAvLyByZXNvbHZlX3Njb3BlIGRzdCwgaWQsIFJlc29sdmVU
eXBlLCBkZXB0aAogICAgICAgICBkc3QgPSB0ZW1wRGVzdGluYXRpb24oZHN0KTsKLSAgICAgICAg
T3BSZXNvbHZlU2NvcGU6OmVtaXQodGhpcywga2lsbChkc3QpLCBzY29wZVJlZ2lzdGVyKCksIGFk
ZENvbnN0YW50KHZhcmlhYmxlLmlkZW50KCkpLCByZXNvbHZlVHlwZSgpLCBsb2NhbFNjb3BlRGVw
dGgoKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfcmVzb2x2ZV9zY29wZSk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFkZENvbnN0YW50KHZhcmlhYmxlLmlkZW50KCkpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHJlc29sdmVUeXBlKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobG9jYWxTY29wZURlcHRoKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CiAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgfQogICAgIApAQCAtMjQxNCw3ICsyNTgxLDExIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnJvbVNjb3BlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvCiAgICAgICAgIHJldHVybiBtb3ZlKGRzdCwgdmFyaWFi
bGUubG9jYWwoKSk7CiAgICAgICAgIAogICAgIGNhc2UgVmFyS2luZDo6RGlyZWN0QXJndW1lbnQ6
IHsKLSAgICAgICAgT3BHZXRGcm9tQXJndW1lbnRzOjplbWl0KHRoaXMsIGtpbGwoZHN0KSwgc2Nv
cGUsIHZhcmlhYmxlLm9mZnNldCgpLmNhcHR1cmVkQXJndW1lbnRzT2Zmc2V0KCkub2Zmc2V0KCkp
OworICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bj
b2RlKG9wX2dldF9mcm9tX2FyZ3VtZW50cyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChraWxsKGRzdCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4
KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFyaWFibGUub2Zmc2V0KCkuY2Fw
dHVyZWRBcmd1bWVudHNPZmZzZXQoKS5vZmZzZXQoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJuIGRzdDsKICAgICB9CiAgICAgICAgIApA
QCAtMjQyMywxNCArMjU5NCwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjbwogICAgICAgICBt
X2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwogICAgICAgICAKICAgICAgICAgLy8gZ2V0X2Zyb21fc2NvcGUgZHN0LCBzY29wZSwg
aWQsIEdldFB1dEluZm8sIFN0cnVjdHVyZSwgT3BlcmFuZAotICAgICAgICBPcEdldEZyb21TY29w
ZTo6ZW1pdCgKLSAgICAgICAgICAgIHRoaXMsCi0gICAgICAgICAgICBraWxsKGRzdCksCi0gICAg
ICAgICAgICBzY29wZSwKLSAgICAgICAgICAgIGFkZENvbnN0YW50KHZhcmlhYmxlLmlkZW50KCkp
LAotICAgICAgICAgICAgR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgdmFyaWFibGUub2Zmc2V0KCku
aXNTY29wZSgpID8gTG9jYWxDbG9zdXJlVmFyIDogcmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksCi0gICAgICAgICAgICBsb2NhbFNjb3BlRGVwdGgo
KSwKLSAgICAgICAgICAgIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IHZhcmlhYmxlLm9m
ZnNldCgpLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgOiAwKTsKKyAgICAgICAgVW5saW5rZWRWYWx1
ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfZnJvbV9zY29wZSk7
CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnQodmFyaWFibGUuaWRlbnQoKSkpOworICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgdmFyaWFibGUub2Zmc2V0KCku
aXNTY29wZSgpID8gTG9jYWxDbG9zdXJlVmFyIDogcmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGxvY2FsU2NvcGVEZXB0aCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IHZhcmlhYmxlLm9mZnNldCgpLnNj
b3BlT2Zmc2V0KCkub2Zmc2V0KCkgOiAwKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb2ZpbGUpOwogICAgICAgICByZXR1cm4gZHN0OwogICAgIH0gfQogICAgIApAQCAtMjQ0NSw3
ICsyNjE2LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29w
ZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmCiAgICAgICAgIHJldHVybiB2YWx1
ZTsKICAgICAgICAgCiAgICAgY2FzZSBWYXJLaW5kOjpEaXJlY3RBcmd1bWVudDoKLSAgICAgICAg
T3BQdXRUb0FyZ3VtZW50czo6ZW1pdCh0aGlzLCBzY29wZSwgdmFyaWFibGUub2Zmc2V0KCkuY2Fw
dHVyZWRBcmd1bWVudHNPZmZzZXQoKS5vZmZzZXQoKSwgdmFsdWUpOworICAgICAgICBlbWl0T3Bj
b2RlKG9wX3B1dF90b19hcmd1bWVudHMpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
c2NvcGUtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFyaWFibGUu
b2Zmc2V0KCkuY2FwdHVyZWRBcmd1bWVudHNPZmZzZXQoKS5vZmZzZXQoKSk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB2YWx1
ZTsKICAgICAgICAgCiAgICAgY2FzZSBWYXJLaW5kOjpTY29wZToKQEAgLTI0NTMsMTkgKzI2Mjcs
MjEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKFJlZ2lz
dGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJsZSYKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAgICAg
CiAgICAgICAgIC8vIHB1dF90b19zY29wZSBzY29wZSwgaWQsIHZhbHVlLCBHZXRQdXRJbmZvLCBT
dHJ1Y3R1cmUsIE9wZXJhbmQKLSAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvKDApOwotICAg
ICAgICBpbnQgc2NvcGVEZXB0aDsKKyAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfdG9fc2NvcGUp
OworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4KCkpOworICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQodmFyaWFibGUuaWRlbnQoKSkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgICAgICBT
Y29wZU9mZnNldCBvZmZzZXQ7CiAgICAgICAgIGlmICh2YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3Bl
KCkpIHsKICAgICAgICAgICAgIG9mZnNldCA9IHZhcmlhYmxlLm9mZnNldCgpLnNjb3BlT2Zmc2V0
KCk7Ci0gICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgTG9j
YWxDbG9zdXJlVmFyLCBpbml0aWFsaXphdGlvbk1vZGUpOwotICAgICAgICAgICAgc2NvcGVEZXB0
aCA9IHZhcmlhYmxlLnN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCgpOworICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIExvY2FsQ2xvc3VyZVZh
ciwgaW5pdGlhbGl6YXRpb25Nb2RlKS5vcGVyYW5kKCkpOworICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHZhcmlhYmxlLnN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCgpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlVHlwZSgpICE9IExvY2FsQ2xv
c3VyZVZhcik7Ci0gICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9k
ZSwgcmVzb2x2ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKLSAgICAgICAgICAgIHNjb3Bl
RGVwdGggPSBsb2NhbFNjb3BlRGVwdGgoKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSgpLCBpbml0aWFsaXphdGlv
bk1vZGUpLm9wZXJhbmQoKSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobG9j
YWxTY29wZURlcHRoKCkpOwogICAgICAgICB9Ci0gICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0
aGlzLCBzY29wZSwgYWRkQ29uc3RhbnQodmFyaWFibGUuaWRlbnQoKSksIHZhbHVlLCBnZXRQdXRJ
bmZvLCBzY29wZURlcHRoLCAhIW9mZnNldCA/IG9mZnNldC5vZmZzZXQoKSA6IDApOworICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoISFvZmZzZXQgPyBvZmZzZXQub2Zmc2V0KCkgOiAwKTsK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0gfQogICAgIApAQCAtMjQ4MSwyNSArMjY1Nyw0
MCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVZhcmlhYmxlKGNv
bnN0IFZhcmlhYmxlJiB2YXJpYWJsZSwgUmVnaQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEluc3RhbmNlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwg
UmVnaXN0ZXJJRCogYmFzZVByb3RvdHlwZSkKIHsKLSAgICBPcEluc3RhbmNlb2Y6OmVtaXQodGhp
cywgZHN0LCB2YWx1ZSwgYmFzZVByb3RvdHlwZSk7CisgICAgZW1pdE9wY29kZShvcF9pbnN0YW5j
ZW9mKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChiYXNlUHJvdG90eXBlLT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbmNlT2ZDdXN0b20oUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lz
dGVySUQqIGhhc0luc3RhbmNlVmFsdWUpCiB7Ci0gICAgT3BJbnN0YW5jZW9mQ3VzdG9tOjplbWl0
KHRoaXMsIGRzdCwgdmFsdWUsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKTsKKyAgICBl
bWl0T3Bjb2RlKG9wX2luc3RhbmNlb2ZfY3VzdG9tKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb25zdHJ1Y3Rvci0+aW5kZXgoKSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGhhc0luc3RhbmNlVmFsdWUtPmluZGV4KCkpOwogICAg
IHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5C
eVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBi
YXNlKQogewotICAgIE9wSW5CeVZhbDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsK
KyAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUo
KTsKKyAgICBlbWl0T3Bjb2RlKG9wX2luX2J5X3ZhbCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CiAgICAgcmV0dXJuIGRzdDsKIH0K
IAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbkJ5SWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAg
ICBPcEluQnlJZDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CisgICAgZW1pdE9wY29kZShvcF9pbl9ieV9pZCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAg
IHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1MDcsNyArMjY5OCwxMSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFRyeUdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLAogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkp
LCAiSW5kZXhlZCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdHJ5R2V0QnlJZC4i
KTsKIAotICAgIE9wVHJ5R2V0QnlJZDo6ZW1pdCh0aGlzLCBraWxsKGRzdCksIGJhc2UsIGFkZENv
bnN0YW50KHByb3BlcnR5KSk7CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVt
aXRQcm9maWxlZE9wY29kZShvcF90cnlfZ2V0X2J5X2lkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoa2lsbChkc3QpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgo
KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIHJldHVybiBkc3Q7CiB9CiAK
QEAgLTI1MTcsNyArMjcxMiwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjbwogCiAgICAgbV9j
b2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKIAotICAgIE9wR2V0QnlJZDo6ZW1pdCh0aGlzLCBraWxsKGRzdCksIGJhc2UsIGFkZENv
bnN0YW50KHByb3BlcnR5KSk7CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVt
aXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChraWxsKGRzdCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
T3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JMTEludENhY2hpbmcoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1MjUs
NyArMjcyOCwxMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZQogewogICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVzIHNob3Vs
ZCBiZSBoYW5kbGVkIHdpdGggZ2V0X2J5X3ZhbC4iKTsKIAotICAgIE9wR2V0QnlJZFdpdGhUaGlz
OjplbWl0KHRoaXMsIGtpbGwoZHN0KSwgYmFzZSwgdGhpc1ZhbCwgYWRkQ29uc3RhbnQocHJvcGVy
dHkpKTsKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bj
b2RlKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChr
aWxsKGRzdCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHByb2ZpbGUpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1MzUsNyArMjc0Mywx
MyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5SWQoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYQogCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotICAgIE9wR2V0
QnlJZERpcmVjdDo6ZW1pdCh0aGlzLCBraWxsKGRzdCksIGJhc2UsIGFkZENvbnN0YW50KHByb3Bl
cnR5KSk7CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9w
Y29kZShvcF9nZXRfYnlfaWRfZGlyZWN0KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2ls
bChkc3QpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAt
MjU0NSwxMSArMjc1OSwxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcAogCiAgICAgdW5zaWdu
ZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsKIAotICAgIG1fc3RhdGlj
UHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UsIHByb3BlcnR5SW5kZXgpOworICAgIG1fc3Rh
dGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UtPmluZGV4KCksIHByb3BlcnR5SW5kZXgp
OwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKIAotICAgIE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9w
ZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJZE5vbmUpOyAvLyBpcyBub3QgZGlyZWN0CisgICAgZW1p
dE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlJbmRleCk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7IC8vIG9sZCBzdHJ1Y3R1cmUKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7IC8vIG9mZnNldAorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gbmV3IHN0cnVj
dHVyZQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gc3RydWN0dXJlIGNoYWluCisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHN0YXRpY19jYXN0PGludD4oUHV0QnlJZE5vbmUpKTsg
Ly8gaXMgbm90IGRpcmVjdAogCiAgICAgcmV0dXJuIHZhbHVlOwogfQpAQCAtMjU2MCw3ICsyNzgy
LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsCiAKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUlu
ZGV4ID0gYWRkQ29uc3RhbnQocHJvcGVydHkpOwogCi0gICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVt
aXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSk7CisgICAgZW1p
dE9wY29kZShvcF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYmFzZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNWYWx1ZS0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5SW5kZXgpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAKICAgICByZXR1cm4gdmFs
dWU7CiB9CkBAIC0yNTcxLDQ4ICsyNzk3LDc2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmCiAK
ICAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJvcGVydHkpOwogCi0g
ICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZSwgcHJvcGVydHlJbmRleCk7
CisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZS0+aW5kZXgoKSwgcHJv
cGVydHlJbmRleCk7CiAKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIFB1dEJ5SWRGbGFncyB0eXBl
ID0gKHB1dFR5cGUgPT0gUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCB8fCBwcm9wZXJ0eSAhPSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pID8gUHV0QnlJZElzRGlyZWN0IDog
UHV0QnlJZE5vbmU7Ci0gICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5k
ZXgsIHZhbHVlLCB0eXBlKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChwcm9wZXJ0eUluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gb2xkIHN0cnVjdHVyZQor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gb2Zmc2V0CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKDApOyAvLyBuZXcgc3RydWN0dXJlCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOyAvLyBzdHJ1Y3R1cmUgY2hhaW4gKHVudXNlZCBpZiBkaXJlY3QpCisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHN0YXRpY19jYXN0PGludD4oKHB1dFR5cGUgPT0gUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCB8fCBwcm9wZXJ0eSAhPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3Jl
UHJvdG8pID8gUHV0QnlJZElzRGlyZWN0IDogUHV0QnlJZE5vbmUpKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRHZXR0ZXJCeUlkKFJlZ2lz
dGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBSZWdpc3RlcklEKiBnZXR0ZXIpCiB7CiAgICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9
IGFkZENvbnN0YW50KHByb3BlcnR5KTsKLSAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0
QnlJZChiYXNlLCBwcm9wZXJ0eUluZGV4KTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIu
cHV0QnlJZChiYXNlLT5pbmRleCgpLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0R2V0dGVy
QnlJZDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4LCBhdHRyaWJ1dGVzLCBnZXR0ZXIp
OworICAgIGVtaXRPcGNvZGUob3BfcHV0X2dldHRlcl9ieV9pZCk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9w
ZXJ0eUluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXR0cmlidXRlcyk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldHRlci0+aW5kZXgoKSk7CiB9CiAKIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRTZXR0ZXJCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBSZWdpc3RlcklEKiBzZXR0
ZXIpCiB7CiAgICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5
KTsKLSAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLCBwcm9wZXJ0eUlu
ZGV4KTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLT5pbmRleCgp
LCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0U2V0dGVyQnlJZDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eUluZGV4LCBhdHRyaWJ1dGVzLCBzZXR0ZXIpOworICAgIGVtaXRPcGNvZGUob3Bf
cHV0X3NldHRlcl9ieV9pZCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eUluZGV4KTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYXR0cmlidXRlcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNldHRlci0+aW5kZXgoKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRH
ZXR0ZXJTZXR0ZXIoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHks
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFJlZ2lzdGVySUQqIGdldHRlciwgUmVnaXN0ZXJJRCogc2V0
dGVyKQogewogICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFudChwcm9wZXJ0
eSk7CiAKLSAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLCBwcm9wZXJ0
eUluZGV4KTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLT5pbmRl
eCgpLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0R2V0dGVyU2V0dGVyQnlJZDo6ZW1pdCh0
aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4LCBhdHRyaWJ1dGVzLCBnZXR0ZXIsIHNldHRlcik7Cisg
ICAgZW1pdE9wY29kZShvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChw
cm9wZXJ0eUluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXR0cmlidXRlcyk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldHRlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHNldHRlci0+aW5kZXgoKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRHZXR0ZXJCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSwgdW5zaWduZWQgYXR0cmlidXRlcywgUmVnaXN0ZXJJRCogZ2V0dGVyKQogewotICAgIE9w
UHV0R2V0dGVyQnlWYWw6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIGF0dHJpYnV0ZXMsIGdl
dHRlcik7CisgICAgZW1pdE9wY29kZShvcF9wdXRfZ2V0dGVyX2J5X3ZhbCk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGF0dHJpYnV0
ZXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZXR0ZXItPmluZGV4KCkpOwogfQogCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFJlZ2lzdGVySUQq
IHNldHRlcikKIHsKLSAgICBPcFB1dFNldHRlckJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCBhdHRyaWJ1dGVzLCBzZXR0ZXIpOworICAgIGVtaXRPcGNvZGUob3BfcHV0X3NldHRlcl9i
eV92YWwpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhdHRyaWJ1dGVzKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0dGVy
LT5pbmRleCgpKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdlbmVyYXRv
ckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCkBAIC0yNjUzLDEzICsyOTA3LDE1IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRBc3luY0dlbmVyYXRvckZpZWxkcyhSZWdp
c3RlcklEKiBuZXh0RnVuY3Rpb24pCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGVsZXRlQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlJZDo6ZW1pdCh0aGlzLCBkc3QsIGJh
c2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgZW1pdE9wY29kZShvcF9kZWxfYnlfaWQp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YWRkQ29uc3RhbnQocHJvcGVydHkpKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7Ci0gICAgYm9vbCBmb3JjZVdpZGUg
PSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gbV9mb3JJbkNvbnRleHRTdGFjay5zaXplKCk7
IGktLTsgKSB7CiAgICAgICAgIEZvckluQ29udGV4dCYgY29udGV4dCA9IG1fZm9ySW5Db250ZXh0
U3RhY2tbaV0uZ2V0KCk7CiAgICAgICAgIGlmIChjb250ZXh0LmxvY2FsKCkgIT0gcHJvcGVydHkp
CkBAIC0yNjcxLDkzICsyOTI3LDEzNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUgogICAgICAg
ICAgICAgYXV0byYgaW5kZXhlZENvbnRleHQgPSBjb250ZXh0LmFzSW5kZXhlZEZvckluQ29udGV4
dCgpOwogICAgICAgICAgICAgaW5kZXhlZENvbnRleHQuYWRkR2V0SW5zdChpbnN0SW5kZXgsIHBy
b3BlcnR5LT5pbmRleCgpKTsKICAgICAgICAgICAgIHByb3BlcnR5ID0gaW5kZXhlZENvbnRleHQu
aW5kZXgoKTsKLSAgICAgICAgICAgIGZvcmNlV2lkZSA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCiAgICAgICAgIFN0cnVjdHVyZUZvckluQ29udGV4dCYgc3RydWN0dXJl
Q29udGV4dCA9IGNvbnRleHQuYXNTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoKTsKLSAgICAgICAgT3BH
ZXREaXJlY3RQbmFtZTo6ZW1pdDxPcGNvZGVTaXplOjpXaWRlPih0aGlzLCBraWxsKGRzdCksIGJh
c2UsIHByb3BlcnR5LCBzdHJ1Y3R1cmVDb250ZXh0LmluZGV4KCksIHN0cnVjdHVyZUNvbnRleHQu
ZW51bWVyYXRvcigpKTsKLQotICAgICAgICBzdHJ1Y3R1cmVDb250ZXh0LmFkZEdldEluc3QoaW5z
dEluZGV4LCBwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxl
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2RpcmVjdF9wbmFtZSk7CisgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOworICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzdHJ1
Y3R1cmVDb250ZXh0LmluZGV4KCktPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoc3RydWN0dXJlQ29udGV4dC5lbnVtZXJhdG9yKCktPmluZGV4KCkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CisKKyAgICAgICAgc3RydWN0dXJlQ29udGV4
dC5hZGRHZXRJbnN0KGluc3RJbmRleCwgcHJvcGVydHktPmluZGV4KCksIHByb2ZpbGUpOwogICAg
ICAgICByZXR1cm4gZHN0OwogICAgIH0KIAotICAgIGlmIChmb3JjZVdpZGUpCi0gICAgICAgIE9w
R2V0QnlWYWw6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZT4odGhpcywga2lsbChkc3QpLCBiYXNlLCBw
cm9wZXJ0eSk7Ci0gICAgZWxzZQotICAgICAgICBPcEdldEJ5VmFsOjplbWl0KHRoaXMsIGtpbGwo
ZHN0KSwgYmFzZSwgcHJvcGVydHkpOworICAgIFVubGlua2VkQXJyYXlQcm9maWxlIGFycmF5UHJv
ZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOworICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X3ZhbCk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGtpbGwoZHN0KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQogewot
ICAgIE9wR2V0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBraWxsKGRzdCksIGJhc2UsIHRoaXNW
YWx1ZSwgcHJvcGVydHkpOworICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChraWxsKGRzdCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbHVlLT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFs
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgVW5saW5rZWRBcnJheVBy
b2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxlKCk7CisgICAgZW1pdE9wY29kZShv
cF9wdXRfYnlfdmFsKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChhcnJheVByb2ZpbGUpOworCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KQogewotICAgIE9wUHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUs
IHByb3BlcnR5LCB2YWx1ZSk7CisgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfdmFsX3dpdGhfdGhp
cyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsdWUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZh
bHVlLT5pbmRleCgpKTsKKwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERp
cmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIFVubGlua2VkQXJy
YXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOworICAgIGVtaXRPcGNv
ZGUob3BfcHV0X2J5X3ZhbF9kaXJlY3QpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNl
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7Ci0gICAgT3BE
ZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBlbWl0T3Bjb2Rl
KG9wX2RlbF9ieV92YWwpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigpCiB7Ci0gICAg
T3BTdXBlclNhbXBsZXJCZWdpbjo6ZW1pdCh0aGlzKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3N1cGVy
X3NhbXBsZXJfYmVnaW4pOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U3VwZXJT
YW1wbGVyRW5kKCkKIHsKLSAgICBPcFN1cGVyU2FtcGxlckVuZDo6ZW1pdCh0aGlzKTsKKyAgICBl
bWl0T3Bjb2RlKG9wX3N1cGVyX3NhbXBsZXJfZW5kKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJZFdpdGhQcm9maWxlKFJlZ2lzdGVySUQqIHNyYywgU3BlY3VsYXRl
ZFR5cGUgcHJvZmlsZSkKIHsKLSAgICBPcElkZW50aXR5V2l0aFByb2ZpbGU6OmVtaXQodGhpcywg
c3JjLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvZmlsZSA+PiAzMiksIHN0YXRpY19jYXN0PHVp
bnQzMl90Pihwcm9maWxlKSk7CisgICAgZW1pdE9wY29kZShvcF9pZGVudGl0eV93aXRoX3Byb2Zp
bGUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvZmlsZSA+PiAzMikpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvZmlsZSkp
OwogICAgIHJldHVybiBzcmM7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbnJl
YWNoYWJsZSgpCiB7Ci0gICAgT3BVbnJlYWNoYWJsZTo6ZW1pdCh0aGlzKTsKKyAgICBlbWl0T3Bj
b2RlKG9wX3VucmVhY2hhYmxlKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBcmd1bWVudChSZWdpc3RlcklEKiBkc3QsIGludDMyX3QgaW5kZXgpCiB7Ci0gICAg
T3BHZXRBcmd1bWVudDo6ZW1pdCh0aGlzLCBkc3QsIGluZGV4ICsgMSAvKiBJbmNsdWRpbmcgfHRo
aXN8ICovKTsKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVk
T3Bjb2RlKG9wX2dldF9hcmd1bWVudCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4ICsgMSk7IC8vIEluY2x1
ZGluZyB8dGhpc3wuCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIHJl
dHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRl
VGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNy
ZWF0ZVRoaXMoZHN0LCBtX3dyaXRlci5yZWYoKSk7CisgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOworICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlz
KGRzdC0+aW5kZXgoKSwgYmVnaW4gKyAzKTsKIAogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgT3BDcmVhdGVU
aGlzOjplbWl0KHRoaXMsIGRzdCwgZHN0LCAwKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90
aGlzKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICByZXR1cm4gZHN0Owog
fQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFy
Z2V0KQogewotICAgIE9wQ2hlY2tUZHo6OmVtaXQodGhpcywgdGFyZ2V0KTsKKyAgICBlbWl0T3Bj
b2RlKG9wX2NoZWNrX3Rkeik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+aW5k
ZXgoKSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Om5lZWRzVERaQ2hlY2soY29uc3Qg
VmFyaWFibGUmIHZhcmlhYmxlKQpAQCAtMjg1Nyw5ICszMTU3LDEzIEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OnJlc3RvcmVURFpTdGFjayhjb25zdCBCeXRlY29kZUdlbmVyYXRvcjo6UHJlc2Vy
dmVkVERaU3RhCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3T2JqZWN0
KFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIubmV3T2Jq
ZWN0KGRzdCwgbV93cml0ZXIucmVmKCkpOworICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9u
cygpLnNpemUoKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIubmV3T2JqZWN0KGRzdC0+
aW5kZXgoKSwgYmVnaW4gKyAyKTsKIAotICAgIE9wTmV3T2JqZWN0OjplbWl0KHRoaXMsIGRzdCwg
MCk7CisgICAgZW1pdE9wY29kZShvcF9uZXdfb2JqZWN0KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG5ld09iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkpOwogICAg
IHJldHVybiBkc3Q7CiB9CiAKQEAgLTI5MDIsNyArMzIwNiwxMCBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6YWRkVGVtcGxhdGVPYmplY3RDb25zdGFudChSZWY8VGVtcGxhdGVPYmpl
Y3REZXNjcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5QnVm
ZmVyKFJlZ2lzdGVySUQqIGRzdCwgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGFycmF5LCBJbmRleGlu
Z1R5cGUgcmVjb21tZW5kZWRJbmRleGluZ1R5cGUpCiB7Ci0gICAgT3BOZXdBcnJheUJ1ZmZlcjo6
ZW1pdCh0aGlzLCBkc3QsIGFkZENvbnN0YW50VmFsdWUoYXJyYXkpLCByZWNvbW1lbmRlZEluZGV4
aW5nVHlwZSk7CisgICAgZW1pdE9wY29kZShvcF9uZXdfYXJyYXlfYnVmZmVyKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnRWYWx1ZShhcnJheSktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChuZXdBcnJheUFsbG9jYXRpb25Qcm9maWxlKHJlY29tbWVuZGVkSW5kZXhpbmdUeXBl
KSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjkyMCw3ICszMjI3LDExIEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVt
ZW50Tm9kZSogZWxlbWVuCiAgICAgICAgIGVtaXROb2RlKGFyZ3YubGFzdCgpLmdldCgpLCBuLT52
YWx1ZSgpKTsKICAgICB9CiAgICAgQVNTRVJUKCFsZW5ndGgpOwotICAgIE9wTmV3QXJyYXk6OmVt
aXQodGhpcywgZHN0LCBhcmd2LnNpemUoKSA/IGFyZ3ZbMF0uZ2V0KCkgOiBWaXJ0dWFsUmVnaXN0
ZXIgeyAwIH0sIGFyZ3Yuc2l6ZSgpLCByZWNvbW1lbmRlZEluZGV4aW5nVHlwZSk7CisgICAgZW1p
dE9wY29kZShvcF9uZXdfYXJyYXkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd2LnNpemUoKSA/IGFyZ3ZbMF0t
PmluZGV4KCkgOiAwKTsgLy8gYXJndgorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd2LnNp
emUoKSk7IC8vIGFyZ2MKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3QXJyYXlBbGxvY2F0
aW9uUHJvZmlsZShyZWNvbW1lbmRlZEluZGV4aW5nVHlwZSkpOwogICAgIHJldHVybiBkc3Q7CiB9
CiAKQEAgLTI5NDYsNyArMzI1Nyw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3QXJyYXlXaXRoU3ByZWFkKFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vCiAgICAgICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRtcCA9IG5ld1RlbXBvcmFyeSgpOwogICAgICAg
ICAgICAgICAgIGVtaXROb2RlKHRtcC5nZXQoKSwgZXhwcmVzc2lvbik7CiAKLSAgICAgICAgICAg
ICAgICBPcFNwcmVhZDo6ZW1pdCh0aGlzLCBhcmd2W2ldLmdldCgpLCB0bXAuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bfc3ByZWFkKTsKKyAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYXJndltpXS5nZXQoKS0+aW5kZXgoKSk7CisgICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRtcC5nZXQoKS0+aW5kZXgoKSk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uID0g
bm9kZS0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICBlbWl0Tm9kZShhcmd2W2ldLmdldCgpLCBl
eHByZXNzaW9uKTsKQEAgLTI5NTYsMTkgKzMyNjksMzAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdBcnJheVdpdGhTcHJlYWQoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50
Tm8KICAgICB9CiAKICAgICB1bnNpZ25lZCBiaXRWZWN0b3JJbmRleCA9IG1fY29kZUJsb2NrLT5h
ZGRCaXRWZWN0b3IoV1RGTW92ZShiaXRWZWN0b3IpKTsKLSAgICBPcE5ld0FycmF5V2l0aFNwcmVh
ZDo6ZW1pdCh0aGlzLCBkc3QsIGFyZ3ZbMF0uZ2V0KCksIGFyZ3Yuc2l6ZSgpLCBiaXRWZWN0b3JJ
bmRleCk7CisgICAgZW1pdE9wY29kZShvcF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChhcmd2WzBdLT5pbmRleCgpKTsgLy8gYXJndgorICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhcmd2LnNpemUoKSk7IC8vIGFyZ2MKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYml0VmVj
dG9ySW5kZXgpOworCiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdBcnJheVdpdGhTaXplKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogbGVuZ3RoKQogewotICAgIE9wTmV3QXJyYXlXaXRoU2l6ZTo6ZW1pdCh0aGlzLCBkc3QsIGxl
bmd0aCk7CisgICAgZW1pdE9wY29kZShvcF9uZXdfYXJyYXlfd2l0aF9zaXplKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobGVuZ3RoLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3QXJyYXlB
bGxvY2F0aW9uUHJvZmlsZShBcnJheVdpdGhVbmRlY2lkZWQpKTsKKwogICAgIHJldHVybiBkc3Q7
CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3UmVnRXhwKFJlZ2lz
dGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiB7Ci0gICAgT3BOZXdSZWdleHA6OmVtaXQodGhp
cywgZHN0LCBhZGRDb25zdGFudFZhbHVlKHJlZ0V4cCkpOworICAgIGVtaXRPcGNvZGUob3BfbmV3
X3JlZ2V4cCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUocmVnRXhwKS0+aW5kZXgoKSk7
CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjk3NiwyNCArMzMwMCwyOSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQq
IGRzdCwgRnVuY3RpbwogewogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1
bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKIAorICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gb3BfbmV3X2Z1bmNfZXhwOwogICAgIHN3aXRjaCAoZnVuY3Rpb24tPnBhcnNlTW9kZSgp
KSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1v
ZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2Rl
OgotICAgICAgICBPcE5ld0dlbmVyYXRvckZ1bmNFeHA6OmVtaXQodGhpcywgZHN0LCBzY29wZVJl
Z2lzdGVyKCksIGluZGV4KTsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNG
dW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKLSAgICAg
ICAgT3BOZXdBc3luY0Z1bmNFeHA6OmVtaXQodGhpcywgZHN0LCBzY29wZVJlZ2lzdGVyKCksIGlu
ZGV4KTsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXN5bmNfZnVuY19leHA7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJG
dW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3Jh
cHBlck1ldGhvZE1vZGU6Ci0gICAgICAgIE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jRXhwOjplbWl0
KHRoaXMsIGRzdCwgc2NvcGVSZWdpc3RlcigpLCBpbmRleCk7CisgICAgICAgIG9wY29kZUlEID0g
b3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKLSAgICAgICAgT3BOZXdGdW5jRXhwOjplbWl0KHRoaXMsIGRzdCwgc2NvcGVSZWdpc3Rl
cigpLCBpbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAKKyAgICBlbWl0T3Bjb2Rl
KG9wY29kZUlEKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNF
eHByTm9kZSogZnVuYykKQEAgLTMwMjYsNyArMzM1NSwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENv
bnN0cgogCiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHBy
KGV4ZWN1dGFibGUpOwogCi0gICAgT3BOZXdGdW5jRXhwOjplbWl0KHRoaXMsIGRzdCwgc2NvcGVS
ZWdpc3RlcigpLCBpbmRleCk7CisgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuY19leHApOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChpbmRleCk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMzAzNCwxMyArMzM2NiwxNiBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVy
SUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2Rl
QmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKICAgICBpZiAo
aXNHZW5lcmF0b3JXcmFwcGVyUGFyc2VNb2RlKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSkpCi0gICAg
ICAgIE9wTmV3R2VuZXJhdG9yRnVuYzo6ZW1pdCh0aGlzLCBkc3QsIHNjb3BlUmVnaXN0ZXIoKSwg
aW5kZXgpOworICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CiAgICAg
ZWxzZSBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNG
dW5jdGlvbk1vZGUpCi0gICAgICAgIE9wTmV3QXN5bmNGdW5jOjplbWl0KHRoaXMsIGRzdCwgc2Nv
cGVSZWdpc3RlcigpLCBpbmRleCk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2FzeW5jX2Z1
bmMpOwogICAgIGVsc2UgaWYgKGlzQXN5bmNHZW5lcmF0b3JXcmFwcGVyUGFyc2VNb2RlKGZ1bmN0
aW9uLT5wYXJzZU1vZGUoKSkpCi0gICAgICAgIE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jOjplbWl0
KHRoaXMsIGRzdCwgc2NvcGVSZWdpc3RlcigpLCBpbmRleCk7CisgICAgICAgIGVtaXRPcGNvZGUo
b3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKTsKICAgICBlbHNlCi0gICAgICAgIE9wTmV3RnVu
Yzo6ZW1pdCh0aGlzLCBkc3QsIHNjb3BlUmVnaXN0ZXIoKSwgaW5kZXgpOworICAgICAgICBlbWl0
T3Bjb2RlKG9wX25ld19mdW5jKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRl
eCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgp
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOwogICAgIHJldHVybiBkc3Q7CiB9
CiAKQEAgLTMwNjEsMjYgKzMzOTYsMjggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNl
dEZ1bmN0aW9uTmFtZUlmTmVlZGVkKEV4cHJlc3Npb25Ob2RlKiB2YWx1ZU5vZGUsIFIKIAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIGFuIG9wX2NhbGwgdG8gYW4gaW50ZXJuYWwgZnVuY3Rp
b24gaGVyZSBpbnN0ZWFkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTU1NDcKLSAgICBPcFNldEZ1bmN0aW9uTmFtZTo6ZW1pdCh0aGlzLCB2YWx1ZSwg
bmFtZSk7CisgICAgZW1pdE9wY29kZShvcF9zZXRfZnVuY3Rpb25fbmFtZSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobmFtZS0+aW5kZXgoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rp
b24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCBkZWJ1Z2dhYmxl
Q2FsbCkKIHsKLSAgICByZXR1cm4gZW1pdENhbGw8T3BDYWxsPihkc3QsIGZ1bmMsIGV4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVi
dWdnYWJsZUNhbGwpOworICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCwgZGVidWdnYWJsZUNhbGwpOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhbGxJblRhaWxQb3NpdGlvbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMs
IEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFy
Z3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxl
Q2FsbCBkZWJ1Z2dhYmxlQ2FsbCkKIHsKICAgICBpZiAobV9pblRhaWxQb3NpdGlvbikgewogICAg
ICAgICBtX2NvZGVCbG9jay0+c2V0SGFzVGFpbENhbGxzKCk7Ci0gICAgICAgIHJldHVybiBlbWl0
Q2FsbDxPcFRhaWxDYWxsPihkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVidWdnYWJsZUNhbGwpOworICAgICAg
ICByZXR1cm4gZW1pdENhbGwob3BfdGFpbF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVidWdnYWJs
ZUNhbGwpOwogICAgIH0KLSAgICByZXR1cm4gZW1pdENhbGw8T3BDYWxsPihkc3QsIGZ1bmMsIGV4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCwgZGVidWdnYWJsZUNhbGwpOworICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1
bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCwgZGVidWdnYWJsZUNhbGwpOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgQ2Fs
bEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCBkZWJ1Z2dhYmxlQ2FsbCkKIHsKLSAgICByZXR1cm4gZW1p
dENhbGw8T3BDYWxsRXZhbD4oZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVidWdnYWJsZUNhbGwpOworICAg
IHJldHVybiBlbWl0Q2FsbChvcF9jYWxsX2V2YWwsIGRzdCwgZnVuYywgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGRlYnVnZ2Fi
bGVDYWxsKTsKIH0KIAogRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZXhwZWN0
ZWRGdW5jdGlvbkZvcklkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAg
LTMxMDEsNyArMzQzOCwxMiBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAo
Y2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID49IDIpCiAgICAgICAg
ICAgICByZXR1cm4gTm9FeHBlY3RlZEZ1bmN0aW9uOwogICAgICAgICAKLSAgICAgICAgT3BKbmVx
UHRyOjplbWl0KHRoaXMsIGZ1bmMsIFNwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yLCByZWFsQ2Fs
bC0+YmluZCh0aGlzKSk7CisgICAgICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNp
emUoKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF9qbmVxX3B0cik7CisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKFNwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHJlYWxDYWxsLT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICAKICAgICAgICAgaWYgKGRz
dCAhPSBpZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICBlbWl0TmV3T2JqZWN0KGRzdCk7CkBA
IC0zMTE3LDE0ICszNDU5LDIzIEBAIEV4cGVjdGVkRnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldChSZWdpc3RlcklEKiBkc3QsCiAgICAgICAgIGlm
IChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPiAyKQogICAgICAg
ICAgICAgcmV0dXJuIE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5l
cVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yLCByZWFsQ2Fs
bC0+YmluZCh0aGlzKSk7CisgICAgICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNp
emUoKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF9qbmVxX3B0cik7CisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKFNwZWNpYWw6OkFycmF5Q29uc3RydWN0b3IpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQocmVhbENhbGwtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOworICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgICAgIAogICAgICAgICBpZiAoZHN0
ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICAgICAgaWYgKGNhbGxBcmd1bWVudHMuYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA9PSAyKQogICAgICAgICAgICAgICAgIGVtaXROZXdB
cnJheVdpdGhTaXplKGRzdCwgY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApKTsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChjYWxsQXJndW1lbnRzLmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPT0gMSk7Ci0gICAgICAgICAgICAgICAgT3BOZXdB
cnJheTo6ZW1pdCh0aGlzLCBkc3QsIFZpcnR1YWxSZWdpc3RlciB7IDAgfSwgMCwgQXJyYXlXaXRo
VW5kZWNpZGVkKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19hcnJheSk7Cisg
ICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobmV3QXJyYXlBbGxvY2F0aW9uUHJvZmlsZShBcnJheVdpdGhVbmRlY2lkZWQpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTMxMzUsMTYgKzM0ODYs
MTYgQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVu
Y3Rpb25TbmlwcGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgcmV0dXJuIE5vRXhwZWN0ZWRG
dW5jdGlvbjsKICAgICB9CiAgICAgCi0gICAgT3BKbXA6OmVtaXQodGhpcywgZG9uZS5iaW5kKHRo
aXMpKTsKKyAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgZW1p
dE9wY29kZShvcF9qbXApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkb25lLmJpbmQoYmVn
aW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgIGVtaXRMYWJlbChyZWFsQ2FsbC5nZXQo
KSk7CiAgICAgCiAgICAgcmV0dXJuIGV4cGVjdGVkRnVuY3Rpb247CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENhbGxPcD4KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0
ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCBkZWJ1Z2dhYmxlQ2FsbCkKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChPcGNvZGVJRCBvcGNvZGVJRCwg
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVj
dGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwgZGVidWdnYWJsZUNhbGwpCiB7
Ci0gICAgY29uc3RleHByIGF1dG8gb3Bjb2RlSUQgPSBDYWxsT3A6Om9wY29kZUlEOwogICAgIEFT
U0VSVChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCB8fCBv
cGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpOwogICAgIEFTU0VSVChmdW5jLT5yZWZDb3VudCgpKTsK
ICAgICAKQEAgLTMxNjAsMTUgKzM1MTEsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWMKICAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudHMgJiYgIWVsZW1lbnRzLT5uZXh0KCkgJiYgZWxlbWVu
dHMtPnZhbHVlKCktPmlzU3ByZWFkRXhwcmVzc2lvbigpKSB7CiAgICAgICAgICAgICAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uID0gc3RhdGljX2Nhc3Q8U3ByZWFkRXhwcmVzc2lv
bk5vZGUqPihlbGVtZW50cy0+dmFsdWUoKSktPmV4cHJlc3Npb24oKTsKICAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3VtZW50UmVnaXN0ZXIgPSBlbWl0Tm9kZShjYWxs
QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIGV4cHJlc3Npb24pOwotICAgICAgICAgICAg
ICAgICAgICBPcFNwcmVhZDo6ZW1pdCh0aGlzLCBhcmd1bWVudFJlZ2lzdGVyLmdldCgpLCBhcmd1
bWVudFJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9z
cHJlYWQpOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1l
bnRSZWdpc3Rlci5nZXQoKS0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChhcmd1bWVudFJlZ2lzdGVyLmdldCgpLT5pbmRleCgpKTsKIAotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzPHR5cGVuYW1lIFZhckFyZ3NPcDxD
YWxsT3A+Ojp0eXBlPihkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGFy
Z3VtZW50UmVnaXN0ZXIuZ2V0KCksIG5ld1RlbXBvcmFyeSgpLCAwLCBkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQsIGRlYnVnZ2FibGVDYWxsKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IG1vdmUobmV3VGVtcG9yYXJ5KCksIGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1pdENh
bGxWYXJhcmdzKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCA/IG9wX3RhaWxfY2FsbF92YXJhcmdz
IDogb3BfY2FsbF92YXJhcmdzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGFyZ3VtZW50UmVnaXN0ZXIuZ2V0KCksIG5ld1RlbXBvcmFyeSgpLCAwLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQsIGRlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJndW1lbnRSZWdp
c3RlcjsKICAgICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXIgPSBleHByZXNzaW9uLT5lbWl0Qnl0
ZWNvZGUoKnRoaXMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSk7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gbW92ZShuZXdUZW1wb3Jhcnko
KSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dENhbGxWYXJhcmdzPHR5cGVuYW1lIFZhckFyZ3NPcDxDYWxsT3A+Ojp0eXBlPihkc3QsIGZ1bmMs
IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGFyZ3VtZW50UmVnaXN0ZXIuZ2V0KCksIG5l
d1RlbXBvcmFyeSgpLCAwLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGRlYnVnZ2FibGVD
YWxsKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3Mob3Bjb2RlSUQgPT0gb3Bf
dGFpbF9jYWxsID8gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgOiBvcF9jYWxsX3ZhcmFyZ3MsIGRzdCwg
ZnVuYywgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYXJndW1lbnRSZWdpc3Rlci5nZXQo
KSwgbmV3VGVtcG9yYXJ5KCksIDAsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVidWdn
YWJsZUNhbGwpOwogICAgICAgICB9CiAgICAgICAgIGZvciAoOyBuOyBuID0gbi0+bV9uZXh0KQog
ICAgICAgICAgICAgZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3Vt
ZW50KyspLCBuKTsKQEAgLTMxOTEsOSArMzU0NSwxOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBl
YwogICAgICAgICBlbWl0TG9nU2hhZG93Q2hpY2tlblRhaWxJZk5lY2Vzc2FyeSgpOwogICAgIAog
ICAgIC8vIEVtaXQgY2FsbC4KKyAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGUg
PSBuZXdBcnJheVByb2ZpbGUoKTsKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0g
ZW1pdFByb2ZpbGVkT3Bjb2RlKG9wY29kZUlEKTsKICAgICBBU1NFUlQoZHN0KTsKICAgICBBU1NF
UlQoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSk7Ci0gICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwg
ZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJn
dW1lbnRzLnN0YWNrT2Zmc2V0KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcygpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5zdGFja09m
ZnNldCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50
Q2FsbExpbmtJbmZvKCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQocHJvZmlsZSk7CiAgICAgCiAgICAgaWYgKGV4cGVjdGVkRnVuY3Rpb24gIT0gTm9FeHBlY3Rl
ZEZ1bmN0aW9uKQogICAgICAgICBlbWl0TGFiZWwoZG9uZS5nZXQoKSk7CkBAIC0zMjAzLDQxICsz
NTY2LDQ3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVn
aXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwgZGVidWdn
YWJsZUNhbGwpCiB7Ci0gICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJnczxPcENhbGxWYXJhcmdzPihk
c3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3RlciwgZmly
c3RWYXJBcmdPZmZzZXQsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVidWdnYWJsZUNh
bGwpOworICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3Mob3BfY2FsbF92YXJhcmdzLCBkc3QsIGZ1
bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3RlciwgZmlyc3RWYXJB
cmdPZmZzZXQsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVidWdnYWJsZUNhbGwpOwog
fQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJhcmdzSW5UYWls
UG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0
aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVl
UmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwgZGVidWdnYWJsZUNhbGwpCiB7Ci0gICAg
aWYgKG1faW5UYWlsUG9zaXRpb24pCi0gICAgICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3M8T3BU
YWlsQ2FsbFZhcmFyZ3M+KGRzdCwgZnVuYywgdGhpc1JlZ2lzdGVyLCBhcmd1bWVudHMsIGZpcnN0
RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCwgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kLCBkZWJ1Z2dhYmxlQ2FsbCk7Ci0gICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJnczxPcENhbGxW
YXJhcmdzPihkc3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdp
c3RlciwgZmlyc3RWYXJBcmdPZmZzZXQsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVi
dWdnYWJsZUNhbGwpOworICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3MobV9pblRhaWxQb3NpdGlv
biA/IG9wX3RhaWxfY2FsbF92YXJhcmdzIDogb3BfY2FsbF92YXJhcmdzLCBkc3QsIGZ1bmMsIHRo
aXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZz
ZXQsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVidWdnYWJsZUNhbGwpOwogfQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJl
Z2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMy
X3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgRGVidWdnYWJsZUNhbGwgZGVidWdnYWJsZUNhbGwpCiB7Ci0gICAgcmV0dXJuIGVtaXRDYWxs
VmFyYXJnczxPcENvbnN0cnVjdFZhcmFyZ3M+KGRzdCwgZnVuYywgdGhpc1JlZ2lzdGVyLCBhcmd1
bWVudHMsIGZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCwgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kLCBkZWJ1Z2dhYmxlQ2FsbCk7CisgICAgcmV0dXJuIGVtaXRDYWxsVmFy
YXJncyhvcF9jb25zdHJ1Y3RfdmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3Vt
ZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBkaXZvdCwgZGl2b3RT
dGFydCwgZGl2b3RFbmQsIGRlYnVnZ2FibGVDYWxsKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsRm9yd2FyZEFyZ3VtZW50c0luVGFpbFBvc2l0aW9uKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBS
ZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCBkZWJ1
Z2dhYmxlQ2FsbCkKIHsKICAgICBBU1NFUlQobV9pblRhaWxQb3NpdGlvbik7Ci0gICAgcmV0dXJu
IGVtaXRDYWxsVmFyYXJnczxPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cz4oZHN0LCBmdW5jLCB0
aGlzUmVnaXN0ZXIsIG51bGxwdHIsIGZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNl
dCwgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBkZWJ1Z2dhYmxlQ2FsbCk7CisgICAgcmV0
dXJuIGVtaXRDYWxsVmFyYXJncyhvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsIGRzdCwg
ZnVuYywgdGhpc1JlZ2lzdGVyLCBudWxscHRyLCBmaXJzdEZyZWVSZWdpc3RlciwgZmlyc3RWYXJB
cmdPZmZzZXQsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZGVidWdnYWJsZUNhbGwpOwog
fQogICAgIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFyYXJnc09wPgotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBS
ZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCBkZWJ1
Z2dhYmxlQ2FsbCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFy
Z3MoT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJl
Z2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklE
KiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCBkZWJ1Z2dhYmxlQ2Fs
bCkKIHsKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcyAmJiBkZWJ1Z2dhYmxlQ2FsbCA9
PSBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKQogICAgICAgICBlbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
RXhwcmVzc2lvbiwgZGl2b3RTdGFydCk7CiAKICAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKTsKIAotICAgIGlmIChWYXJhcmdzT3A6Om9wY29kZUlEID09
IG9wX3RhaWxfY2FsbF92YXJhcmdzKQorICAgIGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX3Zh
cmFyZ3MpCiAgICAgICAgIGVtaXRMb2dTaGFkb3dDaGlja2VuVGFpbElmTmVjZXNzYXJ5KCk7CiAg
ICAgCiAgICAgLy8gRW1pdCBjYWxsLgorICAgIFVubGlua2VkQXJyYXlQcm9maWxlIGFycmF5UHJv
ZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOworICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3Bjb2RlKTsKICAgICBBU1NFUlQoZHN0ICE9IGlnbm9y
ZWRSZXN1bHQoKSk7Ci0gICAgVmFyYXJnc09wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgdGhpc1Jl
Z2lzdGVyLCBhcmd1bWVudHMgPyBhcmd1bWVudHMgOiBWaXJ0dWFsUmVnaXN0ZXIoMCksIGZpcnN0
RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzUmVnaXN0ZXIgPyB0aGlzUmVnaXN0
ZXItPmluZGV4KCkgOiAwKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzID8g
YXJndW1lbnRzLT5pbmRleCgpIDogMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0
RnJlZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RW
YXJBcmdPZmZzZXQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0OwogfQog
CkBAIC0zMjQ1LDE0ICszNjE0LDE3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2dT
aGFkb3dDaGlja2VuUHJvbG9ndWVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKCFtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzICYmICFPcHRpb25zOjphbHdheXNVc2VTaGFkb3dDaGlja2VuKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBPcExvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZTo6ZW1pdCh0aGlzLCBz
Y29wZVJlZ2lzdGVyKCkpOworICAgIGVtaXRPcGNvZGUob3BfbG9nX3NoYWRvd19jaGlja2VuX3By
b2xvZ3VlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRl
eCgpKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvZ1NoYWRvd0NoaWNrZW5U
YWlsSWZOZWNlc3NhcnkoKQogewogICAgIGlmICghbV9zaG91bGRFbWl0RGVidWdIb29rcyAmJiAh
T3B0aW9uczo6YWx3YXlzVXNlU2hhZG93Q2hpY2tlbigpKQogICAgICAgICByZXR1cm47Ci0gICAg
T3BMb2dTaGFkb3dDaGlja2VuVGFpbDo6ZW1pdCh0aGlzLCB0aGlzUmVnaXN0ZXIoKSwgc2NvcGVS
ZWdpc3RlcigpKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1JlZ2lzdGVyKCktPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogfQogCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQq
IG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0ZXIsCkBAIC0zMjk4LDkgKzM2
NzAsMTggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShS
ZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHAKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgc2V0dGVyID0gdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKIAotICAgICAgICBPcERlZmluZUFj
Y2Vzc29yUHJvcGVydHk6OmVtaXQodGhpcywgbmV3T2JqLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlciwg
Z2V0dGVyLmdldCgpLCBzZXR0ZXIuZ2V0KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKGF0
dHJpYnV0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF9k
ZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bmV3T2JqLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5
TmFtZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdl
dHRlci0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmlu
ZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwg
anNOdW1iZXIoYXR0cmlidXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIE9wRGVmaW5lRGF0YVByb3BlcnR5OjplbWl0KHRoaXMsIG5ld09i
aiwgcHJvcGVydHlOYW1lUmVnaXN0ZXIsIHZhbHVlUmVnaXN0ZXIsIGVtaXRMb2FkKG51bGxwdHIs
IGpzTnVtYmVyKGF0dHJpYnV0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpKTsKKyAgICAgICAgZW1p
dE9wY29kZShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChuZXdPYmotPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
cHJvcGVydHlOYW1lUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQodmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihhdHRyaWJ1dGVzLnJhd1JlcHJlc2VudGF0
aW9uKCkpKS0+aW5kZXgoKSk7CiAgICAgfQogfQogCkBAIC0zMzI0LDIyICszNzA1LDIxIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYywg
UmV0dXJuRnJvbSBmcm9tKQogICAgICAgICAgICAgICAgIGVtaXRMYWJlbChpc1VuZGVmaW5lZExh
YmVsLmdldCgpKTsKICAgICAgICAgICAgICAgICBlbWl0VERaQ2hlY2soJm1fdGhpc1JlZ2lzdGVy
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIE9wUmV0OjplbWl0KHRoaXMsICZtX3RoaXNS
ZWdpc3Rlcik7CisgICAgICAgICAgICBlbWl0VW5hcnlOb0RzdE9wKG9wX3JldCwgJm1fdGhpc1Jl
Z2lzdGVyKTsKICAgICAgICAgICAgIGVtaXRMYWJlbChpc09iamVjdExhYmVsLmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIE9wUmV0OjplbWl0KHRoaXMsIHNyYyk7Ci0gICAgcmV0dXJu
IHNyYzsKKyAgICByZXR1cm4gZW1pdFVuYXJ5Tm9Ec3RPcChvcF9yZXQsIHNyYyk7CiB9CiAKLVJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW5kKFJlZ2lzdGVySUQqIHNyYykKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlOb0RzdE9wKE9wY29kZUlEIG9w
Y29kZUlELCBSZWdpc3RlcklEKiBzcmMpCiB7Ci0gICAgT3BFbmQ6OmVtaXQodGhpcywgc3JjKTsK
KyAgICBlbWl0T3Bjb2RlKG9wY29kZUlEKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3Jj
LT5pbmRleCgpKTsKICAgICByZXR1cm4gc3JjOwogfQogCi0KIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgUmVnaXN0ZXJJRCogbGF6eVRoaXMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlv
biwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kKQogewogICAgIEFTU0VSVChmdW5jLT5yZWZDb3VudCgpKTsKQEAgLTMzNTcs
NyArMzczNyw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywKICAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudHMgJiYgIWVsZW1lbnRzLT5uZXh0KCkgJiYgZWxlbWVudHMtPnZhbHVlKCktPmlzU3By
ZWFkRXhwcmVzc2lvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBl
eHByZXNzaW9uID0gc3RhdGljX2Nhc3Q8U3ByZWFkRXhwcmVzc2lvbk5vZGUqPihlbGVtZW50cy0+
dmFsdWUoKSktPmV4cHJlc3Npb24oKTsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGFyZ3VtZW50UmVnaXN0ZXIgPSBlbWl0Tm9kZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50
UmVnaXN0ZXIoMCksIGV4cHJlc3Npb24pOwotICAgICAgICAgICAgICAgICAgICBPcFNwcmVhZDo6
ZW1pdCh0aGlzLCBhcmd1bWVudFJlZ2lzdGVyLmdldCgpLCBhcmd1bWVudFJlZ2lzdGVyLmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9zcHJlYWQpOworICAgICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRSZWdpc3Rlci5nZXQoKS0+
aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1
bWVudFJlZ2lzdGVyLmdldCgpLT5pbmRleCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBtb3Zl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGxhenlUaGlzKTsKICAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IG1vdmUobmV3VGVtcG9yYXJ5
KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwpAQCAtMzM4Niw3ICszNzY4LDE2IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywKICAgICBSZWY8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgp
OwogICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBlbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoZHN0
LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkb25lLmdldCgpKTsKIAot
ICAgIE9wQ29uc3RydWN0OjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOwor
ICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3Bf
Y29uc3RydWN0KTsKKyAgICBBU1NFUlQoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGZ1bmMtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1l
bnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CiAKICAgICBpZiAoZXhwZWN0ZWRGdW5jdGlvbiAh
PSBOb0V4cGVjdGVkRnVuY3Rpb24pCiAgICAgICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKQEAg
LTMzOTYsMTggKzM3ODcsMjUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b25zdHJ1Y3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLAogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFN0cmNhdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYywgaW50IGNvdW50KQogewotICAgIE9wU3RyY2F0OjplbWl0KHRoaXMsIGRzdCwgc3Jj
LCBjb3VudCk7CisgICAgZW1pdE9wY29kZShvcF9zdHJjYXQpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb3VudCk7CisKICAgICByZXR1cm4g
ZHN0OwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9QcmltaXRpdmUoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiB7Ci0gICAgT3BUb1ByaW1pdGl2ZTo6ZW1pdCh0
aGlzLCBkc3QsIHNyYyk7CisgICAgZW1pdE9wY29kZShvcF90b19wcmltaXRpdmUpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChzcmMtPmluZGV4KCkpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
U2NvcGUoKQogewotICAgIE9wR2V0U2NvcGU6OmVtaXQodGhpcywgc2NvcGVSZWdpc3RlcigpKTsK
KyAgICBlbWl0T3Bjb2RlKG9wX2dldF9zY29wZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHVzaFdpdGhTY29wZShSZWdpc3RlcklEKiBvYmplY3RTY29wZSkKQEAgLTM0
MTYsNyArMzgxNCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hX
aXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpCiAgICAgUmVnaXN0ZXJJRCogbmV3U2Nv
cGUgPSBuZXdCbG9ja1Njb3BlVmFyaWFibGUoKTsKICAgICBuZXdTY29wZS0+cmVmKCk7CiAKLSAg
ICBPcFB1c2hXaXRoU2NvcGU6OmVtaXQodGhpcywgbmV3U2NvcGUsIHNjb3BlUmVnaXN0ZXIoKSwg
b2JqZWN0U2NvcGUpOworICAgIGVtaXRPcGNvZGUob3BfcHVzaF93aXRoX3Njb3BlKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3U2NvcGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChvYmplY3RTY29wZS0+aW5kZXgoKSk7CiAKICAgICBtb3ZlKHNjb3BlUmVnaXN0ZXIo
KSwgbmV3U2NvcGUpOwogICAgIG1fbGV4aWNhbFNjb3BlU3RhY2suYXBwZW5kKHsgbnVsbHB0ciwg
bmV3U2NvcGUsIHRydWUsIDAgfSk7CkBAIC0zNDI2LDcgKzM4MjcsOSBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2Nv
cGUpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UGFyZW50U2NvcGUo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSkKIHsKLSAgICBPcEdldFBhcmVudFNj
b3BlOjplbWl0KHRoaXMsIGRzdCwgc2NvcGUpOworICAgIGVtaXRPcGNvZGUob3BfZ2V0X3BhcmVu
dF9zY29wZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlLT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0Owog
fQogCkBAIC0zNDUxLDcgKzM4NTQsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVi
dWdIb29rKERlYnVnSG9va1R5cGUgZGVidWdIb29rVHlwZSwgY29uc3QgSlNUZXh0UAogICAgICAg
ICByZXR1cm47CiAKICAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QsIGRpdm90LCBkaXZvdCk7
Ci0gICAgT3BEZWJ1Zzo6ZW1pdCh0aGlzLCBkZWJ1Z0hvb2tUeXBlLCBmYWxzZSk7CisgICAgZW1p
dE9wY29kZShvcF9kZWJ1Zyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va1R5
cGUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmYWxzZSk7CiB9CiAKIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdIb29rVHlwZSBkZWJ1Z0hvb2tUeXBlLCB1
bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjaGFyT2Zmc2V0LCB1bnNpZ25lZCBsaW5lU3RhcnQpCkBA
IC0zNjEwLDcgKzQwMTUsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnkoVHJ5RGF0
YSogdHJ5RGF0YSwgTGFiZWwmIGVuZCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
dGNoKFJlZ2lzdGVySUQqIGV4Y2VwdGlvblJlZ2lzdGVyLCBSZWdpc3RlcklEKiB0aHJvd25WYWx1
ZVJlZ2lzdGVyLCBUcnlEYXRhKiBkYXRhKQogewotICAgIG1fY2F0Y2hlc1RvRW1pdC5hcHBlbmQo
Q2F0Y2hFbnRyeSB7IGRhdGEsIGV4Y2VwdGlvblJlZ2lzdGVyLCB0aHJvd25WYWx1ZVJlZ2lzdGVy
IH0pOworICAgIG1fY2F0Y2hlc1RvRW1pdC5hcHBlbmQoQ2F0Y2hFbnRyeSB7IGRhdGEsIGV4Y2Vw
dGlvblJlZ2lzdGVyLT5pbmRleCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpIH0pOwog
fQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4
aWNhbFNjb3BlSW5kZXgpCkBAIC0zNjUwLDE4ICs0MDU1LDYgQEAgaW50IEJ5dGVjb2RlR2VuZXJh
dG9yOjpsYWJlbFNjb3BlRGVwdGhUb0xleGljYWxTY29wZUluZGV4KGludCB0YXJnZXRMYWJlbFNj
b3BlRGUKICAgICByZXR1cm4gdGFyZ2V0U2NvcGUubGV4aWNhbFNjb3BlSW5kZXg7CiB9CiAKLXZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvdyhSZWdpc3RlcklEKiBleGMpCi17Ci0gICAg
bV91c2VzRXhjZXB0aW9ucyA9IHRydWU7Ci0gICAgT3BUaHJvdzo6ZW1pdCh0aGlzLCBleGMpOwot
fQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFyZ3VtZW50Q291bnQoUmVn
aXN0ZXJJRCogZHN0KQotewotICAgIE9wQXJndW1lbnRDb3VudDo6ZW1pdCh0aGlzLCBkc3QpOwot
ICAgIHJldHVybiBkc3Q7Ci19Ci0KIGludCBCeXRlY29kZUdlbmVyYXRvcjo6bG9jYWxTY29wZURl
cHRoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9sb2NhbFNjb3BlRGVwdGg7CkBAIC0zNjc4LDEy
ICs0MDcxLDE2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1N0YXRpY0Vycm9y
KEVycm9yVHlwZSBlcnJvclR5cGUsIFJlZ2lzdGVySUQqIHJhCiB7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IG1lc3NhZ2UgPSBuZXdUZW1wb3JhcnkoKTsKICAgICBlbWl0VG9TdHJpbmcobWVzc2Fn
ZS5nZXQoKSwgcmF3KTsKLSAgICBPcFRocm93U3RhdGljRXJyb3I6OmVtaXQodGhpcywgbWVzc2Fn
ZS5nZXQoKSwgZXJyb3JUeXBlKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJv
cik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lc3NhZ2UtPmluZGV4KCkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXJyb3JUeXBlKSk7CiB9
CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1N0YXRpY0Vycm9yKEVycm9yVHlw
ZSBlcnJvclR5cGUsIGNvbnN0IElkZW50aWZpZXImIG1lc3NhZ2UpCiB7Ci0gICAgT3BUaHJvd1N0
YXRpY0Vycm9yOjplbWl0KHRoaXMsIGFkZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQo
bWVzc2FnZSkpLCBlcnJvclR5cGUpOworICAgIGVtaXRPcGNvZGUob3BfdGhyb3dfc3RhdGljX2Vy
cm9yKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJp
bmdDb25zdGFudChtZXNzYWdlKSktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXJyb3JUeXBlKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
QEAgLTM3NjQsMjggKzQxNjEsMjIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5Td2l0
Y2goUmVnaXN0ZXJJRCogc2NydXRpbmVlUmVnaXN0ZXIsIFN3aXRjaEluZm86OlMKIHsKICAgICBT
d2l0Y2hJbmZvIGluZm8gPSB7IHN0YXRpY19jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpLCB0eXBlIH07CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTd2l0Y2hJbmZv
OjpTd2l0Y2hJbW1lZGlhdGU6IHsKLSAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBtX2NvZGVC
bG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5h
ZGRTd2l0Y2hKdW1wVGFibGUoKTsKLSAgICAgICAgT3BTd2l0Y2hJbW06OmVtaXQodGhpcywgdGFi
bGVJbmRleCwgMCwgc2NydXRpbmVlUmVnaXN0ZXIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgY2FzZSBTd2l0Y2hJbmZvOjpTd2l0Y2hDaGFyYWN0ZXI6IHsKLSAgICAgICAgc2l6ZV90IHRh
YmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKLSAgICAgICAgT3BTd2l0Y2hD
aGFyOjplbWl0KHRoaXMsIHRhYmxlSW5kZXgsIDAsIHNjcnV0aW5lZVJlZ2lzdGVyKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU3dpdGNoSW5mbzo6U3dpdGNoU3RyaW5nOiB7Ci0g
ICAgICAgIHNpemVfdCB0YWJsZUluZGV4ID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3RyaW5nU3dp
dGNoSnVtcFRhYmxlcygpOwotICAgICAgICBtX2NvZGVCbG9jay0+YWRkU3RyaW5nU3dpdGNoSnVt
cFRhYmxlKCk7Ci0gICAgICAgIE9wU3dpdGNoU3RyaW5nOjplbWl0KHRoaXMsIHRhYmxlSW5kZXgs
IDAsIHNjcnV0aW5lZVJlZ2lzdGVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhc2Ug
U3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlOgorICAgICAgICAgICAgZW1pdE9wY29kZShvcF9z
d2l0Y2hfaW1tKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN3aXRjaEluZm86
OlN3aXRjaENoYXJhY3RlcjoKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bfc3dpdGNoX2NoYXIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3dpdGNoSW5mbzo6U3dpdGNoU3Ry
aW5nOgorICAgICAgICAgICAgZW1pdE9wY29kZShvcF9zd2l0Y2hfc3RyaW5nKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CiAKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8v
IHBsYWNlIGhvbGRlciBmb3IgdGFibGUgaW5kZXgKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7IC8vIHBsYWNlIGhvbGRlciBmb3IgZGVmYXVsdCB0YXJnZXQgICAgCisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHNjcnV0aW5lZVJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBtX3N3aXRjaENv
bnRleHRTdGFjay5hcHBlbmQoaW5mbyk7CiB9CiAKQEAgLTM4MjYsNyArNDIxNyw3IEBAIHN0YXRp
YyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTd2l0Y2goCiAgICAgICAgIC8vIFdlJ3JlIGVtaXR0
aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwg
c28gCiAgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJl
bmNlcwogICAgICAgICBBU1NFUlQoIWxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOwotICAgICAgICBq
dW1wVGFibGUuYWRkKGtleUdldHRlcihub2Rlc1tpXSwgbWluLCBtYXgpLCBsYWJlbHNbaV0tPmJp
bmQoc3dpdGNoQWRkcmVzcykpOyAKKyAgICAgICAganVtcFRhYmxlLmFkZChrZXlHZXR0ZXIobm9k
ZXNbaV0sIG1pbiwgbWF4KSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFk
ZHJlc3MgKyAzKSk7IAogICAgIH0KIH0KIApAQCAtMzgzOSw3ICs0MjMwLDcgQEAgc3RhdGljIHZv
aWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZSYganVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAgQVNTRVJUKG5vZGVzW2ldLT5pc1N0cmlu
ZygpKTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9k
ZSo+KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1bXBUYWJsZS5vZmZzZXRU
YWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24g
eyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcykgfSk7CisgICAgICAgIGp1bXBUYWJsZS5v
ZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9j
YXRpb24geyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMp
IH0pOwogICAgIH0KIH0KIApAQCAtMzg0Nyw0MCArNDIzOCwyNyBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIGNvbnN0IFZlY3RvcjxSZWY8
TGFiZWw+LAogewogICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4dFN0
YWNrLmxhc3QoKTsKICAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisgICAg
CisgICAgc3dpdGNoIChzd2l0Y2hJbmZvLnN3aXRjaFR5cGUpIHsKKyAgICBjYXNlIFN3aXRjaElu
Zm86OlN3aXRjaEltbWVkaWF0ZToKKyAgICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaENoYXJhY3Rl
cjogeworICAgICAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsg
MV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9IGRlZmF1bHRMYWJl
bC5iaW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZz
ZXQgKyAzKTsKIAotICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gZGVmYXVsdExhYmVsLmJpbmQoc3dp
dGNoSW5mby5ieXRlY29kZU9mZnNldCk7Ci0gICAgYXV0byBoYW5kbGVTd2l0Y2ggPSBbJl0oYXV0
byogb3AsIGF1dG8gYnl0ZWNvZGUpIHsKLSAgICAgICAgb3AtPnNldERlZmF1bHRPZmZzZXQoZGVm
YXVsdFRhcmdldCwgWyZdKCkgewotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZE91dE9mTGlu
ZUp1bXBUYXJnZXQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgZGVmYXVsdFRhcmdldCk7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoYnl0
ZWNvZGUudGFibGVJbmRleCk7CisgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1w
VGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIHByZXBh
cmVKdW1wVGFibGVGb3JTd2l0Y2goCiAgICAgICAgICAgICBqdW1wVGFibGUsIHN3aXRjaEluZm8u
Ynl0ZWNvZGVPZmZzZXQsIGNsYXVzZUNvdW50LCBsYWJlbHMsIG5vZGVzLCBtaW4sIG1heCwKICAg
ICAgICAgICAgIHN3aXRjaEluZm8uc3dpdGNoVHlwZSA9PSBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1l
ZGlhdGUKICAgICAgICAgICAgICAgICA/IGtleUZvckltbWVkaWF0ZVN3aXRjaAogICAgICAgICAg
ICAgICAgIDoga2V5Rm9yQ2hhcmFjdGVyU3dpdGNoKTsgCi0gICAgfTsKLSAgICAKLSAgICBhdXRv
IHJlZiA9IG1fd3JpdGVyLnJlZihzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0KTsKLSAgICBzd2l0
Y2ggKHN3aXRjaEluZm8uc3dpdGNoVHlwZSkgewotICAgIGNhc2UgU3dpdGNoSW5mbzo6U3dpdGNo
SW1tZWRpYXRlOiB7Ci0gICAgICAgIGhhbmRsZVN3aXRjaChyZWYtPmNhc3Q8T3BTd2l0Y2hJbW0+
KCksIHJlZi0+YXM8T3BTd2l0Y2hJbW0+KCkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
Y2FzZSBTd2l0Y2hJbmZvOjpTd2l0Y2hDaGFyYWN0ZXI6IHsKLSAgICAgICAgaGFuZGxlU3dpdGNo
KHJlZi0+Y2FzdDxPcFN3aXRjaENoYXI+KCksIHJlZi0+YXM8T3BTd2l0Y2hDaGFyPigpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFN3aXRjaEluZm86OlN3aXRj
aFN0cmluZzogewotICAgICAgICByZWYtPmNhc3Q8T3BTd2l0Y2hTdHJpbmc+KCktPnNldERlZmF1
bHRPZmZzZXQoZGVmYXVsdFRhcmdldCwgWyZdKCkgewotICAgICAgICAgICAgbV9jb2RlQmxvY2st
PmFkZE91dE9mTGluZUp1bXBUYXJnZXQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgZGVmYXVs
dFRhcmdldCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2Nr
LT5udW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVsLmJpbmQoc3dp
dGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOwog
Ci0gICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9j
ay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHJlZi0+YXM8T3BTd2l0Y2hTdHJpbmc+KCkudGFibGVJ
bmRleCk7CisgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2Nv
ZGVCbG9jay0+YWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIHByZXBhcmVKdW1w
VGFibGVGb3JTdHJpbmdTd2l0Y2goanVtcFRhYmxlLCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0
LCBjbGF1c2VDb3VudCwgbGFiZWxzLCBub2Rlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTQwOTAsNzkgKzQ0NjgsMTE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0R2xvYmFsUHJpdmF0ZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RW51bWVyYWJsZUxlbmd0aChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCiB7Ci0gICAgT3BHZXRFbnVtZXJhYmxlTGVuZ3RoOjpl
bWl0KHRoaXMsIGRzdCwgYmFzZSk7CisgICAgZW1pdE9wY29kZShvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGgpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0OwogfQog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEhhc0dlbmVyaWNQcm9wZXJ0eShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICBPcEhhc0dlbmVyaWNQcm9wZXJ0eTo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHBy
b3BlcnR5TmFtZSk7CisgICAgZW1pdE9wY29kZShvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9w
ZXJ0eU5hbWUtPmluZGV4KCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SGFzSW5kZXhlZFByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lKQogewotICAgIE9wSGFz
SW5kZXhlZFByb3BlcnR5OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHlOYW1lKTsKKyAg
ICBVbmxpbmtlZEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsK
KyAgICBlbWl0T3Bjb2RlKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFz
ZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZS0+aW5k
ZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CiAgICAgcmV0
dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRIYXNTdHJ1
Y3R1cmVQcm9wZXJ0eShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5TmFtZSwgUmVnaXN0ZXJJRCogZW51bWVyYXRvcikKIHsKLSAgICBPcEhhc1N0
cnVjdHVyZVByb3BlcnR5OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHlOYW1lLCBlbnVt
ZXJhdG9yKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVy
dHlOYW1lLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZW51bWVyYXRvci0+
aW5kZXgoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRQcm9wZXJ0eUVudW1lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlKQogewotICAgIE9wR2V0UHJvcGVydHlFbnVtZXJhdG9yOjplbWl0KHRoaXMsIGRz
dCwgYmFzZSk7CisgICAgZW1pdE9wY29kZShvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRvclN0cnVjdHVyZVByb3BlcnR5TmFt
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3IsIFJlZ2lzdGVySUQqIGlu
ZGV4KQogewotICAgIE9wRW51bWVyYXRvclN0cnVjdHVyZVBuYW1lOjplbWl0KHRoaXMsIGRzdCwg
ZW51bWVyYXRvciwgaW5kZXgpOworICAgIGVtaXRPcGNvZGUob3BfZW51bWVyYXRvcl9zdHJ1Y3R1
cmVfcG5hbWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChlbnVtZXJhdG9yLT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoaW5kZXgtPmluZGV4KCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRvckdlbmVyaWNQcm9wZXJ0
eU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBSZWdpc3RlcklE
KiBpbmRleCkKIHsKLSAgICBPcEVudW1lcmF0b3JHZW5lcmljUG5hbWU6OmVtaXQodGhpcywgZHN0
LCBlbnVtZXJhdG9yLCBpbmRleCk7CisgICAgZW1pdE9wY29kZShvcF9lbnVtZXJhdG9yX2dlbmVy
aWNfcG5hbWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChlbnVtZXJhdG9yLT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoaW5kZXgtPmluZGV4KCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9JbmRleFN0cmluZyhSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGluZGV4KQogewotICAgIE9wVG9JbmRleFN0cmluZzo6ZW1pdCh0
aGlzLCBkc3QsIGluZGV4KTsKKyAgICBlbWl0T3Bjb2RlKG9wX3RvX2luZGV4X3N0cmluZyk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGluZGV4LT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUgdHlwZSkKIHsKLSAgICBPcElzQ2VsbFdpdGhUeXBl
OjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2lzX2NlbGxf
d2l0aF90eXBlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQodHlwZSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJc09iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YykKIHsKLSAgICBPcElzT2JqZWN0OjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKKyAgICBlbWl0T3Bj
b2RlKG9wX2lzX29iamVjdCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgo
KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYy0+aW5kZXgoKSk7CiAgICAgcmV0dXJu
IGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc051bWJlcihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKIHsKLSAgICBPcElzTnVtYmVyOjplbWl0
KHRoaXMsIGRzdCwgc3JjKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2lzX251bWJlcik7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHNyYy0+aW5kZXgoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc1VuZGVmaW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYykKIHsKLSAgICBPcElzVW5kZWZpbmVkOjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKKyAg
ICBlbWl0T3Bjb2RlKG9wX2lzX3VuZGVmaW5lZCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYy0+aW5kZXgoKSk7
CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJc0VtcHR5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQogewotICAgIE9wSXNF
bXB0eTo6ZW1pdCh0aGlzLCBkc3QsIHNyYyk7CisgICAgZW1pdE9wY29kZShvcF9pc19lbXB0eSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHNyYy0+aW5kZXgoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KICAgICAKQEAg
LTQzNDgsOSArNDc2MSwxNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BTdHJ1Y3R1cmVG
b3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIpCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25l
ZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN0QXJy
YXlMZW5ndGggPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBPcEdldFJlc3RMZW5ndGg6OmVtaXQodGhp
cywgcmVzdEFycmF5TGVuZ3RoLmdldCgpLCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsKKyAgICBlbWl0
T3Bjb2RlKG9wX2dldF9yZXN0X2xlbmd0aCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJl
c3RBcnJheUxlbmd0aC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG51bVBh
cmFtZXRlcnNUb1NraXApOwogCi0gICAgT3BDcmVhdGVSZXN0OjplbWl0KHRoaXMsIHJlc3VsdCwg
cmVzdEFycmF5TGVuZ3RoLmdldCgpLCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsKKyAgICBlbWl0T3Bj
b2RlKG9wX2NyZWF0ZV9yZXN0KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzdWx0LT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzdEFycmF5TGVuZ3RoLT5pbmRl
eCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobnVtUGFyYW1ldGVyc1RvU2tpcCk7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDM2MSw3ICs0Nzc5LDkgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFJlcXVpcmVPYmplY3RDb2VyY2libGUoUmVnaXN0ZXJJRCogdmFsdWUs
IGNvbnN0IFN0cmkKICAgICAvLyB0aHVzIGluY29ycmVjdGx5IHRocm93cyBhIFR5cGVFcnJvciBm
b3IgaW50ZXJmYWNlcyBsaWtlIEhUTUxBbGxDb2xsZWN0aW9uLgogICAgIFJlZjxMYWJlbD4gdGFy
Z2V0ID0gbmV3TGFiZWwoKTsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXpl
KCk7Ci0gICAgT3BKbmVxTnVsbDo6ZW1pdCh0aGlzLCB2YWx1ZSwgdGFyZ2V0LT5iaW5kKGJlZ2lu
KSk7CisgICAgZW1pdE9wY29kZShvcF9qbmVxX251bGwpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+
YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgZW1pdFRocm93VHlwZUVy
cm9yKGVycm9yKTsKICAgICBlbWl0TGFiZWwodGFyZ2V0LmdldCgpKTsKIH0KQEAgLTQzOTIsNyAr
NDgxMiwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bgogICAgIFZlY3RvcjxUcnlDb250ZXh0
PiBzYXZlZFRyeUNvbnRleHRTdGFjazsKICAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVk
VHJ5Q29udGV4dFN0YWNrKTsKIAotICAgIE9wWWllbGQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpLCB5aWVsZFBvaW50SW5kZXgsIGFyZ3VtZW50KTsKKyAgICBlbWl0T3Bjb2Rl
KG9wX3lpZWxkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoeWllbGRQb2ludElu
ZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnQtPmluZGV4KCkpOwogCiAg
ICAgLy8gUmVzdG9yZSB0aGUgdHJ5IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQgaXMgdXBk
YXRlZCB0byB0aGUgbWVyZ2UgcG9pbnQuCiAgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZl
ZFRyeUNvbnRleHRTdGFjayk7CkBAIC00NDA1LDExICs0ODI4LDExIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNH
ZW5lcmF0b3JGCiAKICAgICBSZWY8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgZW1p
dEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9k
ZSkpKSk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3Vt
ZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwogICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQo
KSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCiAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3
TGFiZWwoKTsKLSAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCks
IGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1
bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOwogICAgIGVtaXRKdW1wSWZUcnVl
KGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CiAgICAgLy8gUmV0dXJuLgogICAg
IHsKQEAgLTQ0NTgsNyArNDg4MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QXN5bmNJdGVyYXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhCiAgICAgUmVm
PExhYmVsPiBhc3luY0l0ZXJhdG9yRm91bmQgPSBuZXdMYWJlbCgpOwogICAgIFJlZjxMYWJlbD4g
aXRlcmF0b3JSZWNlaXZlZCA9IG5ld0xhYmVsKCk7CiAKLSAgICBlbWl0SnVtcElmVHJ1ZShlbWl0
VW5hcnlPcDxPcEVxTnVsbD4obmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpKSwgYXN5bmNJ
dGVyYXRvck5vdEZvdW5kLmdldCgpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShlbWl0VW5hcnlPcChv
cF9lcV9udWxsLCBuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCkpLCBhc3luY0l0ZXJhdG9y
Tm90Rm91bmQuZ2V0KCkpOwogCiAgICAgZW1pdEp1bXAoYXN5bmNJdGVyYXRvckZvdW5kLmdldCgp
KTsKICAgICBlbWl0TGFiZWwoYXN5bmNJdGVyYXRvck5vdEZvdW5kLmdldCgpKTsKQEAgLTQ1MTcs
MTAgKzQ5NDAsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0
ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAgICBS
ZWY8TGFiZWw+IHJldHVybkxhYmVsID0gbmV3TGFiZWwoKTsKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1w
b3JhcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4o
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpO
b3JtYWxNb2RlKSkpKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0
aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgZW1p
dEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9k
ZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpKTsKICAgICAgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCByZXR1cm5MYWJlbC5nZXQoKSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbHRocm91Z2ggdG8gVGhyb3dNb2RlLgpAQCAtNDY4
Nyw3ICs1MTEwLDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVyblZpYUZpbmFs
bHlJZk5lZWRlZChSZWdpc3RlcklEKiByZXR1cm5SZWdpc3RlcikKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRGaW5hbGx5Q29tcGxldGlvbihGaW5hbGx5Q29udGV4dCYgY29udGV4dCwgUmVn
aXN0ZXJJRCogY29tcGxldGlvblR5cGVSZWdpc3RlciwgTGFiZWwmIG5vcm1hbENvbXBsZXRpb25M
YWJlbCkKIHsKICAgICBpZiAoY29udGV4dC5udW1iZXJPZkJyZWFrc09yQ29udGludWVzKCkgfHwg
Y29udGV4dC5oYW5kbGVzUmV0dXJucygpKSB7Ci0gICAgICAgIGVtaXRKdW1wSWY8T3BTdHJpY3Rl
cT4oY29tcGxldGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGU6Ok5vcm1hbCwgbm9ybWFs
Q29tcGxldGlvbkxhYmVsKTsKKyAgICAgICAgZW1pdEp1bXBJZihvcF9zdHJpY3RlcSwgY29tcGxl
dGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGU6Ok5vcm1hbCwgbm9ybWFsQ29tcGxldGlv
bkxhYmVsKTsKIAogICAgICAgICBGaW5hbGx5Q29udGV4dCogb3V0ZXJDb250ZXh0ID0gY29udGV4
dC5vdXRlckNvbnRleHQoKTsKIApAQCAtNDY5Nyw3ICs1MTIwLDcgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEZpbmFsbHlDb21wbGV0aW9uKEZpbmFsbHlDb250ZXh0JiBjb250ZXh0LCBS
ZWdpc3RlckkKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkp1bXBzOyBp
KyspIHsKICAgICAgICAgICAgIFJlZjxMYWJlbD4gbmV4dExhYmVsID0gbmV3TGFiZWwoKTsKICAg
ICAgICAgICAgIGF1dG8mIGp1bXAgPSBjb250ZXh0Lmp1bXBzKGkpOwotICAgICAgICAgICAgZW1p
dEp1bXBJZjxPcE5zdHJpY3RlcT4oY29tcGxldGlvblR5cGVSZWdpc3RlciwganVtcC5qdW1wSUQs
IG5leHRMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBlbWl0SnVtcElmKG9wX25zdHJpY3RlcSwg
Y29tcGxldGlvblR5cGVSZWdpc3RlciwganVtcC5qdW1wSUQsIG5leHRMYWJlbC5nZXQoKSk7CiAK
ICAgICAgICAgICAgIHJlc3RvcmVTY29wZVJlZ2lzdGVyKGp1bXAudGFyZ2V0TGV4aWNhbFNjb3Bl
SW5kZXgpOwogICAgICAgICAgICAgZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBl
OjpOb3JtYWwpOwpAQCAtNDcxMCwxMyArNTEzMywxMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RmluYWxseUNvbXBsZXRpb24oRmluYWxseUNvbnRleHQmIGNvbnRleHQsIFJlZ2lzdGVy
SQogICAgICAgICAgICAgLy8gV2UgYXJlIG5vdCB0aGUgb3V0ZXJtb3N0IGZpbmFsbHkuCiAgICAg
ICAgICAgICBib29sIGhhc0JyZWFrc09yQ29udGludWVzTm90Q292ZXJlZEJ5SnVtcHMgPSBjb250
ZXh0Lm51bWJlck9mQnJlYWtzT3JDb250aW51ZXMoKSA+IG51bWJlck9mSnVtcHM7CiAgICAgICAg
ICAgICBpZiAoaGFzQnJlYWtzT3JDb250aW51ZXNOb3RDb3ZlcmVkQnlKdW1wcyB8fCBjb250ZXh0
LmhhbmRsZXNSZXR1cm5zKCkpCi0gICAgICAgICAgICAgICAgZW1pdEp1bXBJZjxPcE5zdHJpY3Rl
cT4oY29tcGxldGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGU6OlRocm93LCAqb3V0ZXJD
b250ZXh0LT5maW5hbGx5TGFiZWwoKSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZihvcF9u
c3RyaWN0ZXEsIGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIENvbXBsZXRpb25UeXBlOjpUaHJvdywg
Km91dGVyQ29udGV4dC0+ZmluYWxseUxhYmVsKCkpOwogCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBXZSBhcmUgdGhlIG91dGVybW9zdCBmaW5hbGx5LgogICAgICAgICAgICAgaWYg
KGNvbnRleHQuaGFuZGxlc1JldHVybnMoKSkgewogICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4g
bm90UmV0dXJuTGFiZWwgPSBuZXdMYWJlbCgpOwotICAgICAgICAgICAgICAgIGVtaXRKdW1wSWY8
T3BOc3RyaWN0ZXE+KGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIENvbXBsZXRpb25UeXBlOjpSZXR1
cm4sIG5vdFJldHVybkxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmKG9w
X25zdHJpY3RlcSwgY29tcGxldGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGU6OlJldHVy
biwgbm90UmV0dXJuTGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgZW1pdFdpbGxMZWF2
ZUNhbGxGcmFtZURlYnVnSG9vaygpOwogICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4oY29tcGxl
dGlvblZhbHVlUmVnaXN0ZXIoKSwgUmV0dXJuRnJvbTo6RmluYWxseSk7CkBAIC00NzI1LDcgKzUx
NDgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RmluYWxseUNvbXBsZXRpb24oRmlu
YWxseUNvbnRleHQmIGNvbnRleHQsIFJlZ2lzdGVySQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQotICAgIGVtaXRKdW1wSWY8T3BOc3RyaWN0ZXE+KGNvbXBsZXRpb25UeXBlUmVnaXN0
ZXIsIENvbXBsZXRpb25UeXBlOjpUaHJvdywgbm9ybWFsQ29tcGxldGlvbkxhYmVsKTsKKyAgICBl
bWl0SnVtcElmKG9wX25zdHJpY3RlcSwgY29tcGxldGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlv
blR5cGU6OlRocm93LCBub3JtYWxDb21wbGV0aW9uTGFiZWwpOwogICAgIGVtaXRUaHJvdyhjb21w
bGV0aW9uVmFsdWVSZWdpc3RlcigpKTsKIH0KIApAQCAtNDc1MCwxNCArNTE3MywxMyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjpyZWxlYXNlQ29tcGxldGlvblJlY29yZFJlZ2lzdGVycygpCiAg
ICAgbV9jb21wbGV0aW9uVmFsdWVSZWdpc3RlciA9IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENvbXBhcmVPcD4KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWYoUmVn
aXN0ZXJJRCogY29tcGxldGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGUgdHlwZSwgTGFi
ZWwmIGp1bXBUYXJnZXQpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmKE9wY29k
ZUlEIGNvbXBhcmVPcGNvZGUsIFJlZ2lzdGVySUQqIGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIENv
bXBsZXRpb25UeXBlIHR5cGUsIExhYmVsJiBqdW1wVGFyZ2V0KQogewogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0ZW1wUmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKICAgICBSZWdpc3RlcklEKiB2
YWx1ZUNvbnN0YW50ID0gYWRkQ29uc3RhbnRWYWx1ZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+
KHR5cGUpKSk7CiAgICAgT3BlcmFuZFR5cGVzIG9wZXJhbmRUeXBlcyA9IE9wZXJhbmRUeXBlcyhS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgp
KTsKIAotICAgIGF1dG8gZXF1aXZhbGVuY2VSZXN1bHQgPSBlbWl0QmluYXJ5T3A8Q29tcGFyZU9w
Pih0ZW1wUmVnaXN0ZXIuZ2V0KCksIHZhbHVlQ29uc3RhbnQsIGNvbXBsZXRpb25UeXBlUmVnaXN0
ZXIsIG9wZXJhbmRUeXBlcyk7CisgICAgYXV0byBlcXVpdmFsZW5jZVJlc3VsdCA9IGVtaXRCaW5h
cnlPcChjb21wYXJlT3Bjb2RlLCB0ZW1wUmVnaXN0ZXIuZ2V0KCksIHZhbHVlQ29uc3RhbnQsIGNv
bXBsZXRpb25UeXBlUmVnaXN0ZXIsIG9wZXJhbmRUeXBlcyk7CiAgICAgZW1pdEp1bXBJZlRydWUo
ZXF1aXZhbGVuY2VSZXN1bHQsIGp1bXBUYXJnZXQpOwogfQogCkBAIC00Nzc2LDE1ICs1MTk4LDE2
IEBAIHZvaWQgRm9ySW5Db250ZXh0OjpmaW5hbGl6ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBVbmxpbmtlZENvZGVCbG9jayogY29kCiAgICAgLy8gcmVhc3NpZ25lZCBmcm9tIGl0cyBv
cmlnaW5hbCB2YWx1ZS4KIAogICAgIGZvciAodW5zaWduZWQgb2Zmc2V0ID0gYm9keUJ5dGVjb2Rl
U3RhcnRPZmZzZXQoKTsgaXNWYWxpZCgpICYmIG9mZnNldCA8IGJvZHlCeXRlY29kZUVuZE9mZnNl
dDspIHsKLSAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IGdlbmVyYXRvci5pbnN0cnVjdGlvbnMo
KS5hdChvZmZzZXQpOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5v
cGNvZGVJRCgpOworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZn
ZW5lcmF0b3IuaW5zdHJ1Y3Rpb25zKClbb2Zmc2V0XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7CisgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0
aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIEFTU0VSVChvcGNvZGVJRCAh
PSBvcF9lbnRlcik7Ci0gICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24ucHRyKCksIFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChsb2NhbCgpLT52aXJ0dWFsUmVnaXN0ZXIoKSA9PSBv
cGVyYW5kKQorICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
b3Bjb2RlSUQsIGluc3RydWN0aW9uLCBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJ
bnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGxv
Y2FsKCktPmluZGV4KCkgPT0gb3BlcmFuZCkKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7
CiAgICAgICAgIH0pOwotICAgICAgICBvZmZzZXQgKz0gaW5zdHJ1Y3Rpb24tPnNpemUoKTsKKyAg
ICAgICAgb2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKICAgICB9CiB9CiAKQEAgLTQ3OTcsMjkgKzUy
MjAsMjQgQEAgdm9pZCBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ6OmZpbmFsaXplKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFVubGlua2VkQ29kZUIKICAgICBmb3IgKGNvbnN0IGF1dG8mIGlu
c3RUdXBsZSA6IG1fZ2V0SW5zdHMpIHsKICAgICAgICAgdW5zaWduZWQgaW5zdEluZGV4ID0gc3Rk
OjpnZXQ8MD4oaW5zdFR1cGxlKTsKICAgICAgICAgaW50IHByb3BlcnR5UmVnSW5kZXggPSBzdGQ6
OmdldDwxPihpbnN0VHVwbGUpOwotICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gZ2VuZXJhdG9y
Lm1fd3JpdGVyLnJlZihpbnN0SW5kZXgpOwotICAgICAgICBhdXRvIGVuZCA9IGluc3RJbmRleCAr
IGluc3RydWN0aW9uLT5zaXplKCk7Ci0gICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbi0+aXNXaWRl
KCkpOwotCi0gICAgICAgIGdlbmVyYXRvci5tX3dyaXRlci5zZWVrKGluc3RJbmRleCk7Ci0KLSAg
ICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldERpcmVjdFBuYW1lPigp
OwotCi0gICAgICAgIC8vIGRpc2FibGUgcGVlcGhvbGUgb3B0aW1pemF0aW9ucwotICAgICAgICBP
cGNvZGVJRCBsYXN0T3Bjb2RlSUQgPSBnZW5lcmF0b3IubV9sYXN0T3Bjb2RlSUQ7Ci0gICAgICAg
IGdlbmVyYXRvci5tX2xhc3RPcGNvZGVJRCA9IG9wX2VuZDsKLQotICAgICAgICAvLyBDaGFuZ2Ug
dGhlIG9wY29kZSB0byBnZXRfYnlfdmFsLgorICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSB2
YWx1ZVByb2ZpbGUgPSBzdGQ6OmdldDwyPihpbnN0VHVwbGUpOworICAgICAgICBPcGNvZGVJRCBv
cCA9IGdlbmVyYXRvci5pbnN0cnVjdGlvbnMoKVtpbnN0SW5kZXhdLnUub3Bjb2RlOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChvcCA9PSBvcF9nZXRfZGlyZWN0X3BuYW1lKTsKKyAgICAgICAgQVNT
RVJUKG9wY29kZUxlbmd0aChvcF9nZXRfZGlyZWN0X3BuYW1lKSA9PSA3KTsKKyAgICAgICAgQVNT
RVJUKG9wY29kZUxlbmd0aChvcF9nZXRfYnlfdmFsKSA9PSA2KTsKKworICAgICAgICAvLyAwLiBD
aGFuZ2UgdGhlIG9wY29kZSB0byBnZXRfYnlfdmFsLgorICAgICAgICBnZW5lcmF0b3IuaW5zdHJ1
Y3Rpb25zKClbaW5zdEluZGV4XS51Lm9wY29kZSA9IG9wX2dldF9ieV92YWw7CiAgICAgICAgIC8v
IDEuIGRzdCBzdGF5cyB0aGUgc2FtZS4KICAgICAgICAgLy8gMi4gYmFzZSBzdGF5cyB0aGUgc2Ft
ZS4KICAgICAgICAgLy8gMy4gcHJvcGVydHkgZ2V0cyBzd2l0Y2hlZCB0byB0aGUgb3JpZ2luYWwg
cHJvcGVydHkuCi0gICAgICAgIE9wR2V0QnlWYWw6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZT4oJmdl
bmVyYXRvciwgYnl0ZWNvZGUuZHN0LCBieXRlY29kZS5iYXNlLCBWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHlSZWdJbmRleCkpOwotCi0gICAgICAgIC8vIDQuIG5vcCBvdXQgdGhlIHJlbWFpbmluZyBi
eXRlcwotICAgICAgICB3aGlsZSAoZ2VuZXJhdG9yLm1fd3JpdGVyLnBvc2l0aW9uKCkgPCBlbmQp
Ci0gICAgICAgICAgICBPcE5vcDo6ZW1pdDxPcGNvZGVTaXplOjpOYXJyb3c+KCZnZW5lcmF0b3Ip
OwotICAgICAgICBnZW5lcmF0b3IubV93cml0ZXIuc2VlayhnZW5lcmF0b3IubV93cml0ZXIuc2l6
ZSgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLm1fbGFzdE9wY29kZUlEID0gbGFzdE9wY29kZUlEOwor
ICAgICAgICBnZW5lcmF0b3IuaW5zdHJ1Y3Rpb25zKClbaW5zdEluZGV4ICsgM10udS5vcGVyYW5k
ID0gcHJvcGVydHlSZWdJbmRleDsKKyAgICAgICAgLy8gNC4gYWRkIGFuIGFycmF5IHByb2ZpbGUu
CisgICAgICAgIGdlbmVyYXRvci5pbnN0cnVjdGlvbnMoKVtpbnN0SW5kZXggKyA0XS51LnVuc2ln
bmVkVmFsdWUgPSBnZW5lcmF0b3IubmV3QXJyYXlQcm9maWxlKCk7CisgICAgICAgIC8vIDUuIHNl
dCB0aGUgcmVzdWx0IHZhbHVlIHByb2ZpbGUuCisgICAgICAgIGdlbmVyYXRvci5pbnN0cnVjdGlv
bnMoKVtpbnN0SW5kZXggKyA1XS51LnVuc2lnbmVkVmFsdWUgPSB2YWx1ZVByb2ZpbGU7CisgICAg
ICAgIC8vIDYuIG5vcCBvdXQgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gd29yZC4KKyAgICAgICAgZ2Vu
ZXJhdG9yLmluc3RydWN0aW9ucygpW2luc3RJbmRleCArIDZdLnUub3Bjb2RlID0gb3Bfbm9wOwog
ICAgIH0KIH0KIApAQCAtNDgzMiwzOSArNTI1MCwyMiBAQCB2b2lkIEluZGV4ZWRGb3JJbkNvbnRl
eHQ6OmZpbmFsaXplKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFVubGlua2VkQ29kZUJs
bwogICAgIGZvciAoY29uc3QgYXV0byYgaW5zdFBhaXIgOiBtX2dldEluc3RzKSB7CiAgICAgICAg
IHVuc2lnbmVkIGluc3RJbmRleCA9IGluc3RQYWlyLmZpcnN0OwogICAgICAgICBpbnQgcHJvcGVy
dHlSZWdJbmRleCA9IGluc3RQYWlyLnNlY29uZDsKLSAgICAgICAgLy8gRklYTUU6IHdlIHNob3Vs
ZCBub3QgaGF2ZSB0byBmb3JjZSB0aGlzIGdldF9ieV92YWwgdG8gYmUgd2lkZSwganVzdCBndWFy
YW50ZWUgdGhhdCBwcm9wZXJ0eVJlZ0luZGV4IGZpdHMKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkyOQotICAgICAgICBnZW5lcmF0b3IubV93
cml0ZXIucmVmKGluc3RJbmRleCktPmNhc3Q8T3BHZXRCeVZhbD4oKS0+c2V0UHJvcGVydHkoVmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5UmVnSW5kZXgpLCBbXSgpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcigpOwot
ICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgU3RhdGljUHJvcGVydHlBbmFseXNpczo6cmVj
b3JkKCkKLXsKLSAgICBhdXRvKiBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25SZWYucHRyKCk7
Ci0gICAgYXV0byBzaXplID0gbV9wcm9wZXJ0eUluZGV4ZXMuc2l6ZSgpOwotICAgIHN3aXRjaCAo
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKLSAgICBjYXNlIE9wTmV3T2JqZWN0OjpvcGNvZGVJ
RDoKLSAgICAgICAgaW5zdHJ1Y3Rpb24tPmNhc3Q8T3BOZXdPYmplY3Q+KCktPnNldElubGluZUNh
cGFjaXR5KHNpemUsIFtdKCkgewotICAgICAgICAgICAgcmV0dXJuIDI1NTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE9wQ3JlYXRlVGhpczo6b3Bjb2RlSUQ6Ci0gICAg
ICAgIGluc3RydWN0aW9uLT5jYXN0PE9wQ3JlYXRlVGhpcz4oKS0+c2V0SW5saW5lQ2FwYWNpdHko
c2l6ZSwgW10oKSB7Ci0gICAgICAgICAgICByZXR1cm4gMjU1OwotICAgICAgICB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBPcGNvZGVJRCBvcCA9IGdlbmVyYXRvci5pbnN0cnVjdGlvbnMoKVtpbnN0SW5kZXhd
LnUub3Bjb2RlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCA9PSBvcF9nZXRfYnlfdmFsKTsK
KyAgICAgICAgLy8gV2UganVzdCBuZWVkIHRvIHBlcmZvcm0gdGhlIGdldF9ieV92YWwgd2l0aCB0
aGUgb3JpZ2luYWwgcHJvcGVydHkgaGVyZSwKKyAgICAgICAgLy8gbm90IHRoZSBpbmRleGVkIG9u
ZS4KKyAgICAgICAgZ2VuZXJhdG9yLmluc3RydWN0aW9ucygpW2luc3RJbmRleCArIDNdLnUub3Bl
cmFuZCA9IHByb3BlcnR5UmVnSW5kZXg7CiAgICAgfQogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0VG9UaGlzKCkKIHsKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotICAgIE9wVG9UaGlzOjplbWl0KHRo
aXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJv
ZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF90b190aGlzKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChwcm9maWxlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggMjI4MDgwZjJhMWY5ZjMyMmQ0NGVjZmQzNTIwY2Y1MTQ0ODQwMjAxMC4uZjg4ZDg0Zjk3MmU2
M2QxZTFkOTUxNzlmNjBjMGZiNjEwMjhiMTgzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDEsNyArNDEs
NiBAQAogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1
ZGUgIlBhcnNlckVycm9yLmgiCi0jaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIK
ICNpbmNsdWRlICJSZWdpc3RlcklELmgiCiAjaW5jbHVkZSAiU3RhdGljUHJvcGVydHlBbmFseXpl
ci5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCkBAIC0yMzIsNyArMjMxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgU3RydWN0dXJlRm9ySW5Db250ZXh0IDogcHVibGljIEZvcklu
Q29udGV4dCB7CiAgICAgICAgIHVzaW5nIEJhc2UgPSBGb3JJbkNvbnRleHQ7CiAgICAgcHVibGlj
OgotICAgICAgICB1c2luZyBHZXRJbnN0ID0gc3RkOjp0dXBsZTx1bnNpZ25lZCwgaW50PjsKKyAg
ICAgICAgdXNpbmcgR2V0SW5zdCA9IHN0ZDo6dHVwbGU8dW5zaWduZWQsIGludCwgVW5saW5rZWRW
YWx1ZVByb2ZpbGU+OwogCiAgICAgICAgIFN0cnVjdHVyZUZvckluQ29udGV4dChSZWdpc3RlcklE
KiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBpbmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yUmVnaXN0ZXIsIHVuc2lnbmVk
IGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQogICAgICAgICAgICAgOiBGb3JJbkNvbnRleHQobG9j
YWxSZWdpc3RlciwgVHlwZTo6U3RydWN0dXJlRm9ySW4sIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0
KQpAQCAtMjQ2LDkgKzI0NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklE
KiBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Rlci5nZXQoKTsgfQog
ICAgICAgICBSZWdpc3RlcklEKiBlbnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lbnVtZXJh
dG9yUmVnaXN0ZXIuZ2V0KCk7IH0KIAotICAgICAgICB2b2lkIGFkZEdldEluc3QodW5zaWduZWQg
aW5zdEluZGV4LCBpbnQgcHJvcGVydHlSZWdJbmRleCkKKyAgICAgICAgdm9pZCBhZGRHZXRJbnN0
KHVuc2lnbmVkIGluc3RJbmRleCwgaW50IHByb3BlcnR5UmVnSW5kZXgsIFVubGlua2VkVmFsdWVQ
cm9maWxlIHZhbHVlUHJvZmlsZSkKICAgICAgICAgewotICAgICAgICAgICAgbV9nZXRJbnN0cy5h
cHBlbmQoR2V0SW5zdCB7IGluc3RJbmRleCwgcHJvcGVydHlSZWdJbmRleCB9KTsKKyAgICAgICAg
ICAgIG1fZ2V0SW5zdHMuYXBwZW5kKEdldEluc3QgeyBpbnN0SW5kZXgsIHByb3BlcnR5UmVnSW5k
ZXgsIHZhbHVlUHJvZmlsZSB9KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZmluYWxpemUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBVbmxpbmtlZENvZGVCbG9jayosIHVuc2lnbmVkIGJvZHlCeXRl
Y29kZUVuZE9mZnNldCk7CkBAIC0zNTksMTMgKzM1OCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVHJ5RGF0YSogdHJ5RGF0YTsKICAgICB9OwogCisgICAgZW51bSBQcm9maWxlVHlwZUJ5
dGVjb2RlRmxhZyB7CisgICAgICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVDbG9zdXJlVmFyLAorICAg
ICAgICBQcm9maWxlVHlwZUJ5dGVjb2RlTG9jYWxseVJlc29sdmVkLAorICAgICAgICBQcm9maWxl
VHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwKKyAgICAgICAgUHJvZmlsZVR5cGVCeXRl
Y29kZUZ1bmN0aW9uQXJndW1lbnQsCisgICAgICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
blJldHVyblN0YXRlbWVudAorICAgIH07CisKICAgICBjbGFzcyBCeXRlY29kZUdlbmVyYXRvciB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShCeXRlY29kZUdlbmVyYXRvcik7Ci0KLSAgICAgICAgZnJpZW5kIGNsYXNzIExhYmVs
OwotICAgICAgICBmcmllbmQgY2xhc3MgSW5kZXhlZEZvckluQ29udGV4dDsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIFN0cnVjdHVyZUZvckluQ29udGV4dDsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIApA
QCAtNTA2LDE4ICs1MDksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG4tPmVtaXRC
eXRlY29kZSgqdGhpcywgZHN0KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVjb3JkT3Bj
b2RlKE9wY29kZUlEIG9wY29kZUlEKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV9s
YXN0T3Bjb2RlSUQgPT0gb3BfZW5kIHx8IG1fd3JpdGVyLnNpemUoKSA9PSBtX2xhc3RJbnN0cnVj
dGlvbi5vZmZzZXQoKSArIG1fbGFzdEluc3RydWN0aW9uLT5zaXplKCkpOwotICAgICAgICAgICAg
bV9sYXN0SW5zdHJ1Y3Rpb24gPSBtX3dyaXRlci5yZWYoKTsKLSAgICAgICAgICAgIG1fbGFzdE9w
Y29kZUlEID0gb3Bjb2RlSUQ7Ci0gICAgICAgIH0KLQotICAgICAgICBBTFdBWVNfSU5MSU5FIHVu
c2lnbmVkIGFkZE1ldGFkYXRhRm9yKE9wY29kZUlEIG9wY29kZUlEKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm1ldGFkYXRhKCkuYWRkRW50cnkob3Bjb2RlSUQp
OwotICAgICAgICB9Ci0KICAgICAgICAgdm9pZCBlbWl0Tm9kZShTdGF0ZW1lbnROb2RlKiBuKQog
ICAgICAgICB7CiAgICAgICAgICAgICBlbWl0Tm9kZShudWxscHRyLCBuKTsKQEAgLTY3Nyw0MyAr
NjY4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZChS
ZWdpc3RlcklEKiBkc3QsIElkZW50aWZpZXJTZXQmIGV4Y2x1ZGVkTGlzdCk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRMb2FkR2xvYmFsT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCk7CiAKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5hcnlPcCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90
PFVuYXJ5T3A6Om9wY29kZUlEICE9IG9wX25lZ2F0ZT4+Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRVbmFyeU9wKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBVbmFyeU9wOjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKLSAgICAgICAgICAgIHJl
dHVybiBkc3Q7Ci0gICAgICAgIH0KLQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChP
cGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMsIE9wZXJhbmRUeXBlcyk7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5
T3A+Ci0gICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0gICAgICAgICAgICBCaW5hcnlPcDo6b3Bj
b2RlSUQgIT0gb3BfYml0eG9yICYmIEJpbmFyeU9wOjpvcGNvZGVJRCAhPSBvcF9hZGQKLSAgICAg
ICAgICAgICYmIEJpbmFyeU9wOjpvcGNvZGVJRCAhPSBvcF9tdWwgJiYgQmluYXJ5T3A6Om9wY29k
ZUlEICE9IG9wX3N1YgotICAgICAgICAgICAgJiYgQmluYXJ5T3A6Om9wY29kZUlEICE9IG9wX2Rp
diwKLSAgICAgICAgICAgIFJlZ2lzdGVySUQqPgotICAgICAgICBlbWl0QmluYXJ5T3AoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyLCBPcGVyYW5kVHlw
ZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJpbmFyeU9wOjplbWl0KHRoaXMsIGRzdCwgc3Jj
MSwgc3JjMik7Ci0gICAgICAgICAgICByZXR1cm4gZHN0OwotICAgICAgICB9Ci0KLSAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci0gICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0g
ICAgICAgICAgICBCaW5hcnlPcDo6b3Bjb2RlSUQgPT0gb3BfYml0eG9yIHx8IEJpbmFyeU9wOjpv
cGNvZGVJRCA9PSBvcF9hZGQKLSAgICAgICAgICAgIHx8IEJpbmFyeU9wOjpvcGNvZGVJRCA9PSBv
cF9tdWwgfHwgQmluYXJ5T3A6Om9wY29kZUlEID09IG9wX3N1YgotICAgICAgICAgICAgfHwgQmlu
YXJ5T3A6Om9wY29kZUlEID09IG9wX2RpdiwKLSAgICAgICAgICAgIFJlZ2lzdGVySUQqPgotICAg
ICAgICBlbWl0QmluYXJ5T3AoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdp
c3RlcklEKiBzcmMyLCBPcGVyYW5kVHlwZXMgdHlwZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEJpbmFyeU9wOjplbWl0KHRoaXMsIGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwotICAgICAgICAg
ICAgcmV0dXJuIGRzdDsKLSAgICAgICAgfQotCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFy
eU9wUHJvZmlsZWQoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJpbmFyeU9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlZ2lzdGVySUQqIHNyYzIsIE9wZXJhbmRUeXBlcyk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFcXVhbGl0eU9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlZ2lzdGVySUQqIHNyYzIpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0VW5hcnlOb0RzdE9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBzcmMpOwogCi0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVxT3A+Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFcXVh
bGl0eU9wKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3Jj
Mik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCk7
CiAgICAgICAgIHZvaWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAg
IGJvb2wgbmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwpAQCAtNzM4LDggKzY5OSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBtb3ZlTGlua1RpbWVDb25zdGFu
dChSZWdpc3RlcklEKiBkc3QsIExpbmtUaW1lQ29uc3RhbnQpOwogICAgICAgICBSZWdpc3RlcklE
KiBtb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBkc3QpOwogCi0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRUb051bWJlcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRUb1N0cmluZyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
Yyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUb051bWJlcihSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5T3BQcm9maWxlZChvcF90b19udW1iZXIs
IGRzdCwgc3JjKTsgfQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0VG9TdHJpbmcoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU9wKG9wX3RvX3N0cmlu
ZywgZHN0LCBzcmMpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUb09iamVjdChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgY29uc3QgSWRlbnRpZmllciYgbWVzc2FnZSk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbmMoUmVnaXN0ZXJJRCogc3JjRHN0KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdERlYyhSZWdpc3RlcklEKiBzcmNEc3QpOwpAQCAtNzQ3LDcgKzcwOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0T3ZlcnJpZGVzSGFz
SW5zdGFuY2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgUmVnaXN0
ZXJJRCogaGFzSW5zdGFuY2VWYWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5j
ZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGJhc2VQ
cm90b3R5cGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VPZkN1c3RvbShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBjb25zdHJ1Y3Rvciwg
UmVnaXN0ZXJJRCogaGFzSW5zdGFuY2VWYWx1ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRU
eXBlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVy
biBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwgc3JjKTsgfQogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SW5CeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiBiYXNlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluQnlJZChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKIApA
QCAtODA4LDcgKzc2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGVudW0gY2xhc3Mg
UmV0dXJuRnJvbSB7IE5vcm1hbCwgRmluYWxseSB9OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UmV0dXJuKFJlZ2lzdGVySUQqIHNyYywgUmV0dXJuRnJvbSA9IFJldHVybkZyb206Ok5vcm1hbCk7
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFbmQoUmVnaXN0ZXJJRCogc3JjKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEVuZChSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU5v
RHN0T3Aob3BfZW5kLCBzcmMpOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVj
dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIGxhenlUaGlz
LCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFN0cmNhdChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgaW50IGNvdW50KTsKQEAgLTgzMiwxMiArNzkzLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2Fs
bChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKICAgICAgICAgdm9pZCBlbWl0SnVt
cElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKIAot
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5PcCwgdHlwZW5hbWUgSm1wT3A+Ci0gICAgICAg
IGJvb2wgZnVzZUNvbXBhcmVBbmRKdW1wKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQs
IGJvb2wgc3dhcE9wZXJhbmRzID0gZmFsc2UpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFVuYXJ5T3AsIHR5cGVuYW1lIEptcE9wPgotICAgICAgICBib29sIGZ1c2VUZXN0QW5kSm1wKFJl
Z2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwotCiAgICAgICAgIHZvaWQgZW1pdEVudGVy
KCk7CiAgICAgICAgIHZvaWQgZW1pdENoZWNrVHJhcHMoKTsKIApAQCAtODk5LDggKzg1NCwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpbnQgbGFiZWxTY29wZURlcHRoVG9MZXhpY2Fs
U2NvcGVJbmRleChpbnQgbGFiZWxTY29wZURlcHRoKTsKIAotICAgICAgICB2b2lkIGVtaXRUaHJv
dyhSZWdpc3RlcklEKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRBcmd1bWVudENvdW50KFJl
Z2lzdGVySUQqKTsKKyAgICAgICAgdm9pZCBlbWl0VGhyb3coUmVnaXN0ZXJJRCogZXhjKQorICAg
ICAgICB7IAorICAgICAgICAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CisgICAgICAgICAg
ICBlbWl0VW5hcnlOb0RzdE9wKG9wX3Rocm93LCBleGMpOworICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBlbWl0VGhyb3dTdGF0aWNFcnJvcihFcnJvclR5cGUsIFJlZ2lzdGVySUQqKTsKICAgICAg
ICAgdm9pZCBlbWl0VGhyb3dTdGF0aWNFcnJvcihFcnJvclR5cGUsIGNvbnN0IElkZW50aWZpZXIm
IG1lc3NhZ2UpOwpAQCAtOTcwLDggKzkyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgbW92ZShjb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpLCByZWcpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29tcGFyZU9wPgotICAgICAgICB2b2lkIGVtaXRKdW1w
SWYoUmVnaXN0ZXJJRCogY29tcGxldGlvblR5cGVSZWdpc3RlciwgQ29tcGxldGlvblR5cGUsIExh
YmVsJiBqdW1wVGFyZ2V0KTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcElmKE9wY29kZUlEIGNvbXBh
cmVPcGNvZGUsIFJlZ2lzdGVySUQqIGNvbXBsZXRpb25UeXBlUmVnaXN0ZXIsIENvbXBsZXRpb25U
eXBlLCBMYWJlbCYganVtcFRhcmdldCk7CiAKICAgICAgICAgYm9vbCBlbWl0SnVtcFZpYUZpbmFs
bHlJZk5lZWRlZChpbnQgdGFyZ2V0TGFiZWxTY29wZURlcHRoLCBMYWJlbCYganVtcFRhcmdldCk7
CiAgICAgICAgIGJvb2wgZW1pdFJldHVyblZpYUZpbmFsbHlJZk5lZWRlZChSZWdpc3RlcklEKiBy
ZXR1cm5SZWdpc3Rlcik7CkBAIC0xMDY0LDIxICsxMDIxLDI1IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CiAgICAgICAgIFZhcmlhYmxlIHZh
cmlhYmxlRm9yTG9jYWxFbnRyeShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU3ltYm9sVGFibGVF
bnRyeSYsIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGJvb2wgaXNMZXhpY2FsbHlTY29w
ZWQpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGtpbGwoUmVnaXN0ZXJJRCogZHN0KQorICAgICAg
ICB2b2lkIGVtaXRPcGNvZGUoT3Bjb2RlSUQpOworICAgICAgICBVbmxpbmtlZEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUgbmV3QXJyYXlBbGxvY2F0aW9uUHJvZmlsZShJbmRleGluZ1R5cGUpOworICAg
ICAgICBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIG5ld09iamVjdEFsbG9jYXRpb25Q
cm9maWxlKCk7CisgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIGVtaXRQcm9maWxlZE9wY29k
ZShPcGNvZGVJRCk7CisgICAgICAgIGludCBraWxsKFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAg
ewotICAgICAgICAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmtpbGwoZHN0KTsKLSAgICAg
ICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBkc3QtPmluZGV4KCk7
CisgICAgICAgICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIua2lsbChpbmRleCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIHJldHJpZXZl
TGFzdEJpbmFyeU9wKGludCYgZHN0SW5kZXgsIGludCYgc3JjMUluZGV4LCBpbnQmIHNyYzJJbmRl
eCk7CiAgICAgICAgIHZvaWQgcmV0cmlldmVMYXN0VW5hcnlPcChpbnQmIGRzdEluZGV4LCBpbnQm
IHNyY0luZGV4KTsKLSAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJld2luZCgpOworICAgICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgcmV3aW5kQmluYXJ5T3AoKTsKKyAgICAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHJld2luZFVuYXJ5T3AoKTsKIAogICAgICAgICB2b2lkIGFsbG9jYXRlQ2FsbGVl
U2F2ZVNwYWNlKCk7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKIAotICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wT3A+Ci0gICAgICAgIHZvaWQgc2V0VGFyZ2V0Rm9y
SnVtcEluc3RydWN0aW9uKEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiwgaW50IHRhcmdl
dCk7Ci0KICAgICAgICAgdXNpbmcgQmlnSW50TWFwRW50cnkgPSBzdGQ6OnR1cGxlPFVuaXF1ZWRT
dHJpbmdJbXBsKiwgdWludDhfdCwgYm9vbD47CiAKICAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0g
SGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwpAQCAtMTA5MSw4ICsxMDUyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIC8vIChpLmUuICJPYmplY3QoKSIgaXMgaWRlbnRpY2FsIHRvICJuZXcg
T2JqZWN0KCkiKS4KICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBlbWl0RXhwZWN0ZWRGdW5jdGlv
blNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0
aW9uLCBDYWxsQXJndW1lbnRzJiwgTGFiZWwmIGRvbmUpOwogICAgICAgICAKLSAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1
bWVudHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVD
YWxsKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoT3Bjb2RlSUQsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwpOwog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsSXRlcmF0b3IoUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwogICAg
ICAgICBSZWdpc3RlcklEKiBuZXdSZWdpc3RlcigpOwpAQCAtMTE1NSw4ICsxMTE1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVF
bnZpcm9ubWVudCYpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdz
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lz
dGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVy
LCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Fs
bE9wPgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQq
IGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdn
YWJsZUNhbGwpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoT3Bjb2RlSUQs
IFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lz
dGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVy
LCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZW1pdExv
Z1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgIHZvaWQgZW1pdExv
Z1NoYWRvd0NoaWNrZW5UYWlsSWZOZWNlc3NhcnkoKTsKQEAgLTExNzksMTMgKzExMzgsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgYWRkQmlnSW50Q29uc3RhbnQoY29uc3Qg
SWRlbnRpZmllciYsIHVpbnQ4X3QgcmFkaXgsIGJvb2wgc2lnbik7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGFkZFRlbXBsYXRlT2JqZWN0Q29uc3RhbnQoUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
cj4mJik7CiAKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3Ry
dWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25zOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRocm93RXhwcmVz
c2lvblRvb0RlZXBFeGNlcHRpb24oKTsKIAotICAgICAgICB2b2lkIHdyaXRlKHVpbnQ4X3QgYnl0
ZSkgeyBtX3dyaXRlci53cml0ZShieXRlKTsgfQotICAgICAgICB2b2lkIHdyaXRlKHVpbnQzMl90
IGkpIHsgbV93cml0ZXIud3JpdGUoaSk7IH0KLQogICAgICAgICBjbGFzcyBQcmVzZXJ2ZWRURFpT
dGFjayB7CiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBWZWN0b3I8VERaTWFwPiBtX3By
ZXNlcnZlZFREWlN0YWNrOwpAQCAtMTE5NSwyMiArMTE1MSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIHByZXNlcnZlVERaU3RhY2soUHJlc2VydmVkVERaU3RhY2smKTsKICAgICAg
ICAgdm9pZCByZXN0b3JlVERaU3RhY2soY29uc3QgUHJlc2VydmVkVERaU3RhY2smKTsKIAotICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgICAgICB2b2lkIHdpdGhXcml0ZXIoSW5z
dHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIHdyaXRlciwgY29uc3QgRnVuYyYgZm4pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGF1dG8gcHJldkxhc3RPcGNvZGVJRCA9IG1fbGFzdE9wY29kZUlEOwotICAg
ICAgICAgICAgYXV0byBwcmV2TGFzdEluc3RydWN0aW9uID0gbV9sYXN0SW5zdHJ1Y3Rpb247Ci0g
ICAgICAgICAgICBtX3dyaXRlci5zd2FwKHdyaXRlcik7Ci0gICAgICAgICAgICBtX2xhc3RPcGNv
ZGVJRCA9IG9wX2VuZDsKLSAgICAgICAgICAgIG1fbGFzdEluc3RydWN0aW9uID0gbV93cml0ZXIu
cmVmKCk7Ci0gICAgICAgICAgICBmbigpOwotICAgICAgICAgICAgbV93cml0ZXIuc3dhcCh3cml0
ZXIpOwotICAgICAgICAgICAgbV9sYXN0T3Bjb2RlSUQgPSBwcmV2TGFzdE9wY29kZUlEOwotICAg
ICAgICAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24gPSBwcmV2TGFzdEluc3RydWN0aW9uOwotICAgICAg
ICB9Ci0KICAgICBwcml2YXRlOgotICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBtX3dy
aXRlcjsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93PiBtX2luc3RydWN0aW9uczsKIAogICAgICAgICBib29sIG1fc2hvdWxkRW1pdERl
YnVnSG9va3M7CiAKQEAgLTEzMDAsMTIgKzEyNDIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIElkZW50aWZpZXJCaWdJbnRNYXAgbV9iaWdJbnRNYXA7CiAgICAgICAgIFRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvck1hcCBtX3RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvck1hcDsKIAotICAgICAg
ICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIG1fc3RhdGljUHJvcGVydHlBbmFseXplcjsKKyAgICAg
ICAgU3RhdGljUHJvcGVydHlBbmFseXplciBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgeyAmbV9p
bnN0cnVjdGlvbnMgfTsKIAogICAgICAgICBWTSogbV92bTsKIAogICAgICAgICBPcGNvZGVJRCBt
X2xhc3RPcGNvZGVJRCA9IG9wX2VuZDsKLSAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFi
bGVSZWYgbV9sYXN0SW5zdHJ1Y3Rpb24geyBtX3dyaXRlci5yZWYoKSB9OworI2lmbmRlZiBOREVC
VUcKKyAgICAgICAgc2l6ZV90IG1fbGFzdE9wY29kZVBvc2l0aW9uIHsgMCB9OworI2VuZGlmCiAK
ICAgICAgICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBt
X2V4cHJlc3Npb25Ub29EZWVwIHsgZmFsc2UgfTsKQEAgLTEzMTUsMTEgKzEyNTksMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNv
bnRleHQ7CiAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlwZSB7
IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSB9OwogCi0gICAgICAgIHVzaW5nIENhdGNoRW50cnkg
PSBzdGQ6OnR1cGxlPFRyeURhdGEqLCBWaXJ0dWFsUmVnaXN0ZXIsIFZpcnR1YWxSZWdpc3Rlcj47
CisgICAgICAgIHVzaW5nIENhdGNoRW50cnkgPSBzdGQ6OnR1cGxlPFRyeURhdGEqLCBpbnQsIGlu
dD47CiAgICAgICAgIFZlY3RvcjxDYXRjaEVudHJ5PiBtX2NhdGNoZXNUb0VtaXQ7CiAgICAgfTsK
IAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmgKaW5kZXggNWVlZDk5OTg4MzBlY2QzNTBiNDg0
YTY4NjBkN2M0MzQ5M2M4ZWE0Yi4uM2UyZDI5N2YyM2QxMDVjMTU5ODQwMTFhMGY1NWEzMzU3NGRm
MDUzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9MYWJl
bC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTGFiZWwuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKKwog
ICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yOwogCiAgICAgY2xhc3MgTGFiZWwgewpAQCAtNDMs
MjEgKzQ0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgc2V0TG9jYXRpb24o
Qnl0ZWNvZGVHZW5lcmF0b3ImLCB1bnNpZ25lZCk7CiAKLSAgICAgICAgaW50IGJpbmQoQnl0ZWNv
ZGVHZW5lcmF0b3IqKTsKLQotICAgICAgICBpbnQgYmluZCh1bnNpZ25lZCBvZmZzZXQpCisgICAg
ICAgIGludCBiaW5kKGludCBvcGNvZGUsIGludCBvZmZzZXQpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIG1fYm91bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFpc0ZvcndhcmQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9sb2NhdGlvbiAtIG9mZnNldDsKLSAgICAgICAgICAg
IG1fdW5yZXNvbHZlZEp1bXBzLmFwcGVuZChvZmZzZXQpOwotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgYmluZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVCghaXNGb3J3YXJkKCkpOwotICAgICAgICAgICAgcmV0dXJuIGJpbmQoMHUpOworICAg
ICAgICAgICAgaWYgKG1fbG9jYXRpb24gPT0gaW52YWxpZExvY2F0aW9uKSB7CisgICAgICAgICAg
ICAgICAgbV91bnJlc29sdmVkSnVtcHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wY29kZSwgb2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gbV9sb2NhdGlvbiAtIG9wY29kZTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgcmVmKCkgeyArK21fcmVmQ291bnQ7IH0KQEAgLTcxLDEwICs2NSwxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBib29sIGlzRm9yd2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRp
b24gPT0gaW52YWxpZExvY2F0aW9uOyB9CiAgICAgICAgIAorICAgICAgICBpbnQgYmluZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghaXNGb3J3YXJkKCkpOworICAgICAgICAgICAg
cmV0dXJuIGJpbmQoMCwgMCk7CisgICAgICAgIH0KKwogICAgICAgICBib29sIGlzQm91bmQoKSBj
b25zdCB7IHJldHVybiBtX2JvdW5kOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVm
IFZlY3RvcjxpbnQsIDg+IEp1bXBWZWN0b3I7CisgICAgICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6
cGFpcjxpbnQsIGludD4sIDg+IEp1bXBWZWN0b3I7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGludmFsaWRMb2NhdGlvbiA9IFVJTlRfTUFYOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDA1NzdjYzU3
NmRmY2ZlNjc1NTA3N2Q2MDIwNDE3NzlkZmM4YjA3ZC4uNDk3YjAwZDRiZjA5MDg3NzQ2ZDgwMmQ5
OWQ4YjQxNzRiM2RkMzA4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIGhhbmRsZVNwcmVh
ZDoKICAgICB9KTsKICAgICBmb3IgKDsgbjsgbiA9IG4tPm5leHQoKSkgewogICAgICAgICBpZiAo
bi0+ZWxpc2lvbigpKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcDxPcEFkZD4o
aW5kZXguZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNOdW1iZXIo
bi0+ZWxpc2lvbigpKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQz
MigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEJpbmFyeU9wKG9wX2FkZCwgaW5kZXguZ2V0KCksIGluZGV4LmdldCgpLCBnZW5l
cmF0b3IuZW1pdExvYWQoMCwganNOdW1iZXIobi0+ZWxpc2lvbigpKSksIE9wZXJhbmRUeXBlcyhS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJ
bnQzMigpKSk7CiAgICAgICAgIGlmIChuLT52YWx1ZSgpLT5pc1NwcmVhZEV4cHJlc3Npb24oKSkg
ewogICAgICAgICAgICAgU3ByZWFkRXhwcmVzc2lvbk5vZGUqIHNwcmVhZCA9IHN0YXRpY19jYXN0
PFNwcmVhZEV4cHJlc3Npb25Ob2RlKj4obi0+dmFsdWUoKSk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEVudW1lcmF0aW9uKHNwcmVhZCwgc3ByZWFkLT5leHByZXNzaW9uKCksIHNwcmVhZGVy
KTsKQEAgLTQ3NSw3ICs0NzUsNyBAQCBoYW5kbGVTcHJlYWQ6CiAgICAgfQogICAgIAogICAgIGlm
IChtX2VsaXNpb24pIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcDxPcEFkZD4oaW5k
ZXguZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNOdW1iZXIobV9l
bGlzaW9uKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
QmluYXJ5T3Aob3BfYWRkLCBpbmRleC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVyYXRvci5lbWl0
TG9hZCgwLCBqc051bWJlcihtX2VsaXNpb24pKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6Om51
bWJlclR5cGVJc0ludDMyKCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGFycmF5LmdldCgpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwgaW5kZXguZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gZ2VuZXJh
dG9yLm1vdmUoZHN0LCBhcnJheS5nZXQoKSk7CkBAIC05OTYsNyArOTk2LDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hcmd1bWVudENvdW50KEJ5
dGVjb2RlR2VuZXJhdG8KIHsKICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZSk7CiAKLSAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRBcmd1bWVudENvdW50KGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5Tm9Ec3RPcChvcF9h
cmd1bWVudF9jb3VudCwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CiB9CiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QnlJZERp
cmVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0x
NDYxLDEzICsxNDYxLDEzIEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAgICAg
ICAgICAgIFJlZjxMYWJlbD4gaGF2ZVRoaXMgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAg
ICAgICAgICAgICAgICAgUmVmPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbXBhcmVSZXN1bHQgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBpbmRleFplcm9Db21wYXJlUmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcDxPcEVx
Pihjb21wYXJlUmVzdWx0LmdldCgpLCBpbmRleC5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKDAs
IGpzTnVtYmVyKDApKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMy
KCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4WmVyb0NvbXBhcmVSZXN1bHQgPSBnZW5lcmF0b3Iu
ZW1pdEJpbmFyeU9wKG9wX2VxLCBjb21wYXJlUmVzdWx0LmdldCgpLCBpbmRleC5nZXQoKSwgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKDAsIGpzTnVtYmVyKDApKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6
Om51bWJlclR5cGVJc0ludDMyKCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZShpbmRleFplcm9D
b21wYXJlUmVzdWx0LmdldCgpLCBoYXZlVGhpcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5tb3ZlKHRoaXNSZWdpc3Rlci5nZXQoKSwgdmFsdWUpOwogICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoaW5kZXguZ2V0KCksIGpzTnVtYmVyKDEpKTsKICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaGF2ZVRoaXMuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXhPbmVDb21wYXJlUmVzdWx0ID0g
Z2VuZXJhdG9yLmVtaXRCaW5hcnlPcDxPcEVxPihjb21wYXJlUmVzdWx0LmdldCgpLCBpbmRleC5n
ZXQoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzTnVtYmVyKDEpKSwgT3BlcmFuZFR5cGVzKFJl
c3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0lu
dDMyKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4T25l
Q29tcGFyZVJlc3VsdCA9IGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3BfZXEsIGNvbXBhcmVSZXN1
bHQuZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNOdW1iZXIoMSkp
LCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSwgUmVzdWx0VHlw
ZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXBJZkZhbHNlKGluZGV4T25lQ29tcGFyZVJlc3VsdC5nZXQoKSwgZW5kLmdldCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJndW1lbnRzUmVnaXN0ZXIuZ2V0
KCksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGluZGV4
LmdldCgpLCBqc051bWJlcigyKSk7CkBAIC0xODk2LDcgKzE4OTYsNyBAQCBSZWdpc3RlcklEKiBC
aXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKC0xKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzEgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVt
aXRCaW5hcnlPcDxPcEJpdHhvcj4oZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMx
LmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhwci0+cmVz
dWx0RGVzY3JpcHRvcigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7CisgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3BfYml0eG9yLCBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpLCBPcGVy
YW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCksIFJlc3VsdFR5cGU6Om51bWJlclR5
cGVJc0ludDMyKCkpKTsKIH0KICAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBM
b2dpY2FsTm90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjE2
NCw3ICsyMTY0LDcgQEAgUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICAgICAgaWYgKG1fZXhw
cjEtPmlzTnVsbCgpIHx8IG1fZXhwcjItPmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHNyYy5nZXQoKSwgbV9leHByMS0+aXNOdWxsKCkgPyBt
X2V4cHIyIDogbV9leHByMSk7Ci0gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFy
eU9wPE9wTmVxTnVsbD4oZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMuZ2V0KCkp
LCBzcmMuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcChv
cF9uZXFfbnVsbCwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMuZ2V0KCkpLCBz
cmMuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTgyLDE3ICsyMTgyLDE3IEBAIFJl
Z2lzdGVySUQqIEJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgaWYgKHdhc1R5cGVvZiAmJiAob3Bjb2RlSUQgPT0g
b3BfbmVxIHx8IG9wY29kZUlEID09IG9wX25zdHJpY3RlcSkpIHsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRtcCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICAgICAg
aWYgKG9wY29kZUlEID09IG9wX25lcSkKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxp
dHlPcDxPcEVxPihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbih0bXAuZ2V0KCksIHNyYzEuZ2V0
KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
RXF1YWxpdHlPcChvcF9lcSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24odG1wLmdldCgpLCBz
cmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSk7CiAgICAgICAgIGVsc2UgaWYgKG9w
Y29kZUlEID09IG9wX25zdHJpY3RlcSkKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxp
dHlPcDxPcFN0cmljdGVxPihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbih0bXAuZ2V0KCksIHNy
YzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
dG1wLmdldCgpLCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3A8T3BOb3Q+KGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCwgdG1wLmdldCgpKSwgdG1wLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0VW5hcnlPcChvcF9ub3QsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
dG1wLmdldCgpKSwgdG1wLmdldCgpKTsKICAgICB9CiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0g
Z2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGVJRCwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVz
KGxlZnQtPnJlc3VsdERlc2NyaXB0b3IoKSwgcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwog
ICAgIGlmIChtX3Nob3VsZFRvVW5zaWduZWRSZXN1bHQpIHsKICAgICAgICAgaWYgKG9wY29kZUlE
ID09IG9wX3Vyc2hpZnQgJiYgZHN0ICE9IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAg
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wPE9wVW5zaWduZWQ+KHJlc3VsdCwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3BfdW5z
aWduZWQsIHJlc3VsdCwgcmVzdWx0KTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAg
LTIyMDIsNyArMjIwMiw3IEBAIFJlZ2lzdGVySUQqIEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgaWYgKG1fZXhw
cjEtPmlzTnVsbCgpIHx8IG1fZXhwcjItPmlzTnVsbCgpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzcmMgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShzcmMuZ2V0KCksIG1fZXhwcjEtPmlzTnVsbCgpID8gbV9leHByMiA6
IG1fZXhwcjEpOwotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wPE9wRXFOdWxs
PihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYy5nZXQoKSksIHNyYy5nZXQoKSk7
CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3BfZXFfbnVsbCwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMuZ2V0KCkpLCBzcmMuZ2V0KCkpOwogICAgIH0K
IAogICAgIEV4cHJlc3Npb25Ob2RlKiBsZWZ0ID0gbV9leHByMTsKQEAgLTIyMTIsNyArMjIxMiw3
IEBAIFJlZ2lzdGVySUQqIEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3Jj
MSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsZWZ0LCBtX3JpZ2h0SGFzQXNz
aWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShyaWdodCk7Ci0gICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0RXF1YWxpdHlPcDxPcEVxPihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRFcXVhbGl0eU9wKG9wX2VxLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpKTsKIH0KIAogUmVnaXN0ZXJJRCog
U3RyaWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMjIyNCw3ICsyMjI0LDcgQEAgUmVnaXN0ZXJJRCogU3Ry
aWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXIKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXRO
b2RlRm9yTGVmdEhhbmRTaWRlKGxlZnQsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+
aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKHJpZ2h0KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9w
PE9wU3RyaWN0ZXE+KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSks
IHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEVxdWFs
aXR5T3Aob3Bfc3RyaWN0ZXEsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5n
ZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCkpOwogfQogCiBSZWdpc3RlcklEKiBUaHJvd2Fi
bGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCkBAIC0yNDE3LDcgKzI0MTcsNyBAQCBzdGF0aWMgQUxXQVlTX0lO
TElORSBSZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbgogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGVtaXRFeHByZXNz
aW9uSW5mb0Zvck1lLT5kaXZvdCgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RTdGFy
dCgpLCBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJ
RCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGVJRCwgZHN0LCBzcmMxLCBz
cmMyLCB0eXBlcyk7CiAgICAgaWYgKG9wZXIgPT0gT3BVUlNoaWZ0KQotICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRVbmFyeU9wPE9wVW5zaWduZWQ+KHJlc3VsdCwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcF91bnNpZ25lZCwgcmVzdWx0LCByZXN1
bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMwODMsNyArMzA4Myw3IEBAIHZvaWQg
Rm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGxvb3BTdGFydC5nZXQo
KSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsKIAotICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wTGVzcz4oZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBpLmdldCgpLCBsZW5ndGguZ2V0KCkpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX2xl
c3MsIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaS5nZXQoKSwgbGVuZ3RoLmdldCgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZShyZXN1bHQuZ2V0KCksIGxvb3BFbmQuZ2V0
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEhhc0luZGV4ZWRQcm9wZXJ0eShyZXN1bHQuZ2V0
KCksIGJhc2UuZ2V0KCksIGkuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZh
bHNlKHJlc3VsdC5nZXQoKSwgKnNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKQEAgLTMxMjQsNyAr
MzEyNCw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KGxvb3BTdGFydC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsKIAot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRVbmFyeU9w
PE9wRXFOdWxsPihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZS5nZXQoKSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFVuYXJ5
T3Aob3BfZXFfbnVsbCwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWUuZ2V0
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUocmVzdWx0LmdldCgpLCBsb29w
RW5kLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRIYXNTdHJ1Y3R1cmVQcm9wZXJ0eShy
ZXN1bHQuZ2V0KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5TmFtZS5nZXQoKSwgZW51bWVyYXRvci5n
ZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UocmVzdWx0LmdldCgpLCAq
c2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwpAQCAtMzE2NSw3ICszMTY1LDcgQEAgdm9pZCBGb3JJ
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogCi0gICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFVuYXJ5T3A8T3BFcU51bGw+KGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcF9lcV9udWxsLCBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZS5nZXQoKSk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmVHJ1ZShyZXN1bHQuZ2V0KCksIGxvb3BFbmQuZ2V0KCkpOwogCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SGFzR2VuZXJpY1Byb3BlcnR5KHJlc3VsdC5nZXQoKSwgYmFzZS5n
ZXQoKSwgcHJvcGVydHlOYW1lLmdldCgpKTsKQEAgLTM0ODksNyArMzQ4OSw3IEBAIHZvaWQgQ2Fz
ZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJCiAgICAgICAgIGZvciAoQ2xhdXNlTGlzdE5vZGUqIGxpc3QgPSBtX2xp
c3QxOyBsaXN0OyBsaXN0ID0gbGlzdC0+Z2V0TmV4dCgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY2xhdXNlVmFsID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNsYXVzZVZhbC5nZXQoKSwgbGlzdC0+Z2V0Q2xhdXNl
KCktPmV4cHIoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9wU3RyaWN0
ZXE+KGNsYXVzZVZhbC5nZXQoKSwgY2xhdXNlVmFsLmdldCgpLCBzd2l0Y2hFeHByZXNzaW9uLCBP
cGVyYW5kVHlwZXMoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wX3N0
cmljdGVxLCBjbGF1c2VWYWwuZ2V0KCksIGNsYXVzZVZhbC5nZXQoKSwgc3dpdGNoRXhwcmVzc2lv
biwgT3BlcmFuZFR5cGVzKCkpOwogICAgICAgICAgICAgbGFiZWxWZWN0b3IuYXBwZW5kKGdlbmVy
YXRvci5uZXdMYWJlbCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShj
bGF1c2VWYWwuZ2V0KCksIGxhYmVsVmVjdG9yW2xhYmVsVmVjdG9yLnNpemUoKSAtIDFdLmdldCgp
KTsKICAgICAgICAgfQpAQCAtMzQ5Nyw3ICszNDk3LDcgQEAgdm9pZCBDYXNlQmxvY2tOb2RlOjpl
bWl0Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
ckkKICAgICAgICAgZm9yIChDbGF1c2VMaXN0Tm9kZSogbGlzdCA9IG1fbGlzdDI7IGxpc3Q7IGxp
c3QgPSBsaXN0LT5nZXROZXh0KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
bGF1c2VWYWwgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoY2xhdXNlVmFsLmdldCgpLCBsaXN0LT5nZXRDbGF1c2UoKS0+ZXhwcigpKTsK
LSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0QmluYXJ5T3A8T3BTdHJpY3RlcT4oY2xhdXNlVmFs
LmdldCgpLCBjbGF1c2VWYWwuZ2V0KCksIHN3aXRjaEV4cHJlc3Npb24sIE9wZXJhbmRUeXBlcygp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bfc3RyaWN0ZXEsIGNsYXVz
ZVZhbC5nZXQoKSwgY2xhdXNlVmFsLmdldCgpLCBzd2l0Y2hFeHByZXNzaW9uLCBPcGVyYW5kVHlw
ZXMoKSk7CiAgICAgICAgICAgICBsYWJlbFZlY3Rvci5hcHBlbmQoZ2VuZXJhdG9yLm5ld0xhYmVs
KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNsYXVzZVZhbC5nZXQo
KSwgbGFiZWxWZWN0b3JbbGFiZWxWZWN0b3Iuc2l6ZSgpIC0gMV0uZ2V0KCkpOwogICAgICAgICB9
CkBAIC0zODQ1LDExICszODQ1LDExIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZjxM
YWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAg
IHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BT
dHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJl
Z2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3Jt
YWxNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJp
Y3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxN
b2RlKSkpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJlZjxMYWJl
bD4gdGhyb3dMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
LmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRK
dW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CiAKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVy
KCkpOwpAQCAtNDAwOSw3ICs0MDA5LDcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0SXNVbmRlZmluZWQodGVt
cFJlZ2lzdGVyLmdldCgpLCBzdXBlcmNsYXNzLmdldCgpKSwgc3VwZXJjbGFzc0lzVW5kZWZpbmVk
TGFiZWwuZ2V0KCkpOwogCiAgICAgICAgIFJlZjxMYWJlbD4gc3VwZXJjbGFzc0lzTnVsbExhYmVs
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1
ZShnZW5lcmF0b3IuZW1pdFVuYXJ5T3A8T3BFcU51bGw+KHRlbXBSZWdpc3Rlci5nZXQoKSwgc3Vw
ZXJjbGFzcy5nZXQoKSksIHN1cGVyY2xhc3NJc051bGxMYWJlbC5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3BfZXFfbnVsbCwg
dGVtcFJlZ2lzdGVyLmdldCgpLCBzdXBlcmNsYXNzLmdldCgpKSwgc3VwZXJjbGFzc0lzTnVsbExh
YmVsLmdldCgpKTsKIAogICAgICAgICBSZWY8TGFiZWw+IHN1cGVyY2xhc3NJc09iamVjdExhYmVs
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1
ZShnZW5lcmF0b3IuZW1pdElzT2JqZWN0KHRlbXBSZWdpc3Rlci5nZXQoKSwgc3VwZXJjbGFzcy5n
ZXQoKSksIHN1cGVyY2xhc3NJc09iamVjdExhYmVsLmdldCgpKTsKQEAgLTQwMTksOCArNDAxOSw4
IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChwcm90b1BhcmVudC5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUpOwogCiAgICAgICAgIFJlZjxMYWJlbD4gcHJvdG9QYXJlbnRJc09i
amVjdE9yTnVsbExhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdFVuYXJ5T3A8T3BJc09iamVjdE9yTnVsbD4o
dGVtcFJlZ2lzdGVyLmdldCgpLCBwcm90b1BhcmVudC5nZXQoKSksIHByb3RvUGFyZW50SXNPYmpl
Y3RPck51bGxMYWJlbC5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShn
ZW5lcmF0b3IuZW1pdFVuYXJ5T3A8T3BJc0Z1bmN0aW9uPih0ZW1wUmVnaXN0ZXIuZ2V0KCksIHBy
b3RvUGFyZW50LmdldCgpKSwgcHJvdG9QYXJlbnRJc09iamVjdE9yTnVsbExhYmVsLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0VW5hcnlPcChv
cF9pc19vYmplY3Rfb3JfbnVsbCwgdGVtcFJlZ2lzdGVyLmdldCgpLCBwcm90b1BhcmVudC5nZXQo
KSksIHByb3RvUGFyZW50SXNPYmplY3RPck51bGxMYWJlbC5nZXQoKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3BfaXNfZnVuY3Rpb24s
IHRlbXBSZWdpc3Rlci5nZXQoKSwgcHJvdG9QYXJlbnQuZ2V0KCkpLCBwcm90b1BhcmVudElzT2Jq
ZWN0T3JOdWxsTGFiZWwuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVy
cm9yKCJUaGUgdmFsdWUgb2YgdGhlIHN1cGVyY2xhc3MncyBwcm90b3R5cGUgcHJvcGVydHkgaXMg
bm90IGFuIG9iamVjdC4iX3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHByb3RvUGFy
ZW50SXNPYmplY3RPck51bGxMYWJlbC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Qcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MGRkNzBiNWU5MjhjNzcyMDZmNmVk
NDg4OWY4Y2ZhZDU2M2ZjOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Qcm9maWxlVHlwZUJ5
dGVjb2RlRmxhZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKLQotI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEpTQzo6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcgZmxhZykKLXsKLSAg
ICBzd2l0Y2ggKGZsYWcpIHsKLSAgICBjYXNlIEpTQzo6UHJvZmlsZVR5cGVCeXRlY29kZUNsb3N1
cmVWYXI6Ci0gICAgICAgIG91dC5wcmludCgiUHJvZmlsZVR5cGVCeXRlY29kZUNsb3N1cmVWYXIi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQcm9maWxlVHlwZUJ5dGVjb2RlTG9j
YWxseVJlc29sdmVkOgotICAgICAgICBvdXQucHJpbnQoIlByb2ZpbGVUeXBlQnl0ZWNvZGVMb2Nh
bGx5UmVzb2x2ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpQcm9maWxlVHlw
ZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRDoKLSAgICAgICAgb3V0LnByaW50KCJQcm9maWxl
VHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCIpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBKU0M6OlByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvbkFyZ3VtZW50OgotICAgICAgICBv
dXQucHJpbnQoIlByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvbkFyZ3VtZW50Iik7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEpTQzo6UHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJu
U3RhdGVtZW50OgotICAgICAgICBvdXQucHJpbnQoIlByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
blJldHVyblN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi19IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTJjNzRkNzcyYTFmYzBkNzNlNTMxY2IxZTMxNjgyMjM0N2VlZjhiYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL1Byb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIFByb2ZpbGVU
eXBlQnl0ZWNvZGVGbGFnIHsKLSAgICBQcm9maWxlVHlwZUJ5dGVjb2RlQ2xvc3VyZVZhciwKLSAg
ICBQcm9maWxlVHlwZUJ5dGVjb2RlTG9jYWxseVJlc29sdmVkLAotICAgIFByb2ZpbGVUeXBlQnl0
ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELAotICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
bkFyZ3VtZW50LAotICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVu
dAotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQ
cmludFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQcm9m
aWxlVHlwZUJ5dGVjb2RlRmxhZyk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVySUQuaAppbmRleCBkOWFkZmZjZTRk
ODAzMmRlOGI0MDlmYTNhZGI4YWQ0OTc2MzJjNjYxLi5jYzgwZjVlYjg5MTM1NjJhZDI1Y2Q2Zjdh
YWQxYzViZmZkOGEwM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL1JlZ2lzdGVySUQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL1JlZ2lzdGVySUQuaApAQCAtMzcsOCArMzcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIFJlZ2lzdGVySUQgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3Rl
cklEKTsKLQotICAgICAgICBmcmllbmQgY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogICAgIHB1Ymxp
YzoKICAgICAgICAgUmVnaXN0ZXJJRCgpCiAgICAgICAgICAgICA6IG1fcmVmQ291bnQoMCkKQEAg
LTEyNCw2ICsxMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2RpZFNldElu
ZGV4OwogI2VuZGlmCiAgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBX
VEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0
aWNQcm9wZXJ0eUFuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaAppbmRleCA4NzU3ZDNhMGQ1NGZjODlmYjBkOTdhYzhi
OTllODZhMzQxZWI2ZDc0Li5mMjNlODQyNWE3OTVmOThhN2M0ZGM2MWJmMzVjMTVkMWIwNzliM2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1By
b3BlcnR5QW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zMywyNCArMzIsMjkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAvLyBSZWZlcmVuY2UgY291bnQgaW5kaWNhdGVzIG51bWJlciBvZiBsaXZlIHJlZ2lzdGVy
cyB0aGF0IGFsaWFzIHRoaXMgb2JqZWN0LgogY2xhc3MgU3RhdGljUHJvcGVydHlBbmFseXNpcyA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IGNyZWF0ZShJbnN0cnVjdGlvblN0
cmVhbTo6TXV0YWJsZVJlZiYmIGluc3RydWN0aW9uUmVmKQorICAgIHN0YXRpYyBSZWY8U3RhdGlj
UHJvcGVydHlBbmFseXNpcz4gY3JlYXRlKFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBV
bnNhZmVWZWN0b3JPdmVyZmxvdz4qIGluc3RydWN0aW9ucywgdW5zaWduZWQgdGFyZ2V0KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGljUHJvcGVydHlBbmFseXNpcyhX
VEZNb3ZlKGluc3RydWN0aW9uUmVmKSkpOyAKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RhdGljUHJvcGVydHlBbmFseXNpcyhpbnN0cnVjdGlvbnMsIHRhcmdldCkpOyAKICAgICB9CiAK
ICAgICB2b2lkIGFkZFByb3BlcnR5SW5kZXgodW5zaWduZWQgcHJvcGVydHlJbmRleCkgeyBtX3By
b3BlcnR5SW5kZXhlcy5hZGQocHJvcGVydHlJbmRleCk7IH0KIAotICAgIHZvaWQgcmVjb3JkKCk7
CisgICAgdm9pZCByZWNvcmQoKQorICAgIHsKKyAgICAgICAgKCptX2luc3RydWN0aW9ucylbbV90
YXJnZXRdID0gbV9wcm9wZXJ0eUluZGV4ZXMuc2l6ZSgpOworICAgIH0KIAogICAgIGludCBwcm9w
ZXJ0eUluZGV4Q291bnQoKSB7IHJldHVybiBtX3Byb3BlcnR5SW5kZXhlcy5zaXplKCk7IH0KIAog
cHJpdmF0ZToKLSAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKEluc3RydWN0aW9uU3RyZWFtOjpN
dXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCi0gICAgICAgIDogbV9pbnN0cnVjdGlvblJlZihX
VEZNb3ZlKGluc3RydWN0aW9uUmVmKSkKKyAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKFZlY3Rv
cjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4qIGluc3RydWN0
aW9ucywgdW5zaWduZWQgdGFyZ2V0KQorICAgICAgICA6IG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0
aW9ucykKKyAgICAgICAgLCBtX3RhcmdldCh0YXJnZXQpCiAgICAgewogICAgIH0KIAotICAgIElu
c3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmIG1faW5zdHJ1Y3Rpb25SZWY7CisgICAgVmVjdG9y
PFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiogbV9pbnN0cnVj
dGlvbnM7CisgICAgdW5zaWduZWQgbV90YXJnZXQ7CiAgICAgdHlwZWRlZiBIYXNoU2V0PHVuc2ln
bmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4gUHJvcGVydHlJbmRleFNldDsKICAgICBQcm9wZXJ0eUluZGV4U2V0
IG1fcHJvcGVydHlJbmRleGVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKaW5kZXggZmM1MTY2
Yzk2NTAxNWQ5OGMyNDEwZWM4MmYyYWVmMDFjZGIwNTljNC4uY2MzYjFlNGE5ODMzOTE1MDFkM2Zk
ZjNhNjdhOWM0YTM0YmQ5YTI2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKQEAgLTM1LDU1ICsz
NSw2MyBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGlzIHVuZGVyc3Rvb2QgdG8gYmUgbG9zc3ksIGFu
ZCBpdCdzIE9LIGlmIGl0IHR1cm5zIG91dCB0byBiZSB3cm9uZyBzb21ldGltZXMuCiBjbGFzcyBT
dGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGNyZWF0ZVRoaXMoUmVn
aXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGluc3RydWN0aW9u
UmVmKTsKLSAgICB2b2lkIG5ld09iamVjdChSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9uU3Ry
ZWFtOjpNdXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpOwotICAgIHZvaWQgcHV0QnlJZChSZWdp
c3RlcklEKiBkc3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpOyAvLyBwcm9wZXJ0eUluZGV4IGlz
IGFuIGluZGV4IGludG8gYSB1bmlxdWVkIHNldCBvZiBzdHJpbmdzLgotICAgIHZvaWQgbW92KFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKKyAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5
emVyKFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4q
KTsKKworICAgIHZvaWQgY3JlYXRlVGhpcyhpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklubGlu
ZUNhcGFjaXR5T3BlcmFuZCk7CisgICAgdm9pZCBuZXdPYmplY3QoaW50IGRzdCwgdW5zaWduZWQg
b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eU9wZXJhbmQpOworICAgIHZvaWQgcHV0QnlJZChpbnQgZHN0
LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KTsgLy8gcHJvcGVydHlJbmRleCBpcyBhbiBpbmRleCBp
bnRvIGEgdW5pcXVlZCBzZXQgb2Ygc3RyaW5ncy4KKyAgICB2b2lkIG1vdihpbnQgZHN0LCBpbnQg
c3JjKTsKIAogICAgIHZvaWQga2lsbCgpOwotICAgIHZvaWQga2lsbChSZWdpc3RlcklEKiBkc3Qp
OworICAgIHZvaWQga2lsbChpbnQgZHN0KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGtpbGwoU3Rh
dGljUHJvcGVydHlBbmFseXNpcyopOwogCisgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24s
IDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiogbV9pbnN0cnVjdGlvbnM7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPGludCwgUmVmUHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+LCBXVEY6OkludEhhc2g8
aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBBbmFseXNpc01h
cDsKICAgICBBbmFseXNpc01hcCBtX2FuYWx5c2VzOwogfTsKIAotaW5saW5lIHZvaWQgU3RhdGlj
UHJvcGVydHlBbmFseXplcjo6Y3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9u
U3RyZWFtOjpNdXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCitpbmxpbmUgU3RhdGljUHJvcGVy
dHlBbmFseXplcjo6U3RhdGljUHJvcGVydHlBbmFseXplcihWZWN0b3I8VW5saW5rZWRJbnN0cnVj
dGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+KiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2lu
c3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7Cit9CisKK2lubGluZSB2b2lkIFN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMoaW50IGRzdCwgdW5zaWduZWQgb2Zmc2V0T2ZJbmxpbmVD
YXBhY2l0eU9wZXJhbmQpCiB7CiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2FuYWx5c2VzLmFkZCgKLSAgICAgICAgZHN0LT5pbmRleCgpLCBTdGF0aWNQcm9wZXJ0eUFu
YWx5c2lzOjpjcmVhdGUoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpKTsKKyAgICAgICAgZHN0LCBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUobV9pbnN0cnVjdGlvbnMsIG9mZnNldE9mSW5s
aW5lQ2FwYWNpdHlPcGVyYW5kKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsgLy8gQ2FuJ3QgaGF2ZSB0d28gJ3RoaXMnIGluIHRoZSBzYW1lIGNv
bnN0cnVjdG9yLgogfQogCi1pbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdP
YmplY3QoUmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGlu
c3RydWN0aW9uUmVmKQoraW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bmV3T2Jq
ZWN0KGludCBkc3QsIHVuc2lnbmVkIG9mZnNldE9mSW5saW5lQ2FwYWNpdHlPcGVyYW5kKQogewot
ICAgIFJlZlB0cjxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiBhbmFseXNpcyA9IFN0YXRpY1Byb3Bl
cnR5QW5hbHlzaXM6OmNyZWF0ZShXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSk7Ci0gICAgQW5hbHlz
aXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFkZChkc3QtPmluZGV4KCks
IGFuYWx5c2lzKTsKKyAgICBSZWZQdHI8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gYW5hbHlzaXMg
PSBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUobV9pbnN0cnVjdGlvbnMsIG9mZnNldE9m
SW5saW5lQ2FwYWNpdHlPcGVyYW5kKTsKKyAgICBBbmFseXNpc01hcDo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IG1fYW5hbHlzZXMuYWRkKGRzdCwgYW5hbHlzaXMpOwogICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3RW50cnkpIHsKICAgICAgICAga2lsbChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdl
dCgpKTsKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoYW5hbHlz
aXMpOwogICAgIH0KIH0KIAotaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6cHV0
QnlJZChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpCitpbmxpbmUgdm9p
ZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpwdXRCeUlkKGludCBkc3QsIHVuc2lnbmVkIHByb3Bl
cnR5SW5kZXgpCiB7Ci0gICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyogYW5hbHlzaXMgPSBtX2Fu
YWx5c2VzLmdldChkc3QtPmluZGV4KCkpOworICAgIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMqIGFu
YWx5c2lzID0gbV9hbmFseXNlcy5nZXQoZHN0KTsKICAgICBpZiAoIWFuYWx5c2lzKQogICAgICAg
ICByZXR1cm47CiAgICAgYW5hbHlzaXMtPmFkZFByb3BlcnR5SW5kZXgocHJvcGVydHlJbmRleCk7
CiB9CiAKLWlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om1vdihSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKK2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6
ZXI6Om1vdihpbnQgZHN0LCBpbnQgc3JjKQogewotICAgIFJlZlB0cjxTdGF0aWNQcm9wZXJ0eUFu
YWx5c2lzPiBhbmFseXNpcyA9IG1fYW5hbHlzZXMuZ2V0KHNyYy0+aW5kZXgoKSk7CisgICAgUmVm
UHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IGFuYWx5c2lzID0gbV9hbmFseXNlcy5nZXQoc3Jj
KTsKICAgICBpZiAoIWFuYWx5c2lzKSB7CiAgICAgICAgIGtpbGwoZHN0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9h
bmFseXNlcy5hZGQoZHN0LT5pbmRleCgpLCBhbmFseXNpcyk7CisgICAgQW5hbHlzaXNNYXA6OkFk
ZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBp
ZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBX
VEZNb3ZlKGFuYWx5c2lzKTsKQEAgLTk5LDcgKzEwNyw3IEBAIGlubGluZSB2b2lkIFN0YXRpY1By
b3BlcnR5QW5hbHl6ZXI6OmtpbGwoU3RhdGljUHJvcGVydHlBbmFseXNpcyogYW5hbHlzaXMpCiAg
ICAgYW5hbHlzaXMtPnJlY29yZCgpOwogfQogCi1pbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFu
YWx5emVyOjpraWxsKFJlZ2lzdGVySUQqIGRzdCkKK2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5
QW5hbHl6ZXI6OmtpbGwoaW50IGRzdCkKIHsKICAgICAvLyBXZSBvYnNlcnZlIGtpbGxzIGluIG9y
ZGVyIHRvIGF2b2lkIHBpbGluZyBvbiBwcm9wZXJ0aWVzIHRvIGFuIG9iamVjdCBhZnRlcgogICAg
IC8vIGl0cyBieXRlY29kZSByZWdpc3RlciBoYXMgYmVlbiByZWN5Y2xlZC4KQEAgLTE0MCw3ICsx
NDgsNyBAQCBpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpraWxsKFJlZ2lzdGVy
SUQqIGRzdCkKICAgICAvLyBzbyB3ZSBhY2NlcHQga2lsbHMgdG8gYW55IHJlZ2lzdGVycyBleGNl
cHQgZm9yIHJlZ2lzdGVycyB0aGF0IGhhdmUgbm8gaW5mZXJyZWQKICAgICAvLyBwcm9wZXJ0aWVz
IHlldC4KIAotICAgIEFuYWx5c2lzTWFwOjppdGVyYXRvciBpdCA9IG1fYW5hbHlzZXMuZmluZChk
c3QtPmluZGV4KCkpOworICAgIEFuYWx5c2lzTWFwOjppdGVyYXRvciBpdCA9IG1fYW5hbHlzZXMu
ZmluZChkc3QpOwogICAgIGlmIChpdCA9PSBtX2FuYWx5c2VzLmVuZCgpKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKCFpdC0+dmFsdWUtPnByb3BlcnR5SW5kZXhDb3VudCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3ZGVkODNm
MDQ5NzRhZTA4N2YxNjEyMGRkNzAwMDdmZDY1OTI2OWJmLi5jYmFiN2QyZTZjMDc5MzczMDc0ZjY0
Nzg4NGU3ZDU0YTYwOGI3NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBIZWxwZXIgZm9yIG1pbiBhbmQgbWF4LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1
bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVNaW5NYXgoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9k
ZVR5cGUgb3AsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxl
TWluTWF4KGludCByZXN1bHRPcGVyYW5kLCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcyk7CiAgICAgCiAgICAgdm9pZCByZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3Rh
dHVzJiwgTm9kZSogY2FsbFRhcmdldCk7CiAgICAgLy8gQmxvY2tzIGNhbiBlaXRoZXIgYmUgdGFy
Z2V0YWJsZSAoaS5lLiBpbiB0aGUgbV9ibG9ja0xpbmtpbmdUYXJnZXRzIG9mIG9uZSBJbmxpbmVT
dGFja0VudHJ5KSB3aXRoIGEgd2VsbC1kZWZpbmVkIGJ5dGVjb2RlQmVnaW4sCkBAIC0xNTIsMTMg
KzE1MiwxMSBAQCBwcml2YXRlOgogICAgIC8vIEhhbmRsZSBjYWxscy4gVGhpcyByZXNvbHZlcyBp
c3N1ZXMgc3Vycm91bmRpbmcgaW5saW5pbmcgYW5kIGludHJpbnNpY3MuCiAgICAgZW51bSBUZXJt
aW5hbGl0eSB7IFRlcm1pbmFsLCBOb25UZXJtaW5hbCB9OwogICAgIFRlcm1pbmFsaXR5IGhhbmRs
ZUNhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICAgICAgaW50
IHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25TaXplLAogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMsCiAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENh
bGxPcD4KLSAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywg
Tm9kZVR5cGUgb3AsIENhbGxNb2RlKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci0g
ICAgVGVybWluYWxpdHkgaGFuZGxlVmFyYXJnc0NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBO
b2RlVHlwZSBvcCwgQ2FsbE1vZGUpOworICAgIFRlcm1pbmFsaXR5IGhhbmRsZUNhbGwoSW5zdHJ1
Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUpOworICAgIFRlcm1pbmFsaXR5IGhhbmRs
ZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlKTsKICAg
ICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9kZSogY2FsbFRhcmdldCwg
VmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsKICAgICB2b2lkIGVtaXRBcmd1bWVudFBoYW50
b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsK
ICAgICBOb2RlKiBnZXRBcmd1bWVudENvdW50KCk7CkBAIC0xNjYsMzkgKzE2NCwyOCBAQCBwcml2
YXRlOgogICAgIGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYgZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRl
ZCk7CiAgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCk7IC8vIFJldHVybiBVSU5U
X01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNvbnZlbnRpb24sIGlu
dHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5kbGUgaW5saW5pbmcuIFJldHVy
biB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwu
Ci0gICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJn
dW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9w
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lubGluaW5n
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtT
dGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQs
IFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zm
c2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCk7CiAgICAgdW5zaWdu
ZWQgZ2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCk7CiAgICAgZW51bSBjbGFzcyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0
aW1pemVkVG9KdW1wLCBJbmxpbmVkLCBEaWROb3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlv
blJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJl
Z2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNp
Z25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVh
dGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSk7Ci0gICAgQ2FsbE9wdGltaXphdGlv
blJlc3VsdCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZp
cnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAgIENhbGxPcHRpbWl6YXRpb25S
ZXN1bHQgaGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kLCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
dGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5l
eHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxv
Y2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0
IGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwg
Y29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3Rl
ciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQg
bmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0
b3I+Ci0gICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQmFzaWNCbG9jayog
Y29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7Cisg
ICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlv
bkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIC8vIEhhbmRs
ZSBpbnRyaW5zaWMgZnVuY3Rpb25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNl
IGlmIHdlIG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNp
Y0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJl
c3VsdE9wZXJhbmQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRC
eUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIo
aW50IHJlc3VsdE9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5
SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgotICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3Io
aW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlvbios
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLCBTcGVjdWxhdGVkVHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVuY3Rpb24q
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgTm9kZSogaGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIGNvbnN0IEluZmVycmVkVHlwZTo6
RGVzY3JpcHRvciYsIE5vZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChT
cGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJv
cGVydHlPZmZzZXQsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3JpcHRvciYsIE5vZGVUeXBlID0g
R2V0QnlPZmZzZXQpOwotICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwotICAgIGJvb2wg
aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxh
dGVkVHlwZSwgTm9kZSogYmFzZSwgR2V0QnlJZFN0YXR1cyk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBCeXRlY29kZT4KLSAgICB2b2lkIGhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvblNpemUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZT4KLSAg
ICB2b2lkIGhhbmRsZVB1dEFjY2Vzc29yQnlJZChOb2RlVHlwZSwgQnl0ZWNvZGUpOwotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZT4KLSAgICB2b2lkIGhhbmRsZVB1dEFjY2Vzc29yQnlW
YWwoTm9kZVR5cGUsIEJ5dGVjb2RlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGU+
Ci0gICAgdm9pZCBoYW5kbGVOZXdGdW5jKE5vZGVUeXBlLCBCeXRlY29kZSk7Ci0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEJ5dGVjb2RlPgotICAgIHZvaWQgaGFuZGxlTmV3RnVuY0V4cChOb2RlVHlw
ZSwgQnl0ZWNvZGUpOworICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVy
YW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRs
ZU1vZHVsZU5hbWVzcGFjZUxvYWQoaW50IHJlc3VsdE9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBO
b2RlKiBiYXNlLCBHZXRCeUlkU3RhdHVzKTsKIAogICAgIC8vIENyZWF0ZSBhIHByZXNlbmNlIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uIGJhc2VkIG9uIHNvbWUga25vd24gb2Zmc2V0IGFuZCBzdHJ1
Y3R1cmUgc2V0LiBEb2VzIG5vdAogICAgIC8vIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29u
ZGl0aW9uLCBidXQgaXQgbWF5IHJldHVybiBhIG51bGwgb25lIGlmIGl0IGVuY291bnRlcnMgYSBj
b250cmFkaWN0aW9uLgpAQCAtMjE3LDE1ICsyMDQsMTMgQEAgcHJpdmF0ZToKIAogICAgIE5vZGUq
IHN0b3JlKE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFB1dEJ5SWRWYXJp
YW50JiwgTm9kZSogdmFsdWUpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgdm9p
ZCBwYXJzZUdldEJ5SWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICB2b2lkIGhhbmRsZUdldEJ5
SWQoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUs
IE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5SWRTdGF0dXMsIEFj
Y2Vzc1R5cGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSk7CisgICAgICAgIGludCBkZXN0aW5h
dGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBHZXRCeUlkU3RhdHVzLCBBY2Nlc3NUeXBlLCB1bnNpZ25lZCBpbnN0cnVjdGlv
blNpemUpOwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYs
IGJvb2wgaXNEaXJlY3QpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSog
YmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5
SWRTdGF0dXMmLAotICAgICAgICBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0aW9uU2l6
ZSk7CisgICAgICAgIGJvb2wgaXNEaXJlY3QpOwogICAgIAogICAgIC8vIEVpdGhlciByZWdpc3Rl
ciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRpdGlvbi4gUmV0dXJu
cyBmYWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhvbGRzLCBhbmQgdGhl
cmVmb3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBAIC04MDIsNyArNzg3
LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSogc2lnbmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAg
ICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CkBAIC04MTQsOCArNzk5LDkgQEAgcHJpdmF0ZToK
IAogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KAogICAg
ICAgICAgICAgb3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rl
ck9mZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKLSAgICAgICAgaWYgKHJlc3VsdC5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICBzZXQocmVzdWx0LCBjYWxsKTsKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdFJlZyhyZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkK
KyAgICAgICAgICAgIHNldChyZXN1bHRSZWcsIGNhbGwpOwogICAgICAgICByZXR1cm4gY2FsbDsK
ICAgICB9CiAgICAgCkBAIC04NDcsOCArODMzLDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY2hh
aW4gYW5kIHVzZSBpdHMgcHJlZGljdGlvbi4gSWYgd2Ugb25seSBoYXZlCiAgICAgICAgIC8vIGlu
bGluZWQgdGFpbCBjYWxsIGZyYW1lcywgd2UgdXNlIFNwZWNGdWxsVG9wCiAgICAgICAgIC8vIHRv
IGF2b2lkIGEgc3B1cmlvdXMgT1NSIGV4aXQuCi0gICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlSW5kZXgpOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNv
ZGVJRCgpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XTsKKyAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlKTsKIAogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgICAg
IGNhc2Ugb3BfdGFpbF9jYWxsOgpAQCAtOTA3LDE5ICs4OTMsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIGdldFByZWRpY3Rpb24obV9jdXJyZW50SW5kZXgpOwogICAgIH0KICAgICAKLSAg
ICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5OjpBY3Rpb24gYWN0aW9uKQotICAgIHsKLSAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2s7Ci0gICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IGNvZGVCbG9jay0+Z2V0QXJy
YXlQcm9maWxlKGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5zdHJ1Y3Rpb24p
KTsKLSAgICAgICAgcmV0dXJuIGdldEFycmF5TW9kZSgqcHJvZmlsZSwgYWN0aW9uKTsKLSAgICB9
Ci0KLSAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYgcHJvZmlsZSwgQXJy
YXk6OkFjdGlvbiBhY3Rpb24pCisgICAgQXJyYXlNb2RlIGdldEFycmF5TW9kZShBcnJheVByb2Zp
bGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQogICAgIHsKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrKTsKLSAgICAgICAgYm9vbCBtYWtlU2Fm
ZSA9IHByb2ZpbGUub3V0T2ZCb3VuZHMobG9ja2VyKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgJnByb2ZpbGUsIGFjdGlvbiwgbWFrZVNhZmUpOworICAg
ICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOworICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmls
ZS0+b3V0T2ZCb3VuZHMobG9ja2VyKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZTo6ZnJvbU9i
c2VydmVkKGxvY2tlciwgcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CiAgICAgfQogCiAgICAg
Tm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTExNjcsNyArMTE0Niw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgVmVjdG9yPERlbGF5ZWRTZXRMb2NhbCwgMj4gbV9zZXRMb2NhbFF1ZXVlOwog
Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG1fY3VycmVudEluc3RydWN0aW9uOworICAgIEluc3Ry
dWN0aW9uKiBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFi
bGVkOwogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CkBAIC0x
MjE4LDEyICsxMTk3LDE3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmFkZEp1bXBUbyh1bnNpZ25l
ZCBieXRlY29kZUluZGV4KQogICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3Mu
YXBwZW5kKG1fY3VycmVudEJsb2NrKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgot
Qnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNv
bnN0IEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQorQnl0
ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKEluc3Ry
dWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQogewotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8Q2FsbE9wPigpOwotICAgIE5vZGUqIGNhbGxUYXJnZXQgPSBnZXQo
Ynl0ZWNvZGUuY2FsbGVlKTsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8
aW50PihieXRlY29kZS5hcmd2KTsKKyAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgob3Bf
Y2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF9jb25zdHJ1Y3QpLAorICAgICAgICAib3BfY2FsbCwg
b3BfdGFpbF9jYWxsIGFuZCBvcF9jb25zdHJ1Y3Qgc2hvdWxkIGFsd2F5cyBoYXZlIHRoZSBzYW1l
IGxlbmd0aCIpOworICAgIHN0YXRpY19hc3NlcnQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBP
UENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbCksCisgICAgICAgICJvcF9jYWxsLCBvcF90YWlsX2Nh
bGwgYW5kIG9wX2NvbnN0cnVjdCBzaG91bGQgYWx3YXlzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoIik7
CisgICAgCisgICAgaW50IHJlc3VsdCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBOb2RlKiBjYWxs
VGFyZ2V0ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKTsKKyAgICBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgaW50IHJl
Z2lzdGVyT2Zmc2V0ID0gLXBjWzRdLnUub3BlcmFuZDsKIAogICAgIENhbGxMaW5rU3RhdHVzIGNh
bGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwKQEAgLTEy
MzEsOCArMTIxNSw4IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogcGMsIE5vCiAKICAgICBJbmxpbmVDYWxs
RnJhbWU6OktpbmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSk7CiAK
LSAgICByZXR1cm4gaGFuZGxlQ2FsbChieXRlY29kZS5kc3QsIG9wLCBraW5kLCBwYy0+c2l6ZSgp
LCBjYWxsVGFyZ2V0LAotICAgICAgICBieXRlY29kZS5hcmdjLCByZWdpc3Rlck9mZnNldCwgY2Fs
bExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7CisgICAgcmV0dXJuIGhhbmRsZUNhbGwocmVz
dWx0LCBvcCwga2luZCwgT1BDT0RFX0xFTkdUSChvcF9jYWxsKSwgY2FsbFRhcmdldCwKKyAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0
YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKIH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cmVmaW5l
U3RhdGljYWxseShDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIE5vZGUqIGNhbGxUYXJn
ZXQpCkBAIC0xMjQyLDcgKzEyMjYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpyZWZpbmVTdGF0
aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSogY2FsbAogfQogCiBC
eXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCi0g
ICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCisgICAgaW50IHJlc3VsdCwgTm9k
ZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlv
blNpemUsCiAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0
dXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CkBAIC0xMjc0LDE2ICsxMjU4LDIzIEBA
IEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgK
ICAgICByZXR1cm4gY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwgPyBUZXJtaW5hbCA6IE5vblRl
cm1pbmFsOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+Ci1CeXRlQ29kZVBhcnNlcjo6
VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQorQnl0ZUNvZGVQYXJz
ZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzQ2FsbChJbnN0cnVj
dGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsKLSAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPENhbGxPcD4oKTsKLSAgICBpbnQgZmlyc3RGcmVlUmVnID0gYnl0ZWNv
ZGUuZmlyc3RGcmVlLm9mZnNldCgpOwotICAgIGludCBmaXJzdFZhckFyZ09mZnNldCA9IGJ5dGVj
b2RlLmZpcnN0VmFyQXJnOworICAgIHN0YXRpY19hc3NlcnQoT1BDT0RFX0xFTkdUSChvcF9jYWxs
X3ZhcmFyZ3MpID09IE9QQ09ERV9MRU5HVEgob3BfY29uc3RydWN0X3ZhcmFyZ3MpLAorICAgICAg
ICAib3BfY2FsbF92YXJhcmdzLCBvcF90YWlsX2NhbGxfdmFyYXJncyBhbmQgb3BfY29uc3RydWN0
X3ZhcmFyZ3Mgc2hvdWxkIGFsd2F5cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCIpOworICAgIHN0YXRp
Y19hc3NlcnQoT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpID09IE9QQ09ERV9MRU5HVEgo
b3BfdGFpbF9jYWxsX3ZhcmFyZ3MpLAorICAgICAgICAib3BfY2FsbF92YXJhcmdzLCBvcF90YWls
X2NhbGxfdmFyYXJncyBhbmQgb3BfY29uc3RydWN0X3ZhcmFyZ3Mgc2hvdWxkIGFsd2F5cyBoYXZl
IHRoZSBzYW1lIGxlbmd0aCIpOworCisgICAgaW50IHJlc3VsdCA9IHBjWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgY2FsbGVlID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCB0aGlzUmVnID0gcGNb
M10udS5vcGVyYW5kOworICAgIGludCBhcmd1bWVudHMgPSBwY1s0XS51Lm9wZXJhbmQ7CisgICAg
aW50IGZpcnN0RnJlZVJlZyA9IHBjWzVdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RWYXJBcmdP
ZmZzZXQgPSBwY1s2XS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiA9IGdldFByZWRpY3Rpb24oKTsKICAgICAKLSAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0
KGJ5dGVjb2RlLmNhbGxlZSk7CisgICAgTm9kZSogY2FsbFRhcmdldCA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY2FsbGVlKSk7CiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMg
PSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLApAQCAtMTI5NSw4ICsxMjg2LDgg
QEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJh
cmdzQ2FsbChjb25zdCBJbnN0cnVjdGlvbioKICAgICBpZiAoY2FsbExpbmtTdGF0dXMuY2FuT3B0
aW1pemUoKSkgewogICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckNhbGxMaW5rU3RhdHVzLCBPcElu
Zm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZENhbGxMaW5rU3RhdHVzKGN1
cnJlbnRDb2RlT3JpZ2luKCksIGNhbGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQpOwogCi0gICAg
ICAgIGlmIChoYW5kbGVWYXJhcmdzSW5saW5pbmcoY2FsbFRhcmdldCwgYnl0ZWNvZGUuZHN0LAot
ICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMsIGZpcnN0RnJlZVJlZywgYnl0ZWNvZGUudGhpc1Zh
bHVlLCBieXRlY29kZS5hcmd1bWVudHMsCisgICAgICAgIGlmIChoYW5kbGVWYXJhcmdzSW5saW5p
bmcoY2FsbFRhcmdldCwgcmVzdWx0LAorICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMsIGZpcnN0
RnJlZVJlZywgVmlydHVhbFJlZ2lzdGVyKHRoaXNSZWcpLCBWaXJ0dWFsUmVnaXN0ZXIoYXJndW1l
bnRzKSwKICAgICAgICAgICAgIGZpcnN0VmFyQXJnT2Zmc2V0LCBvcCwKICAgICAgICAgICAgIElu
bGluZUNhbGxGcmFtZTo6dmFyYXJnc0tpbmRGb3IoY2FsbE1vZGUpKSkgewogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCkBAIC0xMzA4LDEwICsxMjk5LDEw
IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFy
YXJnc0NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRhID0g
bV9ncmFwaC5tX2NhbGxWYXJhcmdzRGF0YS5hZGQoKTsKICAgICBkYXRhLT5maXJzdFZhckFyZ09m
ZnNldCA9IGZpcnN0VmFyQXJnT2Zmc2V0OwogICAgIAotICAgIE5vZGUqIHRoaXNDaGlsZCA9IGdl
dChieXRlY29kZS50aGlzVmFsdWUpOworICAgIE5vZGUqIHRoaXNDaGlsZCA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIodGhpc1JlZykpOwogICAgIE5vZGUqIGFyZ3VtZW50c0NoaWxkID0gbnVsbHB0cjsK
ICAgICBpZiAob3AgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncykKLSAgICAgICAgYXJndW1lbnRz
Q2hpbGQgPSBnZXQoYnl0ZWNvZGUuYXJndW1lbnRzKTsKKyAgICAgICAgYXJndW1lbnRzQ2hpbGQg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cykpOwogCiAgICAgaWYgKG9wID09IFRhaWxD
YWxsVmFyYXJncyB8fCBvcCA9PSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKSB7CiAgICAgICAgIGlm
IChhbGxJbmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkgewpAQCAtMTMyMiw4ICsxMzEzLDkgQEAg
Qnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdz
Q2FsbChjb25zdCBJbnN0cnVjdGlvbioKICAgICB9CiAKICAgICBOb2RlKiBjYWxsID0gYWRkVG9H
cmFwaChvcCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGNhbGxUYXJnZXQsIHRo
aXNDaGlsZCwgYXJndW1lbnRzQ2hpbGQpOwotICAgIGlmIChieXRlY29kZS5kc3QuaXNWYWxpZCgp
KQotICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBjYWxsKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0UmVnKHJlc3VsdCk7CisgICAgaWYgKHJlc3VsdFJlZy5pc1ZhbGlkKCkpCisgICAgICAg
IHNldChyZXN1bHRSZWcsIGNhbGwpOwogICAgIHJldHVybiBOb25UZXJtaW5hbDsKIH0KIApAQCAt
MTQzMiwxNCArMTQyNCwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVU
YWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogICAgICAgICB1bnNp
Z25lZCBvbGRJbmRleCA9IG1fY3VycmVudEluZGV4OwogICAgICAgICBhdXRvIG9sZFN0YWNrVG9w
ID0gbV9pbmxpbmVTdGFja1RvcDsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcCA9IHN0YWNrRW50
cnk7Ci0gICAgICAgIG1fY3VycmVudEluZGV4ID0gb3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl07Cisg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gT1BDT0RFX0xFTkdUSChvcF9lbnRlcik7CiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKICAgICAg
ICAgbV9jdXJyZW50SW5kZXggPSBvbGRJbmRleDsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcCA9
IG9sZFN0YWNrVG9wOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOwogCi0gICAgICAgIEJhc2lj
QmxvY2sqKiBlbnRyeUJsb2NrUHRyID0gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2sqLCB1bnNp
Z25lZD4oc3RhY2tFbnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLCBzdGFja0VudHJ5LT5tX2Js
b2NrTGlua2luZ1RhcmdldHMuc2l6ZSgpLCBvcGNvZGVMZW5ndGhzW29wX2VudGVyXSwgZ2V0Qnl0
ZWNvZGVCZWdpbkZvckJsb2NrKTsKKyAgICAgICAgQmFzaWNCbG9jayoqIGVudHJ5QmxvY2tQdHIg
PSB0cnlCaW5hcnlTZWFyY2g8QmFzaWNCbG9jayosIHVuc2lnbmVkPihzdGFja0VudHJ5LT5tX2Js
b2NrTGlua2luZ1RhcmdldHMsIHN0YWNrRW50cnktPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5zaXpl
KCksIE9QQ09ERV9MRU5HVEgob3BfZW50ZXIpLCBnZXRCeXRlY29kZUJlZ2luRm9yQmxvY2spOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChlbnRyeUJsb2NrUHRyKTsKICAgICAgICAgYWRkSnVtcFRv
KCplbnRyeUJsb2NrUHRyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTQ5LDkgKzE1NDEs
OSBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNh
bGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a3NGdW5jdG9yPgotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVD
YWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcmlhbnQg
Y2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJs
b2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7Ci0gICAgY29uc3QgSW5z
dHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247
CisgICAgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5z
dHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQg
PSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKICAg
ICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IGtpbmQpICE9IFVJTlRfTUFYKTsKQEAgLTE1ODIsOCArMTU3NCw5IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIENhCiAgICAgCiAgICAgc2l6ZV90IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3Jh
cGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCk7CiAKLSAgICBpZiAocmVzdWx0LmlzVmFsaWQo
KSkKLSAgICAgICAgcmVzdWx0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKHJlc3Vs
dCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHRPcGVyYW5kKTsKKyAgICBp
ZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKKyAgICAgICAgcmVzdWx0UmVnID0gbV9pbmxpbmVTdGFj
a1RvcC0+cmVtYXBPcGVyYW5kKHJlc3VsdFJlZyk7CiAKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IGNhbGxlZVZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwo
KSkgewpAQCAtMTY0NCw3ICsxNjM3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2EKICAgICAg
ICAgLy8gb3VyIGNhbGxlZSdzIGZyYW1lLiBXZSBlbWl0IGFuIEV4aXRPSyBiZWxvdyBmcm9tIHRo
ZSBjYWxsZWUncyBDb2RlT3JpZ2luLgogICAgIH0KIAotICAgIElubGluZVN0YWNrRW50cnkgaW5s
aW5lU3RhY2tFbnRyeSh0aGlzLCBjb2RlQmxvY2ssIGNvZGVCbG9jaywgY2FsbGVlLmZ1bmN0aW9u
KCksIHJlc3VsdCwKKyAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkodGhpcywg
Y29kZUJsb2NrLCBjb2RlQmxvY2ssIGNhbGxlZS5mdW5jdGlvbigpLCByZXN1bHRSZWcsCiAgICAg
ICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBraW5kLCBjb250aW51YXRpb25CbG9jayk7CiAKICAgICAvLyBUaGlzIGlz
IHdoZXJlIHRoZSBhY3R1YWwgaW5saW5pbmcgcmVhbGx5IGhhcHBlbnMuCkBAIC0xNjkyLDcgKzE2
ODUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBDYQogICAgIG1fY3VycmVudEluc3RydWN0aW9u
ID0gc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb247CiB9CiAKLUJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVl
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2Fs
bEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBp
bmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29sIG5lZWRz
VG9DaGVja0NhbGxlZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50
IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBW
aXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Js
b2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpCiB7CiAgICAg
VkVSQk9TRV9MT0coIiAgICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKIApA
QCAtMTcyOCw3ICsxNzIxLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1
bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKICAgICB9OwogCiAg
ICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rp
b24oKSkgewotICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGNhbGxU
YXJnZXROb2RlLCByZXN1bHQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCwgcHJlZGljdGlvbiwgaW5zZXJ0Q2hl
Y2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVybmFs
RnVuY3Rpb24oY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCwg
cHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CiAgICAgICAgICAgICBl
bmRTcGVjaWFsQ2FzZSgpOwogICAgICAgICAgICAgcmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1
bHQ6OklubGluZWQ7CiAgICAgICAgIH0KQEAgLTE3MzgsNyArMTczMSw3IEBAIEJ5dGVDb2RlUGFy
c2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFy
aWFudChOb2RlKiBjCiAKICAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNp
Y0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5z
aWMpIHsKLSAgICAgICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRhcmdldE5vZGUsIHJl
c3VsdCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgeworICAgICAgICBp
ZiAoaGFuZGxlSW50cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgaW50
cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRp
Y3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewogICAgICAgICAgICAgZW5kU3Bl
Y2lhbENhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJ
bmxpbmVkOwogICAgICAgICB9CkBAIC0xNzQ4LDcgKzE3NDEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6
Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQo
Tm9kZSogYwogCiAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgpKSB7CiAgICAgICAgIGlmIChj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gY2FsbGVlLnNpZ25hdHVyZUZvcihz
cGVjaWFsaXphdGlvbktpbmQpKSB7Ci0gICAgICAgICAgICBpZiAoaGFuZGxlRE9NSklUQ2FsbChj
YWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRp
bmcpKSB7CisgICAgICAgICAgICBpZiAoaGFuZGxlRE9NSklUQ2FsbChjYWxsVGFyZ2V0Tm9kZSwg
cmVzdWx0T3BlcmFuZCwgc2lnbmF0dXJlLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewog
ICAgICAgICAgICAgICAgIGVuZFNwZWNpYWxDYXNlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IENhbGxPcHRpbWl6YXRpb25SZXN1bHQ6OklubGluZWQ7CiAgICAgICAgICAgICB9CkBAIC0xNzY0
LDEyICsxNzU3LDEyIEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAgICAgIGlmIChuZWVk
c1RvQ2hlY2tDYWxsZWUpCiAgICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBj
YWxsVGFyZ2V0Tm9kZSwgdGhpc0FyZ3VtZW50KTsKICAgICB9OwotICAgIGlubGluZUNhbGwoY2Fs
bFRhcmdldE5vZGUsIHJlc3VsdCwgY2FsbGVlLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIGtpbmQsIGNvbnRpbnVhdGlvbkJsb2NrLCBpbnNlcnRDaGVjayk7Cisg
ICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbGVlLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGtpbmQsIGNvbnRpbnVhdGlv
bkJsb2NrLCBpbnNlcnRDaGVjayk7CiAgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5pbmdD
b3N0OwogICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJbmxpbmVkOwogfQogCi1i
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVWYXJhcmdzSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5k
LAogICAgIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgaW50IGZpcnN0RnJl
ZVJlZywgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwKICAgICBOb2RlVHlw
ZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kKQpAQCAtMTg4MSw3ICsxODc0LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIKICAgICAvLyB0aG9zZSBhcmd1bWVudHMuIEV2ZW4g
d29yc2UsIGlmIHRoZSBpbnRyaW5zaWMgZGVjaWRlcyB0byBleGl0LCBpdCB3b24ndCByZWFsbHkg
aGF2ZSBhbnl3aGVyZSB0bwogICAgIC8vIGV4aXQgdG86IExvYWRWYXJhcmdzIGlzIGVmZmVjdGZ1
bCBhbmQgaXQncyBwYXJ0IG9mIHRoZSBvcF9jYWxsX3ZhcmFyZ3MsIHNvIHdlIGNhbid0IGV4aXQg
d2l0aG91dAogICAgIC8vIGNhbGxpbmcgTG9hZFZhcmFyZ3MgdHdpY2UuCi0gICAgaW5saW5lQ2Fs
bChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBjYWxsVmFyaWFudCwgcmVnaXN0ZXJPZmZzZXQsIG1h
eE51bUFyZ3VtZW50cywga2luZCwgbnVsbHB0ciwgaW5zZXJ0Q2hlY2tzKTsKKyAgICBpbmxpbmVD
YWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsVmFyaWFudCwgcmVnaXN0ZXJP
ZmZzZXQsIG1heE51bUFyZ3VtZW50cywga2luZCwgbnVsbHB0ciwgaW5zZXJ0Q2hlY2tzKTsKIAog
ICAgIFZFUkJPU0VfTE9HKCJTdWNjZXNzZnVsIGlubGluaW5nICh2YXJhcmdzLCBtb25vbW9ycGhp
YykuXG5TdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xODk4LDcgKzE4OTEsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6Z2V0SW5s
aW5pbmdCYWxhbmNlKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cwogfQogCiBC
eXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCi0gICAgTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKKyAgICBOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBj
YWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0
aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgIHVu
c2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCkBAIC0xOTEzLDcgKzE5MDYsNyBAQCBC
eXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiAgICAgLy8gdGhpcyBpbiBjYXNlcyB3aGVyZSB3ZSBkb24ndCBuZWVkIGNv
bnRyb2wgZmxvdyBkaWFtb25kcyB0byBjaGVjayB0aGUgY2FsbGVlLgogICAgIGlmICghY2FsbExp
bmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgoKSAmJiBjYWxsTGlua1N0YXR1cy5zaXplKCkgPT0g
MSkgewogICAgICAgICByZXR1cm4gaGFuZGxlQ2FsbFZhcmlhbnQoCi0gICAgICAgICAgICBjYWxs
VGFyZ2V0Tm9kZSwgcmVzdWx0LCBjYWxsTGlua1N0YXR1c1swXSwgcmVnaXN0ZXJPZmZzZXQsIHRo
aXNBcmd1bWVudCwKKyAgICAgICAgICAgIGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBj
YWxsTGlua1N0YXR1c1swXSwgcmVnaXN0ZXJPZmZzZXQsIHRoaXNBcmd1bWVudCwKICAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBwcmVkaWN0
aW9uLCBpbmxpbmluZ0JhbGFuY2UsIG51bGxwdHIsIHRydWUpOwogICAgIH0KIApAQCAtMjAwMyw3
ICsxOTk2LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2Rl
ID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgICAgIAogICAgICAgICBhdXRvIGlubGluaW5n
UmVzdWx0ID0gaGFuZGxlQ2FsbFZhcmlhbnQoCi0gICAgICAgICAgICBteUNhbGxUYXJnZXROb2Rl
LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzW2ldLCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgICAg
IG15Q2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGNhbGxMaW5rU3RhdHVzW2ldLCByZWdp
c3Rlck9mZnNldCwKICAgICAgICAgICAgIHRoaXNBcmd1bWVudCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIHByZWRpY3Rpb24sCiAgICAgICAgICAgICBpbmxp
bmluZ0JhbGFuY2UsIGNvbnRpbnVhdGlvbkJsb2NrLCBmYWxzZSk7CiAgICAgICAgIApAQCAtMjA0
MCw3ICsyMDMzLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUg
PSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKICAgICBpZiAoY291bGRUYWtlU2xvd1BhdGgpIHsKICAg
ICAgICAgYWRkQ2FsbCgKLSAgICAgICAgICAgIHJlc3VsdCwgY2FsbE9wLCBudWxscHRyLCBteUNh
bGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKKyAgICAgICAgICAgIHJl
c3VsdE9wZXJhbmQsIGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CiAgICAgICAgIFZFUkJPU0VfTE9HKCJXZSBhZGRlZCBhIGNhbGwgaW4gdGhlIHNsb3cgcGF0
aFxuIik7CiAgICAgfSBlbHNlIHsKQEAgLTIwNDgsNyArMjA0MSw3IEBAIEJ5dGVDb2RlUGFyc2Vy
OjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygK
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBteUNhbGxUYXJnZXROb2RlKTsKICAgICAgICAg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKTsKICAgICAgICAgCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoQm90dG9t
VmFsdWUpKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRk
VG9HcmFwaChCb3R0b21WYWx1ZSkpOwogICAgICAgICBWRVJCT1NFX0xPRygiY291bGRUYWtlU2xv
d1BhdGggd2FzIGZhbHNlXG4iKTsKICAgICB9CiAKQEAgLTIwNzMsMjggKzIwNjYsMjggQEAgQnl0
ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVU
eXBlIG9wLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlTWluTWF4KGludCByZXN1bHRPcGVyYW5kLCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvbnN0IENoZWNrc0Z1
bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBBU1NFUlQob3AgPT0gQXJpdGhNaW4gfHwgb3Ag
PT0gQXJpdGhNYXgpOwogCiAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID09IDEp
IHsKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgIGRvdWJsZSBsaW1pdCA9IG9wID09
IEFyaXRoTWF4ID8gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSA6ICtz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7Ci0gICAgICAgIHNldChyZXN1
bHQsIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGpzRG91Ymxl
TnVtYmVyKGxpbWl0KSkpKSk7CisgICAgICAgIGRvdWJsZSByZXN1bHQgPSBvcCA9PSBBcml0aE1h
eCA/IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkgOiArc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBo
LmZyZWV6ZShqc0RvdWJsZU51bWJlcihyZXN1bHQpKSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgICAKICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMikg
ewogICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAgICAgTm9kZSogcmVzdWx0Tm9kZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpKSk7Ci0gICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgRWRnZShyZXN1bHROb2RlLCBO
dW1iZXJVc2UpKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgcmVzdWx0Tm9kZSk7CisgICAgICAgIE5v
ZGUqIHJlc3VsdCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgRWRn
ZShyZXN1bHQsIE51bWJlclVzZSkpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID09IDMpIHsKICAgICAgICAgaW5zZXJ0
Q2hlY2tzKCk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgob3AsIGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpLCBnZXQodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBnZXQodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KDIsIHJlZ2lzdGVyT2Zmc2V0KSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIApAQCAtMjEwMyw3ICsyMDk2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlTWluTWF4KFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXMK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMgaW50
cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0
Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9HKCIgICAgICAgVGhlIGludHJpbnNpYyBpcyAiLCBp
bnRyaW5zaWMsICJcbiIpOwogCkBAIC0yMTE2LDcgKzIxMDksNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgSQogICAgIC8vICAgICBvLl9fZGVmaW5lU2V0dGVyX18oImZvbyIsIE1hdGgucG93KQog
ICAgIC8vCiAgICAgLy8gV2hpY2ggaXMgZXh0cmVtZWx5IGFtdXNpbmcsIGJ1dCBwcm9iYWJseSBu
b3Qgd29ydGggb3B0aW1pemluZy4KLSAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCisgICAgaWYg
KCFWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCkuaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKQEAgLTIxMjYsNyArMjEx
OSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgY2FzZSBBYnNJbnRyaW5zaWM6IHsK
ICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID09IDEpIHsgLy8gTWF0aC5h
YnMoKQogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgICAgICBzZXQocmVzdWx0
LCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TmFOKSkpOworICAgICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChKU0Nv
bnN0YW50LCBPcEluZm8obV9jb25zdGFudE5hTikpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAKQEAgLTIxMzcsMTUgKzIxMzAsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIEkKICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoQXJpdGhBYnMsIGdldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgaWYg
KG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIE92ZXJmbG93KSkKICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJm
bG93SW50MzJJbkRGRyk7Ci0gICAgICAgIHNldChyZXN1bHQsIG5vZGUpOworICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBub2RlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCiAgICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgICAgIHJldHVybiBoYW5k
bGVNaW5NYXgocmVzdWx0LCBBcml0aE1pbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBpbnNlcnRDaGVja3MpOworICAgICAgICByZXR1cm4gaGFuZGxlTWluTWF4
KHJlc3VsdE9wZXJhbmQsIEFyaXRoTWluLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGluc2VydENoZWNrcyk7CiAgICAgICAgIAogICAgIGNhc2UgTWF4SW50cmlu
c2ljOgotICAgICAgICByZXR1cm4gaGFuZGxlTWluTWF4KHJlc3VsdCwgQXJpdGhNYXgsIHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW5zZXJ0Q2hlY2tzKTsKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZU1pbk1heChyZXN1bHRPcGVyYW5kLCBBcml0aE1heCwgcmVnaXN0
ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnNlcnRDaGVja3MpOwogCiAj
ZGVmaW5lIERGR19BUklUSF9VTkFSWShjYXBpdGFsaXplZE5hbWUsIGxvd2VyTmFtZSkgXAogICAg
IGNhc2UgY2FwaXRhbGl6ZWROYW1lIyNJbnRyaW5zaWM6CkBAIC0yMTU0LDcgKzIxNDcsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgIHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzID09IDEpIHsKICAgICAgICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAg
ICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFu
dE5hTikpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCks
IGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fY29uc3RhbnROYU4pKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBBcml0aDo6VW5hcnlUeXBlIHR5
cGUgPSBBcml0aDo6VW5hcnlUeXBlOjpTaW47CkBAIC0yMTY5LDcgKzIxNjIsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgSQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAgICAgc2V0KHJlc3Vs
dCwgYWRkVG9HcmFwaChBcml0aFVuYXJ5LCBPcEluZm8oc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5
aW5nX3R5cGU8QXJpdGg6OlVuYXJ5VHlwZT46OnR5cGU+KHR5cGUpKSwgZ2V0KHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpKTsKKyAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChBcml0aFVuYXJ5LCBPcEluZm8o
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8QXJpdGg6OlVuYXJ5VHlwZT46OnR5cGU+
KHR5cGUpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMTc3LDcgKzIxNzAsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgIGNhc2UgU3FydEludHJpbnNpYzogewogICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkgewogICAgICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEpTQ29u
c3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TmFOKSkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9j
b25zdGFudE5hTikpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAg
LTIxOTMsNyArMjE4Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIGluc2VydENo
ZWNrcygpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKG5vZGVUeXBlLCBnZXQodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKG5vZGVUeXBlLCBn
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMDEsMTMgKzIxOTQsMTMgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IDwgMykgewogICAgICAgICAgICAgLy8gTWF0aC5wb3coKSBhbmQgTWF0aC5wb3coeCkgcmV0dXJu
IE5hTi4KICAgICAgICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICAgICAgc2V0KHJlc3Vs
dCwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudE5hTikpKTsKKyAgICAg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoSlND
b25zdGFudCwgT3BJbmZvKG1fY29uc3RhbnROYU4pKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRDaGVja3MoKTsKICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHhPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgeU9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudCgyLCByZWdpc3Rlck9mZnNldCk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoQXJpdGhQb3csIGdldCh4T3BlcmFuZCksIGdldCh5T3BlcmFuZCkpKTsKKyAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChBcml0aFBv
dywgZ2V0KHhPcGVyYW5kKSwgZ2V0KHlPcGVyYW5kKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgICAgIApAQCAtMjIyMSw4ICsyMjE0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIEkKIAogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFy
cmF5TW9kZShBcnJheTo6V3JpdGUpOworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0
QXJyYXlNb2RlKGFycmF5UHJvZmlsZUZvcjxPcENhbGxTaGFwZT4obV9jdXJyZW50SW5zdHJ1Y3Rp
b24pLCBBcnJheTo6V3JpdGUpOwogICAgICAgICBpZiAoIWFycmF5TW9kZS5pc0pTQXJyYXkoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlw
ZSgpKSB7CkBAIC0yMjM2LDcgKzIyMjgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsg
KytpKQogICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgICAgIE5vZGUqIGFycmF5
UHVzaCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBBcnJheVB1c2gsIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbikpOwotICAgICAgICAgICAgc2V0KHJlc3Vs
dCwgYXJyYXlQdXNoKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3Bl
cmFuZCksIGFycmF5UHVzaCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0yMjU5LDggKzIyNTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
SQogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkKICAgICAgICAgICAgIHx8IG1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJh
ZENhY2hlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBBcnJheU1vZGUg
YXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKEFycmF5OjpSZWFkKTsKKyAgICAgICAgQXJyYXlNb2Rl
IGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShhcnJheVByb2ZpbGVGb3I8T3BDYWxsU2hhcGU+KG1f
Y3VycmVudEluc3RydWN0aW9uKSwgQXJyYXk6OlJlYWQpOwogICAgICAgICBpZiAoIWFycmF5TW9k
ZS5pc0pTQXJyYXkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjMyNSw3ICsy
MzE2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgICAgICAgICBhZGRWYXJB
cmdDaGlsZChhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYXJyYXkpKTsKIAogICAgICAgICAgICAg
ICAgIE5vZGUqIGFycmF5U2xpY2UgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgQXJyYXlTbGlj
ZSwgT3BJbmZvKCksIE9wSW5mbygpKTsKLSAgICAgICAgICAgICAgICBzZXQocmVzdWx0LCBhcnJh
eVNsaWNlKTsKKyAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJh
bmQpLCBhcnJheVNsaWNlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgIH0KIApAQCAtMjM0OSw3ICsyMzQwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAg
ICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoQXJyYXk6OlJlYWQpOwor
ICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGFycmF5UHJvZmlsZUZv
cjxPcENhbGxTaGFwZT4obV9jdXJyZW50SW5zdHJ1Y3Rpb24pLCBBcnJheTo6UmVhZCk7CiAgICAg
ICAgIGlmICghYXJyYXlNb2RlLmlzSlNBcnJheSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0yMzg4LDcgKzIzNzksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAg
ICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOwogCiAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBBcnJheUluZGV4T2YsIE9wSW5mbyhh
cnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oKSk7Ci0gICAgICAgICAgICAgICAgc2V0KHJlc3Vs
dCwgbm9kZSk7CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVy
YW5kKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAKQEAgLTI0MDYsOCArMjM5Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgY2Fz
ZSBBcnJheVBvcEludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgIT0gMSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAg
IEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoQXJyYXk6OldyaXRlKTsKKyAgICAg
ICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShhcnJheVByb2ZpbGVGb3I8T3BD
YWxsU2hhcGU+KG1fY3VycmVudEluc3RydWN0aW9uKSwgQXJyYXk6OldyaXRlKTsKICAgICAgICAg
aWYgKCFhcnJheU1vZGUuaXNKU0FycmF5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgewpAQCAtMjQxNyw3ICsyNDA3LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdl
OiB7CiAgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKICAgICAgICAgICAgIE5vZGUqIGFycmF5
UG9wID0gYWRkVG9HcmFwaChBcnJheVBvcCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9w
SW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lz
dGVyT2Zmc2V0KSkpOwotICAgICAgICAgICAgc2V0KHJlc3VsdCwgYXJyYXlQb3ApOworICAgICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYXJyYXlQb3ApOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjUwMCwx
OSArMjQ5MCwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoZ2V0
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEgKyBpLCByZWdpc3Rlck9mZnNldCkpKTsKICAg
ICAgICAgCi0gICAgICAgIE5vZGUqIHJlc3VsdE5vZGU7CisgICAgICAgIE5vZGUqIHJlc3VsdDsK
ICAgICAgICAgaWYgKG51bUFyZ3MgKyAxIDw9IDMpIHsKICAgICAgICAgICAgIHdoaWxlIChhcmdz
LnNpemUoKSA8IDMpCiAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQobnVsbHB0cik7Ci0gICAg
ICAgICAgICByZXN1bHROb2RlID0gYWRkVG9HcmFwaChvcCwgT3BJbmZvKEFycmF5TW9kZShBcnJh
eTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgYWN0aW9uKS5hc1dvcmQoKSksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7CisgICAgICAgICAgICByZXN1bHQg
PSBhZGRUb0dyYXBoKG9wLCBPcEluZm8oQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRp
Y3Rpb25zLCBhY3Rpb24pLmFzV29yZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBhcmdzWzBdLCBh
cmdzWzFdLCBhcmdzWzJdKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAoTm9k
ZSogbm9kZSA6IGFyZ3MpCiAgICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobm9kZSk7CiAg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRyKTsKLSAgICAgICAgICAgIHJlc3VsdE5v
ZGUgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgb3AsIE9wSW5mbyhBcnJheU1vZGUoQXJyYXk6
OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGlj
dGlvbikpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9w
LCBPcEluZm8oQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBhY3Rpb24p
LmFzV29yZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgc2V0KHJlc3VsdCwgcmVzdWx0Tm9kZSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMjUzMyw3ICsyNTIzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciByYWRpeE9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudCgyLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgICAgICBwYXJzZUludCA9IGFkZFRvR3Jh
cGgoUGFyc2VJbnQsIE9wSW5mbygpLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2YWx1ZU9wZXJh
bmQpLCBnZXQocmFkaXhPcGVyYW5kKSk7CiAgICAgICAgIH0KLSAgICAgICAgc2V0KHJlc3VsdCwg
cGFyc2VJbnQpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBw
YXJzZUludCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjU0Niw3ICsyNTM2
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxs
ZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGlu
ZGV4T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KTsKICAgICAgICAgTm9kZSogY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0cmluZ0NoYXJDb2RlQXQs
IE9wSW5mbyhBcnJheU1vZGUoQXJyYXk6OlN0cmluZywgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwg
Z2V0KHRoaXNPcGVyYW5kKSwgZ2V0KGluZGV4T3BlcmFuZCkpOwogCi0gICAgICAgIHNldChyZXN1
bHQsIGNoYXJDb2RlKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5k
KSwgY2hhckNvZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI1NTksMTYg
KzI1NDksMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2Rl
KiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGluZGV4T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KTsKICAgICAgICAgTm9kZSogY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0cmluZ0NoYXJB
dCwgT3BJbmZvKEFycmF5TW9kZShBcnJheTo6U3RyaW5nLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCBnZXQodGhpc09wZXJhbmQpLCBnZXQoaW5kZXhPcGVyYW5kKSk7CiAKLSAgICAgICAgc2V0KHJl
c3VsdCwgY2hhckNvZGUpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJh
bmQpLCBjaGFyQ29kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBjYXNlIENs
ejMySW50cmluc2ljOiB7CiAgICAgICAgIGluc2VydENoZWNrcygpOwogICAgICAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkKLSAgICAgICAgICAgIHNldChyZXN1bHQsIGFk
ZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGpzTnVtYmVyKDMyKSkp
KSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRU
b0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShqc051bWJlcigzMikpKSkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIE5vZGUqIG9wZXJhbmQgPSBnZXQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKTsKLSAgICAgICAgICAgIHNl
dChyZXN1bHQsIGFkZFRvR3JhcGgoQXJpdGhDbHozMiwgb3BlcmFuZCkpOworICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChBcml0aENsejMy
LCBvcGVyYW5kKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MjU4MCw3ICsyNTcwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGluZGV4T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJl
Z2lzdGVyT2Zmc2V0KTsKICAgICAgICAgTm9kZSogY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0cmlu
Z0Zyb21DaGFyQ29kZSwgZ2V0KGluZGV4T3BlcmFuZCkpOwogCi0gICAgICAgIHNldChyZXN1bHQs
IGNoYXJDb2RlKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
Y2hhckNvZGUpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI1OTEsNyArMjU4
MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgIAogICAgICAgICBpbnNlcnRD
aGVja3MoKTsKICAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRvR3JhcGgoUmVnRXhwRXhl
YywgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGFkZFRvR3JhcGgoR2V0R2xvYmFsT2Jq
ZWN0LCBjYWxsZWUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJP
ZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpOwotICAgICAgICBzZXQocmVzdWx0LCByZWdFeHBFeGVjKTsKKyAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVnRXhwRXhlYyk7CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNjQyLDcgKzI2MzIsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgSQogICAgICAgICBpbnNlcnRDaGVja3MoKTsKICAgICAgICAgTm9kZSogcmVnRXhw
T2JqZWN0ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0
KSk7CiAgICAgICAgIE5vZGUqIHJlZ0V4cEV4ZWMgPSBhZGRUb0dyYXBoKFJlZ0V4cFRlc3QsIE9w
SW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwg
Y2FsbGVlKSwgcmVnRXhwT2JqZWN0LCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwg
cmVnaXN0ZXJPZmZzZXQpKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIHJlZ0V4cEV4ZWMpOworICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZWdFeHBFeGVjKTsKICAg
ICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI2NTIsNyArMjY0Miw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAgICAg
ICAgIE5vZGUqIHJlZ0V4cE1hdGNoID0gYWRkVG9HcmFwaChSZWdFeHBNYXRjaEZhc3QsIE9wSW5m
bygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwgY2Fs
bGVlKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSks
IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKLSAg
ICAgICAgc2V0KHJlc3VsdCwgcmVnRXhwTWF0Y2gpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKHJlc3VsdE9wZXJhbmQpLCByZWdFeHBNYXRjaCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMjY2MSw3ICsyNjUxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAg
ICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChPYmplY3RDcmVhdGUsIGdldCh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CisgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoT2JqZWN0Q3JlYXRlLCBnZXQodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI2NzAsNyArMjY2MCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LCBJCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaW5zZXJ0Q2hl
Y2tzKCk7Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0UHJvdG90eXBlT2YsIE9w
SW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJl
c3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEdldFByb3RvdHlwZU9mLCBPcEluZm8oMCksIE9wSW5m
byhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yNjc5LDcgKzI2
NjksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dy
YXBoKFNhbWVWYWx1ZSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgyLCByZWdpc3Rlck9mZnNl
dCkpKSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRv
R3JhcGgoU2FtZVZhbHVlLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0
ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDIsIHJlZ2lzdGVyT2Zm
c2V0KSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yNjg4LDcgKzI2Nzgs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxl
ZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBo
KEdldFByb3RvdHlwZU9mLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgRWRnZShnZXQo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSwgT2JqZWN0VXNl
KSkpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dy
YXBoKEdldFByb3RvdHlwZU9mLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgRWRnZShn
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSwgT2JqZWN0
VXNlKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI2OTYsMTQgKzI2ODYs
MTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxs
ZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgQVNTRVJUKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID09IDIpOwogCiAgICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAg
ICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKElzVHlwZWRBcnJheVZpZXcsIE9wSW5mbyhwcmVkaWN0
aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkp
KTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFw
aChJc1R5cGVkQXJyYXlWaWV3LCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAogICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYzogewog
ICAgICAgICBpbnNlcnRDaGVja3MoKTsKICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKTsKLSAgICAgICAgc2V0KHJl
c3VsdCwgYWRkVG9HcmFwaChTdHJpbmdWYWx1ZU9mLCB2YWx1ZSkpOworICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKFN0cmluZ1ZhbHVlT2YsIHZh
bHVlKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjc1NCw4ICsyNzQ0LDgg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUs
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKIAogICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAot
ICAgICAgICBOb2RlKiByZXN1bHROb2RlID0gYWRkVG9HcmFwaChTdHJpbmdSZXBsYWNlLCBPcElu
Zm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCBy
ZWdpc3Rlck9mZnNldCkpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0
ZXJPZmZzZXQpKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIHJlc3VsdE5vZGUpOworICAgICAgICBO
b2RlKiByZXN1bHQgPSBhZGRUb0dyYXBoKFN0cmluZ1JlcGxhY2UsIE9wSW5mbygwKSwgT3BJbmZv
KHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJP
ZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgyLCByZWdpc3Rlck9mZnNldCkpKTsK
KyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKQEAgLTI3NjQsOCArMjc1NCw4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIAogICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAgICAgTm9kZSogcmVzdWx0Tm9kZSA9
IGFkZFRvR3JhcGgoU3RyaW5nUmVwbGFjZVJlZ0V4cCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGlj
dGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkp
LCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDIsIHJlZ2lzdGVyT2Zmc2V0KSkpOwotICAgICAg
ICBzZXQocmVzdWx0LCByZXN1bHROb2RlKTsKKyAgICAgICAgTm9kZSogcmVzdWx0ID0gYWRkVG9H
cmFwaChTdHJpbmdSZXBsYWNlUmVnRXhwLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwg
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpLCBnZXQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICAgICAgCkBAIC0yNzc1LDcgKzI3NjUsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCwgSQogICAgIGNhc2UgVHJ1bmNJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzID09IDEpIHsKICAgICAgICAgICAgIGluc2VydENoZWNrcygp
OwotICAgICAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8o
bV9jb25zdGFudE5hTikpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
T3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fY29uc3RhbnROYU4pKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRDaGVj
a3MoKTsKQEAgLTI3OTIsNyArMjc4Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAg
ICAgICAgICBvcCA9IEFyaXRoVHJ1bmM7CiAgICAgICAgIH0KICAgICAgICAgTm9kZSogcm91bmRO
b2RlID0gYWRkVG9HcmFwaChvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIG9wZXJh
bmQpOwotICAgICAgICBzZXQocmVzdWx0LCByb3VuZE5vZGUpOworICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByb3VuZE5vZGUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgY2FzZSBJTXVsSW50cmluc2ljOiB7CkBAIC0yODAzLDcgKzI3OTMsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmlnaHRP
cGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpOwog
ICAgICAgICBOb2RlKiBsZWZ0ID0gZ2V0KGxlZnRPcGVyYW5kKTsKICAgICAgICAgTm9kZSogcmln
aHQgPSBnZXQocmlnaHRPcGVyYW5kKTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9HcmFwaChB
cml0aElNdWwsIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoQXJpdGhJTXVsLCBsZWZ0LCByaWdodCkpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI4MTEsMzIgKzI4MDEsMzIgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEkKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9
IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGluc2VydENoZWNrcygpOwot
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEFyaXRoUmFuZG9tKSk7CisgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoQXJpdGhSYW5kb20p
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIERGR1Ry
dWVJbnRyaW5zaWM6IHsKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgIHNldChyZXN1
bHQsIGpzQ29uc3RhbnQoanNCb29sZWFuKHRydWUpKSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIocmVzdWx0T3BlcmFuZCksIGpzQ29uc3RhbnQoanNCb29sZWFuKHRydWUpKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNhc2UgRlRMVHJ1ZUludHJpbnNpYzogewog
ICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAgICAgc2V0KHJlc3VsdCwganNDb25zdGFudChq
c0Jvb2xlYW4obV9ncmFwaC5tX3BsYW4uaXNGVEwoKSkpKTsKKyAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwganNDb25zdGFudChqc0Jvb2xlYW4obV9ncmFwaC5tX3Bs
YW4uaXNGVEwoKSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKICAg
ICBjYXNlIE9TUkV4aXRJbnRyaW5zaWM6IHsKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAgICAg
ICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKLSAgICAgICAgc2V0KHJlc3VsdCwgYWRkVG9H
cmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudFVuZGVmaW5lZCkpKTsKKyAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChKU0NvbnN0YW50
LCBPcEluZm8obV9jb25zdGFudFVuZGVmaW5lZCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgICAgICAKICAgICBjYXNlIElzRmluYWxUaWVySW50cmluc2ljOiB7CiAgICAgICAg
IGluc2VydENoZWNrcygpOwotICAgICAgICBzZXQocmVzdWx0LAorICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLAogICAgICAgICAgICAganNDb25zdGFudChqc0Jvb2xl
YW4oT3B0aW9uczo6dXNlRlRMSklUKCkgPyBtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpIDogdHJ1ZSkp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjg0OCw3ICsyODM4LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgICAgIGlmIChub2RlLT5oYXNIZWFwUHJlZGlj
dGlvbigpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldEhlYXBQcmVkaWN0aW9uKFNwZWNJbnQz
Mk9ubHkpOwogICAgICAgICB9Ci0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoSlNDb25z
dGFudCwgT3BJbmZvKG1fY29uc3RhbnRVbmRlZmluZWQpKSk7CisgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1f
Y29uc3RhbnRVbmRlZmluZWQpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAg
ICAgCkBAIC0yODU4LDcgKzI4NDgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBFZGdlKG5vZGUs
IEludDMyVXNlKSk7CiAgICAgICAgIH0KLSAgICAgICAgc2V0KHJlc3VsdCwganNDb25zdGFudChq
c0Jvb2xlYW4odHJ1ZSkpKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVy
YW5kKSwganNDb25zdGFudChqc0Jvb2xlYW4odHJ1ZSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgICAgICAKQEAgLTI4NjgsOSArMjg1OCw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBJCiAgICAgICAgIGluc2VydENoZWNrcygpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KTsK
ICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkpCi0gICAgICAgICAgICBzZXQocmVzdWx0LCBhZGRU
b0dyYXBoKEZpYXRJbnQ1MiwgZ2V0KG9wZXJhbmQpKSk7CisgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEZpYXRJbnQ1MiwgZ2V0KG9wZXJh
bmQpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldChyZXN1bHQsIGdldChvcGVyYW5k
KSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBnZXQo
b3BlcmFuZCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI4ODQsOCArMjg3
NCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgIE5vZGUqIG5vcm1hbGl6ZWRL
ZXkgPSBhZGRUb0dyYXBoKE5vcm1hbGl6ZU1hcEtleSwga2V5KTsKICAgICAgICAgTm9kZSogaGFz
aCA9IGFkZFRvR3JhcGgoTWFwSGFzaCwgbm9ybWFsaXplZEtleSk7CiAgICAgICAgIE5vZGUqIGJ1
Y2tldCA9IGFkZFRvR3JhcGgoR2V0TWFwQnVja2V0LCBFZGdlKG1hcCwgTWFwT2JqZWN0VXNlKSwg
RWRnZShub3JtYWxpemVkS2V5KSwgRWRnZShoYXNoKSk7Ci0gICAgICAgIE5vZGUqIHJlc3VsdE5v
ZGUgPSBhZGRUb0dyYXBoKExvYWRWYWx1ZUZyb21NYXBCdWNrZXQsIE9wSW5mbyhCdWNrZXRPd25l
clR5cGU6Ok1hcCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYnVja2V0KTsKLSAgICAgICAgc2V0KHJl
c3VsdCwgcmVzdWx0Tm9kZSk7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFkZFRvR3JhcGgoTG9h
ZFZhbHVlRnJvbU1hcEJ1Y2tldCwgT3BJbmZvKEJ1Y2tldE93bmVyVHlwZTo6TWFwKSwgT3BJbmZv
KHByZWRpY3Rpb24pLCBidWNrZXQpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI5
MDksOCArMjg5OSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwo
Tm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAKICAgICAgICAgRnJvemVu
VmFsdWUqIGZyb3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZShzZW50aW5lbCk7CiAgICAgICAg
IE5vZGUqIGludmVydGVkUmVzdWx0ID0gYWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhm
cm96ZW5Qb2ludGVyKSwgYnVja2V0KTsKLSAgICAgICAgTm9kZSogcmVzdWx0Tm9kZSA9IGFkZFRv
R3JhcGgoTG9naWNhbE5vdCwgaW52ZXJ0ZWRSZXN1bHQpOwotICAgICAgICBzZXQocmVzdWx0LCBy
ZXN1bHROb2RlKTsKKyAgICAgICAgTm9kZSogcmVzdWx0ID0gYWRkVG9HcmFwaChMb2dpY2FsTm90
LCBpbnZlcnRlZFJlc3VsdCk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3Bl
cmFuZCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjkyNCw3
ICsyOTE0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2Rl
KiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgTm9kZSogbm9ybWFs
aXplZEtleSA9IGFkZFRvR3JhcGgoTm9ybWFsaXplTWFwS2V5LCBrZXkpOwogICAgICAgICBOb2Rl
KiBoYXNoID0gYWRkVG9HcmFwaChNYXBIYXNoLCBub3JtYWxpemVkS2V5KTsKICAgICAgICAgYWRk
VG9HcmFwaChTZXRBZGQsIGJhc2UsIG5vcm1hbGl6ZWRLZXksIGhhc2gpOwotICAgICAgICBzZXQo
cmVzdWx0LCBiYXNlKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5k
KSwgYmFzZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjk0NSw3ICsyOTM1
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxs
ZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFs
dWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChoYXNoKTsKICAgICAgICAgYWRkVG9HcmFwaChO
b2RlOjpWYXJBcmcsIE1hcFNldCwgT3BJbmZvKDApLCBPcEluZm8oMCkpOwotICAgICAgICBzZXQo
cmVzdWx0LCBiYXNlKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5k
KSwgYmFzZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjk1Niw4ICsyOTQ2
LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxs
ZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAg
ICAgICAgIE5vZGUqIG1hcCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICBVc2VLaW5kIHVzZUtpbmQgPSBpbnRyaW5zaWMgPT0gSlNT
ZXRCdWNrZXRIZWFkSW50cmluc2ljID8gU2V0T2JqZWN0VXNlIDogTWFwT2JqZWN0VXNlOwotICAg
ICAgICBOb2RlKiByZXN1bHROb2RlID0gYWRkVG9HcmFwaChHZXRNYXBCdWNrZXRIZWFkLCBFZGdl
KG1hcCwgdXNlS2luZCkpOwotICAgICAgICBzZXQocmVzdWx0LCByZXN1bHROb2RlKTsKKyAgICAg
ICAgTm9kZSogcmVzdWx0ID0gYWRkVG9HcmFwaChHZXRNYXBCdWNrZXRIZWFkLCBFZGdlKG1hcCwg
dXNlS2luZCkpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBy
ZXN1bHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI5NjgsOCArMjk1OCw4
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVl
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgIGluc2VydENoZWNrcygpOwogICAg
ICAgICBOb2RlKiBidWNrZXQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgQnVja2V0T3duZXJUeXBlIHR5cGUgPSBpbnRyaW5zaWMg
PT0gSlNTZXRCdWNrZXROZXh0SW50cmluc2ljID8gQnVja2V0T3duZXJUeXBlOjpTZXQgOiBCdWNr
ZXRPd25lclR5cGU6Ok1hcDsKLSAgICAgICAgTm9kZSogcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgo
R2V0TWFwQnVja2V0TmV4dCwgT3BJbmZvKHR5cGUpLCBidWNrZXQpOwotICAgICAgICBzZXQocmVz
dWx0LCByZXN1bHROb2RlKTsKKyAgICAgICAgTm9kZSogcmVzdWx0ID0gYWRkVG9HcmFwaChHZXRN
YXBCdWNrZXROZXh0LCBPcEluZm8odHlwZSksIGJ1Y2tldCk7CisgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMjk4MCw4ICsyOTcwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAg
ICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAgICAgICAgIE5vZGUqIGJ1Y2tldCA9IGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpOwogICAgICAgICBCdWNrZXRP
d25lclR5cGUgdHlwZSA9IGludHJpbnNpYyA9PSBKU1NldEJ1Y2tldEtleUludHJpbnNpYyA/IEJ1
Y2tldE93bmVyVHlwZTo6U2V0IDogQnVja2V0T3duZXJUeXBlOjpNYXA7Ci0gICAgICAgIE5vZGUq
IHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKExvYWRLZXlGcm9tTWFwQnVja2V0LCBPcEluZm8odHlw
ZSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYnVja2V0KTsKLSAgICAgICAgc2V0KHJlc3VsdCwgcmVz
dWx0Tm9kZSk7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFkZFRvR3JhcGgoTG9hZEtleUZyb21N
YXBCdWNrZXQsIE9wSW5mbyh0eXBlKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBidWNrZXQpOworICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI5OTAsOCArMjk4MCw4IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBJCiAKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAgICAgICAgIE5vZGUqIGJ1
Y2tldCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkp
OwotICAgICAgICBOb2RlKiByZXN1bHROb2RlID0gYWRkVG9HcmFwaChMb2FkVmFsdWVGcm9tTWFw
QnVja2V0LCBPcEluZm8oQnVja2V0T3duZXJUeXBlOjpNYXApLCBPcEluZm8ocHJlZGljdGlvbiks
IGJ1Y2tldCk7Ci0gICAgICAgIHNldChyZXN1bHQsIHJlc3VsdE5vZGUpOworICAgICAgICBOb2Rl
KiByZXN1bHQgPSBhZGRUb0dyYXBoKExvYWRWYWx1ZUZyb21NYXBCdWNrZXQsIE9wSW5mbyhCdWNr
ZXRPd25lclR5cGU6Ok1hcCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYnVja2V0KTsKKyAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCkBAIC0zMDA4LDkgKzI5OTgsOSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgSQogICAgICAgICBhZGRUb0dyYXBoKENoZWNrLCBFZGdlKGtleSwgT2JqZWN0VXNlKSk7
CiAgICAgICAgIE5vZGUqIGhhc2ggPSBhZGRUb0dyYXBoKE1hcEhhc2gsIGtleSk7CiAgICAgICAg
IE5vZGUqIGhvbGRlciA9IGFkZFRvR3JhcGgoV2Vha01hcEdldCwgRWRnZShtYXAsIFdlYWtNYXBP
YmplY3RVc2UpLCBFZGdlKGtleSwgT2JqZWN0VXNlKSwgRWRnZShoYXNoLCBJbnQzMlVzZSkpOwot
ICAgICAgICBOb2RlKiByZXN1bHROb2RlID0gYWRkVG9HcmFwaChFeHRyYWN0VmFsdWVGcm9tV2Vh
a01hcEdldCwgT3BJbmZvKCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgaG9sZGVyKTsKKyAgICAgICAg
Tm9kZSogcmVzdWx0ID0gYWRkVG9HcmFwaChFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldCwgT3BJ
bmZvKCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgaG9sZGVyKTsKIAotICAgICAgICBzZXQocmVzdWx0
LCByZXN1bHROb2RlKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5k
KSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0zMDI4LDkgKzMw
MTgsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICBOb2RlKiBoYXNoID0gYWRk
VG9HcmFwaChNYXBIYXNoLCBrZXkpOwogICAgICAgICBOb2RlKiBob2xkZXIgPSBhZGRUb0dyYXBo
KFdlYWtNYXBHZXQsIEVkZ2UobWFwLCBXZWFrTWFwT2JqZWN0VXNlKSwgRWRnZShrZXksIE9iamVj
dFVzZSksIEVkZ2UoaGFzaCwgSW50MzJVc2UpKTsKICAgICAgICAgTm9kZSogaW52ZXJ0ZWRSZXN1
bHQgPSBhZGRUb0dyYXBoKElzRW1wdHksIGhvbGRlcik7Ci0gICAgICAgIE5vZGUqIHJlc3VsdE5v
ZGUgPSBhZGRUb0dyYXBoKExvZ2ljYWxOb3QsIGludmVydGVkUmVzdWx0KTsKKyAgICAgICAgTm9k
ZSogcmVzdWx0ID0gYWRkVG9HcmFwaChMb2dpY2FsTm90LCBpbnZlcnRlZFJlc3VsdCk7CiAKLSAg
ICAgICAgc2V0KHJlc3VsdCwgcmVzdWx0Tm9kZSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMzA0OCw5ICszMDM4LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAg
Tm9kZSogaGFzaCA9IGFkZFRvR3JhcGgoTWFwSGFzaCwga2V5KTsKICAgICAgICAgTm9kZSogaG9s
ZGVyID0gYWRkVG9HcmFwaChXZWFrTWFwR2V0LCBFZGdlKG1hcCwgV2Vha1NldE9iamVjdFVzZSks
IEVkZ2Uoa2V5LCBPYmplY3RVc2UpLCBFZGdlKGhhc2gsIEludDMyVXNlKSk7CiAgICAgICAgIE5v
ZGUqIGludmVydGVkUmVzdWx0ID0gYWRkVG9HcmFwaChJc0VtcHR5LCBob2xkZXIpOwotICAgICAg
ICBOb2RlKiByZXN1bHROb2RlID0gYWRkVG9HcmFwaChMb2dpY2FsTm90LCBpbnZlcnRlZFJlc3Vs
dCk7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgaW52ZXJ0
ZWRSZXN1bHQpOwogCi0gICAgICAgIHNldChyZXN1bHQsIHJlc3VsdE5vZGUpOworICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMwNjcsNyArMzA1Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBJCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2ssIEVkZ2Uoa2V5LCBPYmplY3RVc2UpKTsK
ICAgICAgICAgTm9kZSogaGFzaCA9IGFkZFRvR3JhcGgoTWFwSGFzaCwga2V5KTsKICAgICAgICAg
YWRkVG9HcmFwaChXZWFrU2V0QWRkLCBFZGdlKGJhc2UsIFdlYWtTZXRPYmplY3RVc2UpLCBFZGdl
KGtleSwgT2JqZWN0VXNlKSwgRWRnZShoYXNoLCBJbnQzMlVzZSkpOwotICAgICAgICBzZXQocmVz
dWx0LCBiYXNlKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
YmFzZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzA5MSw3ICszMDgxLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUs
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoRWRnZSh2
YWx1ZSkpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChFZGdlKGhhc2gsIEludDMyVXNlKSk7CiAg
ICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBXZWFrTWFwU2V0LCBPcEluZm8oMCksIE9w
SW5mbygwKSk7Ci0gICAgICAgIHNldChyZXN1bHQsIGJhc2UpOworICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBiYXNlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0zMTc2LDcgKzMxNjYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAg
ICAgICBkYXRhLmlzU2lnbmVkID0gaXNTaWduZWQ7CiAgICAgICAgIGRhdGEuYnl0ZVNpemUgPSBi
eXRlU2l6ZTsKIAotICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdCksCisgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksCiAgICAgICAgICAgICBhZGRUb0dy
YXBoKG9wLCBPcEluZm8oZGF0YS5hc1F1YWRXb3JkKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIGxpdHRsZUVuZGlhbkNo
aWxkKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMyODQsOCArMzI3NCw4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgIGluc2VydENoZWNrcygpOwogICAgICAg
ICBOb2RlKiBvYmplY3QgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgTm9kZSoga2V5ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSk7Ci0gICAgICAgIE5vZGUqIHJlc3VsdE5vZGUgPSBh
ZGRUb0dyYXBoKEhhc093blByb3BlcnR5LCBvYmplY3QsIGtleSk7Ci0gICAgICAgIHNldChyZXN1
bHQsIHJlc3VsdE5vZGUpOworICAgICAgICBOb2RlKiByZXN1bHQgPSBhZGRUb0dyYXBoKEhhc093
blByb3BlcnR5LCBvYmplY3QsIGtleSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
MzMwMiw4ICszMjkyLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgTm9kZSog
ZW5kID0gbnVsbHB0cjsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4g
MikKICAgICAgICAgICAgIGVuZCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgyLCBy
ZWdpc3Rlck9mZnNldCkpOwotICAgICAgICBOb2RlKiByZXN1bHROb2RlID0gYWRkVG9HcmFwaChT
dHJpbmdTbGljZSwgdGhpc1N0cmluZywgc3RhcnQsIGVuZCk7Ci0gICAgICAgIHNldChyZXN1bHQs
IHJlc3VsdE5vZGUpOworICAgICAgICBOb2RlKiByZXN1bHQgPSBhZGRUb0dyYXBoKFN0cmluZ1Ns
aWNlLCB0aGlzU3RyaW5nLCBzdGFydCwgZW5kKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CkBAIC0zMzE2LDggKzMzMDYsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5z
aWNDYWxsKE5vZGUqIGNhbGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogCiAgICAgICAg
IGluc2VydENoZWNrcygpOwogICAgICAgICBOb2RlKiB0aGlzU3RyaW5nID0gZ2V0KHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSk7Ci0gICAgICAgIE5vZGUqIHJl
c3VsdE5vZGUgPSBhZGRUb0dyYXBoKFRvTG93ZXJDYXNlLCB0aGlzU3RyaW5nKTsKLSAgICAgICAg
c2V0KHJlc3VsdCwgcmVzdWx0Tm9kZSk7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFkZFRvR3Jh
cGgoVG9Mb3dlckNhc2UsIHRoaXNTdHJpbmcpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTMzMzEsMTIgKzMzMjEsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CiAgICAgICAgIE5vZGUqIHRoaXNOdW1iZXIgPSBnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzID09IDEpIHsKLSAgICAgICAgICAgIE5vZGUqIHJlc3VsdE5v
ZGUgPSBhZGRUb0dyYXBoKFRvU3RyaW5nLCB0aGlzTnVtYmVyKTsKLSAgICAgICAgICAgIHNldChy
ZXN1bHQsIHJlc3VsdE5vZGUpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gYWRkVG9HcmFw
aChUb1N0cmluZywgdGhpc051bWJlcik7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Tm9kZSogcmFkaXggPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpKTsKLSAgICAgICAgICAgIE5vZGUqIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE51bWJl
clRvU3RyaW5nV2l0aFJhZGl4LCB0aGlzTnVtYmVyLCByYWRpeCk7Ci0gICAgICAgICAgICBzZXQo
cmVzdWx0LCByZXN1bHROb2RlKTsKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IGFkZFRvR3Jh
cGgoTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgsIHRoaXNOdW1iZXIsIHJhZGl4KTsKKyAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzM0Nyw4ICszMzM3LDggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIEkKIAogICAgICAgICBpbnNlcnRDaGVja3MoKTsKICAgICAgICAg
Tm9kZSogaW5wdXQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpKTsKLSAgICAgICAgTm9kZSogcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoTnVtYmVySXNJ
bnRlZ2VyLCBpbnB1dCk7Ci0gICAgICAgIHNldChyZXN1bHQsIHJlc3VsdE5vZGUpOworICAgICAg
ICBOb2RlKiByZXN1bHQgPSBhZGRUb0dyYXBoKE51bWJlcklzSW50ZWdlciwgaW5wdXQpOworICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMzNjAsNyArMzM1MCw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBJCiAgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgIHNl
dChyZXN1bHQsCisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksCiAg
ICAgICAgICAgICBhZGRUb0dyYXBoKENQVUludHJpbnNpYywgT3BJbmZvKGludHJpbnNpYyksIE9w
SW5mbygpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKQEAgLTMzNzUsNyArMzM2NSw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVl
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+Ci1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNh
bGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBp
bnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUq
IGNhbGxUYXJnZXQsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSog
c2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKQogewogICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0
aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zMzg4LDEzICszMzc4LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwK
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDw9IEpT
Q19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNfSU5DTFVESU5HX1RISVMsICJDdXJyZW50
bHkgQ2FsbERPTSBkb2VzIG5vdCBzdXBwb3J0IGFuIGFyYml0cmFyeSBsZW5ndGggYXJndW1lbnRz
LiIpOwogCiAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgYWRkQ2FsbChyZXN1bHQsIENhbGwsIHNp
Z25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVy
T2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICBhZGRDYWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNp
Z25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVy
T2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50
cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7CkBA
IC0zNDE0LDE0ICszNDA0LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcihWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwCiAgICAgICAgIE5v
ZGUqIGxlbmd0aE5vZGUgPSBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlN
b2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpOwogCiAgICAg
ICAgIGlmICghbG9nU2l6ZSkgewotICAgICAgICAgICAgc2V0KHJlc3VsdCwgbGVuZ3RoTm9kZSk7
CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBsZW5ndGhO
b2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
V2UgY2FuIHVzZSBhIEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2
ZXIgaGF2ZSBhIGJ5dGVMZW5ndGgKICAgICAgICAgLy8gdGhhdCBvdmVyZmxvd3MgaW50MzIuCiAg
ICAgICAgIE5vZGUqIHNoaWZ0Tm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIobG9nU2l6ZSkpOwot
ICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEJpdExTaGlmdCwgbGVuZ3RoTm9kZSwgc2hp
ZnROb2RlKSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFk
ZFRvR3JhcGgoQml0TFNoaWZ0LCBsZW5ndGhOb2RlLCBzaGlmdE5vZGUpKTsKIAogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zNDM4LDcgKzM0MjgsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3Vs
YXRlZFR5cAogICAgICAgICAgICAgQVNTRVJUKGFycmF5VHlwZSAhPSBBcnJheTo6R2VuZXJpYyk7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIHNldChyZXN1bHQsIGFkZFRvR3JhcGgoR2V0QXJyYXlM
ZW5ndGgsIE9wSW5mbyhBcnJheU1vZGUoYXJyYXlUeXBlLCBBcnJheTo6UmVhZCkuYXNXb3JkKCkp
LCB0aGlzTm9kZSkpOworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQp
LCBhZGRUb0dyYXBoKEdldEFycmF5TGVuZ3RoLCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwg
QXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhpc05vZGUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKIApAQCAtMzQ1Niw3ICszNDQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljR2V0dGVyKFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIFNwZWN1bGF0ZWRUeXAKICAgICAg
ICAgICAgIEFTU0VSVChhcnJheVR5cGUgIT0gQXJyYXk6OkdlbmVyaWMpOwogICAgICAgICB9KTsK
IAotICAgICAgICBzZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
LCBPcEluZm8oQXJyYXlNb2RlKGFycmF5VHlwZSwgQXJyYXk6OlJlYWQpLmFzV29yZCgpKSwgdGhp
c05vZGUpKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRk
VG9HcmFwaChHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgT3BJbmZvKEFycmF5TW9kZShhcnJheVR5
cGUsIEFycmF5OjpSZWFkKS5hc1dvcmQoKSksIHRoaXNOb2RlKSk7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzQ4NywxMSArMzQ3NywxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRl
ZFR5cAogICAgICAgICAvLyBPSywgb25seSBvbmUgcHJvdG90eXBlIGlzIGZvdW5kLiBXZSBwZXJm
b3JtIGNvbnN0YW50IGZvbGRpbmcgaGVyZS4KICAgICAgICAgLy8gVGhpcyBpbmZvcm1hdGlvbiBp
cyBpbXBvcnRhbnQgZm9yIHN1cGVyJ3MgY29uc3RydWN0b3IgY2FsbCB0byBnZXQgbmV3LnRhcmdl
dCBjb25zdGFudC4KICAgICAgICAgaWYgKHByb3RvdHlwZSAmJiBjYW5Gb2xkKSB7Ci0gICAgICAg
ICAgICBzZXQocmVzdWx0LCB3ZWFrSlNDb25zdGFudChwcm90b3R5cGUpKTsKKyAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHdlYWtKU0NvbnN0YW50KHByb3Rv
dHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBz
ZXQocmVzdWx0LCBhZGRUb0dyYXBoKEdldFByb3RvdHlwZU9mLCBPcEluZm8oMCksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgdGhpc05vZGUpKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1
bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChHZXRQcm90b3R5cGVPZiwgT3BJbmZvKDApLCBPcEluZm8o
cHJlZGljdGlvbiksIHRoaXNOb2RlKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA
QCAtMzUwOCw3ICszNDk4LDcgQEAgc3RhdGljIHZvaWQgYmxlc3NDYWxsRE9NR2V0dGVyKE5vZGUq
IG5vZGUpCiAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiB9CiAK
LWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcihWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCitib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNv
bnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZh
cmlhbnQuZG9tQXR0cmlidXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1NDgsMTEg
KzM1MzgsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKFZpcnR1
YWxSZWdpc3RlciByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXIKICAgICB9IGVsc2UKICAgICAgICAg
Y2FsbERPTUdldHRlck5vZGUgPSBhZGRUb0dyYXBoKENhbGxET01HZXR0ZXIsIE9wSW5mbyhjYWxs
RE9NR2V0dGVyRGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgdGhpc05vZGUpOwogICAgIGJsZXNz
Q2FsbERPTUdldHRlcihjYWxsRE9NR2V0dGVyTm9kZSk7Ci0gICAgc2V0KHJlc3VsdCwgY2FsbERP
TUdldHRlck5vZGUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGNh
bGxET01HZXR0ZXJOb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBHZXRCeUlkU3RhdHVzIGdldEJ5
SWQpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKGludCBy
ZXN1bHRPcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlKiBiYXNlLCBHZXRC
eUlkU3RhdHVzIGdldEJ5SWQpCiB7CiAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zNTc1LDE2ICszNTY1LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZU1vZHVsZU5hbWVzcGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRl
CiAgICAgLy8gd291bGQgcmVjb21waWxlLiBCdXQgaWYgd2UgY2FuIGZvbGQgaXQgaGVyZSwgd2Ug
YXZvaWQgdGhlIGV4aXQuCiAgICAgbV9ncmFwaC5mcmVlemUoZ2V0QnlJZC5tb2R1bGVFbnZpcm9u
bWVudCgpKTsKICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRD
bG9zdXJlVmFyKGdldEJ5SWQubW9kdWxlRW52aXJvbm1lbnQoKSwgZ2V0QnlJZC5zY29wZU9mZnNl
dCgpKSkgewotICAgICAgICBzZXQocmVzdWx0LCB3ZWFrSlNDb25zdGFudCh2YWx1ZSkpOworICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCB3ZWFrSlNDb25zdGFudCh2
YWx1ZSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgc2V0KHJlc3VsdCwgYWRk
VG9HcmFwaChHZXRDbG9zdXJlVmFyLCBPcEluZm8oZ2V0QnlJZC5zY29wZU9mZnNldCgpLm9mZnNl
dCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCB3ZWFrSlNDb25zdGFudChnZXRCeUlkLm1vZHVsZUVu
dmlyb25tZW50KCkpKSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwg
YWRkVG9HcmFwaChHZXRDbG9zdXJlVmFyLCBPcEluZm8oZ2V0QnlJZC5zY29wZU9mZnNldCgpLm9m
ZnNldCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCB3ZWFrSlNDb25zdGFudChnZXRCeUlkLm1vZHVs
ZUVudmlyb25tZW50KCkpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IoCi0gICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSW50ZXJuYWxGdW5jdGlv
biogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKKyAgICBpbnQgcmVzdWx0T3BlcmFuZCwg
SW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKICAgICBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlIHR5cGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGUp
KQpAQCAtMzYzNCwyMSArMzYyNCwyMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVUeXBl
ZEFycmF5Q29uc3RydWN0b3IoCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGluc2VydENo
ZWNrcygpOwotICAgIHNldChyZXN1bHQsCisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRP
cGVyYW5kKSwKICAgICAgICAgYWRkVG9HcmFwaChOZXdUeXBlZEFycmF5LCBPcEluZm8odHlwZSks
IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCi0gICAg
Tm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEludGVybmFsRnVu
Y3Rpb24qIGZ1bmN0aW9uLCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgaW50
IHJlZ2lzdGVyT2Zmc2V0LAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAgICBI
YW5kbGluZyBjb25zdGFudCBpbnRlcm5hbCBmdW5jdGlvbiAiLCBKU1ZhbHVlKGZ1bmN0aW9uKSwg
IlxuIik7CiAgICAgCiAgICAgLy8gSXQgc28gaGFwcGVucyB0aGF0IHRoZSBjb2RlIGJlbG93IGFz
c3VtZXMgdGhhdCB0aGUgcmVzdWx0IG9wZXJhbmQgaXMgdmFsaWQuIEl0J3MgZXh0cmVtZWx5CiAg
ICAgLy8gdW5saWtlbHkgdGhhdCB0aGUgcmVzdWx0IG9wZXJhbmQgd291bGQgYmUgaW52YWxpZCAt
IHlvdSdkIGhhdmUgdG8gY2FsbCB0aGlzIHZpYSBhIHNldHRlciBjYWxsLgotICAgIGlmICghcmVz
dWx0LmlzVmFsaWQoKSkKKyAgICBpZiAoIVZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKS5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpIHsKQEAgLTM2NjYsMTQgKzM2NTYsMTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgICAgICAKICAgICAgICAgaW5z
ZXJ0Q2hlY2tzKCk7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAy
KSB7Ci0gICAgICAgICAgICBzZXQocmVzdWx0LAorICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRPcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE5ld0FycmF5
V2l0aFNpemUsIE9wSW5mbyhBcnJheVdpdGhVbmRlY2lkZWQpLCBnZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKLSAg
ICAgICAgc2V0KHJlc3VsdCwKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVy
YW5kKSwKICAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBOZXdBcnJheSwgT3BJ
bmZvKEFycmF5V2l0aFVuZGVjaWRlZCksIE9wSW5mbyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAtIDEpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM2ODQsOSArMzY3NCw5
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigK
IAogICAgICAgICBpbnNlcnRDaGVja3MoKTsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIDw9IDEpCi0gICAgICAgICAgICBzZXQocmVzdWx0LCBqc0NvbnN0YW50KGpzTnVt
YmVyKDApKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQp
LCBqc0NvbnN0YW50KGpzTnVtYmVyKDApKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNl
dChyZXN1bHQsIGFkZFRvR3JhcGgoVG9OdW1iZXIsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rp
b24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkp
OworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9H
cmFwaChUb051bWJlciwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CiAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMzY5NCwxNyArMzY4NCwxNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgaWYgKGZ1bmN0aW9uLT5j
bGFzc0luZm8oKSA9PSBTdHJpbmdDb25zdHJ1Y3Rvcjo6aW5mbygpKSB7CiAgICAgICAgIGluc2Vy
dENoZWNrcygpOwogICAgICAgICAKLSAgICAgICAgTm9kZSogcmVzdWx0Tm9kZTsKKyAgICAgICAg
Tm9kZSogcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzIDw9IDEpCi0gICAgICAgICAgICByZXN1bHROb2RlID0ganNDb25zdGFudChtX3ZtLT5z
bWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICByZXN1bHQgPSBqc0NvbnN0
YW50KG1fdm0tPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmVzdWx0Tm9kZSA9IGFkZFRvR3JhcGgoQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBn
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxTdHJpbmdDb25zdHJ1Y3RvciwgZ2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwogICAgICAgICAK
ICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkKLSAgICAgICAgICAgIHJlc3Vs
dE5vZGUgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSktPnN0cmluZ09iamVjdFN0
cnVjdHVyZSgpKSksIHJlc3VsdE5vZGUpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFw
aChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0
aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1
bHQpOwogICAgICAgICAKLSAgICAgICAgc2V0KHJlc3VsdCwgcmVzdWx0Tm9kZSk7CisgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMzcxMiwyMCArMzcwMiwyMCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oCiAgICAgaWYgKGZ1bmN0aW9u
LT5jbGFzc0luZm8oKSA9PSBPYmplY3RDb25zdHJ1Y3Rvcjo6aW5mbygpICYmIGtpbmQgPT0gQ29k
ZUZvckNhbGwpIHsKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAgICAgTm9kZSogcmVz
dWx0Tm9kZTsKKyAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBo
KE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmds
b2JhbE9iamVjdCgqbV92bSktPm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkp
KSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSktPm9i
amVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKENhbGxPYmplY3RDb25zdHJ1Y3Rvciwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKm1fdm0pKSksIE9w
SW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lz
dGVyT2Zmc2V0KSkpOwotICAgICAgICBzZXQocmVzdWx0LCByZXN1bHROb2RlKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBPcEluZm8obV9n
cmFwaC5mcmVlemUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgqbV92bSkpKSwgT3BJbmZvKHByZWRp
Y3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQp
KSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgdHlwZUlu
ZGV4ID0gMDsgdHlwZUluZGV4IDwgTnVtYmVyT2ZUeXBlZEFycmF5VHlwZXM7ICsrdHlwZUluZGV4
KSB7Ci0gICAgICAgIGJvb2wgaGFuZGxlZCA9IGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigK
LSAgICAgICAgICAgIHJlc3VsdCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywKKyAgICAgICAgYm9vbCByZXN1bHQgPSBoYW5kbGVUeXBlZEFycmF5
Q29uc3RydWN0b3IoCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0
ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgaW5kZXhU
b1R5cGVkQXJyYXlUeXBlKHR5cGVJbmRleCksIGluc2VydENoZWNrcyk7Ci0gICAgICAgIGlmICho
YW5kbGVkKQorICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIApAQCAtNDE1OCw3ICs0MTQ4LDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OnN0
b3JlKE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFB1dEJ5SWRWYXJpYW4K
IH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKLSAgICBWaXJ0dWFsUmVn
aXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2Us
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCisgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwKICAgICBHZXRCeUlkU3RhdHVzIGdldEJ5SWRTdGF0dXMsIEFjY2Vzc1R5cGUgdHlw
ZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogewogICAgIC8vIEF0dGVtcHQgdG8gcmVkdWNl
IHRoZSBzZXQgb2YgdGhpbmdzIGluIHRoZSBHZXRCeUlkU3RhdHVzLgpAQCAtNDE4Niw3ICs0MTc2
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgZ2V0QnlJ
ZCA9IGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gR2V0QnlJZERpcmVjdEZsdXNoIDogR2V0
QnlJZERpcmVjdDsKIAogICAgIGlmIChnZXRCeUlkICE9IFRyeUdldEJ5SWQgJiYgZ2V0QnlJZFN0
YXR1cy5pc01vZHVsZU5hbWVzcGFjZSgpKSB7Ci0gICAgICAgIGlmIChoYW5kbGVNb2R1bGVOYW1l
c3BhY2VMb2FkKGRlc3RpbmF0aW9uLCBwcmVkaWN0aW9uLCBiYXNlLCBnZXRCeUlkU3RhdHVzKSkg
eworICAgICAgICBpZiAoaGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChkZXN0aW5hdGlvbk9wZXJh
bmQsIHByZWRpY3Rpb24sIGJhc2UsIGdldEJ5SWRTdGF0dXMpKSB7CiAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKICAgICAgICAgICAgICAgICBtX2dyYXBo
LmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC00MjAwLDcgKzQxOTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKAogICAgICAgICBBU1NFUlQoIWdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpKTsKICAgICAg
ICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGdldEJ5SWRTdGF0dXNbMF07CiAgICAgICAgIEFT
U0VSVCh2YXJpYW50LmRvbUF0dHJpYnV0ZSgpKTsKLSAgICAgICAgaWYgKGhhbmRsZURPTUpJVEdl
dHRlcihkZXN0aW5hdGlvbiwgdmFyaWFudCwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgcHJlZGlj
dGlvbikpIHsKKyAgICAgICAgaWYgKGhhbmRsZURPTUpJVEdldHRlcihkZXN0aW5hdGlvbk9wZXJh
bmQsIHZhcmlhbnQsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHByZWRpY3Rpb24pKSB7CiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC00MjA5LDcgKzQxOTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRCeUlkKAogCiAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0IHx8
IHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0RGlyZWN0IHx8ICAhZ2V0QnlJZFN0YXR1cy5tYWtlc0Nh
bGxzKCkpOwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5pc1NpbXBsZSgpIHx8ICFnZXRCeUlkU3Rh
dHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKLSAg
ICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3Rp
bmF0aW9uT3BlcmFuZCksCiAgICAgICAgICAgICBhZGRUb0dyYXBoKGdldEJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC00MjIyLDcgKzQyMTIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgfHwg
IW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5
bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IGdldEJ5SWRTdGF0dXMubnVt
VmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6
ZSgpKSB7Ci0gICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCiAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9u
KSwgYmFzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MjM2LDcgKzQy
MjYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAvLyAg
ICBvZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBhcmUgbm90IHdhdGNocG9pbnRhYmxlLgogICAg
ICAgICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogZ2V0QnlJZFN0YXR1cy52
YXJpYW50cygpKSB7CiAgICAgICAgICAgICBpZiAodmFyaWFudC5pbnRyaW5zaWMoKSAhPSBOb0lu
dHJpbnNpYykgewotICAgICAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCiAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBP
cEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CkBAIC00MjUxLDcgKzQyNDEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVHZXRCeUlkKAogCiAgICAgICAgICAgICBHZXRCeU9mZnNldE1ldGhvZCBtZXRob2QgPSBwbGFu
TG9hZCh2YXJpYW50LmNvbmRpdGlvblNldCgpKTsKICAgICAgICAgICAgIGlmICghbWV0aG9kKSB7
Ci0gICAgICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgYmFzZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTQyNjYsNyArNDI1Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpR2V0
QnlPZmZzZXREYXRhLmFkZCgpOwogICAgICAgICBkYXRhLT5jYXNlcyA9IGNhc2VzOwogICAgICAg
ICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKLSAgICAgICAgc2V0
KGRlc3RpbmF0aW9uLAorICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3Bl
cmFuZCksCiAgICAgICAgICAgICBhZGRUb0dyYXBoKE11bHRpR2V0QnlPZmZzZXQsIE9wSW5mbyhk
YXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC00Mjc4LDcgKzQyNjgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KAogICAgIAogICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChwcmVkaWN0aW9uLCBiYXNlLCBp
ZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICBpZiAoIWxvYWRlZFZhbHVlKSB7Ci0gICAg
ICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5h
dGlvbk9wZXJhbmQpLAogICAgICAgICAgICAgYWRkVG9HcmFwaChnZXRCeUlkLCBPcEluZm8oaWRl
bnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNDI4OCwxMyArNDI3OCwxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogCiAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0IHx8IHR5
cGUgPT0gQWNjZXNzVHlwZTo6R2V0RGlyZWN0IHx8ICF2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCkp
OwogICAgIGlmICghdmFyaWFudC5jYWxsTGlua1N0YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2lj
KCkgPT0gTm9JbnRyaW5zaWMpIHsKLSAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBsb2FkZWRWYWx1
ZSk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwgbG9h
ZGVkVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIE5vZGUqIGdldHRl
ciA9IGFkZFRvR3JhcGgoR2V0R2V0dGVyLCBsb2FkZWRWYWx1ZSk7CiAKLSAgICBpZiAoaGFuZGxl
SW50cmluc2ljR2V0dGVyKGRlc3RpbmF0aW9uLCBwcmVkaWN0aW9uLCB2YXJpYW50LCBiYXNlLAor
ICAgIGlmIChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCBwcmVkaWN0
aW9uLCB2YXJpYW50LCBiYXNlLAogICAgICAgICAgICAgWyZdICgpIHsKICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZhcmlhbnQuaW50
cmluc2ljRnVuY3Rpb24oKSkpLCBnZXR0ZXIpOwogICAgICAgICAgICAgfSkpIHsKQEAgLTQzNDAs
NyArNDMzMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgYWRk
VG9HcmFwaChFeGl0T0spOwogICAgIAogICAgIGhhbmRsZUNhbGwoCi0gICAgICAgIGRlc3RpbmF0
aW9uLCBDYWxsLCBJbmxpbmVDYWxsRnJhbWU6OkdldHRlckNhbGwsIGluc3RydWN0aW9uU2l6ZSwK
KyAgICAgICAgZGVzdGluYXRpb25PcGVyYW5kLCBDYWxsLCBJbmxpbmVDYWxsRnJhbWU6OkdldHRl
ckNhbGwsIGluc3RydWN0aW9uU2l6ZSwKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRl
cnMgLSAxLCByZWdpc3Rlck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGlj
dGlvbik7CiB9CiAKQEAgLTQzNTUsNyArNDM0NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVt
aXRQdXRCeUlkKAogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIE5v
ZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLAotICAgIGNv
bnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVk
IGluc3RydWN0aW9uU2l6ZSkKKyAgICBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVz
LCBib29sIGlzRGlyZWN0KQogewogICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NpbXBsZSgpIHx8
ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGlu
aW5nKCkpIHsKICAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0KCkpCkBAIC00NTI4LDgg
KzQ1MTgsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBh
ZGRUb0dyYXBoKEV4aXRPSyk7CiAgICAgCiAgICAgICAgIGhhbmRsZUNhbGwoCi0gICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIoKSwgQ2FsbCwgSW5saW5lQ2FsbEZyYW1lOjpTZXR0ZXJDYWxsLAot
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25TaXplLCBzZXR0ZXIsIG51bWJlck9mUGFyYW1ldGVycyAt
IDEsIHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0
KCksIENhbGwsIElubGluZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbCwKKyAgICAgICAgICAgIE9QQ09E
RV9MRU5HVEgob3BfcHV0X2J5X2lkKSwgc2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCBy
ZWdpc3Rlck9mZnNldCwKICAgICAgICAgICAgICp2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCksIFNw
ZWNPdGhlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NTUxLDMzICs0NTQxLDYgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6Y2xlYXJDYWNoZXMoKQogICAgIG1fY29uc3RhbnRzLnNocmlu
aygwKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUdldEJ5SWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwotICAgIAotICAgIE5vZGUq
IGJhc2UgPSBnZXQoYnl0ZWNvZGUuYmFzZSk7Ci0gICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLnByb3BlcnR5
XTsKLSAgICAKLSAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW2lkZW50aWZpZXJOdW1iZXJdOwotICAgIEdldEJ5SWRTdGF0dXMgZ2V0QnlJZFN0YXR1cyA9
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jaywKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwg
bV9pY0NvbnRleHRTdGFjaywKLSAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKLQot
ICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKLSAgICB1bnNpZ25lZCBvcGNv
ZGVMZW5ndGggPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsKLSAgICBpZiAoT3A6Om9wY29k
ZUlEID09IG9wX3RyeV9nZXRfYnlfaWQpCi0gICAgICAgIHR5cGUgPSBBY2Nlc3NUeXBlOjpUcnlH
ZXQ7Ci0gICAgZWxzZSBpZiAoT3A6Om9wY29kZUlEID09IG9wX2dldF9ieV9pZF9kaXJlY3QpCi0g
ICAgICAgIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXREaXJlY3Q7Ci0KLSAgICBoYW5kbGVHZXRCeUlk
KAotICAgICAgICBieXRlY29kZS5kc3QsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1i
ZXIsIGdldEJ5SWRTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7Ci0KLX0KLQogc3RhdGljIHVp
bnQ2NF90IG1ha2VEeW5hbWljVmFyT3BJbmZvKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIHVu
c2lnbmVkIGdldFB1dEluZm8pCiB7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoaWRlbnRpZmll
ck51bWJlcikgPT0gNCwKQEAgLTQ1OTMsMTQgKzQ1NTYsMTQgQEAgc3RhdGljIHVpbnQ2NF90IG1h
a2VEeW5hbWljVmFyT3BJbmZvKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIHVuc2lnbmVkIGdl
dFB1dEkKIC8vIERvZXNuJ3QgYWxsb3cgdXNpbmcgYGNvbnRpbnVlYC4KICNkZWZpbmUgTkVYVF9P
UENPREUobmFtZSkgXAogICAgIGlmICh0cnVlKSB7IFwKLSAgICAgICAgbV9jdXJyZW50SW5kZXgg
Kz0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7IFwKKyAgICAgICAgbV9jdXJyZW50SW5kZXgg
Kz0gT1BDT0RFX0xFTkdUSChuYW1lKTsgXAogICAgICAgICBnb3RvIFdURl9DT05DQVQoTkVYVF9P
UENPREVfLCBfX0xJTkVfXyk7IC8qIE5lZWQgYSB1bmlxdWUgbGFiZWw6IHVzYWJsZSBtb3JlIHRo
YW4gb25jZSBwZXIgZnVuY3Rpb24uICovIFwKICAgICB9IGVsc2UgXAogICAgICAgICBXVEZfQ09O
Q0FUKE5FWFRfT1BDT0RFXywgX19MSU5FX18pOiBcCiAgICAgY29udGludWUKIAogI2RlZmluZSBM
QVNUX09QQ09ERV9MSU5LRUQobmFtZSkgZG8geyBcCi0gICAgICAgIG1fY3VycmVudEluZGV4ICs9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpOyBcCisgICAgICAgIG1fY3VycmVudEluZGV4ICs9
IE9QQ09ERV9MRU5HVEgobmFtZSk7IFwKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgXAogICAg
ICAgICByZXR1cm47IFwKICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTQ2MjMsNyArNDU4Niw3IEBA
IHN0YXRpYyB1aW50NjRfdCBtYWtlRHluYW1pY1Zhck9wSW5mbyh1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCB1bnNpZ25lZCBnZXRQdXRJCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiB7Ci0gICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpOworICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwogICAgIHVuc2lnbmVkIGJsb2NrQmVnaW4gPSBtX2N1cnJlbnRJbmRl
eDsKIAogICAgIC8vIElmIHdlIGFyZSB0aGUgZmlyc3QgYmFzaWMgYmxvY2ssIGludHJvZHVjZSBt
YXJrZXJzIGZvciBhcmd1bWVudHMuIFRoaXMgYWxsb3dzCkBAIC00NjUyLDE0ICs0NjE1LDYgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9jb2RlQmxvY2s7Ci0KLSAgICBhdXRvIGp1bXBUYXJnZXQgPSBbJl0oaW50IHRhcmdldCkgewot
ICAgICAgICBpZiAodGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuIHRhcmdldDsKLSAgICAgICAg
cmV0dXJuIGNvZGVCbG9jay0+b3V0T2ZMaW5lSnVtcE9mZnNldChtX2N1cnJlbnRJbnN0cnVjdGlv
bik7Ci0gICAgfTsKLQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIFdlJ3JlIHN0YXJp
bmcgYXQgYSBuZXcgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24uIFNvIHdlIG9uY2UgYWdhaW4gaGF2ZSBh
IHBsYWNlIHRoYXQgd2UgY2FuIGV4aXQKICAgICAgICAgLy8gdG8uCkBAIC00NjgzLDkgKzQ2Mzgs
OSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBTd2l0Y2ggb24gdGhlIGN1cnJlbnQgYnl0ZWNv
ZGUgb3Bjb2RlLgotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zLmF0KG1fY3VycmVudEluZGV4KS5wdHIoKTsKKyAgICAgICAgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luICsgbV9jdXJyZW50
SW5kZXg7CiAgICAgICAgIG1fY3VycmVudEluc3RydWN0aW9uID0gY3VycmVudEluc3RydWN0aW9u
OyAvLyBTb21lIG1ldGhvZHMgd2FudCB0byB1c2UgdGhpcywgYW5kIHdlJ2QgcmF0aGVyIG5vdCB0
aHJlYWQgaXQgdGhyb3VnaCBjYWxscy4KLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwog
ICAgICAgICAKICAgICAgICAgVkVSQk9TRV9MT0coIiAgICBwYXJzaW5nICIsIGN1cnJlbnRDb2Rl
T3JpZ2luKCksICI6ICIsIG9wY29kZUlELCAiXG4iKTsKICAgICAgICAgCkBAIC00NzEwLDkgKzQ2
NjUsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRo
aXMoKTsKICAgICAgICAgICAgIGlmIChvcDEtPm9wKCkgIT0gVG9UaGlzKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBtZXRhZGF0YSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCku
bWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0
cnVjdHVyZSA9IG1ldGFkYXRhLmNhY2hlZFN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgICAgICAg
ICBpZiAobWV0YWRhdGEudG9UaGlzU3RhdHVzICE9IFRvVGhpc09LCisgICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zdHJ1
Y3R1cmUuZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJbnN0cnVjdGlvblszXS51
LnRvVGhpc1N0YXR1cyAhPSBUb1RoaXNPSwogICAgICAgICAgICAgICAgICAgICB8fCAhY2FjaGVk
U3RydWN0dXJlCiAgICAgICAgICAgICAgICAgICAgIHx8IGNhY2hlZFN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCktPm1ldGhvZFRhYmxlLnRvVGhpcyAhPSBKU09iamVjdDo6aW5mbygpLT5tZXRob2RUYWJs
ZS50b1RoaXMKICAgICAgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkKQEAgLTQ3MzAsMTIg
KzQ2ODQsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6IHsKLSAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlVGhpcz4o
KTsKLSAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUuY2FsbGVlKSk7CisgICAgICAgICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9j
YXN0PE9wQ3JlYXRlVGhpcyo+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBOb2Rl
KiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmNhbGxlZSgpKSk7CiAKICAg
ICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0
YW50PEpTRnVuY3Rpb24qPigqbV92bSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jaykuY2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0KCk7CisgICAgICAgICAgICAg
ICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGJ5dGVjb2RlLmNhY2hlZENhbGxlZSgpLnVudmFs
aWRhdGVkR2V0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZEZ1bmN0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICYmIGNhY2hlZEZ1bmN0aW9uICE9IEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2Fs
bGVlT2JqZWN0cygpCiAgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewpAQCAt
NDc3NCwyNjUgKzQ3MjgsMjUzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0lu
bGluZU9mZnNldChrbm93blBvbHlQcm90b09mZnNldCkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIG9iamVjdCwg
b2JqZWN0LCB3ZWFrSlNDb25zdGFudChwcm90b3R5cGUpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5kc3QpLCBvYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuZHN0KCkpLCBvYmplY3QpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICghYWxyZWFkeUVtaXR0ZWQpIHsKLSAgICAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmRzdCksCi0gICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ3JlYXRlVGhpcywgT3BJbmZvKGJ5dGVjb2RlLmlubGluZUNhcGFjaXR5
KSwgY2FsbGVlKSk7CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5kc3QoKSksCisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ3JlYXRlVGhpcywgT3BJ
bmZvKGJ5dGVjb2RlLmlubGluZUNhcGFjaXR5KCkpLCBjYWxsZWUpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV90aGlzKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmplY3Q+KCk7Ci0gICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUuZHN0LAorICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE5ld09i
amVjdCwKLSAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5z
dHJ1Y3R1cmUoKSkpKSk7CisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlLT5zdHJ1Y3R1cmUoKSkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfb2Jq
ZWN0KTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5
OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cE5ld0FycmF5PigpOwotICAgICAgICAgICAgaW50IHN0YXJ0T3BlcmFuZCA9IGJ5dGVjb2RlLmFy
Z3Yub2Zmc2V0KCk7Ci0gICAgICAgICAgICBpbnQgbnVtT3BlcmFuZHMgPSBieXRlY29kZS5hcmdj
OwotICAgICAgICAgICAgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSYgcHJvZmlsZSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKKyAgICAgICAgICAg
IGludCBzdGFydE9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IG51bU9wZXJhbmRzID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5hcnJheUFsbG9jYXRpb25Qcm9maWxlOwogICAgICAgICAgICAgZm9y
IChpbnQgb3BlcmFuZElkeCA9IHN0YXJ0T3BlcmFuZDsgb3BlcmFuZElkeCA+IHN0YXJ0T3BlcmFu
ZCAtIG51bU9wZXJhbmRzOyAtLW9wZXJhbmRJZHgpCiAgICAgICAgICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQoZ2V0KFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kSWR4KSkpOwotICAgICAgICAgICAgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoSGludCA9IHN0ZDo6bWF4PHVuc2lnbmVkPihwcm9maWxlLnZlY3Rv
ckxlbmd0aEhpbnQoKSwgbnVtT3BlcmFuZHMpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRz
dCwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIE5ld0FycmF5LCBPcEluZm8ocHJvZmlsZS5zZWxl
Y3RJbmRleGluZ1R5cGUoKSksIE9wSW5mbyh2ZWN0b3JMZW5ndGhIaW50KSkpOworICAgICAgICAg
ICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoSGludCA9IHN0ZDo6bWF4PHVuc2lnbmVkPihwcm9maWxl
LT52ZWN0b3JMZW5ndGhIaW50KCksIG51bU9wZXJhbmRzKTsKKyAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgo
Tm9kZTo6VmFyQXJnLCBOZXdBcnJheSwgT3BJbmZvKHByb2ZpbGUtPnNlbGVjdEluZGV4aW5nVHlw
ZSgpKSwgT3BJbmZvKHZlY3Rvckxlbmd0aEhpbnQpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfYXJyYXkpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXlf
d2l0aF9zcHJlYWQ6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRoU3ByZWFkPigpOwotICAgICAgICAgICAgaW50IHN0YXJ0
T3BlcmFuZCA9IGJ5dGVjb2RlLmFyZ3Yub2Zmc2V0KCk7Ci0gICAgICAgICAgICBpbnQgbnVtT3Bl
cmFuZHMgPSBieXRlY29kZS5hcmdjOwotICAgICAgICAgICAgY29uc3QgQml0VmVjdG9yJiBiaXRW
ZWN0b3IgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPmJpdFZlY3RvcihieXRlY29kZS5iaXRWZWN0b3IpOworICAgICAgICAgICAgaW50IHN0
YXJ0T3BlcmFuZCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgbnVtT3BlcmFuZHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAg
ICAgICAgICAgY29uc3QgQml0VmVjdG9yJiBiaXRWZWN0b3IgPSBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmJpdFZlY3RvcihjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS51bnNpZ25lZFZhbHVlKTsKICAgICAgICAgICAgIGZvciAoaW50IG9wZXJh
bmRJZHggPSBzdGFydE9wZXJhbmQ7IG9wZXJhbmRJZHggPiBzdGFydE9wZXJhbmQgLSBudW1PcGVy
YW5kczsgLS1vcGVyYW5kSWR4KQogICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChW
aXJ0dWFsUmVnaXN0ZXIob3BlcmFuZElkeCkpKTsKIAogICAgICAgICAgICAgQml0VmVjdG9yKiBj
b3B5ID0gbV9ncmFwaC5tX2JpdFZlY3RvcnMuYWRkKGJpdFZlY3Rvcik7CiAgICAgICAgICAgICBB
U1NFUlQoKmNvcHkgPT0gYml0VmVjdG9yKTsKIAotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRz
dCwKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksCiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIE5l
d0FycmF5V2l0aFNwcmVhZCwgT3BJbmZvKGNvcHkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBv
cF9zcHJlYWQ6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wU3ByZWFkPigpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwKLSAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFNwcmVhZCwgZ2V0KGJ5dGVjb2RlLmFyZ3VtZW50KSkpOwor
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNwcmVhZCwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3NwcmVhZCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlXaXRoU2l6ZT4oKTsKLSAgICAg
ICAgICAgIEFycmF5QWxsb2NhdGlvblByb2ZpbGUmIHByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLmFycmF5QWxsb2NhdGlvblByb2ZpbGU7Ci0gICAgICAgICAgICBzZXQoYnl0
ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKE5ld0FycmF5V2l0aFNpemUsIE9wSW5mbyhwcm9maWxlLnNl
bGVjdEluZGV4aW5nVHlwZSgpKSwgZ2V0KGJ5dGVjb2RlLmxlbmd0aCkpKTsKKyAgICAgICAgICAg
IGludCBsZW5ndGhPcGVyYW5kID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5hcnJheUFsbG9jYXRpb25Qcm9maWxlOworICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChO
ZXdBcnJheVdpdGhTaXplLCBPcEluZm8ocHJvZmlsZS0+c2VsZWN0SW5kZXhpbmdUeXBlKCkpLCBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGxlbmd0aE9wZXJhbmQpKSkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfbmV3X2FycmF5X3dpdGhfc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlCdWZmZXI+KCk7CisgICAg
ICAgICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0PE9wTmV3QXJyYXlCdWZm
ZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwg
d2UgY2FuJ3QgYWxsb2NhdGUgYSBuZXcgSlNJbW11dGFibGVCdXR0ZXJmbHkgaWYgdGhlIHByb2Zp
bGUgdGVsbHMgdXMgbmV3IGluZm9ybWF0aW9uIGJlY2F1c2Ugd2UKICAgICAgICAgICAgIC8vIGNh
bm5vdCBhbGxvY2F0ZSBmcm9tIGNvbXBpbGF0aW9uIHRocmVhZHMuCiAgICAgICAgICAgICBXVEY6
OmxvYWRMb2FkRmVuY2UoKTsKLSAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmltbXV0YWJsZUJ1dHRlcmZseSkpLT5jb25zdGFudCgp
OworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUuaW1tdXRhYmxlQnV0dGVyZmx5KCkpKS0+Y29uc3RhbnQoKTsKICAgICAgICAgICAg
IFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkq
IGltbXV0YWJsZUJ1dHRlcmZseSA9IGZyb3plbi0+Y2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+
KCk7CiAgICAgICAgICAgICBOZXdBcnJheUJ1ZmZlckRhdGEgZGF0YSB7IH07CiAgICAgICAgICAg
ICBkYXRhLmluZGV4aW5nTW9kZSA9IGltbXV0YWJsZUJ1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCk7
CiAgICAgICAgICAgICBkYXRhLnZlY3Rvckxlbmd0aEhpbnQgPSBpbW11dGFibGVCdXR0ZXJmbHkt
PnRvQnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpOwogCi0gICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLmRzdCksIGFkZFRvR3JhcGgoTmV3QXJyYXlCdWZmZXIsIE9wSW5m
byhmcm96ZW4pLCBPcEluZm8oZGF0YS5hc1F1YWRXb3JkKSkpOworICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3QoKSksIGFkZFRvR3JhcGgoTmV3QXJyYXlCdWZmZXIs
IE9wSW5mbyhmcm96ZW4pLCBPcEluZm8oZGF0YS5hc1F1YWRXb3JkKSkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfbmV3X2FycmF5X2J1ZmZlcik7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIG9wX25ld19yZWdleHA6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3UmVnZXhwPigpOwotICAgICAgICAgICAg
QVNTRVJUKGJ5dGVjb2RlLnJlZ2V4cC5pc0NvbnN0YW50KCkpOwotICAgICAgICAgICAgRnJvemVu
VmFsdWUqIGZyb3plblJlZ0V4cCA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG1faW5saW5lU3RhY2tU
b3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5yZWdleHAub2Zmc2V0KCkpKTsK
LSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoTmV3UmVnZXhwLCBPcElu
Zm8oZnJvemVuUmVnRXhwKSwganNDb25zdGFudChqc051bWJlcigwKSkpKTsKKyAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciByZWdFeHBSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIEFTU0VSVChyZWdFeHBSZWdpc3Rlci5pc0NvbnN0YW50KCkp
OworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblJlZ0V4cCA9IG1fZ3JhcGguZnJlZXpl
U3Ryb25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChyZWdFeHBS
ZWdpc3Rlci5vZmZzZXQoKSkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdSZWdleHAsIE9wSW5m
byhmcm96ZW5SZWdFeHApLCBqc0NvbnN0YW50KGpzTnVtYmVyKDApKSkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfbmV3X3JlZ2V4cCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9w
X2dldF9yZXN0X2xlbmd0aDogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRSZXN0TGVuZ3RoPigpOwogICAgICAgICAgICAgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0aGlzLT5pbmxpbmVDYWxsRnJhbWUoKTsKICAgICAg
ICAgICAgIE5vZGUqIGxlbmd0aDsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYg
IWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBhcmd1bWVudHNMZW5ndGggPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzIC0gMTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1QYXJhbXNUb1NraXAgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgICAgIEpT
VmFsdWUgcmVzdExlbmd0aDsKLSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzTGVuZ3RoIDw9
IGJ5dGVjb2RlLm51bVBhcmFtZXRlcnNUb1NraXApCisgICAgICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50c0xlbmd0aCA8PSBudW1QYXJhbXNUb1NraXApCiAgICAgICAgICAgICAgICAgICAgIHJlc3RM
ZW5ndGggPSBqc051bWJlcigwKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHJlc3RMZW5ndGggPSBqc051bWJlcihhcmd1bWVudHNMZW5ndGggLSBieXRlY29kZS5u
dW1QYXJhbWV0ZXJzVG9Ta2lwKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdExlbmd0aCA9IGpz
TnVtYmVyKGFyZ3VtZW50c0xlbmd0aCAtIG51bVBhcmFtc1RvU2tpcCk7CiAKICAgICAgICAgICAg
ICAgICBsZW5ndGggPSBqc0NvbnN0YW50KHJlc3RMZW5ndGgpOwogICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gYWRkVG9HcmFwaChHZXRSZXN0TGVuZ3RoLCBPcElu
Zm8oYnl0ZWNvZGUubnVtUGFyYW1ldGVyc1RvU2tpcCkpOwotICAgICAgICAgICAgc2V0KGJ5dGVj
b2RlLmRzdCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBhZGRUb0dyYXBoKEdl
dFJlc3RMZW5ndGgsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVl
KSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpLCBsZW5ndGgpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3Jl
c3RfbGVuZ3RoKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6IHsK
LSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3Jl
YXRlUmVzdD4oKTsKICAgICAgICAgICAgIG5vdGljZUFyZ3VtZW50c1VzZSgpOwotICAgICAgICAg
ICAgTm9kZSogYXJyYXlMZW5ndGggPSBnZXQoYnl0ZWNvZGUuYXJyYXlTaXplKTsKLSAgICAgICAg
ICAgIHNldChieXRlY29kZS5kc3QsCi0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDcmVhdGVS
ZXN0LCBPcEluZm8oYnl0ZWNvZGUubnVtUGFyYW1ldGVyc1RvU2tpcCksIGFycmF5TGVuZ3RoKSk7
CisgICAgICAgICAgICBOb2RlKiBhcnJheUxlbmd0aCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKENyZWF0ZVJlc3QsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS51
bnNpZ25lZFZhbHVlKSwgYXJyYXlMZW5ndGgpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2NyZWF0ZV9yZXN0KTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBC
aXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKICAgICAgICAgY2FzZSBvcF9iaXRhbmQ6IHsKLSAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQml0YW5kPigp
OwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAg
ICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhzKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwor
ICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9u
KGdldFByZWRpY3Rpb24oKSkpCi0gICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRk
VG9HcmFwaChBcml0aEJpdEFuZCwgb3AxLCBvcDIpKTsKKyAgICAgICAgICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBo
KEFyaXRoQml0QW5kLCBvcDEsIG9wMikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoVmFsdWVCaXRBbmQsIG9wMSwgb3AyKSk7
CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChWYWx1ZUJpdEFuZCwgb3AxLCBvcDIpKTsKKwogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfYml0YW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2Ugb3BfYml0b3I6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wQml0b3I+KCk7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNv
ZGUubGhzKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5yaHMpOworICAg
ICAgICAgICAgTm9kZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIGlm
IChpc0ludDMyU3BlY3VsYXRpb24oZ2V0UHJlZGljdGlvbigpKSkKLSAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKEFyaXRoQml0T3IsIG9wMSwgb3AyKSk7CisgICAg
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgYWRkVG9HcmFwaChBcml0aEJpdE9yLCBvcDEsIG9wMikpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoVmFsdWVC
aXRPciwgb3AxLCBvcDIpKTsKKyAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKFZhbHVlQml0T3IsIG9w
MSwgb3AyKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9iaXRvcik7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX2JpdHhvcjogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgICAgICAgICBOb2RlKiBv
cDEgPSBnZXQoYnl0ZWNvZGUubGhzKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRl
Y29kZS5yaHMpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChCaXRY
b3IsIG9wMSwgb3AyKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUq
IG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChCaXRYb3IsIG9wMSwgb3AyKSk7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9iaXR4b3IpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9y
c2hpZnQ6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wUnNoaWZ0PigpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLmxo
cyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhzKTsKLSAgICAgICAg
ICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoQml0UlNoaWZ0LCBvcDEsIG9wMikpOwor
ICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCisg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCaXRSU2hpZnQsIG9wMSwgb3AyKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9yc2hpZnQpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBv
cF9sc2hpZnQ6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wTHNoaWZ0PigpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2Rl
Lmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhzKTsKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoQml0TFNoaWZ0LCBvcDEsIG9wMikp
OworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCks
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCaXRMU2hpZnQsIG9wMSwgb3AyKSk7CiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9sc2hpZnQpOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF91cnNoaWZ0OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFVyc2hpZnQ+KCk7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0
ZWNvZGUubGhzKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5yaHMpOwot
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChCaXRVUlNoaWZ0LCBvcDEs
IG9wMikpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAg
ICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChCaXRVUlNoaWZ0LCBvcDEsIG9wMikp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdXJzaGlmdCk7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIG9wX3Vuc2lnbmVkOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFVuc2lnbmVkPigpOwotICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLmRzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChVSW50MzJUb051bWJlciwg
Z2V0KGJ5dGVjb2RlLm9wZXJhbmQpKSkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgICAgICBtYWtl
U2FmZShhZGRUb0dyYXBoKFVJbnQzMlRvTnVtYmVyLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX3Vuc2lnbmVkKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vID09PSBJbmNyZW1lbnQvRGVj
cmVtZW50IG9wY29kZXMgPT09CiAKICAgICAgICAgY2FzZSBvcF9pbmM6IHsKLSAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5jPigpOwotICAgICAg
ICAgICAgTm9kZSogb3AgPSBnZXQoYnl0ZWNvZGUuc3JjRHN0KTsKLSAgICAgICAgICAgIHNldChi
eXRlY29kZS5zcmNEc3QsIG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhBZGQsIG9wLCBhZGRUb0dy
YXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50T25lKSkpKSk7CisgICAgICAgICAgICBp
bnQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBzcmNEc3RWaXJ0dWFsUmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIo
c3JjRHN0KTsKKyAgICAgICAgICAgIE5vZGUqIG9wID0gZ2V0KHNyY0RzdFZpcnR1YWxSZWdpc3Rl
cik7CisgICAgICAgICAgICBzZXQoc3JjRHN0VmlydHVhbFJlZ2lzdGVyLCBtYWtlU2FmZShhZGRU
b0dyYXBoKEFyaXRoQWRkLCBvcCwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25z
dGFudE9uZSkpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5jKTsKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2Ugb3BfZGVjOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcERlYz4oKTsKLSAgICAgICAgICAgIE5vZGUqIG9wID0g
Z2V0KGJ5dGVjb2RlLnNyY0RzdCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuc3JjRHN0LCBt
YWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoU3ViLCBvcCwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBP
cEluZm8obV9jb25zdGFudE9uZSkpKSkpOworICAgICAgICAgICAgaW50IHNyY0RzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c3JjRHN0VmlydHVhbFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKHNyY0RzdCk7CisgICAgICAg
ICAgICBOb2RlKiBvcCA9IGdldChzcmNEc3RWaXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAg
c2V0KHNyY0RzdFZpcnR1YWxSZWdpc3RlciwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aFN1Yiwg
b3AsIGFkZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fY29uc3RhbnRPbmUpKSkpKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlYyk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyA9
PT0gQXJpdGhtZXRpYyBvcGVyYXRpb25zID09PQogCiAgICAgICAgIGNhc2Ugb3BfYWRkOiB7Ci0g
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEFkZD4o
KTsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAg
ICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLnJocyk7CisgICAgICAgICAgICBOb2RlKiBvcDEg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
KyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgaWYgKG9wMS0+aGFzTnVtYmVyUmVz
dWx0KCkgJiYgb3AyLT5oYXNOdW1iZXJSZXN1bHQoKSkKLSAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUuZHN0LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBvcDEsIG9wMikpKTsKKyAg
ICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpLCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBvcDEsIG9wMikpKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBtYWtlU2Fm
ZShhZGRUb0dyYXBoKFZhbHVlQWRkLCBvcDEsIG9wMikpKTsKKyAgICAgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBtYWtlU2Fm
ZShhZGRUb0dyYXBoKFZhbHVlQWRkLCBvcDEsIG9wMikpKTsKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2FkZCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3N1YjogewotICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+KCk7Ci0g
ICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubGhzKTsKLSAgICAgICAgICAgIE5v
ZGUqIG9wMiA9IGdldChieXRlY29kZS5yaHMpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAg
ICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIGlmIChvcDEtPmhhc051bWJlclJlc3VsdCgp
ICYmIG9wMi0+aGFzTnVtYmVyUmVzdWx0KCkpCi0gICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
LmRzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aFN1Yiwgb3AxLCBvcDIpKSk7CisgICAgICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aFN1Yiwgb3AxLCBvcDIpKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgbWFrZVNhZmUoYWRk
VG9HcmFwaChWYWx1ZVN1Yiwgb3AxLCBvcDIpKSk7CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgbWFrZVNhZmUoYWRk
VG9HcmFwaChWYWx1ZVN1Yiwgb3AxLCBvcDIpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9zdWIpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9uZWdhdGU6IHsKLSAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpOwot
ICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLm9wZXJhbmQpOworICAgICAgICAg
ICAgTm9kZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBpZiAob3AxLT5oYXNOdW1iZXJSZXN1bHQoKSkKLSAg
ICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRo
TmVnYXRlLCBvcDEpKSk7CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aE5l
Z2F0ZSwgb3AxKSkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNldChieXRl
Y29kZS5kc3QsIG1ha2VTYWZlKGFkZFRvR3JhcGgoVmFsdWVOZWdhdGUsIG9wMSkpKTsKKyAgICAg
ICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpLCBtYWtlU2FmZShhZGRUb0dyYXBoKFZhbHVlTmVnYXRlLCBvcDEpKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9uZWdhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBv
cF9tdWw6IHsKICAgICAgICAgICAgIC8vIE11bHRpcGx5IHJlcXVpcmVzIHRoYXQgdGhlIGlucHV0
cyBhcmUgbm90IHRydW5jYXRlZCwgdW5mb3J0dW5hdGVseS4KLSAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTXVsPigpOwotICAgICAgICAgICAgTm9k
ZSogb3AxID0gZ2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQo
Ynl0ZWNvZGUucmhzKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIG1ha2VTYWZlKGFk
ZFRvR3JhcGgoQXJpdGhNdWwsIG9wMSwgb3AyKSkpOworICAgICAgICAgICAgTm9kZSogb3AxID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Cisg
ICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhN
dWwsIG9wMSwgb3AyKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbXVsKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2Ugb3BfbW9kOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE1vZD4oKTsKLSAgICAgICAgICAgIE5vZGUqIG9w
MSA9IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVj
b2RlLnJocyk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBtYWtlU2FmZShhZGRUb0dy
YXBoKEFyaXRoTW9kLCBvcDEsIG9wMikpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoTW9kLCBv
cDEsIG9wMikpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX21vZCk7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX3BvdzogewogICAgICAgICAgICAgLy8gRklYTUU6IEFyaXRoUG93
KFVudHlwZWQsIFVudHlwZWQpIHNob3VsZCBiZSBzdXBwb3J0ZWQgYXMgdGhlIHNhbWUgdG8gQXJp
dGhNdWwsIEFyaXRoU3ViIGV0Yy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwMTIKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUG93PigpOwotICAgICAgICAgICAgTm9kZSogb3AxID0g
Z2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUu
cmhzKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoQXJpdGhQb3cs
IG9wMSwgb3AyKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9w
MiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkp
OworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgYWRkVG9HcmFwaChBcml0aFBvdywgb3AxLCBvcDIpKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3Bvdyk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2Rpdjog
ewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BE
aXY+KCk7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubGhzKTsKLSAgICAg
ICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5yaHMpOwotICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLmRzdCwgbWFrZURpdlNhZmUoYWRkVG9HcmFwaChBcml0aERpdiwgb3AxLCBvcDIpKSk7
CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwg
bWFrZURpdlNhZmUoYWRkVG9HcmFwaChBcml0aERpdiwgb3AxLCBvcDIpKSk7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9kaXYpOwogICAgICAgICB9CiAKQEAgLTUwNDYsNDYgKzQ5ODgsNDMg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2Ugb3BfbW92OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE1vdj4oKTsKLSAgICAgICAgICAgIE5vZGUqIG9w
ID0gZ2V0KGJ5dGVjb2RlLnNyYyk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBvcCk7
CisgICAgICAgICAgICBOb2RlKiBvcCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgb3ApOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfbW92KTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfY2hlY2tfdGR6OiB7
Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENo
ZWNrVGR6PigpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja05vdEVtcHR5LCBnZXQoYnl0
ZWNvZGUudGFyZ2V0KSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrTm90RW1wdHksIGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NoZWNrX3Rkeik7CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7
CisgICAgICAgICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0PE9wT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UqPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgSlNGdW5j
dGlvbiogZGVmYXVsdEhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBtX2lubGluZVN0YWNrVG9w
LT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnRDb2RlT3JpZ2luKCkpLT5mdW5j
dGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpOwogCi0gICAgICAgICAgICBOb2Rl
KiBjb25zdHJ1Y3RvciA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuY29uc3RydWN0b3Ip
KTsKLSAgICAgICAgICAgIE5vZGUqIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLmhhc0luc3RhbmNlVmFsdWUpKTsKKyAgICAgICAgICAgIE5vZGUqIGNvbnN0
cnVjdG9yID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5jb25zdHJ1Y3RvcigpKSk7Cisg
ICAgICAgICAgICBOb2RlKiBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5oYXNJbnN0YW5jZVZhbHVlKCkpKTsKIAotICAgICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5kc3QpLCBhZGRUb0dyYXBoKE92ZXJyaWRlc0hhc0luc3RhbmNlLCBP
cEluZm8obV9ncmFwaC5mcmVlemUoZGVmYXVsdEhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pKSwg
Y29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUuZHN0KCkpLCBhZGRUb0dyYXBoKE92ZXJyaWRlc0hhc0luc3RhbmNl
LCBPcEluZm8obV9ncmFwaC5mcmVlemUoZGVmYXVsdEhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24p
KSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpKTsKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9pZGVudGl0eV93aXRoX3Byb2ZpbGU6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSWRlbnRpdHlXaXRoUHJvZmlsZT4oKTsKLSAgICAg
ICAgICAgIE5vZGUqIHNyY0RzdCA9IGdldChieXRlY29kZS5zcmNEc3QpOwotICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBzdGF0aWNfY2FzdDxTcGVjdWxhdGVkVHlwZT4o
Ynl0ZWNvZGUudG9wUHJvZmlsZSkgPDwgMzIgfCBzdGF0aWNfY2FzdDxTcGVjdWxhdGVkVHlwZT4o
Ynl0ZWNvZGUuYm90dG9tUHJvZmlsZSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuc3JjRHN0
LCBhZGRUb0dyYXBoKElkZW50aXR5V2l0aFByb2ZpbGUsIE9wSW5mbyhzcGVjdWxhdGlvbiksIHNy
Y0RzdCkpOworICAgICAgICAgICAgTm9kZSogc3JjID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbiA9IHN0YXRpY19jYXN0PFNwZWN1bGF0ZWRUeXBlPihjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKSA8PCAzMiB8IHN0YXRpY19jYXN0PFNwZWN1bGF0ZWRUeXBlPihj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSWRl
bnRpdHlXaXRoUHJvZmlsZSwgT3BJbmZvKHNwZWN1bGF0aW9uKSwgc3JjKSk7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUpOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2Y+KCk7CisgICAgICAgICAgICBhdXRv
JiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0PE9wSW5zdGFuY2VvZio+KGN1cnJlbnRJbnN0
cnVjdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEluc3RhbmNlT2ZTdGF0dXMgc3Rh
dHVzID0gSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxp
bmVNYXAsCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS52YWx1ZSk7Ci0gICAgICAgICAg
ICBOb2RlKiBwcm90b3R5cGUgPSBnZXQoYnl0ZWNvZGUucHJvdG90eXBlKTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICBOb2RlKiBwcm90b3R5cGUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
LnByb3RvdHlwZSgpKSk7CiAKICAgICAgICAgICAgIC8vIE9ubHkgaW5saW5lIGl0IGlmIGl0J3Mg
U2ltcGxlIHdpdGggYSBjb21tb25Qcm90b3R5cGU7IGJvdHRvbS90b3Agb3IgdmFyaWFibGUKICAg
ICAgICAgICAgIC8vIHByb3RvdHlwZXMgYm90aCBnZXQgaGFuZGxlZCBieSB0aGUgSUMuIFRoaXMg
bWFrZXMgc2Vuc2UgZm9yIGJvdHRvbSAodW5wcm9maWxlZCkKQEAgLTUxMTMsOTYgKzUwNTIsODYg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoYWxsT0spIHsKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbWF0Y2ggPSBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBPcEluZm8oZGF0
YSksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgbWF0Y2gp
OworICAgICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmRzdCgp
KSwgbWF0Y2gpOwogICAgICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbnN0YW5jZW9m
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoSW5zdGFuY2VPZiwgdmFsdWUsIHBy
b3RvdHlwZSkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3Qo
KSksIGFkZFRvR3JhcGgoSW5zdGFuY2VPZiwgdmFsdWUsIHByb3RvdHlwZSkpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfaW5zdGFuY2VvZik7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX2luc3RhbmNlb2ZfY3VzdG9tOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2ZDdXN0b20+KCk7Ci0gICAgICAgICAgICBO
b2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS52YWx1ZSk7Ci0gICAgICAgICAgICBOb2RlKiBjb25z
dHJ1Y3RvciA9IGdldChieXRlY29kZS5jb25zdHJ1Y3Rvcik7Ci0gICAgICAgICAgICBOb2RlKiBo
YXNJbnN0YW5jZVZhbHVlID0gZ2V0KGJ5dGVjb2RlLmhhc0luc3RhbmNlVmFsdWUpOwotICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChJbnN0YW5jZU9mQ3VzdG9tLCB2YWx1
ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpKTsKKyAgICAgICAgICAgIGF1dG8mIGJ5
dGVjb2RlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJbnN0YW5jZW9mQ3VzdG9tKj4oY3VycmVudElu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS52YWx1ZSgpKSk7CisgICAgICAgICAgICBOb2RlKiBjb25zdHJ1Y3RvciA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuY29uc3RydWN0b3IoKSkpOworICAgICAgICAgICAg
Tm9kZSogaGFzSW5zdGFuY2VWYWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuaGFz
SW5zdGFuY2VWYWx1ZSgpKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLmRzdCgpKSwgYWRkVG9HcmFwaChJbnN0YW5jZU9mQ3VzdG9tLCB2YWx1ZSwgY29uc3RydWN0
b3IsIGhhc0luc3RhbmNlVmFsdWUpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2luc3Rh
bmNlb2ZfY3VzdG9tKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2lzX2VtcHR5OiB7Ci0g
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzRW1w
dHk+KCk7Ci0gICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5vcGVyYW5kKTsK
LSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoSXNFbXB0eSwgdmFsdWUp
KTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKElzRW1wdHks
IHZhbHVlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19lbXB0eSk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNVbmRlZmluZWQ+KCk7Ci0gICAgICAg
ICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHNl
dChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoSXNVbmRlZmluZWQsIHZhbHVlKSk7CisgICAgICAg
ICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChJc1VuZGVmaW5lZCwgdmFsdWUp
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX3VuZGVmaW5lZCk7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX2lzX2Jvb2xlYW46IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCb29sZWFuPigpOwotICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUub3BlcmFuZCk7Ci0gICAgICAgICAgICBzZXQoYnl0
ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKElzQm9vbGVhbiwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKElzQm9vbGVhbiwgdmFsdWUpKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX2Jvb2xlYW4pOwogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBvcF9pc19udW1iZXI6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSXNOdW1iZXI+KCk7Ci0gICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGdldChieXRlY29kZS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFk
ZFRvR3JhcGgoSXNOdW1iZXIsIHZhbHVlKSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSwgYWRkVG9HcmFwaChJc051bWJlciwgdmFsdWUpKTsKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2lzX251bWJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2lzX2NlbGxf
d2l0aF90eXBlOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwotICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoYnl0ZWNvZGUub3BlcmFuZCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBhZGRU
b0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcEluZm8oYnl0ZWNvZGUudHlwZSksIHZhbHVlKSk7Cisg
ICAgICAgICAgICBKU1R5cGUgdHlwZSA9IHN0YXRpY19jYXN0PEpTVHlwZT4oY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwg
YWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKHR5cGUpLCB2YWx1ZSkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfaXNfY2VsbF93aXRoX3R5cGUpOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9pc19vYmplY3Q6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNPYmplY3Q+KCk7Ci0gICAgICAgICAgICBOb2RlKiB2
YWx1ZSA9IGdldChieXRlY29kZS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5k
c3QsIGFkZFRvR3JhcGgoSXNPYmplY3QsIHZhbHVlKSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkp
OworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgYWRkVG9HcmFwaChJc09iamVjdCwgdmFsdWUpKTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2lzX29iamVjdCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2lz
X29iamVjdF9vcl9udWxsOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElzT2JqZWN0T3JOdWxsPigpOwotICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSBnZXQoYnl0ZWNvZGUub3BlcmFuZCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0
LCBhZGRUb0dyYXBoKElzT2JqZWN0T3JOdWxsLCB2YWx1ZSkpOworICAgICAgICAgICAgTm9kZSog
dmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSXNPYmplY3RPck51bGwsIHZhbHVlKSk7CiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9pc19vYmplY3Rfb3JfbnVsbCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIG9wX2lzX2Z1bmN0aW9uOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzRnVuY3Rpb24+KCk7Ci0gICAgICAgICAgICBO
b2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHNldChieXRl
Y29kZS5kc3QsIGFkZFRvR3JhcGgoSXNGdW5jdGlvbiwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKElzRnVuY3Rpb24sIHZhbHVlKSk7CiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9pc19mdW5jdGlvbik7CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIG9wX25vdDogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BOb3Q+KCk7Ci0gICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRl
Y29kZS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgo
TG9naWNhbE5vdCwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBh
ZGRUb0dyYXBoKExvZ2ljYWxOb3QsIHZhbHVlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9ub3QpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF90b19wcmlt
aXRpdmU6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wVG9QcmltaXRpdmU+KCk7Ci0gICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRl
Y29kZS5zcmMpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChUb1By
aW1pdGl2ZSwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRU
b0dyYXBoKFRvUHJpbWl0aXZlLCB2YWx1ZSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
dG9fcHJpbWl0aXZlKTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3Bf
c3RyY2F0OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFN0cmNhdD4oKTsKLSAgICAgICAgICAgIGludCBzdGFydE9wZXJhbmQgPSBieXRlY29k
ZS5zcmMub2Zmc2V0KCk7Ci0gICAgICAgICAgICBpbnQgbnVtT3BlcmFuZHMgPSBieXRlY29kZS5j
b3VudDsKKyAgICAgICAgICAgIGludCBzdGFydE9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IG51bU9wZXJhbmRzID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKICNpZiBDUFUoWDg2KQogICAgICAgICAgICAgLy8gWDg2IGRv
ZXNuJ3QgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIGNvbXBpbGUgTWFrZVJvcGUgd2l0aCB0aHJl
ZSBhcmd1bWVudHMuIFRoZQogICAgICAgICAgICAgLy8gU3RyQ2F0IHdlIGVtaXQgaGVyZSBtYXkg
YmUgdHVybmVkIGludG8gYSBNYWtlUm9wZS4gUmF0aGVyIHRoYW4gdHJ5IHRvIGJlIGNsZXZlciwK
QEAgLTUyMjcsMTE2ICs1MTU2LDEwNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEluT3BlcmFuZHMg
PCBtYXhBcmd1bWVudHMpOwogICAgICAgICAgICAgICAgIG9wZXJhbmRzW2luZGV4SW5PcGVyYW5k
cysrXSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoc3RhcnRPcGVyYW5kIC0gb3BlcmFuZElkeCkpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChT
dHJDYXQsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pKTsKKyAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCks
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChTdHJDYXQsIG9wZXJhbmRzWzBdLCBvcGVyYW5k
c1sxXSwgb3BlcmFuZHNbMl0pKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3N0cmNhdCk7
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2xlc3M6IHsKLSAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTGVzcz4oKTsKLSAgICAgICAgICAg
IE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAgICAgTm9kZSogb3AyID0g
Z2V0KGJ5dGVjb2RlLnJocyk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dy
YXBoKENvbXBhcmVMZXNzLCBvcDEsIG9wMikpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAg
ICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoQ29tcGFyZUxlc3MsIG9wMSwg
b3AyKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9sZXNzKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2Ugb3BfbGVzc2VxOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcExlc3NlcT4oKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9
IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2Rl
LnJocyk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKENvbXBhcmVM
ZXNzRXEsIG9wMSwgb3AyKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlTGVzc0VxLCBvcDEsIG9wMikpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbGVzc2VxKTsKICAgICAgICAgfQogCiAgICAgICAg
IGNhc2Ugb3BfZ3JlYXRlcjogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHcmVhdGVyPigpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0
KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhz
KTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0
ZXIsIG9wMSwgb3AyKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUq
IG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlR3JlYXRlciwgb3AxLCBvcDIpKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dyZWF0ZXIpOwogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBvcF9ncmVhdGVyZXE6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR3JlYXRlcmVxPigpOwotICAgICAgICAgICAgTm9kZSogb3AxID0g
Z2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUu
cmhzKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoQ29tcGFyZUdy
ZWF0ZXJFcSwgb3AxLCBvcDIpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIG9wMSwgb3Ay
KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9ncmVhdGVyZXEpOwogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBvcF9iZWxvdzogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BCZWxvdz4oKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9
IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2Rl
LnJocyk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKENvbXBhcmVC
ZWxvdywgb3AxLCBvcDIpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKENvbXBhcmVCZWxvdywgb3AxLCBvcDIpKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2JlbG93KTsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2Ugb3BfYmVsb3dlcTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BCZWxvd2VxPigpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5
dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhzKTsK
LSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoQ29tcGFyZUJlbG93RXEs
IG9wMSwgb3AyKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9w
MiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkp
OworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlQmVsb3dFcSwgb3AxLCBvcDIpKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2JlbG93ZXEpOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9lcTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BFcT4oKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5saHMp
OwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLnJocyk7Ci0gICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKENvbXBhcmVFcSwgb3AxLCBvcDIpKTsKKyAg
ICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRU
b0dyYXBoKENvbXBhcmVFcSwgb3AxLCBvcDIpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2VxKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZXFfbnVsbDogewotICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFcU51bGw+KCk7Ci0g
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5vcGVyYW5kKTsKKyAgICAgICAg
ICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBudWxsQ29uc3RhbnQgPSBhZGRUb0dy
YXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TnVsbCkpOwotICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChDb21wYXJlRXEsIHZhbHVlLCBudWxsQ29uc3RhbnQp
KTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksIGFkZFRvR3JhcGgoQ29tcGFyZUVxLCB2YWx1ZSwgbnVsbENvbnN0YW50KSk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9lcV9udWxsKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2Ugb3Bfc3RyaWN0ZXE6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3RyaWN0ZXE+KCk7Ci0gICAgICAgICAgICBOb2RlKiBvcDEg
PSBnZXQoYnl0ZWNvZGUubGhzKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29k
ZS5yaHMpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChDb21wYXJl
U3RyaWN0RXEsIG9wMSwgb3AyKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIG9wMSwgb3Ay
KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9zdHJpY3RlcSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIG9wX25lcTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BOZXE+KCk7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQo
Ynl0ZWNvZGUubGhzKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5yaHMp
OwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChMb2dpY2FsTm90LCBh
ZGRUb0dyYXBoKENvbXBhcmVFcSwgb3AxLCBvcDIpKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
KyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChMb2dpY2FsTm90LCBh
ZGRUb0dyYXBoKENvbXBhcmVFcSwgb3AxLCBvcDIpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXEpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9uZXFfbnVsbDogewotICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXFOdWxs
PigpOwotICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogbnVsbENvbnN0YW50ID0g
YWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudE51bGwpKTsKLSAgICAgICAg
ICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgYWRkVG9HcmFwaChD
b21wYXJlRXEsIHZhbHVlLCBudWxsQ29uc3RhbnQpKSk7CisgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKExv
Z2ljYWxOb3QsIGFkZFRvR3JhcGgoQ29tcGFyZUVxLCB2YWx1ZSwgbnVsbENvbnN0YW50KSkpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmVxX251bGwpOwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBvcF9uc3RyaWN0ZXE6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTnN0cmljdGVxPigpOwotICAgICAgICAgICAgTm9kZSogb3Ax
ID0gZ2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNv
ZGUucmhzKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AyID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAg
ICAgICAgICAgICBOb2RlKiBpbnZlcnRlZFJlc3VsdDsKICAgICAgICAgICAgIGludmVydGVkUmVz
dWx0ID0gYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIG9wMSwgb3AyKTsKLSAgICAgICAgICAg
IHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgaW52ZXJ0ZWRSZXN1bHQp
KTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgaW52ZXJ0ZWRSZXN1bHQpKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25zdHJpY3RlcSk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyA9PT0gUHJvcGVydHkgYWNjZXNzIG9wZXJhdGlvbnMgPT09CiAKICAgICAgICAgY2FzZSBv
cF9nZXRfYnlfdmFsOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCgpOwogCi0gICAgICAgICAgICBO
b2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLmJhc2UpOwotICAgICAgICAgICAgTm9kZSogcHJvcGVy
dHkgPSBnZXQoYnl0ZWNvZGUucHJvcGVydHkpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0dldEJ5
SWQgPSBmYWxzZTsKICAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMgZ2V0QnlJZFN0YXR1czsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSAwOwpAQCAtNTM3MCw5ICs1Mjg3
LDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbXBpbGVkQXNHZXRCeUlkKQotICAgICAg
ICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUuZHN0LCBwcmVkaWN0aW9uLCBiYXNlLCBp
ZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCBBY2Nlc3NUeXBlOjpHZXQsIGN1cnJlbnRJ
bnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJO
dW1iZXIsIGdldEJ5SWRTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldCwgT1BDT0RFX0xFTkdUSChvcF9n
ZXRfYnlfdmFsKSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBcnJheU1v
ZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayku
YXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShhcnJheVByb2ZpbGVGb3I8T3BHZXRCeVZhbFNoYXBlPihj
dXJyZW50SW5zdHJ1Y3Rpb24pLCBBcnJheTo6UmVhZCk7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIGNvdWxkIGNvbnNpZGVyIG1ha2luZyB0aGlzIG5vdCB2YXJhcmcsIHNpbmNlIGl0IG9u
bHkgdXNlcyB0aHJlZSBjaGlsZAogICAgICAgICAgICAgICAgIC8vIHNsb3RzLgogICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTIK
QEAgLTUzODEsNDAgKzUyOTgsODcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVh
dmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgICAgICAgICBOb2RlKiBnZXRC
eVZhbCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9k
ZS5hc1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgICAgICAgICAgbV9leGl0
T0sgPSBmYWxzZTsgLy8gR2V0QnlWYWwgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIGl0IGNsb2JiZXJz
IGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgaXQgZ2VuZXJpYy4KLSAgICAg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBnZXRCeVZhbCk7CisgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgZ2V0
QnlWYWwpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRf
YnlfdmFsKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93aXRoX3Ro
aXM6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlWYWxXaXRoVGhpcz4oKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAKLSAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQo
Ynl0ZWNvZGUuYmFzZSk7Ci0gICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBnZXQoYnl0ZWNv
ZGUudGhpc1ZhbHVlKTsKLSAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2Rl
LnByb3BlcnR5KTsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRo
aXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5vZGUqIGdl
dEJ5VmFsV2l0aFRoaXMgPSBhZGRUb0dyYXBoKEdldEJ5VmFsV2l0aFRoaXMsIE9wSW5mbygpLCBP
cEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHkpOwotICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLmRzdCwgZ2V0QnlWYWxXaXRoVGhpcyk7CisgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBnZXRCeVZh
bFdpdGhUaGlzKTsKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X3ZhbF93aXRo
X3RoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoK
LSAgICAgICAgICAgIGhhbmRsZVB1dEJ5VmFsKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRC
eVZhbERpcmVjdD4oKSwgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOwotICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF9kaXJlY3QpOwotCiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X3ZhbDogewotICAgICAgICAgICAgaGFuZGxlUHV0QnlWYWwoY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFB1dEJ5VmFsPigpLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGJvb2wgaXNEaXJlY3QgPSBvcGNvZGVJRCA9PSBvcF9w
dXRfYnlfdmFsX2RpcmVjdDsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc1B1dEJ5SWQgPSBm
YWxzZTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAg
ICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1czsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBCeVZh
bEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0KENv
ZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSkuYnlWYWxJbmZvOwor
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNv
bXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCisgICAg
ICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24u
CisgICAgICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCisgICAgICAgICAgICAgICAgICAg
ICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAh
YnlWYWxJbmZvLT50b29rU2xvd1BhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRJZGVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb21waWxlZEFzUHV0QnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShieVZhbEluZm8t
PmNhY2hlZElkLmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sKiBzeW1ib2wgPSBieVZhbEluZm8tPmNh
Y2hlZFN5bWJvbC5nZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZh
bHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhzeW1ib2wpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwgcHJv
cGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIXVpZC0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cmluZ0lkZW50LCBPcEluZm8odWlkKSwgcHJv
cGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c3R1
YkluZm8sIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CisKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChjb21waWxlZEFzUHV0
QnlJZCkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CisgICAgICAgICAgICAgICAg
QXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShhcnJheVByb2ZpbGVGb3I8T3BQdXRC
eVZhbFNoYXBlPihjdXJyZW50SW5zdHJ1Y3Rpb24pLCBBcnJheTo6V3JpdGUpOworCisgICAgICAg
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CisgICAgICAgICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsK
KyAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJv
cGVydHkgc3RvcmFnZS4KKyAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVh
dmUgcm9vbSBmb3IgbGVuZ3RoLgorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFy
QXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBPcEluZm8oMCkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9wdXRfYnlfdmFsKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxXaXRoVGhpcz4oKTsKLSAgICAgICAgICAgIE5v
ZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUuYmFzZSk7Ci0gICAgICAgICAgICBOb2RlKiB0aGlzVmFs
dWUgPSBnZXQoYnl0ZWNvZGUudGhpc1ZhbHVlKTsKLSAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5
ID0gZ2V0KGJ5dGVjb2RlLnByb3BlcnR5KTsKLSAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KGJ5dGVjb2RlLnZhbHVlKTsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHRoaXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kKSk7CiAKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOwogICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQodGhpc1ZhbHVlKTsKQEAgLTU0MjYsMTEgKzUzOTAsMTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKLSAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVmaW5lRGF0YVByb3BlcnR5
PigpOwotICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5iYXNlKTsKLSAgICAg
ICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLnByb3BlcnR5KTsKLSAgICAgICAg
ICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLnZhbHVlKTsKLSAgICAgICAgICAgIE5vZGUq
IGF0dHJpYnV0ZXMgPSBnZXQoYnl0ZWNvZGUuYXR0cmlidXRlcyk7CisgICAgICAgICAgICBOb2Rl
KiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
KTsKKyAgICAgICAgICAgIE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKIAogICAgICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQoYmFzZSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CkBAIC01
NDQyLDEyICs1NDA1LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BEZWZpbmVBY2Nlc3NvclByb3BlcnR5PigpOwotICAgICAgICAgICAgTm9kZSogYmFz
ZSA9IGdldChieXRlY29kZS5iYXNlKTsKLSAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0
KGJ5dGVjb2RlLnByb3BlcnR5KTsKLSAgICAgICAgICAgIE5vZGUqIGdldHRlciA9IGdldChieXRl
Y29kZS5nZXR0ZXIpOwotICAgICAgICAgICAgTm9kZSogc2V0dGVyID0gZ2V0KGJ5dGVjb2RlLnNl
dHRlcik7Ci0gICAgICAgICAgICBOb2RlKiBhdHRyaWJ1dGVzID0gZ2V0KGJ5dGVjb2RlLmF0dHJp
YnV0ZXMpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVy
dHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KTsKKyAgICAgICAgICAgIE5vZGUqIGdldHRlciA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogc2V0dGVyID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7Cisg
ICAgICAgICAgICBOb2RlKiBhdHRyaWJ1dGVzID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kKSk7CiAKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KGJhc2UpOwogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOwpAQCAtNTQ1OSwx
MTEgKzU0MjEsMTM3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHkpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZGlyZWN0OiB7Ci0g
ICAgICAgICAgICBwYXJzZUdldEJ5SWQ8T3BHZXRCeUlkRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rp
b24pOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkX2RpcmVjdCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7Ci0gICAgICAgICAgICBwYXJz
ZUdldEJ5SWQ8T3BUcnlHZXRCeUlkPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfdHJ5X2dldF9ieV9pZCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWQ6IHsKLSAgICAgICAgICAgIHBhcnNlR2V0QnlJZDxPcEdldEJ5SWQ+KGN1cnJl
bnRJbnN0cnVjdGlvbik7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwor
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfdHJ5X2dl
dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkX3Byb3RvX2xvYWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgorICAg
ICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAg
ICAgIEdldEJ5SWRTdGF0dXMgZ2V0QnlJZFN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAor
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250
ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKKwor
ICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OworICAgICAgICAg
ICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpOwor
ICAgICAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX3RyeV9nZXRfYnlfaWQpIHsKKyAgICAgICAg
ICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6VHJ5R2V0OworICAgICAgICAgICAgICAgIG9wY29k
ZUxlbmd0aCA9IE9QQ09ERV9MRU5HVEgob3BfdHJ5X2dldF9ieV9pZCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKG9wY29kZUlEID09IG9wX2dldF9ieV9pZF9kaXJlY3QpIHsKKyAgICAgICAgICAg
ICAgICB0eXBlID0gQWNjZXNzVHlwZTo6R2V0RGlyZWN0OworICAgICAgICAgICAgICAgIG9wY29k
ZUxlbmd0aCA9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkX2RpcmVjdCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoCisgICAgICAgICAgICAgICAgY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51
bWJlciwgZ2V0QnlJZFN0YXR1cywgdHlwZSwgb3Bjb2RlTGVuZ3RoKTsKKworICAgICAgICAgICAg
Ly8gT3Bjb2RlJ3MgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIG90aGVycyBpbiB0cnkgYW5kIGRp
cmVjdCBjYXNlcy4KKyAgICAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF90cnlfZ2V0X2J5X2lk
KQorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RyeV9nZXRfYnlfaWQpOworICAgICAg
ICAgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3BfZ2V0X2J5X2lkX2RpcmVjdCkKKyAgICAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWRfZGlyZWN0KTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogewogICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKIAotICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+
KCk7Ci0gICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLmJhc2UpOwotICAgICAg
ICAgICAgTm9kZSogdGhpc1ZhbHVlID0gZ2V0KGJ5dGVjb2RlLnRoaXNWYWx1ZSk7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVu
dGlmaWVyUmVtYXBbYnl0ZWNvZGUucHJvcGVydHldOworICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwor
ICAgICAgICAgICAgTm9kZSogdGhpc1ZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZF07CiAKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3Qs
CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0QnlJZFdpdGhUaGlzLCBP
cEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgdGhpc1Zh
bHVlKSk7CiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZF93aXRoX3RoaXMp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7Ci0gICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7Ci0gICAg
ICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS52YWx1ZSk7Ci0gICAgICAgICAgICBO
b2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLmJhc2UpOwotICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVj
b2RlLnByb3BlcnR5XTsKLSAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKS5mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdDsKKyAgICAgICAgICAgIE5vZGUq
IHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CisgICAgICAgICAgICBib29sIGRpcmVjdCA9IGN1
cnJlbnRJbnN0cnVjdGlvbls4XS51LnB1dEJ5SWRGbGFncyAmIFB1dEJ5SWRJc0RpcmVjdDsKIAog
ICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwg
bV9pY0NvbnRleHRTdGFjaywKICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCBt
X2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl0pOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBw
dXRCeUlkU3RhdHVzLCBkaXJlY3QsIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5
SWRTdGF0dXMsIGRpcmVjdCk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWQp
OwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7Ci0g
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5
SWRXaXRoVGhpcz4oKTsKLSAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUuYmFz
ZSk7Ci0gICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBnZXQoYnl0ZWNvZGUudGhpc1ZhbHVl
KTsKLSAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLnZhbHVlKTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lk
ZW50aWZpZXJSZW1hcFtieXRlY29kZS5wcm9wZXJ0eV07CisgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7
CisgICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CiAKICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdpdGhUaGlzLCBPcEluZm8oaWRlbnRpZmllck51
bWJlciksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3B1
dF9nZXR0ZXJfYnlfaWQ6Ci0gICAgICAgICAgICBoYW5kbGVQdXRBY2Nlc3NvckJ5SWQoUHV0R2V0
dGVyQnlJZCwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEdldHRlckJ5SWQ+KCkpOwotICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2dldHRlcl9ieV9pZCk7CiAgICAgICAgIGNhc2Ug
b3BfcHV0X3NldHRlcl9ieV9pZDogewotICAgICAgICAgICAgaGFuZGxlUHV0QWNjZXNzb3JCeUlk
KFB1dFNldHRlckJ5SWQsIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRTZXR0ZXJCeUlkPigp
KTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zZXR0ZXJfYnlfaWQpOworICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmRdOworICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBOb2RlKiBhY2Nlc3NvciA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZVR5cGUgb3AgPSAob3Bjb2RlSUQgPT0gb3BfcHV0X2dldHRlcl9ieV9pZCkg
PyBQdXRHZXR0ZXJCeUlkIDogUHV0U2V0dGVyQnlJZDsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
b3AsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKGF0dHJpYnV0ZXMpLCBiYXNlLCBh
Y2Nlc3Nvcik7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfZ2V0dGVyX2J5X2lkKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6IHsK
LSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
R2V0dGVyU2V0dGVyQnlJZD4oKTsKLSAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNv
ZGUuYmFzZSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUucHJvcGVydHldOwotICAgICAg
ICAgICAgTm9kZSogZ2V0dGVyID0gZ2V0KGJ5dGVjb2RlLmdldHRlcik7Ci0gICAgICAgICAgICBO
b2RlKiBzZXR0ZXIgPSBnZXQoYnl0ZWNvZGUuc2V0dGVyKTsKLSAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUHV0R2V0dGVyU2V0dGVyQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8o
Ynl0ZWNvZGUuYXR0cmlidXRlcyksIGJhc2UsIGdldHRlciwgc2V0dGVyKTsKKyAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kXTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAgICAgICAgTm9kZSogZ2V0dGVyID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAg
ICBOb2RlKiBzZXR0ZXIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls1
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0R2V0dGVyU2V0dGVyQnlJ
ZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8oYXR0cmlidXRlcyksIGJhc2UsIGdl
dHRlciwgc2V0dGVyKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV92
YWw6Ci0gICAgICAgICAgICBoYW5kbGVQdXRBY2Nlc3NvckJ5VmFsKFB1dEdldHRlckJ5VmFsLCBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlWYWw+KCkpOwotICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHV0X2dldHRlcl9ieV92YWwpOwogICAgICAgICBjYXNlIG9wX3B1dF9z
ZXR0ZXJfYnlfdmFsOiB7Ci0gICAgICAgICAgICBoYW5kbGVQdXRBY2Nlc3NvckJ5VmFsKFB1dFNl
dHRlckJ5VmFsLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0U2V0dGVyQnlWYWw+KCkpOwot
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3NldHRlcl9ieV92YWwpOworICAgICAgICAg
ICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogc3Vic2NyaXB0ID0gZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIE5vZGUqIGFjY2Vzc29yID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlVHlwZSBvcCA9IChvcGNv
ZGVJRCA9PSBvcF9wdXRfZ2V0dGVyX2J5X3ZhbCkgPyBQdXRHZXR0ZXJCeVZhbCA6IFB1dFNldHRl
ckJ5VmFsOworICAgICAgICAgICAgYWRkVG9HcmFwaChvcCwgT3BJbmZvKGF0dHJpYnV0ZXMpLCBi
YXNlLCBzdWJzY3JpcHQsIGFjY2Vzc29yKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1
dF9nZXR0ZXJfYnlfdmFsKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5X2lk
OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cERlbEJ5SWQ+KCk7Ci0gICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLmJhc2Up
OwotICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tU
b3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLnByb3BlcnR5XTsKLSAgICAgICAgICAgIHNl
dChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJO
dW1iZXIpLCBiYXNlKSk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVt
YXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CisgICAgICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAorICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBi
YXNlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOwotICAgICAgICAgICAg
Tm9kZSogYmFzZSA9IGdldChieXRlY29kZS5iYXNlKTsKLSAgICAgICAgICAgIE5vZGUqIGtleSA9
IGdldChieXRlY29kZS5wcm9wZXJ0eSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBh
ZGRUb0dyYXBoKERlbGV0ZUJ5VmFsLCBiYXNlLCBrZXkpKTsKKyAgICAgICAgICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgICAgICAgICAgTm9kZSogYmFz
ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkp
OworICAgICAgICAgICAgTm9kZSoga2V5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KGRzdCksIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2UsIGtleSkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfZGVsX2J5X3ZhbCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9w
X3Byb2ZpbGVfdHlwZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQcm9maWxlVHlwZT4oKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIE5vZGUqIHZhbHVl
VG9Qcm9maWxlID0gZ2V0KGJ5dGVjb2RlLnRhcmdldCk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBo
KFByb2ZpbGVUeXBlLCBPcEluZm8obWV0YWRhdGEudHlwZUxvY2F0aW9uKSwgdmFsdWVUb1Byb2Zp
bGUpOworICAgICAgICAgICAgTm9kZSogdmFsdWVUb1Byb2ZpbGUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHJvZmlsZVR5cGUsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5sb2NhdGlv
biksIHZhbHVlVG9Qcm9maWxlKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Byb2ZpbGVf
dHlwZSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93
OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFByb2ZpbGVDb250cm9sRmxvdz4oKTsKLSAgICAgICAgICAgIEJhc2ljQmxvY2tMb2NhdGlvbiog
YmFzaWNCbG9ja0xvY2F0aW9uID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5iYXNpY0Js
b2NrTG9jYXRpb247CisgICAgICAgICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGJhc2ljQmxvY2tM
b2NhdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LmJhc2ljQmxvY2tMb2NhdGlvbjsKICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoUHJvZmlsZUNvbnRyb2xGbG93LCBPcEluZm8oYmFzaWNCbG9j
a0xvY2F0aW9uKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wcm9maWxlX2NvbnRyb2xf
Zmxvdyk7CiAgICAgICAgIH0KQEAgLTU1NzIsOCArNTU2MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgY2FzZSBvcF9qbXA6IHsK
ICAgICAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50QmxvY2stPnRlcm1pbmFsKCkpOwotICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbXA+KCk7Ci0g
ICAgICAgICAgICBpbnQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLnRhcmdl
dCk7CisgICAgICAgICAgICBpbnQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOwogICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wLCBPcEluZm8obV9jdXJy
ZW50SW5kZXggKyByZWxhdGl2ZU9mZnNldCkpOwogICAgICAgICAgICAgaWYgKHJlbGF0aXZlT2Zm
c2V0IDw9IDApCiAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwpAQCAtNTU4MSwx
ODcgKzU1NjgsMTY4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2p0cnVlOiB7Ci0gICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwotICAg
ICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLnRh
cmdldCk7Ci0gICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBnZXQoYnl0ZWNvZGUuY29uZGl0
aW9uKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YSht
X2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJbmRleCArIGN1cnJlbnRJ
bnN0cnVjdGlvbi0+c2l6ZSgpKSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICB1bnNpZ25lZCBy
ZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBOb2RlKiBjb25kaXRpb24gPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcElu
Zm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJ
bmRleCArIE9QQ09ERV9MRU5HVEgob3BfanRydWUpKSksIGNvbmRpdGlvbik7CiAgICAgICAgICAg
ICBMQVNUX09QQ09ERShvcF9qdHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2pm
YWxzZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKZmFsc2U+KCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1
bXBUYXJnZXQoYnl0ZWNvZGUudGFyZ2V0KTsKLSAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9
IGdldChieXRlY29kZS5jb25kaXRpb24pOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gs
IE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5z
aXplKCksIG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgY29uZGl0aW9uKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgYWRk
VG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgT1BDT0RF
X0xFTkdUSChvcF9qZmFsc2UpLCBtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSksIGNv
bmRpdGlvbik7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qZmFsc2UpOwogICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDogewotICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXFOdWxsPigpOwotICAgICAgICAgICAgdW5z
aWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLnRhcmdldCk7Ci0gICAg
ICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS52YWx1ZSk7CisgICAgICAgICAgICB1
bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogbnVsbENvbnN0YW50
ID0gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudE51bGwpKTsKICAgICAg
ICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxLCB2YWx1ZSwgbnVs
bENvbnN0YW50KTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNo
RGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJbmRleCArIGN1
cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXggKyByZWxhdGl2
ZU9mZnNldCwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2plcV9udWxsKSkpLCBj
b25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfamVxX251bGwpOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBvcF9qbmVxX251bGw6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcU51bGw+KCk7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUudGFyZ2V0KTsK
LSAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLnZhbHVlKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBudWxsQ29u
c3RhbnQgPSBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TnVsbCkpOwog
ICAgICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXEsIHZhbHVl
LCBudWxsQ29uc3RhbnQpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhi
cmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCksIG1f
Y3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIE9Q
Q09ERV9MRU5HVEgob3Bfam5lcV9udWxsKSwgbV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9mZnNl
dCkpLCBjb25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3Bfam5lcV9udWxsKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bfamxlc3M6IHsKLSAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmxlc3M+KCk7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUudGFyZ2V0KTsK
LSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAgICAg
Tm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLnJocyk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxh
dGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogY29u
ZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlTGVzcywgb3AxLCBvcDIpOwotICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgcmVs
YXRpdmVPZmZzZXQsIG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkp
KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJh
bmNoRGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJbmRleCAr
IE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpKSksIGNvbmRpdGlvbik7CiAgICAgICAgICAgICBMQVNU
X09QQ09ERShvcF9qbGVzcyk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2psZXNzZXE6
IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Smxlc3NlcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRh
cmdldChieXRlY29kZS50YXJnZXQpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVj
b2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhzKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3Ay
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7
CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVMZXNzRXEs
IG9wMSwgb3AyKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNo
RGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJbmRleCArIGN1
cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXggKyByZWxhdGl2
ZU9mZnNldCwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2psZXNzZXEpKSksIGNv
bmRpdGlvbik7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbGVzc2VxKTsKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmdyZWF0ZXI+KCk7Ci0gICAgICAgICAgICB1
bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUudGFyZ2V0KTsKLSAg
ICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KGJ5dGVjb2RlLnJocyk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2
ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBO
b2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogY29uZGl0
aW9uID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRlciwgb3AxLCBvcDIpOwotICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgcmVs
YXRpdmVPZmZzZXQsIG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkp
KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJh
bmNoRGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJbmRleCAr
IE9QQ09ERV9MRU5HVEgob3BfamdyZWF0ZXIpKSksIGNvbmRpdGlvbik7CiAgICAgICAgICAgICBM
QVNUX09QQ09ERShvcF9qZ3JlYXRlcik7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2pn
cmVhdGVyZXE6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSmdyZWF0ZXJlcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zm
c2V0ID0ganVtcFRhcmdldChieXRlY29kZS50YXJnZXQpOwotICAgICAgICAgICAgTm9kZSogb3Ax
ID0gZ2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNv
ZGUucmhzKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAg
ICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENv
bXBhcmVHcmVhdGVyRXEsIG9wMSwgb3AyKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNo
LCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1
cnJlbnRJbmRleCArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKSksIGNvbmRpdGlvbik7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50
SW5kZXggKyByZWxhdGl2ZU9mZnNldCwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9w
X2pncmVhdGVyZXEpKSksIGNvbmRpdGlvbik7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9q
Z3JlYXRlcmVxKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfamVxOiB7Ci0gICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEplcT4oKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS50
YXJnZXQpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAg
ICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhzKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBO
b2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcSwgb3AxLCBvcDIpOwotICAgICAg
ICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4
ICsgcmVsYXRpdmVPZmZzZXQsIG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5z
aXplKCkpKSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcElu
Zm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJ
bmRleCArIE9QQ09ERV9MRU5HVEgob3BfamVxKSkpLCBjb25kaXRpb24pOwogICAgICAgICAgICAg
TEFTVF9PUENPREUob3BfamVxKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfanN0cmlj
dGVxOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEpzdHJpY3RlcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0g
anVtcFRhcmdldChieXRlY29kZS50YXJnZXQpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0
KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhz
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVT
dHJpY3RFcSwgb3AxLCBvcDIpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5m
byhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQsIG1fY3VycmVudElu
ZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpKSwgY29uZGl0aW9uKTsKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCAr
IHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3BfanN0cmlj
dGVxKSkpLCBjb25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfanN0cmljdGVx
KTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bfam5sZXNzOiB7Ci0gICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpubGVzcz4oKTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS50YXJn
ZXQpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAg
ICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhzKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBOb2Rl
KiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVMZXNzLCBvcDEsIG9wMik7Ci0gICAgICAg
ICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXgg
KyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSwgbV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9m
ZnNldCkpLCBjb25kaXRpb24pOworICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5m
byhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9qbmxlc3MpLCBt
X2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSksIGNvbmRpdGlvbik7CiAgICAgICAgICAg
ICBMQVNUX09QQ09ERShvcF9qbmxlc3MpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9q
bmxlc3NlcTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BKbmxlc3NlcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0
ID0ganVtcFRhcmdldChieXRlY29kZS50YXJnZXQpOwotICAgICAgICAgICAgTm9kZSogb3AxID0g
Z2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUu
cmhzKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBh
cmVMZXNzRXEsIG9wMSwgb3AyKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcElu
Zm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgp
LCBtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSksIGNvbmRpdGlvbik7CisgICAgICAg
ICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXgg
KyBPUENPREVfTEVOR1RIKG9wX2pubGVzc2VxKSwgbV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9m
ZnNldCkpLCBjb25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3Bfam5sZXNzZXEp
OwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6IHsKLSAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5ncmVhdGVyPigpOwot
ICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2Rl
LnRhcmdldCk7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubGhzKTsKLSAg
ICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5yaHMpOworICAgICAgICAgICAgdW5z
aWduZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwor
ICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAg
IE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXIsIG9wMSwgb3AyKTsK
LSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJl
bnRJbmRleCArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpLCBtX2N1cnJlbnRJbmRleCArIHJl
bGF0aXZlT2Zmc2V0KSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5j
aCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2pu
Z3JlYXRlciksIG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgY29uZGl0aW9uKTsK
ICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2puZ3JlYXRlcik7CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZ3JlYXRlcmVxPigpOwotICAgICAgICAgICAgdW5z
aWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLnRhcmdldCk7Ci0gICAg
ICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubGhzKTsKLSAgICAgICAgICAgIE5vZGUq
IG9wMiA9IGdldChieXRlY29kZS5yaHMpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVP
ZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAgICAgICAgTm9k
ZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlv
biA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgb3AxLCBvcDIpOwotICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgY3Vy
cmVudEluc3RydWN0aW9uLT5zaXplKCksIG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQp
KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJh
bmNoRGF0YShtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5ncmVhdGVyZXEpLCBt
X2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSksIGNvbmRpdGlvbik7CiAgICAgICAgICAg
ICBMQVNUX09QQ09ERShvcF9qbmdyZWF0ZXJlcSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX2puZXE6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSm5lcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0g
anVtcFRhcmdldChieXRlY29kZS50YXJnZXQpOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0
KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUucmhz
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVF
cSwgb3AxLCBvcDIpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFu
Y2hEYXRhKG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCksIG1fY3Vy
cmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIE9QQ09E
RV9MRU5HVEgob3Bfam5lcSksIG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgY29u
ZGl0aW9uKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2puZXEpOwogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBvcF9qbnN0cmljdGVxOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuc3RyaWN0ZXE+KCk7Ci0gICAgICAgICAgICB1
bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUudGFyZ2V0KTsKLSAg
ICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KGJ5dGVjb2RlLnJocyk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2
ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBO
b2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogY29uZGl0
aW9uID0gYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIG9wMSwgb3AyKTsKLSAgICAgICAgICAg
IGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIGN1
cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpLCBtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0
KSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJy
YW5jaERhdGEobV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2puc3RyaWN0ZXEpLCBt
X2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSksIGNvbmRpdGlvbik7CiAgICAgICAgICAg
ICBMQVNUX09QQ09ERShvcF9qbnN0cmljdGVxKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ug
b3BfamJlbG93OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEpiZWxvdz4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0
ID0ganVtcFRhcmdldChieXRlY29kZS50YXJnZXQpOwotICAgICAgICAgICAgTm9kZSogb3AxID0g
Z2V0KGJ5dGVjb2RlLmxocyk7Ci0gICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUu
cmhzKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBh
cmVCZWxvdywgb3AxLCBvcDIpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5m
byhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQsIG1fY3VycmVudElu
ZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpKSwgY29uZGl0aW9uKTsKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCAr
IHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3BfamJlbG93
KSkpLCBjb25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfamJlbG93KTsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfamJlbG93ZXE6IHsKLSAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmJlbG93ZXE+KCk7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUudGFyZ2V0
KTsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5saHMpOwotICAgICAgICAg
ICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLnJocyk7CisgICAgICAgICAgICB1bnNpZ25lZCBy
ZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSog
Y29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlQmVsb3dFcSwgb3AxLCBvcDIpOwotICAgICAg
ICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4
ICsgcmVsYXRpdmVPZmZzZXQsIG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5z
aXplKCkpKSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcElu
Zm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJ
bmRleCArIE9QQ09ERV9MRU5HVEgob3BfamJlbG93ZXEpKSksIGNvbmRpdGlvbik7CiAgICAgICAg
ICAgICBMQVNUX09QQ09ERShvcF9qYmVsb3dlcSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX3N3aXRjaF9pbW06IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wU3dpdGNoSW1tPigpOwogICAgICAgICAgICAgU3dpdGNoRGF0YSYgZGF0
YSA9ICptX2dyYXBoLm1fc3dpdGNoRGF0YS5hZGQoKTsKICAgICAgICAgICAgIGRhdGEua2luZCA9
IFN3aXRjaEltbTsKLSAgICAgICAgICAgIGRhdGEuc3dpdGNoVGFibGVJbmRleCA9IG1faW5saW5l
U3RhY2tUb3AtPm1fc3dpdGNoUmVtYXBbYnl0ZWNvZGUudGFibGVJbmRleF07Ci0gICAgICAgICAg
ICBkYXRhLmZhbGxUaHJvdWdoLnNldEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXggKyBqdW1w
VGFyZ2V0KGJ5dGVjb2RlLmRlZmF1bHRPZmZzZXQpKTsKKyAgICAgICAgICAgIGRhdGEuc3dpdGNo
VGFibGVJbmRleCA9IG1faW5saW5lU3RhY2tUb3AtPm1fc3dpdGNoUmVtYXBbY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZF07CisgICAgICAgICAgICBkYXRhLmZhbGxUaHJvdWdoLnNldEJ5
dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXggKyBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2NvZGVCbG9jay0+
c3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRleCk7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7ICsraSkgewog
ICAgICAgICAgICAgICAgIGlmICghdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSkKQEAgLTU3NzEsMTcg
KzU3MzksMTYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgZGF0YS5j
YXNlcy5hcHBlbmQoU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2RlSW5kZXgobV9ncmFwaC5mcmVlemUo
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odGFibGUubWluICsgaSkpKSwgdGFyZ2V0KSk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZk
YXRhKSwgZ2V0KGJ5dGVjb2RlLnNjcnV0aW5lZSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChT
d2l0Y2gsIE9wSW5mbygmZGF0YSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCkpKTsKICAgICAgICAgICAgIGZsdXNoSWZUZXJtaW5hbChkYXRhKTsK
ICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3N3aXRjaF9pbW0pOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTd2l0Y2hDaGFyPigpOwogICAg
ICAgICAgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1fc3dpdGNoRGF0YS5hZGQoKTsK
ICAgICAgICAgICAgIGRhdGEua2luZCA9IFN3aXRjaENoYXI7Ci0gICAgICAgICAgICBkYXRhLnN3
aXRjaFRhYmxlSW5kZXggPSBtX2lubGluZVN0YWNrVG9wLT5tX3N3aXRjaFJlbWFwW2J5dGVjb2Rl
LnRhYmxlSW5kZXhdOwotICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaC5zZXRCeXRlY29kZUlu
ZGV4KG1fY3VycmVudEluZGV4ICsganVtcFRhcmdldChieXRlY29kZS5kZWZhdWx0T2Zmc2V0KSk7
CisgICAgICAgICAgICBkYXRhLnN3aXRjaFRhYmxlSW5kZXggPSBtX2lubGluZVN0YWNrVG9wLT5t
X3N3aXRjaFJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmRdOworICAgICAgICAg
ICAgZGF0YS5mYWxsVGhyb3VnaC5zZXRCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4ICsgY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBTaW1wbGVKdW1wVGFi
bGUmIHRhYmxlID0gbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxl
SW5kZXgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhYmxlLmJyYW5j
aE9mZnNldHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRhYmxlLmJyYW5j
aE9mZnNldHNbaV0pCkBAIC01NzkyLDE3ICs1NzU5LDE2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgZGF0YS5jYXNlcy5h
cHBlbmQoCiAgICAgICAgICAgICAgICAgICAgIFN3aXRjaENhc2U6OndpdGhCeXRlY29kZUluZGV4
KExhenlKU1ZhbHVlOjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmcodGFibGUubWluICsgaSksIHRhcmdl
dCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5m
bygmZGF0YSksIGdldChieXRlY29kZS5zY3J1dGluZWUpKTsKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoU3dpdGNoLCBPcEluZm8oJmRhdGEpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CiAgICAgICAgICAgICBmbHVzaElmVGVybWluYWwoZGF0
YSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9zd2l0Y2hfY2hhcik7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNoU3RyaW5nPigpOwogICAgICAg
ICAgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1fc3dpdGNoRGF0YS5hZGQoKTsKICAg
ICAgICAgICAgIGRhdGEua2luZCA9IFN3aXRjaFN0cmluZzsKLSAgICAgICAgICAgIGRhdGEuc3dp
dGNoVGFibGVJbmRleCA9IGJ5dGVjb2RlLnRhYmxlSW5kZXg7Ci0gICAgICAgICAgICBkYXRhLmZh
bGxUaHJvdWdoLnNldEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXggKyBqdW1wVGFyZ2V0KGJ5
dGVjb2RlLmRlZmF1bHRPZmZzZXQpKTsKKyAgICAgICAgICAgIGRhdGEuc3dpdGNoVGFibGVJbmRl
eCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBkYXRhLmZh
bGxUaHJvdWdoLnNldEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXggKyBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUg
PSBtX2NvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFibGVJbmRl
eCk7CiAgICAgICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVy
YXRvciBpdGVyOwogICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJs
ZTo6aXRlcmF0b3IgZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CkBAIC01ODEzLDI2ICs1
Nzc5LDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAg
IFN3aXRjaENhc2U6OndpdGhCeXRlY29kZUluZGV4KExhenlKU1ZhbHVlOjprbm93blN0cmluZ0lt
cGwoaXRlci0+a2V5LmdldCgpKSwgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgZ2V0KGJ5dGVjb2RlLnNjcnV0aW5l
ZSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpKTsKICAgICAg
ICAgICAgIGZsdXNoSWZUZXJtaW5hbChkYXRhKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9w
X3N3aXRjaF9zdHJpbmcpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9yZXQ6IHsKLSAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUmV0Pigp
OworICAgICAgICBjYXNlIG9wX3JldDoKICAgICAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50Qmxv
Y2stPnRlcm1pbmFsKCkpOwogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUoKSkgewog
ICAgICAgICAgICAgICAgIC8vIFNpbXBsZSBjYXNlOiB3ZSBhcmUganVzdCBwcm9kdWNpbmcgYSBy
ZXR1cm4KLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFJldHVybiwgZ2V0KGJ5dGVjb2RlLnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChSZXR1cm4sIGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKICAgICAgICAgICAgICAg
ICBmbHVzaEZvclJldHVybigpOwogICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3JldCk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZsdXNoRm9yUmV0dXJuKCk7CiAgICAgICAg
ICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9yZXR1cm5WYWx1ZS5pc1ZhbGlkKCkpCi0gICAg
ICAgICAgICAgICAgc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPm1fcmV0dXJuVmFsdWUsIGdl
dChieXRlY29kZS52YWx1ZSksIEltbWVkaWF0ZVNldFdpdGhGbHVzaCk7CisgICAgICAgICAgICAg
ICAgc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPm1fcmV0dXJuVmFsdWUsIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpLCBJbW1lZGlhdGVTZXRX
aXRoRmx1c2gpOwogCi0gICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fY29udGlu
dWF0aW9uQmxvY2sgJiYgbV9jdXJyZW50SW5kZXggKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KSB7CisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fY29udGludWF0aW9uQmxv
Y2sgJiYgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX3JldCkgIT0gbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSkgewogICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgYW4gZWFybHkgcmV0dXJuIGZyb20gYW4gaW5saW5lZCBmdW5jdGlv
biBhbmQgd2UgZG8gbm90IGhhdmUgYSBjb250aW51YXRpb24gYmxvY2ssIHNvIHdlIG11c3QgYWxs
b2NhdGUgb25lLgogICAgICAgICAgICAgICAgIC8vIEl0IGlzIHVudGFyZ2V0YWJsZSwgYmVjYXVz
ZSB3ZSBkbyBub3Qga25vdyB0aGUgYXBwcm9wcmlhdGUgaW5kZXguCiAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBibG9jayB0dXJucyBvdXQgdG8gYmUgYSBqdW1wIHRhcmdldCwgcGFyc2VDb2Rl
QmxvY2sgd2lsbCBmaXggaXRzIGJ5dGVjb2RlSW5kZXggYmVmb3JlIHB1dHRpbmcgaXQgaW4gbV9i
bG9ja0xpbmtpbmdUYXJnZXRzCkBAIC01ODQ2LDI3ICs1ODExLDI2IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9jb250aW51YXRpb25CbG9jayA9IG1fY3VycmVudEJsb2NrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgTEFTVF9PUENPREVfTElOS0VEKG9wX3JldCk7Ci0gICAgICAg
IH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2VuZDoKICAgICAgICAgICAgIEFTU0VS
VCghaW5saW5lQ2FsbEZyYW1lKCkpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChSZXR1cm4sIGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW5kPigpLnZhbHVlKSk7CisgICAgICAgICAgICBh
ZGRUb0dyYXBoKFJldHVybiwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSkpOwogICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKICAgICAgICAg
ICAgIExBU1RfT1BDT0RFKG9wX2VuZCk7CiAKICAgICAgICAgY2FzZSBvcF90aHJvdzoKLSAgICAg
ICAgICAgIGFkZFRvR3JhcGgoVGhyb3csIGdldChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVGhy
b3c+KCkudmFsdWUpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3csIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKICAgICAgICAgICAg
IGZsdXNoRm9yVGVybWluYWwoKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3Rocm93KTsK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjogewotICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUaHJvd1N0
YXRpY0Vycm9yPigpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRpY0Vycm9yLCBP
cEluZm8oYnl0ZWNvZGUuZXJyb3JUeXBlKSwgZ2V0KGJ5dGVjb2RlLm1lc3NhZ2UpKTsKKyAgICAg
ICAgICAgIHVpbnQzMl90IGVycm9yVHlwZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2ln
bmVkVmFsdWU7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5m
byhlcnJvclR5cGUpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpKSk7CiAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsKCk7CiAgICAgICAgICAg
ICBMQVNUX09QQ09ERShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBvcF9jYXRjaDogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BDYXRjaD4oKTsKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNl
cHRpb25IYW5kbGVycyA9IHRydWU7CiAKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUo
KSkgewpAQCAtNTg4MCw3ICs1ODQ0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVu
dEJsb2NrLT5zaXplKCkgfHwgKG1fZ3JhcGguY29tcGlsYXRpb24oKSAmJiBtX2N1cnJlbnRCbG9j
ay0+c2l6ZSgpID09IDEgJiYgbV9jdXJyZW50QmxvY2stPmF0KDApLT5vcCgpID09IENvdW50RXhl
Y3V0aW9uKSk7CiAKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1
ZmZlciA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykuYnVmZmVyOworICAgICAgICAgICAg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnBvaW50ZXIp
OwogCiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NhdGNoKTsgLy8gVGhpcyBjYXRjaCBoYXMgeWV0IHRvIGV4ZWN1dGUuIE5vdGU6IHRo
aXMgbG9hZCBjYW4gYmUgcmFjeSB3aXRoIHRoZSBtYWluIHRocmVhZC4KQEAgLTU5NjAsNyArNTky
NCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAgICAgQXJndW1lbnRzVmVjdG9yJiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1l
bnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBl
eGl0Qnl0ZWNvZGVJbmRleCA9IG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5z
aXplKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZXhpdEJ5dGVjb2RlSW5kZXggPSBtX2N1
cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3BfY2F0Y2gpOwogCiAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9u
cy5zaXplKCk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChhcmd1bWVudCkpOwpAQCAtNTk4NywxMyArNTk1MSwxMyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBvcF9jYWxsOgotICAgICAgICAgICAgaGFuZGxlQ2FsbDxPcENhbGw+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgaGFuZGxl
Q2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICAg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVu
dEluc3RydWN0aW9uLCAiaGFuZGxlQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2Fs
bGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9jYWxsKTsKIAogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDogewogICAgICAgICAg
ICAgZmx1c2hGb3JSZXR1cm4oKTsKLSAgICAgICAgICAgIFRlcm1pbmFsaXR5IHRlcm1pbmFsaXR5
ID0gaGFuZGxlQ2FsbDxPcFRhaWxDYWxsPihjdXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsLCBD
YWxsTW9kZTo6VGFpbCk7CisgICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhh
bmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBUYWlsQ2FsbCwgQ2FsbE1vZGU6OlRhaWwpOwog
ICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBj
dXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRo
ZSBjYWxsZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAgIC8v
IElmIHRoZSBjYWxsIGlzIHRlcm1pbmFsIHRoZW4gd2Ugc2hvdWxkIG5vdCBwYXJzZSBhbnkgZnVy
dGhlciBieXRlY29kZXMgYXMgdGhlIFRhaWxDYWxsIHdpbGwgZXhpdCB0aGUgZnVuY3Rpb24uCiAg
ICAgICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyBub3QgdGVybWluYWwsIGhvd2V2ZXIsIHRoZW4g
d2Ugd2FudCB0aGUgc3Vic2VxdWVudCBvcF9yZXQvb3Bfam1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBh
bmQgY2xlYW4KQEAgLTYwMDYsMTkgKzU5NzAsMTkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfY29u
c3RydWN0OgotICAgICAgICAgICAgaGFuZGxlQ2FsbDxPcENvbnN0cnVjdD4oY3VycmVudEluc3Ry
dWN0aW9uLCBDb25zdHJ1Y3QsIENhbGxNb2RlOjpDb25zdHJ1Y3QpOworICAgICAgICAgICAgaGFu
ZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbnN0cnVjdCwgQ2FsbE1vZGU6OkNvbnN0cnVj
dCk7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9u
ID09IGN1cnJlbnRJbnN0cnVjdGlvbiwgImhhbmRsZUNhbGwsIHdoaWNoIG1heSBoYXZlIGlubGlu
ZWQgdGhlIGNhbGxlZSwgdHJhc2hlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiIpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0KTsKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IG9wX2NhbGxfdmFyYXJnczogewotICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGw8T3BDYWxs
VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBDYWxsVmFyYXJncywgQ2FsbE1vZGU6OlJlZ3Vs
YXIpOworICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBD
YWxsVmFyYXJncywgQ2FsbE1vZGU6OlJlZ3VsYXIpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5k
bGVWYXJhcmdzQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVk
IG1fY3VycmVudEluc3RydWN0aW9uIik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYWxs
X3ZhcmFyZ3MpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJn
czogewogICAgICAgICAgICAgZmx1c2hGb3JSZXR1cm4oKTsKLSAgICAgICAgICAgIFRlcm1pbmFs
aXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlVmFyYXJnc0NhbGw8T3BUYWlsQ2FsbFZhcmFyZ3M+KGN1
cnJlbnRJbnN0cnVjdGlvbiwgVGFpbENhbGxWYXJhcmdzLCBDYWxsTW9kZTo6VGFpbCk7CisgICAg
ICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZVZhcmFyZ3NDYWxsKGN1cnJl
bnRJbnN0cnVjdGlvbiwgVGFpbENhbGxWYXJhcmdzLCBDYWxsTW9kZTo6VGFpbCk7CiAgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJ
bnN0cnVjdGlvbiwgImhhbmRsZVZhcmFyZ3NDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRo
ZSBjYWxsZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAgIC8v
IElmIHRoZSBjYWxsIGlzIHRlcm1pbmFsIHRoZW4gd2Ugc2hvdWxkIG5vdCBwYXJzZSBhbnkgZnVy
dGhlciBieXRlY29kZXMgYXMgdGhlIFRhaWxDYWxsIHdpbGwgZXhpdCB0aGUgZnVuY3Rpb24uCiAg
ICAgICAgICAgICAvLyBJZiB0aGUgY2FsbCBpcyBub3QgdGVybWluYWwsIGhvd2V2ZXIsIHRoZW4g
d2Ugd2FudCB0aGUgc3Vic2VxdWVudCBvcF9yZXQvb3Bfam1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBh
bmQgY2xlYW4KQEAgLTYwMzQsNyArNTk5OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAvLyBkb25lIGJ5IHRoZSBhcmd1bWVu
dHMgb2JqZWN0IGNyZWF0aW9uIG5vZGUgYXMgdGhhdCBub2RlIG1heSBub3QgZXhpc3QuCiAgICAg
ICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKICAgICAgICAgICAgIGZsdXNoRm9yUmV0dXJu
KCk7Ci0gICAgICAgICAgICBUZXJtaW5hbGl0eSB0ZXJtaW5hbGl0eSA9IGhhbmRsZVZhcmFyZ3ND
YWxsPE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3MsIENhbGxNb2RlOjpUYWlsKTsKKyAgICAgICAgICAgIFRlcm1pbmFs
aXR5IHRlcm1pbmFsaXR5ID0gaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzLCBDYWxsTW9kZTo6VGFpbCk7CiAgICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlv
biwgImhhbmRsZVZhcmFyZ3NDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRoZSBjYWxsZWUs
IHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAgIC8vIElmIHRoZSBj
YWxsIGlzIHRlcm1pbmFsIHRoZW4gd2Ugc2hvdWxkIG5vdCBwYXJzZSBhbnkgZnVydGhlciBieXRl
Y29kZXMgYXMgdGhlIFRhaWxDYWxsIHdpbGwgZXhpdCB0aGUgZnVuY3Rpb24uCiAgICAgICAgICAg
ICAvLyBJZiB0aGUgY2FsbCBpcyBub3QgdGVybWluYWwsIGhvd2V2ZXIsIHRoZW4gd2Ugd2FudCB0
aGUgc3Vic2VxdWVudCBvcF9yZXQvb3Bfam1wIHRvIHVwZGF0ZSBtZXRhZGF0YSBhbmQgY2xlYW4K
QEAgLTYwNDYsMzAgKzYwMTAsMzIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3Bf
Y29uc3RydWN0X3ZhcmFyZ3M6IHsKLSAgICAgICAgICAgIGhhbmRsZVZhcmFyZ3NDYWxsPE9wQ29u
c3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBDb25zdHJ1Y3RWYXJhcmdzLCBDYWxs
TW9kZTo6Q29uc3RydWN0KTsKKyAgICAgICAgICAgIGhhbmRsZVZhcmFyZ3NDYWxsKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgQ29uc3RydWN0VmFyYXJncywgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7CiAgICAg
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJl
bnRJbnN0cnVjdGlvbiwgImhhbmRsZVZhcmFyZ3NDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVk
IHRoZSBjYWxsZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NvbnN0cnVjdF92YXJhcmdzKTsKICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwotICAgICAgICAgICAg
aW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLmFyZ3Y7Ci0gICAgICAgICAgICBhZGRDYWxs
KGJ5dGVjb2RlLmRzdCwgQ2FsbEV2YWwsIG51bGxwdHIsIGdldChieXRlY29kZS5jYWxsZWUpLCBi
eXRlY29kZS5hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAg
ICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgICAg
ICAgICAgaW50IGNhbGxlZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBhZGRDYWxsKHJlc3VsdCwg
Q2FsbEV2YWwsIG51bGxwdHIsIGdldChWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7Ci0gICAgICAgICAgICBT
cGVjaWFsOjpQb2ludGVyIHNwZWNpYWxQb2ludGVyID0gYnl0ZWNvZGUuc3BlY2lhbFBvaW50ZXI7
CisgICAgICAgICAgICBTcGVjaWFsOjpQb2ludGVyIHNwZWNpYWxQb2ludGVyID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUuc3BlY2lhbFBvaW50ZXI7CiAgICAgICAgICAgICBBU1NFUlQocG9pbnRl
cklzQ2VsbChzcGVjaWFsUG9pbnRlcikpOwogICAgICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2lu
dGVyID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oCiAgICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRl
ckZvcihtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKICAg
ICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0
dWFsUG9pbnRlcik7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBU
YXJnZXQoYnl0ZWNvZGUudGFyZ2V0KTsKLSAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gZ2V0KGJ5
dGVjb2RlLnZhbHVlKTsKLSAgICAgICAgICAgIGlmIChieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLmhhc0p1bXBlZCkgeworICAgICAgICAgICAgaW50IG9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAgICAgICAgTm9kZSogY2hp
bGQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogY29u
ZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhmcm96ZW5Qb2ludGVyKSwg
Y2hpbGQpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNo
RGF0YShtX2N1cnJlbnRJbmRleCArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpLCBtX2N1cnJl
bnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgT1BD
T0RFX0xFTkdUSChvcF9qbmVxX3B0ciksIG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQp
KSwgY29uZGl0aW9uKTsKICAgICAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbmVxX3B0cik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZv
KGZyb3plblBvaW50ZXIpLCBjaGlsZCk7CkBAIC02MDc3LDczICs2MDQzLDc1IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUmVzb2x2ZVNjb3BlPigpOwotICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAg
ICAgdW5zaWduZWQgZGVwdGggPSBtZXRhZGF0YS5sb2NhbFNjb3BlRGVwdGg7Ci0KLSAgICAgICAg
ICAgIGlmIChuZWVkc0R5bmFtaWNMb29rdXAobWV0YWRhdGEucmVzb2x2ZVR5cGUsIG9wX3Jlc29s
dmVfc2NvcGUpKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLnZhcl07Ci0gICAg
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChSZXNvbHZlU2NvcGUsIE9w
SW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgZ2V0KGJ5dGVjb2RlLnNjb3BlKSkpOworICAgICAgICAg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJy
ZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGRlcHRo
ID0gY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBzY29w
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisKKyAgICAgICAgICAgIGlmIChu
ZWVkc0R5bmFtaWNMb29rdXAocmVzb2x2ZVR5cGUsIG9wX3Jlc29sdmVfc2NvcGUpKSB7CisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3At
Pm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAg
ICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChSZXNvbHZl
U2NvcGUsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29w
ZSkpKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcmVzb2x2ZV9zY29wZSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9f
c2NvcGUgZGVwZW5kIG9uIHRoaXMgd2F0Y2hwb2ludCBmb3JjaW5nIE9TUiBleGl0LCBzbyB0aGV5
IGRvbid0IGFkZCB0aGVpciBvd24gd2F0Y2hwb2ludHMuCi0gICAgICAgICAgICBpZiAobmVlZHNW
YXJJbmplY3Rpb25DaGVja3MobWV0YWRhdGEucmVzb2x2ZVR5cGUpKQorICAgICAgICAgICAgaWYg
KG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSkKICAgICAgICAgICAgICAgICBt
X2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKS0+dmFySW5qZWN0aW9uV2F0Y2hwb2ludCgpKTsKIAotICAgICAg
ICAgICAgc3dpdGNoIChtZXRhZGF0YS5yZXNvbHZlVHlwZSkgeworICAgICAgICAgICAgc3dpdGNo
IChyZXNvbHZlVHlwZSkgewogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKICAgICAg
ICAgICAgIGNhc2UgR2xvYmFsVmFyOgogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6CiAgICAg
ICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7Ci0g
ICAgICAgICAgICAgICAgSlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50
U2NvcGVGb3JDb2RlQmxvY2sobWV0YWRhdGEucmVzb2x2ZVR5cGUsIG1faW5saW5lU3RhY2tUb3At
Pm1fY29kZUJsb2NrKTsKKyAgICAgICAgICAgICAgICBKU1Njb3BlKiBjb25zdGFudFNjb3BlID0g
SlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhyZXNvbHZlVHlwZSwgbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2spOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNv
bnN0YW50U2NvcGUpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1ldGFkYXRhLmNv
bnN0YW50U2NvcGUuZ2V0KCkgPT0gY29uc3RhbnRTY29wZSk7Ci0gICAgICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLmRzdCwgd2Vha0pTQ29uc3RhbnQoY29uc3RhbnRTY29wZSkpOwotICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KGJ5dGVjb2RlLnNjb3BlKSk7CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8SlNTY29wZSo+KGN1cnJlbnRJbnN0
cnVjdGlvbls2XS51LnBvaW50ZXIpID09IGNvbnN0YW50U2NvcGUpOworICAgICAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgd2Vha0pTQ29uc3RhbnQoY29uc3RhbnRTY29wZSkp
OworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KFZpcnR1YWxSZWdpc3Rl
cihzY29wZSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhc2UgTW9kdWxlVmFyOiB7CiAgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlIHZh
bHVlIG9mIHRoZSAic2NvcGUiIHZpcnR1YWwgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4gTExJbnQg
LyBiYXNlbGluZSBvcF9yZXNvbHZlX3Njb3BlIHdpdGggTW9kdWxlVmFyLAogICAgICAgICAgICAg
ICAgIC8vIHdlIG5lZWQgbm90IHRvIGtlZXAgaXQgYWxpdmUgYnkgdGhlIFBoYW50b20gbm9kZS4K
KyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9
IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUuanND
ZWxsLmdldCgpKTsKICAgICAgICAgICAgICAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgaXMgYWxy
ZWFkeSBzdHJvbmdseSByZWZlcmVuY2VkIGJ5IHRoZSBDb2RlQmxvY2suCi0gICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLmRzdCwgd2Vha0pTQ29uc3RhbnQobWV0YWRhdGEubGV4aWNhbEVudmly
b25tZW50LmdldCgpKSk7CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3Qp
LCB3ZWFrSlNDb25zdGFudChtb2R1bGVFbnZpcm9ubWVudCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAg
ICAgICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbG9jYWxCYXNl
ID0gZ2V0KGJ5dGVjb2RlLnNjb3BlKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBsb2NhbEJhc2Ug
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSk7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQaGFudG9tLCBsb2NhbEJhc2UpOyAvLyBPU1IgZXhpdCBjYW5ub3QgaGFuZGxlIHJlc29sdmVf
c2NvcGUgb24gYSBEQ0UnZCBzY29wZS4KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAvLyBXZSBoYXZlIHZhcmlvdXMgZm9ybXMgb2YgY29uc3RhbnQgZm9sZGluZyBoZXJlLiBUaGlz
IGlzIG5lY2Vzc2FyeSB0byBhdm9pZAogICAgICAgICAgICAgICAgIC8vIHNwdXJpb3VzIHJlY29t
cGlsZXMgaW4gZGVhZC1idXQtZm9sZGFibGUgY29kZS4KLSAgICAgICAgICAgICAgICBpZiAoU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlID0gbWV0YWRhdGEuc3ltYm9sVGFibGUuZ2V0KCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gY3VycmVudEluc3Ry
dWN0aW9uWzZdLnUuc3ltYm9sVGFibGUuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgSW5m
ZXJyZWRWYWx1ZSogc2luZ2xldG9uID0gc3ltYm9sVGFibGUtPnNpbmdsZXRvblNjb3BlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gc2luZ2xldG9uLT5pbmZlcnJl
ZFZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5hZGRMYXppbHkoc2luZ2xldG9uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldChieXRl
Y29kZS5kc3QsIHdlYWtKU0NvbnN0YW50KHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KHZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoSlNTY29wZSogc2NvcGUgPSBsb2NhbEJh
c2UtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNTY29wZSo+KCptX3ZtKSkgewogICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIG4gPSBkZXB0aDsgbi0tOykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNjb3BlID0gc2NvcGUtPm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLmRzdCwgd2Vha0pTQ29uc3RhbnQoc2NvcGUpKTsKKyAgICAgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudChzY29wZSkpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBuID0gZGVwdGg7IG4tLTspCiAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
QmFzZSA9IGFkZFRvR3JhcGgoU2tpcFNjb3BlLCBsb2NhbEJhc2UpOwotICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5kc3QsIGxvY2FsQmFzZSk7CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3Rlcihkc3QpLCBsb2NhbEJhc2UpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CiAgICAgICAg
ICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKLSAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChieXRlY29kZS5zY29wZSkpOwor
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcihz
Y29wZSkpKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Ci0gICAg
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcElu
Zm8obV9jb25zdGFudE51bGwpKSk7CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihkc3QpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TnVsbCkpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
RHluYW1pYzoKQEAgLTYxNTMsMjAgKzYxMjEsMjEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Jlc29s
dmVfc2NvcGUpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZV9mb3Jf
aG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWw6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVj
bEluRXZhbD4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5wcm9wZXJ0eV07CisgICAg
ICAgICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIGludCBzY29wZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9p
ZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CiAKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoUmVzb2x2ZVNjb3BlRm9ySG9pc3Rp
bmdGdW5jRGVjbEluRXZhbCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBnZXQoYnl0ZWNvZGUu
c2NvcGUpKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIGFkZFRvR3Jh
cGgoUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwgT3BJbmZvKGlkZW50aWZp
ZXJOdW1iZXIpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkpKTsKIAogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2
YWwpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRGcm9t
U2NvcGU+KCk7Ci0gICAgICAgICAgICBhdXRvIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS52YXJdOworICAgICAgICAg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgc2NvcGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRp
ZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOwogICAgICAgICAgICAg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVy
TnVtYmVyXTsKLSAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEu
Z2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUgPSBHZXRQdXRJbmZvKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpLnJlc29s
dmVUeXBlKCk7CiAKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMDsKICAgICAg
ICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gMDsKQEAgLTYxNzQsMTcgKzYxNDMs
MTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAgICAgICAgICAg
ICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZh
ciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cykKLSAgICAgICAgICAgICAgICAgICAgd2F0Y2hwb2ludHMgPSBtZXRhZGF0YS53YXRjaHBvaW50
U2V0OworICAgICAgICAgICAgICAgICAgICB3YXRjaHBvaW50cyA9IGN1cnJlbnRJbnN0cnVjdGlv
bls1XS51LndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzb2x2ZVR5
cGUgIT0gVW5yZXNvbHZlZFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IFVucmVzb2x2ZWRQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZSA9IG1ldGFkYXRhLnN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBvcGVyYW5kID0g
bWV0YWRhdGEub3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlID0gY3VycmVu
dEluc3RydWN0aW9uWzVdLnUuc3RydWN0dXJlLmdldCgpOworICAgICAgICAgICAgICAgIG9wZXJh
bmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY3VycmVudEluc3RydWN0aW9uWzZdLnUu
cG9pbnRlcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChuZWVkc0R5bmFtaWNM
b29rdXAocmVzb2x2ZVR5cGUsIG9wX2dldF9mcm9tX3Njb3BlKSkgewotICAgICAgICAgICAgICAg
IHVpbnQ2NF90IG9wSW5mbzEgPSBtYWtlRHluYW1pY1Zhck9wSW5mbyhpZGVudGlmaWVyTnVtYmVy
LCBtZXRhZGF0YS5nZXRQdXRJbmZvLm9wZXJhbmQoKSk7CisgICAgICAgICAgICAgICAgdWludDY0
X3Qgb3BJbmZvMSA9IG1ha2VEeW5hbWljVmFyT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIsIGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLmRzdCwKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXREeW5hbWljVmFy
LCBPcEluZm8ob3BJbmZvMSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KGJ5dGVjb2RlLnNjb3Bl
KSkpOworICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwKKyAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChHZXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSksIE9w
SW5mbyhwcmVkaWN0aW9uKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpKSk7CiAgICAgICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2Zyb21fc2NvcGUpOwogICAgICAgICAgICAgfQog
CkBAIC02MjAxLDIxICs2MTcwLDIxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5zdGF0ZSgpICE9IEdl
dEJ5SWRTdGF0dXM6OlNpbXBsZQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXMubnVtVmFy
aWFudHMoKSAhPSAxCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmVT
ZXQoKS5zaXplKCkgIT0gMSkgewotICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0
LCBhZGRUb0dyYXBoKEdldEJ5SWRGbHVzaCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcElu
Zm8ocHJlZGljdGlvbiksIGdldChieXRlY29kZS5zY29wZSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCBhZGRUb0dyYXBoKEdldEJ5SWRGbHVzaCwgT3BJ
bmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGdldChWaXJ0dWFsUmVn
aXN0ZXIoc2NvcGUpKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBsb2FkKHByZWRpY3Rp
b24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHN0YXR1c1swXSk7Ci0gICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQaGFudG9tLCBnZXQoYnl0ZWNvZGUuc2NvcGUpKTsKLSAgICAgICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUuZHN0LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
UGhhbnRvbSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpKTsKKyAgICAgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFZhcjoKICAgICAgICAgICAg
IGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAgICAgICAgIGNhc2Ug
R2xvYmFsTGV4aWNhbFZhcjoKICAgICAgICAgICAgIGNhc2UgR2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3M6IHsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20s
IGdldChieXRlY29kZS5zY29wZSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRv
bSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpKTsKICAgICAgICAgICAgICAgICBXYXRjaHBv
aW50U2V0KiB3YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNl
dDsKICAgICAgICAgICAgICAgICBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0KiBzY29wZU9iamVj
dCA9IGpzQ2FzdDxKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Kj4oSlNTY29wZTo6Y29uc3RhbnRT
Y29wZUZvckNvZGVCbG9jayhyZXNvbHZlVHlwZSwgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2spKTsKQEAgLTYyNzEsNyArNjI0MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBw
b2ludGVyLT5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHdhdGNocG9p
bnRTZXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgd2Vha0pT
Q29uc3RhbnQodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoZHN0KSwgd2Vha0pTQ29uc3RhbnQodmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAt
NjI4NSwxMyArNjI1NCwxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gYWRkVG9HcmFwaChub2Rl
VHlwZSwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICAgICAg
ICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IHJlc29sdmVUeXBlID09
IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrTm90RW1wdHksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUuZHN0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3Rlcihkc3QpLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xv
c3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3M6IHsKLSAgICAgICAgICAgICAgICBOb2RlKiBzY29wZU5vZGUgPSBnZXQoYnl0ZWNvZGUuc2Nv
cGUpOworICAgICAgICAgICAgICAgIE5vZGUqIHNjb3BlTm9kZSA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIoc2NvcGUpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBJZGVhbGx5
IHdlIHdvdWxkbid0IGhhdmUgdG8gZG8gdGhpcyBQaGFudG9tLiBCdXQ6CiAgICAgICAgICAgICAg
ICAgLy8KQEAgLTYzMDcsMTEgKzYyNzYsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICAvLyBwcmVkaWN0aW9uLCB3ZSdk
IG90aGVyd2lzZSB0aGluayB0aGF0IGl0IGhhcyB0byBleGl0LiBUaGVuIHdoZW4gaXQgZGlkIGV4
ZWN1dGUsIHdlCiAgICAgICAgICAgICAgICAgLy8gd291bGQgcmVjb21waWxlLiBCdXQgaWYgd2Ug
Y2FuIGZvbGQgaXQgaGVyZSwgd2UgYXZvaWQgdGhlIGV4aXQuCiAgICAgICAgICAgICAgICAgaWYg
KEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50Q2xvc3VyZVZhcihzY29wZU5v
ZGUsIFNjb3BlT2Zmc2V0KG9wZXJhbmQpKSkgewotICAgICAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUuZHN0LCB3ZWFrSlNDb25zdGFudCh2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KHZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwotICAgICAgICAgICAg
ICAgIHNldChieXRlY29kZS5kc3QsCisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihkc3QpLAogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEdldENsb3N1cmVWYXIsIE9w
SW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBzY29wZU5vZGUpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTYzMjYsMTIgKzYyOTUsMTMgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7Ci0gICAgICAgICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gYnl0ZWNvZGUudmFyOworICAgICAgICAg
ICAgdW5zaWduZWQgc2NvcGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
ICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpZiAoaWRlbnRpZmllck51bWJlciAhPSBVSU5UX01B
WCkKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9pZGVudGlmaWVyUmVtYXBbaWRlbnRpZmllck51bWJlcl07Ci0gICAgICAgICAgICBSZXNvbHZl
VHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLmdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSByZXNv
bHZlVHlwZSA9IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKICAgICAgICAgICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQ7CiAgICAgICAgICAgICBpZiAoaWRlbnRpZmllck51bWJlciAhPSBVSU5U
X01BWCkKICAgICAgICAgICAgICAgICB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRp
Zmllck51bWJlcl07CkBAIC02MzQ0LDE4ICs2MzE0LDE4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2Jh
bFZhciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8
IHJlc29sdmVUeXBlID09IExvY2FsQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxM
ZXhpY2FsVmFyIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKQotICAgICAgICAgICAgICAgICAgICB3YXRjaHBvaW50cyA9IG1ldGFkYXRhLndh
dGNocG9pbnRTZXQ7CisgICAgICAgICAgICAgICAgICAgIHdhdGNocG9pbnRzID0gY3VycmVudElu
c3RydWN0aW9uWzVdLnUud2F0Y2hwb2ludFNldDsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChy
ZXNvbHZlVHlwZSAhPSBVbnJlc29sdmVkUHJvcGVydHkgJiYgcmVzb2x2ZVR5cGUgIT0gVW5yZXNv
bHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlID0gbWV0YWRhdGEuc3RydWN0dXJlLmdldCgpOwotICAgICAgICAgICAgICAgIG9w
ZXJhbmQgPSBtZXRhZGF0YS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdXJyZW50SW5zdHJ1Y3Rp
b25bNl0udS5wb2ludGVyKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKTsKIAogICAgICAgICAgICAgaWYgKG5lZWRzRHluYW1pY0xvb2t1cChyZXNvbHZl
VHlwZSwgb3BfcHV0X3RvX3Njb3BlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlm
aWVyTnVtYmVyICE9IFVJTlRfTUFYKTsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBvcEluZm8x
ID0gbWFrZUR5bmFtaWNWYXJPcEluZm8oaWRlbnRpZmllck51bWJlciwgbWV0YWRhdGEuZ2V0UHV0
SW5mby5vcGVyYW5kKCkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0RHluYW1pY1Zh
ciwgT3BJbmZvKG9wSW5mbzEpLCBPcEluZm8oKSwgZ2V0KGJ5dGVjb2RlLnNjb3BlKSwgZ2V0KGJ5
dGVjb2RlLnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdWludDY0X3Qgb3BJbmZvMSA9IG1ha2VE
eW5hbWljVmFyT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIsIGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0RHluYW1pY1ZhciwgT3BJ
bmZvKG9wSW5mbzEpLCBPcEluZm8oKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpLCBnZXQo
VmlydHVhbFJlZ2lzdGVyKHZhbHVlKSkpOwogICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3B1dF90b19zY29wZSk7CiAgICAgICAgICAgICB9CiAKQEAgLTYzNzAsMjAgKzYzNDAsMjAgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAg
ICB8fCBzdGF0dXNbMF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAgICAg
ICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewotICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVt
YmVyKSwgZ2V0KGJ5dGVjb2RlLnNjb3BlKSwgZ2V0KGJ5dGVjb2RlLnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIp
LCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIodmFsdWUp
KSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2JqZWN0KTsKLSAg
ICAgICAgICAgICAgICBzdG9yZShiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBzdGF0dXNbMF0sIGdl
dChieXRlY29kZS52YWx1ZSkpOworICAgICAgICAgICAgICAgIHN0b3JlKGJhc2UsIGlkZW50aWZp
ZXJOdW1iZXIsIHN0YXR1c1swXSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSkpKTsKICAgICAg
ICAgICAgICAgICAvLyBLZWVwIHNjb3BlIGFsaXZlIHVudGlsIGFmdGVyIHB1dC4KLSAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChieXRlY29kZS5zY29wZSkpOworICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgR2xvYmFsTGV4aWNhbFZhcjoKICAgICAgICAgICAgIGNhc2UgR2xvYmFsTGV4aWNhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFZhcjoKICAgICAg
ICAgICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogewotICAgICAgICAg
ICAgICAgIGlmICghaXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5nZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpKSAmJiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCByZXNv
bHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIWlzSW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSkgJiYgKHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgcmVzb2x2
ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBTcGVjRW1wdHk7CiAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gYWRkVG9HcmFwaChHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGUsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja05vdEVtcHR5LCB2YWx1ZSk7CkBAIC02Mzk0
LDIxICs2MzY0LDIxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzY29w
ZU9iamVjdC0+c3ltYm9sVGFibGUoKS0+Z2V0KHVpZCk7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoZW50cnksIHdhdGNocG9pbnRzID09IGVudHJ5LndhdGNocG9pbnRTZXQoKSk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlTm9kZSA9IGdl
dChieXRlY29kZS52YWx1ZSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWVOb2RlID0gZ2V0
KFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0
R2xvYmFsVmFyaWFibGUsIE9wSW5mbyhvcGVyYW5kKSwgd2Vha0pTQ29uc3RhbnQoc2NvcGVPYmpl
Y3QpLCB2YWx1ZU5vZGUpOwogICAgICAgICAgICAgICAgIGlmICh3YXRjaHBvaW50cyAmJiB3YXRj
aHBvaW50cy0+c3RhdGUoKSAhPSBJc0ludmFsaWRhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIE11c3QgaGFwcGVuIGFmdGVyIHRoZSBzdG9yZS4gU2VlIGNvbW1lbnQgZm9yIEdldEdsb2Jh
bFZhci4KICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOb3RpZnlXcml0ZSwgT3BJbmZv
KHdhdGNocG9pbnRzKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIEtl
ZXAgc2NvcGUgYWxpdmUgdW50aWwgYWZ0ZXIgcHV0LgotICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUGhhbnRvbSwgZ2V0KGJ5dGVjb2RlLnNjb3BlKSk7CisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQaGFudG9tLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVW
YXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7Ci0gICAgICAgICAgICAgICAgTm9kZSogc2Nv
cGVOb2RlID0gZ2V0KGJ5dGVjb2RlLnNjb3BlKTsKLSAgICAgICAgICAgICAgICBOb2RlKiB2YWx1
ZU5vZGUgPSBnZXQoYnl0ZWNvZGUudmFsdWUpOworICAgICAgICAgICAgICAgIE5vZGUqIHNjb3Bl
Tm9kZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKTsKKyAgICAgICAgICAgICAgICBOb2Rl
KiB2YWx1ZU5vZGUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKHZhbHVlKSk7CiAKICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dENsb3N1cmVWYXIsIE9wSW5mbyhvcGVyYW5kKSwgc2NvcGVOb2Rl
LCB2YWx1ZU5vZGUpOwogCkBAIC02NDcxLDI5ICs2NDQxLDI4IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUxleGljYWxFbnZpcm9ubWVudD4o
KTsKLSAgICAgICAgICAgIEFTU0VSVChieXRlY29kZS5zeW1ib2xUYWJsZS5pc0NvbnN0YW50KCkg
JiYgYnl0ZWNvZGUuaW5pdGlhbFZhbHVlLmlzQ29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBGcm96
ZW5WYWx1ZSogc3ltYm9sVGFibGUgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNr
VG9wLT5tX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUuc3ltYm9sVGFibGUub2Zmc2V0
KCkpKTsKLSAgICAgICAgICAgIEZyb3plblZhbHVlKiBpbml0aWFsVmFsdWUgPSBtX2dyYXBoLmZy
ZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoYnl0
ZWNvZGUuaW5pdGlhbFZhbHVlLm9mZnNldCgpKSk7Ci0gICAgICAgICAgICBOb2RlKiBzY29wZSA9
IGdldChieXRlY29kZS5zY29wZSk7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3ltYm9s
VGFibGVSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBpbml0aWFsVmFsdWVSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIEFTU0VSVChzeW1ib2xUYWJsZVJlZ2lzdGVy
LmlzQ29uc3RhbnQoKSAmJiBpbml0aWFsVmFsdWVSZWdpc3Rlci5pc0NvbnN0YW50KCkpOworICAg
ICAgICAgICAgRnJvemVuVmFsdWUqIHN5bWJvbFRhYmxlID0gbV9ncmFwaC5mcmVlemVTdHJvbmco
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KHN5bWJvbFRhYmxlUmVn
aXN0ZXIub2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiBpbml0aWFsVmFsdWUg
PSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2V0
Q29uc3RhbnQoaW5pdGlhbFZhbHVlUmVnaXN0ZXIub2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHNjb3BlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBsZXhpY2FsRW52aXJvbm1lbnQgPSBhZGRUb0dy
YXBoKENyZWF0ZUFjdGl2YXRpb24sIE9wSW5mbyhzeW1ib2xUYWJsZSksIE9wSW5mbyhpbml0aWFs
VmFsdWUpLCBzY29wZSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBsZXhpY2FsRW52
aXJvbm1lbnQpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSwgbGV4aWNhbEVudmlyb25tZW50KTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1c2hXaXRoU2NvcGU+KCk7Ci0gICAgICAg
ICAgICBOb2RlKiBjdXJyZW50U2NvcGUgPSBnZXQoYnl0ZWNvZGUuY3VycmVudFNjb3BlKTsKLSAg
ICAgICAgICAgIE5vZGUqIG9iamVjdCA9IGdldChieXRlY29kZS5uZXdTY29wZSk7Ci0gICAgICAg
ICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKFB1c2hXaXRoU2NvcGUsIGN1cnJlbnRT
Y29wZSwgb2JqZWN0KSk7CisgICAgICAgICAgICBOb2RlKiBjdXJyZW50U2NvcGUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAg
ICAgIE5vZGUqIG9iamVjdCA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChQdXNoV2l0aFNjb3BlLCBjdXJy
ZW50U2NvcGUsIG9iamVjdCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHVzaF93aXRo
X3Njb3BlKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZTog
ewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRQYXJlbnRTY29wZT4oKTsKLSAgICAgICAgICAgIE5vZGUqIGN1cnJlbnRTY29wZSA9IGdldChi
eXRlY29kZS5zY29wZSk7CisgICAgICAgICAgICBOb2RlKiBjdXJyZW50U2NvcGUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICAgICAg
ICAgIE5vZGUqIG5ld1Njb3BlID0gYWRkVG9HcmFwaChTa2lwU2NvcGUsIGN1cnJlbnRTY29wZSk7
Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBuZXdTY29wZSk7CisgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBuZXdT
Y29wZSk7CiAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGN1cnJlbnRTY29wZSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfcGFyZW50X3Njb3BlKTsKICAgICAgICAgfQpA
QCAtNjUwMyw3NCArNjQ3Miw2NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgLy8gb25seSBoZWxwcyBmb3IgdGhlIGZpcnN0IGJh
c2ljIGJsb2NrLiBJdCdzIGV4dHJlbWVseSBpbXBvcnRhbnQgbm90IHRvIGNvbnN0YW50IGZvbGQK
ICAgICAgICAgICAgIC8vIGxvYWRzIGZyb20gdGhlIHNjb3BlIHJlZ2lzdGVyIGxhdGVyLCBhcyB0
aGF0IHdvdWxkIHByZXZlbnQgdGhlIERGRyBmcm9tIHRyYWNraW5nIHRoZQogICAgICAgICAgICAg
Ly8gYnl0ZWNvZGUtbGV2ZWwgbGl2ZW5lc3Mgb2YgdGhlIHNjb3BlIHJlZ2lzdGVyLgotICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRTY29wZT4o
KTsKICAgICAgICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlKSk7CiAgICAgICAgICAgICBOb2RlKiByZXN1bHQ7CiAgICAgICAgICAg
ICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8
SlNGdW5jdGlvbio+KCptX3ZtKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSB3ZWFrSlNDb25z
dGFudChmdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gYWRkVG9HcmFwaChHZXRTY29wZSwgY2FsbGVlKTsKLSAgICAgICAgICAgIHNl
dChieXRlY29kZS5kc3QsIHJlc3VsdCk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfZ2V0X3Njb3BlKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bf
YXJndW1lbnRfY291bnQ6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wQXJndW1lbnRDb3VudD4oKTsKICAgICAgICAgICAgIE5vZGUqIHN1YiA9
IGFkZFRvR3JhcGgoQXJpdGhTdWIsIE9wSW5mbyhBcml0aDo6VW5jaGVja2VkKSwgT3BJbmZvKFNw
ZWNJbnQzMk9ubHkpLCBnZXRBcmd1bWVudENvdW50KCksIGFkZFRvR3JhcGgoSlNDb25zdGFudCwg
T3BJbmZvKG1fY29uc3RhbnRPbmUpKSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBz
dWIpOworCisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLCBzdWIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYXJndW1l
bnRfY291bnQpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2Fy
Z3VtZW50czogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BDcmVhdGVEaXJlY3RBcmd1bWVudHM+KCk7CiAgICAgICAgICAgICBub3RpY2VBcmd1
bWVudHNVc2UoKTsKICAgICAgICAgICAgIE5vZGUqIGNyZWF0ZUFyZ3VtZW50cyA9IGFkZFRvR3Jh
cGgoQ3JlYXRlRGlyZWN0QXJndW1lbnRzKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3Qs
IGNyZWF0ZUFyZ3VtZW50cyk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBjcmVhdGVBcmd1bWVudHMpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czogewot
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVh
dGVTY29wZWRBcmd1bWVudHM+KCk7CiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsK
LSAgICAgICAgICAgIE5vZGUqIGNyZWF0ZUFyZ3VtZW50cyA9IGFkZFRvR3JhcGgoQ3JlYXRlU2Nv
cGVkQXJndW1lbnRzLCBnZXQoYnl0ZWNvZGUuc2NvcGUpKTsKLSAgICAgICAgICAgIHNldChieXRl
Y29kZS5kc3QsIGNyZWF0ZUFyZ3VtZW50cyk7CisgICAgICAgICAgICBOb2RlKiBjcmVhdGVBcmd1
bWVudHMgPSBhZGRUb0dyYXBoKENyZWF0ZVNjb3BlZEFyZ3VtZW50cywgZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOworICAgICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgY3JlYXRl
QXJndW1lbnRzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9zY29wZWRfYXJn
dW1lbnRzKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2Nsb25lZF9hcmd1
bWVudHM6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wQ3JlYXRlQ2xvbmVkQXJndW1lbnRzPigpOwogICAgICAgICAgICAgbm90aWNlQXJndW1l
bnRzVXNlKCk7CiAgICAgICAgICAgICBOb2RlKiBjcmVhdGVBcmd1bWVudHMgPSBhZGRUb0dyYXBo
KENyZWF0ZUNsb25lZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBj
cmVhdGVBcmd1bWVudHMpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgY3JlYXRlQXJndW1lbnRzKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKTsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7Ci0gICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEZyb21Bcmd1
bWVudHM+KCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LAorICAgICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgICAgICBHZXRGcm9tQXJndW1l
bnRzLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8oYnl0ZWNvZGUuaW5kZXgpLAorICAgICAg
ICAgICAgICAgICAgICBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCksCiAg
ICAgICAgICAgICAgICAgICAgIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLAotICAgICAgICAgICAg
ICAgICAgICBnZXQoYnl0ZWNvZGUuYXJndW1lbnRzKSkpOworICAgICAgICAgICAgICAgICAgICBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2Zyb21fYXJndW1lbnRzKTsKICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50czogewotICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb0Fy
Z3VtZW50cz4oKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgUHV0
VG9Bcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgT3BJbmZvKGJ5dGVjb2RlLmluZGV4KSwKLSAg
ICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUuYXJndW1lbnRzKSwKLSAgICAgICAgICAgICAgICBn
ZXQoYnl0ZWNvZGUudmFsdWUpKTsKKyAgICAgICAgICAgICAgICBPcEluZm8oY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSksCisgICAgICAgICAgICAgICAgZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpOwogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3RvX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDogewotICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRBcmd1bWVudD4oKTsKICAgICAgICAgICAg
IElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1l
KCk7CiAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudDsKLSAgICAgICAgICAgIGludDMyX3QgYXJn
dW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPSBieXRlY29kZS5pbmRleDsKKyAgICAgICAgICAgIGlu
dDMyX3QgYXJndW1lbnRJbmRleEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2Fs
bEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewogICAgICAgICAgICAgICAgIGludDMyX3QgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dp
dGhGaXh1cC5zaXplKCk7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50SW5kZXhJbmNsdWRp
bmdUaGlzIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXApCkBAIC02NTc5LDg0
ICs2NTQxLDEyNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCA9IGFkZFRvR3JhcGgoSlNDb25zdGFu
dCwgT3BJbmZvKG1fY29uc3RhbnRVbmRlZmluZWQpKTsKICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgIGFyZ3VtZW50ID0gYWRkVG9HcmFwaChHZXRBcmd1bWVudCwgT3BJbmZvKGFy
Z3VtZW50SW5kZXhJbmNsdWRpbmdUaGlzKSwgT3BJbmZvKGdldFByZWRpY3Rpb24oKSkpOwotICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYXJndW1lbnQpOworICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYXJndW1lbnQp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2FyZ3VtZW50KTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX25ld19hc3luY19nZW5lcmF0b3JfZnVuYzoKLSAgICAgICAgICAgIGhh
bmRsZU5ld0Z1bmMoTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbiwgY3VycmVudEluc3RydWN0aW9u
LT5hczxPcE5ld0FzeW5jR2VuZXJhdG9yRnVuYz4oKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMpOwogICAgICAgICBjYXNlIG9wX25ld19mdW5j
OgotICAgICAgICAgICAgaGFuZGxlTmV3RnVuYyhOZXdGdW5jdGlvbiwgY3VycmVudEluc3RydWN0
aW9uLT5hczxPcE5ld0Z1bmM+KCkpOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1
bmMpOwogICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKLSAgICAgICAgICAgIGhh
bmRsZU5ld0Z1bmMoTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BOZXdHZW5lcmF0b3JGdW5jPigpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19n
ZW5lcmF0b3JfZnVuYyk7Ci0gICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6Ci0gICAgICAg
ICAgICBoYW5kbGVOZXdGdW5jKE5ld0FzeW5jRnVuY3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BOZXdBc3luY0Z1bmM+KCkpOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Fz
eW5jX2Z1bmMpOworICAgICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOiB7CisgICAgICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGRlY2wgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2stPmZ1bmN0aW9uRGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAg
ICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhkZWNs
KTsKKyAgICAgICAgICAgIE5vZGVUeXBlIG9wOworICAgICAgICAgICAgc3dpdGNoIChvcGNvZGVJ
RCkgeworICAgICAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgICAgICAg
ICAgICAgb3AgPSBOZXdHZW5lcmF0b3JGdW5jdGlvbjsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6CisgICAgICAgICAgICAgICAgb3Ag
PSBOZXdBc3luY0Z1bmN0aW9uOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBvcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmM6CisgICAgICAgICAgICAgICAgb3AgPSBO
ZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBvcCA9IE5ld0Z1bmN0aW9uOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgTm9kZSogc2NvcGUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgob3As
IE9wSW5mbyhmcm96ZW4pLCBzY29wZSkpOworICAgICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3Vs
ZG4ndCBoYXZlIHRvIGRvIHRoaXMgUGhhbnRvbS4gQnV0OgorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIEZvciB0aGUgY29uc3RhbnQgY2FzZTogd2UgbXVzdCBkbyBpdCBiZWNhdXNlIG90
aGVyd2lzZSB3ZSB3b3VsZCBoYXZlIG5vIHdheSBvZiBrbm93aW5nCisgICAgICAgICAgICAvLyB0
aGF0IHRoZSBzY29wZSBpcyBsaXZlIGF0IE9TUiBoZXJlLgorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIEZvciB0aGUgbm9uLWNvbnN0YW50IGNhc2U6IE5ld0Z1bmN0aW9uIGNvdWxkIGJl
IERDRSdkLCBidXQgYmFzZWxpbmUncyBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgLy8gd29u
J3QgYmUgYWJsZSB0byBoYW5kbGUgYW4gVW5kZWZpbmVkIHNjb3BlLgorICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBzY29wZSk7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09E
RV9MRU5HVEgob3BfbmV3X2Z1bmMpID09IE9QQ09ERV9MRU5HVEgob3BfbmV3X2dlbmVyYXRvcl9m
dW5jKSwgIlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmMgc2hvdWxkIGJlIGVxdWFsIHRvIG9uZSBv
ZiBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoT1BD
T0RFX0xFTkdUSChvcF9uZXdfZnVuYykgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfYXN5bmNfZnVu
YyksICJUaGUgbGVuZ3RoIG9mIG9wX25ld19mdW5jIHNob3VsZCBiZSBlcXVhbCB0byBvbmUgb2Yg
b3BfbmV3X2FzeW5jX2Z1bmMiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoT1BDT0RFX0xF
TkdUSChvcF9uZXdfZnVuYykgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfYXN5bmNfZ2VuZXJhdG9y
X2Z1bmMpLCAiVGhlIGxlbmd0aCBvZiBvcF9uZXdfZnVuYyBzaG91bGQgYmUgZXF1YWwgdG8gb25l
IG9mIG9wX25ld19hc3luY19nZW5lcmF0b3JfZnVuYyIpOworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfbmV3X2Z1bmMpOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9uZXdfZnVuY19l
eHA6Ci0gICAgICAgICAgICBoYW5kbGVOZXdGdW5jRXhwKE5ld0Z1bmN0aW9uLCBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wTmV3RnVuY0V4cD4oKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShv
cF9uZXdfZnVuY19leHApOwogICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6
Ci0gICAgICAgICAgICBoYW5kbGVOZXdGdW5jRXhwKE5ld0dlbmVyYXRvckZ1bmN0aW9uLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3R2VuZXJhdG9yRnVuY0V4cD4oKSk7Ci0gICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKICAgICAgICAgY2FzZSBv
cF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwOgotICAgICAgICAgICAgaGFuZGxlTmV3RnVu
Y0V4cChOZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
TmV3QXN5bmNHZW5lcmF0b3JGdW5jRXhwPigpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHApOwotICAgICAgICBjYXNlIG9wX25ld19hc3lu
Y19mdW5jX2V4cDoKLSAgICAgICAgICAgIGhhbmRsZU5ld0Z1bmNFeHAoTmV3QXN5bmNGdW5jdGlv
biwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0FzeW5jRnVuY0V4cD4oKSk7Ci0gICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9uZXdfYXN5bmNfZnVuY19leHApOworICAgICAgICBjYXNlIG9w
X25ld19hc3luY19mdW5jX2V4cDogeworICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSog
ZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoZXhwcik7CisgICAgICAgICAgICBOb2RlVHlw
ZSBvcDsKKyAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICAgICAgICAgICAgICBvcCA9IE5ld0dlbmVy
YXRvckZ1bmN0aW9uOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBv
cF9uZXdfYXN5bmNfZnVuY19leHA6CisgICAgICAgICAgICAgICAgb3AgPSBOZXdBc3luY0Z1bmN0
aW9uOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9uZXdfYXN5
bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgICAgICAgICAgICAgIG9wID0gTmV3QXN5bmNHZW5l
cmF0b3JGdW5jdGlvbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgb3AgPSBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIE5vZGUqIHNjb3BlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZnJv
emVuKSwgc2NvcGUpKTsKKyAgICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGRuJ3QgaGF2ZSB0
byBkbyB0aGlzIFBoYW50b20uIEJ1dDoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBG
b3IgdGhlIGNvbnN0YW50IGNhc2U6IHdlIG11c3QgZG8gaXQgYmVjYXVzZSBvdGhlcndpc2Ugd2Ug
d291bGQgaGF2ZSBubyB3YXkgb2Yga25vd2luZworICAgICAgICAgICAgLy8gdGhhdCB0aGUgc2Nv
cGUgaXMgbGl2ZSBhdCBPU1IgaGVyZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBG
b3IgdGhlIG5vbi1jb25zdGFudCBjYXNlOiBOZXdGdW5jdGlvbiBjb3VsZCBiZSBEQ0UnZCwgYnV0
IGJhc2VsaW5lJ3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgIC8vIHdvbid0IGJlIGFibGUg
dG8gaGFuZGxlIGFuIFVuZGVmaW5lZCBzY29wZS4KKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhh
bnRvbSwgc2NvcGUpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChPUENPREVfTEVOR1RIKG9w
X25ld19mdW5jX2V4cCkgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KSwgIlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmNfZXhwIHNob3VsZCBiZSBlcXVhbCB0byBvbmUg
b2Ygb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2Vy
dChPUENPREVfTEVOR1RIKG9wX25ld19mdW5jX2V4cCkgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdf
YXN5bmNfZnVuY19leHApLCAiVGhlIGxlbmd0aCBvZiBvcF9uZXdfZnVuY19leHAgc2hvdWxkIGJl
IGVxdWFsIHRvIG9uZSBvZiBvcF9uZXdfYXN5bmNfZnVuY19leHAiKTsKKyAgICAgICAgICAgIHN0
YXRpY19hc3NlcnQoT1BDT0RFX0xFTkdUSChvcF9uZXdfZnVuY19leHApID09IE9QQ09ERV9MRU5H
VEgob3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cCksICJUaGUgbGVuZ3RoIG9mIG9wX25l
d19mdW5jX2V4cCBzaG91bGQgYmUgZXF1YWwgdG8gb25lIG9mIG9wX25ld19hc3luY19mdW5jX2V4
cCIpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGNhc2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6IHsKLSAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0RnVuY3Rpb25OYW1lPigp
OwotICAgICAgICAgICAgTm9kZSogZnVuYyA9IGdldChieXRlY29kZS5mdW5jdGlvbik7Ci0gICAg
ICAgICAgICBOb2RlKiBuYW1lID0gZ2V0KGJ5dGVjb2RlLm5hbWUpOworICAgICAgICAgICAgTm9k
ZSogZnVuYyA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCkpOworICAgICAgICAgICAgTm9kZSogbmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChT
ZXRGdW5jdGlvbk5hbWUsIGZ1bmMsIG5hbWUpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
c2V0X2Z1bmN0aW9uX25hbWUpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF90eXBlb2Y6
IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VHlwZW9mPigpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChUeXBl
T2YsIGdldChieXRlY29kZS52YWx1ZSkpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChUeXBlT2YsIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90eXBlb2YpOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBvcF90b19udW1iZXI6IHsKLSAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9OdW1iZXI+KCk7CiAgICAgICAg
ICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwotICAgICAg
ICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUub3BlcmFuZCk7Ci0gICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKFRvTnVtYmVyLCBPcEluZm8oMCksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBh
ZGRUb0dyYXBoKFRvTnVtYmVyLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgdmFsdWUp
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RvX251bWJlcik7CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIG9wX3RvX3N0cmluZzogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1N0cmluZz4oKTsKLSAgICAgICAgICAgIE5vZGUq
IHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm9wZXJhbmQpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
LmRzdCwgYWRkVG9HcmFwaChUb1N0cmluZywgdmFsdWUpKTsKKyAgICAgICAgICAgIE5vZGUqIHZh
bHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKFRvU3RyaW5nLCB2YWx1ZSkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfdG9fc3RyaW5nKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bf
dG9fb2JqZWN0OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFRvT2JqZWN0PigpOwogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiA9IGdldFByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5
dGVjb2RlLm9wZXJhbmQpOwotICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1lc3NhZ2VdOwot
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChUb09iamVjdCwgT3BJbmZv
KGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIHZhbHVlKSk7CisgICAgICAg
ICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmRdOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChUb09iamVjdCwgT3BJbmZvKGlkZW50
aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIHZhbHVlKSk7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF90b19vYmplY3QpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9p
bl9ieV92YWw6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSW5CeVZhbD4oKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBn
ZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5hcnJheVByb2ZpbGUsIEFy
cmF5OjpSZWFkKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoSW5C
eVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGdldChieXRlY29kZS5iYXNlKSwgZ2V0
KGJ5dGVjb2RlLnByb3BlcnR5KSkpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZShhcnJheVByb2ZpbGVGb3I8T3BJbkJ5VmFsU2hhcGU+KGN1cnJlbnRJbnN0
cnVjdGlvbiksIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksIGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9pbl9ieV92YWwpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9pbl9i
eV9pZDogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLmJh
c2UpOwotICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLnByb3BlcnR5XTsKKyAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kXTsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlk
ZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAKICAgICAgICAgICAgIEluQnlJZFN0YXR1
cyBzdGF0dXMgPSBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCkBAIC02Njg1LDEwNiArNjY4OCwx
MDEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJJbkJ5SWRTdGF0dXMsIE9wSW5mbyht
X2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkSW5CeUlkU3RhdHVzKGN1cnJlbnRD
b2RlT3JpZ2luKCksIHN0YXR1cykpLCBiYXNlKTsKIAogICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBtYXRjaCA9IGFkZFRvR3JhcGgoTWF0Y2hTdHJ1Y3R1cmUsIE9wSW5mbyhkYXRhKSwgYmFzZSk7
Ci0gICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIG1hdGNoKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgbWF0Y2gpOwogICAgICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9i
eV9pZCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKEluQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1i
ZXIpLCBiYXNlKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKEluQnlJZCwgT3BJbmZvKGlkZW50aWZp
ZXJOdW1iZXIpLCBiYXNlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV9pZCk7
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDogewot
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRF
bnVtZXJhYmxlTGVuZ3RoPigpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9H
cmFwaChHZXRFbnVtZXJhYmxlTGVuZ3RoLCBnZXQoYnl0ZWNvZGUuYmFzZSkpKTsKKyAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCks
IGFkZFRvR3JhcGgoR2V0RW51bWVyYWJsZUxlbmd0aCwgCisgICAgICAgICAgICAgICAgZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aCk7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX2hhc19nZW5lcmljX3Byb3BlcnR5OiB7Ci0gICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc0dlbmVyaWNQcm9wZXJ0
eT4oKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoSGFzR2VuZXJp
Y1Byb3BlcnR5LCBnZXQoYnl0ZWNvZGUuYmFzZSksIGdldChieXRlY29kZS5wcm9wZXJ0eSkpKTsK
KyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCksIGFkZFRvR3JhcGgoSGFzR2VuZXJpY1Byb3BlcnR5LCAKKyAgICAgICAgICAgICAg
ICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSwK
KyAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaGFzX2dlbmVyaWNf
cHJvcGVydHkpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9oYXNfc3RydWN0dXJlX3By
b3BlcnR5OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEhhc1N0cnVjdHVyZVByb3BlcnR5PigpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
LmRzdCwgYWRkVG9HcmFwaChIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSwgCi0gICAgICAgICAgICAgICAg
Z2V0KGJ5dGVjb2RlLmJhc2UpLAotICAgICAgICAgICAgICAgIGdldChieXRlY29kZS5wcm9wZXJ0
eSksCi0gICAgICAgICAgICAgICAgZ2V0KGJ5dGVjb2RlLmVudW1lcmF0b3IpKSk7CisgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LCBhZGRUb0dyYXBoKEhhc1N0cnVjdHVyZVByb3BlcnR5LCAKKyAgICAgICAgICAgICAgICBnZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSwKKyAgICAg
ICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQpKSwKKyAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvbls0XS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaGFz
X3N0cnVjdHVyZV9wcm9wZXJ0eSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2hhc19p
bmRleGVkX3Byb3BlcnR5OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEhhc0luZGV4ZWRQcm9wZXJ0eT4oKTsKLSAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoYnl0ZWNvZGUuYmFzZSk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gZ2V0QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykuYXJyYXlQcm9m
aWxlLCBBcnJheTo6UmVhZCk7Ci0gICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRl
Y29kZS5wcm9wZXJ0eSk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBBcnJh
eU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGFycmF5UHJvZmlsZUZvcjxPcEhhc0luZGV4
ZWRQcm9wZXJ0eVNoYXBlPihjdXJyZW50SW5zdHJ1Y3Rpb24pLCBBcnJheTo6UmVhZCk7CisgICAg
ICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogaGFzSXRlcmFibGVQcm9w
ZXJ0eSA9IGFkZFRvR3JhcGgoSGFzSW5kZXhlZFByb3BlcnR5LCBPcEluZm8oYXJyYXlNb2RlLmFz
V29yZCgpKSwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSwgYmFzZSwgcHJvcGVydHkpOwotICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLmRzdCwgaGFzSXRlcmFibGVQcm9wZXJ0eSk7CisgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBo
YXNJdGVyYWJsZVByb3BlcnR5KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19pbmRl
eGVkX3Byb3BlcnR5KTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2RpcmVjdF9w
bmFtZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BHZXREaXJlY3RQbmFtZT4oKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5iYXNlKTsKLSAgICAgICAgICAgIE5v
ZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLnByb3BlcnR5KTsKLSAgICAgICAgICAgIE5vZGUq
IGluZGV4ID0gZ2V0KGJ5dGVjb2RlLmluZGV4KTsKLSAgICAgICAgICAgIE5vZGUqIGVudW1lcmF0
b3IgPSBnZXQoYnl0ZWNvZGUuZW51bWVyYXRvcik7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Cisg
ICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogaW5kZXggPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKyAgICAg
ICAgICAgIE5vZGUqIGVudW1lcmF0b3IgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvbls1XS51Lm9wZXJhbmQpKTsKIAogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFz
ZSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CiAgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZChpbmRleCk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChlbnVtZXJh
dG9yKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoTm9kZTo6VmFy
QXJnLCBHZXREaXJlY3RQbmFtZSwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbikpKTsKKyAg
ICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCksIAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBHZXREaXJl
Y3RQbmFtZSwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbikpKTsKIAogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfZ2V0X2RpcmVjdF9wbmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByb3BlcnR5RW51bWVyYXRvcj4oKTsK
LSAgICAgICAgICAgIHNldChieXRlY29kZS5kc3QsIGFkZFRvR3JhcGgoR2V0UHJvcGVydHlFbnVt
ZXJhdG9yLCBnZXQoYnl0ZWNvZGUuYmFzZSkpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoR2V0UHJv
cGVydHlFbnVtZXJhdG9yLCAKKyAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZTogewotICAgICAgICAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWU+
KCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKEdldEVudW1lcmF0
b3JTdHJ1Y3R1cmVQbmFtZSwKLSAgICAgICAgICAgICAgICBnZXQoYnl0ZWNvZGUuZW51bWVyYXRv
ciksCi0gICAgICAgICAgICAgICAgZ2V0KGJ5dGVjb2RlLmluZGV4KSkpOworICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChHZXRFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWUsCisgICAgICAgICAgICAgICAgZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksCisgICAg
ICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2VudW1lcmF0b3Jfc3RydWN0
dXJlX3BuYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9nZW5l
cmljX3BuYW1lOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVudW1lcmF0b3JHZW5lcmljUG5hbWU+KCk7Ci0gICAgICAgICAgICBzZXQoYnl0
ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKEdldEVudW1lcmF0b3JHZW5lcmljUG5hbWUsCi0gICAgICAg
ICAgICAgICAgZ2V0KGJ5dGVjb2RlLmVudW1lcmF0b3IpLAotICAgICAgICAgICAgICAgIGdldChi
eXRlY29kZS5pbmRleCkpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoR2V0RW51bWVyYXRvckdlbmVy
aWNQbmFtZSwKKyAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKSwKKyAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKTsKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOiB7Ci0gICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvSW5kZXhTdHJpbmc+KCk7
Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUuZHN0LCBhZGRUb0dyYXBoKFRvSW5kZXhTdHJpbmcs
IGdldChieXRlY29kZS5pbmRleCkpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoVG9JbmRleFN0cmlu
ZywgCisgICAgICAgICAgICAgICAgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKSkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RvX2luZGV4
X3N0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWU+KCk7CiAgICAg
ICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKQotICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoTG9nU2hhZG93Q2hpY2tlblByb2xvZ3VlLCBnZXQoYnl0ZWNv
ZGUuc2NvcGUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKExvZ1NoYWRvd0NoaWNrZW5Q
cm9sb2d1ZSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbG9nX3NoYWRvd19jaGlja2VuX3By
b2xvZ3VlKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3RhaWw6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wTG9nU2hhZG93Q2hpY2tlblRhaWw+KCk7CiAgICAgICAgICAgICBpZiAoIW1faW5saW5l
U3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoZSByaWdodCBzb2x1dGlvbiBmb3IgaW5saW5pbmcgaXMgdG8gZWxpZGUgdGhlc2Ugd2hlbmV2
ZXIgdGhlIHRhaWwgY2FsbAogICAgICAgICAgICAgICAgIC8vIGVuZHMgdXAgYmVpbmcgaW5saW5l
ZC4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU1Njg2Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChMb2dTaGFkb3dDaGlja2Vu
VGFpbCwgZ2V0KGJ5dGVjb2RlLnRoaXNWYWx1ZSksIGdldChieXRlY29kZS5zY29wZSkpOworICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoTG9nU2hhZG93Q2hpY2tlblRhaWwsIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpLCBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CiAg
ICAgICAgIH0KQEAgLTY5ODgsNyArNjk4Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
Q29kZUJsb2NrKCkKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKS0+ZHVtcEJ5
dGVjb2RlKCk7CiAgICAgfQogICAgIAotICAgIFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0LCAzMj4ganVtcFRhcmdldHM7CisgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdl
dHM7CiAgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRz
KTsKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlQXRERkdUaW1lKCkpIHsKICAgICAgICAg
ZGF0YUxvZygiSnVtcCB0YXJnZXRzOiAiKTsKQEAgLTcwNDUsMTE1ICs3MDQzLDYgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgIFZFUkJPU0VfTE9HKCJEb25lIHBh
cnNpbmcgIiwgKmNvZGVCbG9jaywgIiAoZmVsbCBvZmYgZW5kKVxuIik7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBCeXRlY29kZT4KLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFs
KEJ5dGVjb2RlIGJ5dGVjb2RlLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpCi17Ci0gICAgTm9k
ZSogYmFzZSA9IGdldChieXRlY29kZS5iYXNlKTsKLSAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChi
eXRlY29kZS5wcm9wZXJ0eSk7Ci0gICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUudmFsdWUp
OwotICAgIGJvb2wgaXNEaXJlY3QgPSBCeXRlY29kZTo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3Zh
bF9kaXJlY3Q7Ci0gICAgYm9vbCBjb21waWxlZEFzUHV0QnlJZCA9IGZhbHNlOwotICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKTsKLSAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOwotICAg
ICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29kZU9yaWdp
bihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKS5ieVZhbEluZm87Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBi
YXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCi0gICAgICAgICAgICAvLyBBdCB0
aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgaWYgKGJ5VmFs
SW5mbyAKLSAgICAgICAgICAgICAgICAmJiBieVZhbEluZm8tPnN0dWJJbmZvCi0gICAgICAgICAg
ICAgICAgJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoCi0gICAgICAgICAgICAgICAgJiYgIW1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZElkZW50KQotICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQotICAgICAgICAgICAg
ICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBCYWRDZWxsKSkgewotICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNQdXRCeUlk
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpLmVuc3VyZShieVZhbEluZm8tPmNhY2hlZElkLmltcGwoKSk7Ci0gICAgICAgICAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVu
dGlmaWVyTnVtYmVyXTsKLQotICAgICAgICAgICAgICAgIGlmIChTeW1ib2wqIHN5bWJvbCA9IGJ5
VmFsSW5mby0+Y2FjaGVkU3ltYm9sLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhzeW1ib2wpOwotICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IXVpZC0+aXNTeW1ib2woKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tT
dHJpbmdJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
clN0dWJJbmZvKAotICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywKLSAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zdHViSW5m
bywgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKLQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxlUHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJl
Y3QsIGluc3RydWN0aW9uU2l6ZSk7Ci0gICAgfQotCi0gICAgaWYgKCFjb21waWxlZEFzUHV0QnlJ
ZCkgewotICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrKS5hcnJheVByb2ZpbGUsIEFy
cmF5OjpXcml0ZSk7Ci0KLSAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7Ci0gICAgICAgIGFk
ZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKLSAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwot
ICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3Rv
cmFnZS4KLSAgICAgICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0
aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxE
aXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbygwKSk7
Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGU+Ci12b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRBY2Nlc3NvckJ5SWQoTm9kZVR5cGUgb3AsIEJ5dGVjb2RlIGJ5dGVj
b2RlKQotewotICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUuYmFzZSk7Ci0gICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFw
W2J5dGVjb2RlLnByb3BlcnR5XTsKLSAgICBOb2RlKiBhY2Nlc3NvciA9IGdldChieXRlY29kZS5h
Y2Nlc3Nvcik7Ci0gICAgYWRkVG9HcmFwaChvcCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBP
cEluZm8oYnl0ZWNvZGUuYXR0cmlidXRlcyksIGJhc2UsIGFjY2Vzc29yKTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEJ5dGVjb2RlPgotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QWNj
ZXNzb3JCeVZhbChOb2RlVHlwZSBvcCwgQnl0ZWNvZGUgYnl0ZWNvZGUpCi17Ci0gICAgTm9kZSog
YmFzZSA9IGdldChieXRlY29kZS5iYXNlKTsKLSAgICBOb2RlKiBzdWJzY3JpcHQgPSBnZXQoYnl0
ZWNvZGUucHJvcGVydHkpOwotICAgIE5vZGUqIGFjY2Vzc29yID0gZ2V0KGJ5dGVjb2RlLmFjY2Vz
c29yKTsKLSAgICBhZGRUb0dyYXBoKG9wLCBPcEluZm8oYnl0ZWNvZGUuYXR0cmlidXRlcyksIGJh
c2UsIHN1YnNjcmlwdCwgYWNjZXNzb3IpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNv
ZGU+Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVOZXdGdW5jKE5vZGVUeXBlIG9wLCBCeXRl
Y29kZSBieXRlY29kZSkKLXsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGRlY2wgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmZ1bmN0aW9uRGVjbChieXRlY29kZS5mdW5jdGlv
bkRlY2wpOwotICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhk
ZWNsKTsKLSAgICBOb2RlKiBzY29wZSA9IGdldChieXRlY29kZS5zY29wZSk7Ci0gICAgc2V0KGJ5
dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKGZyb3plbiksIHNjb3BlKSk7Ci0gICAg
Ly8gSWRlYWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoaXMgUGhhbnRvbS4gQnV0OgotICAg
IC8vCi0gICAgLy8gRm9yIHRoZSBjb25zdGFudCBjYXNlOiB3ZSBtdXN0IGRvIGl0IGJlY2F1c2Ug
b3RoZXJ3aXNlIHdlIHdvdWxkIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcKLSAgICAvLyB0aGF0IHRo
ZSBzY29wZSBpcyBsaXZlIGF0IE9TUiBoZXJlLgotICAgIC8vCi0gICAgLy8gRm9yIHRoZSBub24t
Y29uc3RhbnQgY2FzZTogTmV3RnVuY3Rpb24gY291bGQgYmUgRENFJ2QsIGJ1dCBiYXNlbGluZSdz
IGltcGxlbWVudGF0aW9uCi0gICAgLy8gd29uJ3QgYmUgYWJsZSB0byBoYW5kbGUgYW4gVW5kZWZp
bmVkIHNjb3BlLgotICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgc2NvcGUpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQnl0ZWNvZGU+Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVOZXdGdW5j
RXhwKE5vZGVUeXBlIG9wLCBCeXRlY29kZSBieXRlY29kZSkKLXsKLSAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4cHIgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmZ1bmN0aW9u
RXhwcihieXRlY29kZS5mdW5jdGlvbkRlY2wpOwotICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBt
X2dyYXBoLmZyZWV6ZVN0cm9uZyhleHByKTsKLSAgICBOb2RlKiBzY29wZSA9IGdldChieXRlY29k
ZS5zY29wZSk7Ci0gICAgc2V0KGJ5dGVjb2RlLmRzdCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKGZy
b3plbiksIHNjb3BlKSk7Ci0gICAgLy8gSWRlYWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRo
aXMgUGhhbnRvbS4gQnV0OgotICAgIC8vCi0gICAgLy8gRm9yIHRoZSBjb25zdGFudCBjYXNlOiB3
ZSBtdXN0IGRvIGl0IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvdWxkIGhhdmUgbm8gd2F5IG9mIGtu
b3dpbmcKLSAgICAvLyB0aGF0IHRoZSBzY29wZSBpcyBsaXZlIGF0IE9TUiBoZXJlLgotICAgIC8v
Ci0gICAgLy8gRm9yIHRoZSBub24tY29uc3RhbnQgY2FzZTogTmV3RnVuY3Rpb24gY291bGQgYmUg
RENFJ2QsIGJ1dCBiYXNlbGluZSdzIGltcGxlbWVudGF0aW9uCi0gICAgLy8gd29uJ3QgYmUgYWJs
ZSB0byBoYW5kbGUgYW4gVW5kZWZpbmVkIHNjb3BlLgotICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwg
c2NvcGUpOwotfQotCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiB7CiAgICAgLy8gU2V0
IGR1cmluZyBjb25zdHJ1Y3Rpb24uCkBAIC03MjQyLDcgKzcxMzEsOSBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnQuaXNB
cmd1bWVudCgpICYmICFhcmd1bWVudC5pc0hlYWRlcigpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24qPiYgYXJndW1lbnRzID0gbV9p
bmxpbmVDYWxsRnJhbWVUb0FyZ3VtZW50UG9zaXRpb25zLmdldChpbmxpbmVDYWxsRnJhbWUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudC50b0FyZ3VtZW50
KCldLT5hZGRWYXJpYWJsZSh2YXJpYWJsZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGlu
c2VydGlvblNldC5pbnNlcnROb2RlKGJsb2NrLT5zaXplKCksIFNwZWNOb25lLCBvcCwgZW5kT3Jp
Z2luLCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoYmxvY2stPnNpemUo
KSwgU3BlY05vbmUsIG9wLCBlbmRPcmlnaW4sIE9wSW5mbyh2YXJpYWJsZSkpOwogICAgICAgICAg
ICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZEZsdXNoRGlyZWN0ID0g
WyZdIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydExpdmVuZXNzUHJlc2Vydmlu
Z09wKGlubGluZUNhbGxGcmFtZSwgRmx1c2gsIG9wZXJhbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY1MTZmZjEyZDBlNzgwY2M5YTUx
MWZiZWM5MTJmYzIwYzk0OWQ2MWMuLmRhZGM5MmQ4NjdlNGM0NGEzNDYyZDhkNmRhYjY0NTgwNzVh
Y2RkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTEwMywxNCArMTAzLDEyIEBAIGlubGluZSB2b2lkIGRlYnVnRmFpbChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIENhcGFiaWxpdHlMZXZlbCByCiAgICAgICAg
IGRhdGFMb2coIkRGRyByZWplY3Rpbmcgb3Bjb2RlIGluICIsICpjb2RlQmxvY2ssICIgYmVjYXVz
ZSBvZiBvcGNvZGUgIiwgb3Bjb2RlTmFtZXNbb3Bjb2RlSURdLCAiXG4iKTsKIH0KIAotQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYykKK0NhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvbiogcGMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNvZGVCbG9jayk7IC8vIFRoaXMgZnVuY3Rp
b24gZG9lcyBzb21lIGJ5dGVjb2RlIHBhcnNpbmcuIE9yZGluYXJpbHkgYnl0ZWNvZGUgcGFyc2lu
ZyByZXF1aXJlcyB0aGUgb3duaW5nIENvZGVCbG9jay4gSXQncyBzb3J0IG9mIHN0cmFuZ2UgdGhh
dCB3ZSBkb24ndCB1c2UgaXQgaGVyZSByaWdodCBub3cuCiAgICAgVU5VU0VEX1BBUkFNKHBjKTsK
ICAgICAKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF93aWRlOgotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNhc2Ugb3BfZW50ZXI6CiAgICAg
Y2FzZSBvcF90b190aGlzOgogICAgIGNhc2Ugb3BfYXJndW1lbnRfY291bnQ6CkBAIC0xNjYsOSAr
MTY0LDEyIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9wdXRfYnlfdmFs
X2RpcmVjdDoKICAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKKyAgICBjYXNlIG9wX2dldF9i
eV9pZF91bnNldDoKICAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6CiAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfZGlyZWN0OgogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6Cisg
ICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgogICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhpczoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0
aF90aGlzOgpAQCAtMzAxLDE3ICszMDIsMjAgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKIAog
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsK
KyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCk7CisgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIENhcGFiaWxpdHlMZXZlbCByZXN1bHQgPSBD
YW5Db21waWxlQW5kSW5saW5lOwogICAgIAotICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rp
b24gOiBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpKSB7Ci0gICAgICAgIHN3aXRjaCAoaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCkpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
MDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OyApIHsKKyAgICAgICAgc3dpdGNo
IChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZz
ZXRdLnUub3Bjb2RlKSkgewogI2RlZmluZSBERUZJTkVfT1Aob3Bjb2RlLCBsZW5ndGgpIFwKICAg
ICAgICAgY2FzZSBvcGNvZGU6IHsgXAotICAgICAgICAgICAgQ2FwYWJpbGl0eUxldmVsIG5ld1Jl
c3VsdCA9IGxlYXN0VXBwZXJCb3VuZChyZXN1bHQsIGNhcGFiaWxpdHlMZXZlbChvcGNvZGUsIGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24ucHRyKCkpKTsgXAorICAgICAgICAgICAgQ2FwYWJpbGl0eUxl
dmVsIG5ld1Jlc3VsdCA9IGxlYXN0VXBwZXJCb3VuZChyZXN1bHQsIGNhcGFiaWxpdHlMZXZlbChv
cGNvZGUsIGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldCkpOyBc
CiAgICAgICAgICAgICBpZiAobmV3UmVzdWx0ICE9IHJlc3VsdCkgeyBcCiAgICAgICAgICAgICAg
ICAgZGVidWdGYWlsKGNvZGVCbG9jaywgb3Bjb2RlLCBuZXdSZXN1bHQpOyBcCiAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbmV3UmVzdWx0OyBcCiAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ICs9IGxlbmd0aDsgXAogICAgICAgICAgICAgYnJlYWs7IFwKICAgICAg
ICAgfQogICAgICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKERFRklORV9PUCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCmluZGV4IGNmODRlN2E2NWMyOTMz
Y2I5N2M5OWVjMTgxZjY0YzRkMzBmZTkzMzAuLmUwM2IyNDcxZWIyMzQ2OWFiYzhmZTFjYTk4ZjA0
MjEwMWFmNGM3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaApAQCAtNDUsNyArNDUsNyBAQCBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9zdXJl
Q2FsbChDb2RlQmxvY2sqKTsKIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChD
b2RlQmxvY2sqKTsKIGJvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoQ29kZUJsb2NrKik7CiAKLWlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlELCBDb2RlQmxvY2sq
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpOworaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvbiogcGMpOwogCiBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKENvZGVCbG9jayop
OwogI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCkBAIC01OCw3ICs1OCw3IEBAIGlubGluZSBib29s
IG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxvY2sqKSB7IHJldHVybiBm
YWxzZTsgfQogaW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2Rl
QmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wgY2FuVXNlT1NSRXhpdEZ1enpp
bmcoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIAotaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQsIENvZGVCbG9jayosIGNvbnN0IEluc3RydWN0aW9u
KikgeyByZXR1cm4gQ2Fubm90Q29tcGlsZTsgfQoraW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBh
YmlsaXR5TGV2ZWwoT3Bjb2RlSUQsIENvZGVCbG9jayosIEluc3RydWN0aW9uKikgeyByZXR1cm4g
Q2Fubm90Q29tcGlsZTsgfQogaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
Q29kZUJsb2NrKikgeyByZXR1cm4gQ2Fubm90Q29tcGlsZTsgfQogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCmluZGV4
IDg0NWI5ZWM5NTgxZDQxNWFkY2Y3MGMyYjI5NzM0OTVhZTIxYjU2M2IuLjBlYzQ5MzdmYjkwZWYw
NGNmNmY0ZDlhNDQ1ZTUxYTFmYWU1M2Q4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRW50cnkuY3BwCkBAIC0zOTAsOSArMzkwLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSog
ZXgKICAgICBpZiAoVU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoJmV4ZWMtPnJl
Z2lzdGVycygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lU2l6ZUZvckNoZWNrKS5vZmZz
ZXQoKV0pKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGluc3RydWN0aW9u
ID0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmF0KGV4ZWMtPmJ5dGVjb2RlT2Zm
c2V0KCkpOwotICAgIEFTU0VSVChpbnN0cnVjdGlvbi0+aXM8T3BDYXRjaD4oKSk7Ci0gICAgVmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gaW5zdHJ1Y3Rpb24tPmFzPE9wQ2F0
Y2g+KCkubWV0YWRhdGEoZXhlYykuYnVmZmVyOworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2Rl
T2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9m
ZnNldCgpICsgM10udS5wb2ludGVyKTsKICAgICBKU1ZhbHVlKiBkYXRhQnVmZmVyID0gcmVpbnRl
cnByZXRfY2FzdDxKU1ZhbHVlKj4oZGZnQ29tbW9uLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRh
QnVmZmVyKCkpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBidWZmZXItPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDAyYjFhN2ZjMjg1MGY4
ZDE2YmU1NjIyOTMyN2U4MmUxZDJhOWU0NGUuLmI1OTcyMDE1MDEyNDkzOWQ5ZDlkMmQ3OWE5ZGJm
YjE5NmYwYTVkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC0zODYzLDcgKzM4NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2Rl
QmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgpOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChub2RlLT5vcmlnaW4uc2VtYW50aWMu
Ynl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmJh
c2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0
ZWNvZGVJbmRleF07CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZEpJVEFkZElDKGFyaXRoUHJvZmlsZSwgaW5zdHJ1Y3Rpb24pOwogICAgIGF1dG8gcmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsKICAgICBhdXRvIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwpAQCAtMzg4Nyw3ICszODg3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVD
b2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYXQobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpLnB0cigpOwor
ICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmYmFzZWxpbmVDb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpW25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4XTsKICAgICAg
ICAgSklUU3ViSUMqIHN1YklDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRo
UHJvZmlsZSwgaW5zdHJ1Y3Rpb24pOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9
IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CkBAIC00NTYxLDcgKzQ1NjEsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdhdGUoTm9kZSogbm9kZSkKIHsKICAgICBDb2Rl
QmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9j
a0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKLSAgICBjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpLnB0cigpOworICAgIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9ICZiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbbm9kZS0+
b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXhdOwogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUsIGluc3RydWN0aW9uKTsK
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1p
emU7CiAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0
ZTsKQEAgLTQ5MDMsNyArNDkwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aE11bChOb2RlKiBub2RlKQogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxv
Y2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5i
eXRlY29kZUluZGV4KTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0g
YmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5ieXRlY29kZUluZGV4KS5wdHIoKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gJmJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtub2RlLT5vcmlnaW4uc2VtYW50
aWMuYnl0ZWNvZGVJbmRleF07CiAgICAgICAgIEpJVE11bElDKiBtdWxJQyA9IG1faml0LmNvZGVC
bG9jaygpLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUsIGluc3RydWN0aW9uKTsKICAgICAgICAg
YXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAg
ICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGZiZjYx
ZDc3ZmM1MzljM2ExMzc5N2E5OWQxOWY1OWUzZjcwZTcxNTEuLjhiZjg2MDhmYmU3OTNmZWM2ZDc2
NWJkMTIyNjBjYWUxNTE3YzQ5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKQEAgLTE4NjMsNyArMTg2Myw3IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5i
YXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgp
OwotICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCkucHRyKCk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZiYXNlbGlu
ZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNv
ZGVJbmRleF07CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVBZGRPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZUFkZDsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRBZGRHZW5lcmF0
b3I+KGFyaXRoUHJvZmlsZSwgaW5zdHJ1Y3Rpb24sIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKLSAg
ICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmF0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgp
LnB0cigpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmYmFzZWxpbmVDb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpW21fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5k
ZXhdOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVTdWI7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihh
cml0aFByb2ZpbGUsIGluc3RydWN0aW9uLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbik7CkBAIC0xODkwLDcgKzE4OTAsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAog
ICAgICAgICB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNf
ZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1
ZT4+Ci0gICAgdm9pZCBjb21waWxlVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0
aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlVW5hcnlN
YXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24p
CiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogCkBAIC0xOTc2LDcgKzE5NzYs
NyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMx
Pjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxlQmluYXJ5TWF0
aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uKQorICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24s
IEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUg
PSBtX25vZGU7CiAgICAgICAgIApAQCAtMjE0Myw3ICsyMTQzLDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGgu
YmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNl
bGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMu
Ynl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSAmYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpW21fbm9kZS0+b3JpZ2luLnNl
bWFudGljLmJ5dGVjb2RlSW5kZXhdOwogICAgICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICAgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgICAgIGNvbXBpbGVC
aW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIGluc3RydWN0aW9uLCBy
ZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMjM5LDcgKzIy
MzksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgICAg
IENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5l
Q29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwot
ICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmF0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgpLnB0cigpOworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmJh
c2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVttX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5i
eXRlY29kZUluZGV4XTsKICAgICAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3Bl
cmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CiAgICAgICAgICAgICBjb21waWxlQmluYXJ5TWF0
aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCBpbnN0cnVjdGlvbiwgcmVwYXRjaGlu
Z0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjc3Niw3ICsyNzc2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQo
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KClbbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleF07CiAgICAgICAgIGF1dG8g
cmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICAg
ICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZTsKICAg
ICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCBp
bnN0cnVjdGlvbiwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggYjFkNGY4
OWU1NWUzNzE3YTEyZmI2NjBiZDA0ZmI4MjQxZWNjYzVmOS4uMTY0NDJiYzgxM2U0ZGMwZDAyODk3
N2E3NWYxMjUxOTkwM2U1NzRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwCkBAIC00NzQsMTAgKzQ3NCwxMCBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAgICAgICAvLyBG
b3Igbm93LCB3ZSB1c2UgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlIGluIHRoZSBhY3R1YWwgQ29k
ZUJsb2NrLiBJdCBpcyBPSyBzaW5jZSBjdXJyZW50IE5ld0FycmF5QnVmZmVyCiAgICAgICAgIC8v
IGFuZCBQaGFudG9tTmV3QXJyYXlCdWZmZXIgYXJlIGFsd2F5cyBib3VuZCB0byBhIHNwZWNpZmlj
IG9wX25ld19hcnJheV9idWZmZXIuCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gYmFz
ZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhtYXRlcmlhbGl6YXRp
b24tPm9yaWdpbigpLCBleGVjLT5jb2RlQmxvY2soKS0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsK
LSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYXQobWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5ieXRlY29kZUlu
ZGV4KS5wdHIoKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudEluc3RydWN0aW9uLT5p
czxPcE5ld0FycmF5QnVmZmVyPigpKTsKLSAgICAgICAgYXV0byBuZXdBcnJheUJ1ZmZlciA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheUJ1ZmZlcj4oKTsKLSAgICAgICAgQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSA9ICZuZXdBcnJheUJ1ZmZlci5tZXRhZGF0YShjb2Rl
QmxvY2spLmFycmF5QWxsb2NhdGlvblByb2ZpbGU7CisgICAgICAgIEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24gPSAmY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVttYXRlcmlhbGl6YXRp
b24tPm9yaWdpbigpLmJ5dGVjb2RlSW5kZXhdOworICAgICAgICBSRUxFQVNFX0FTU0VSVChJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBv
cF9uZXdfYXJyYXlfYnVmZmVyKTsKKyAgICAgICAgYXV0byogbmV3QXJyYXlCdWZmZXIgPSBiaXR3
aXNlX2Nhc3Q8T3BOZXdBcnJheUJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAg
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5hcnJheUFsbG9jYXRpb25Qcm9maWxlOwogCiAgICAgICAgIC8vIEZJWE1FOiBTaGFyZSB0aGUg
Y29kZSB3aXRoIENvbW1vblNsb3dQYXRocy4gQ3VycmVudGx5LCBjb2RlQmxvY2sgZXRjLiBhcmUg
c2xpZ2h0bHkgZGlmZmVyZW50LgogICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlID0g
cHJvZmlsZS0+c2VsZWN0SW5kZXhpbmdUeXBlKCk7CkBAIC00OTUsNyArNDk1LDcgQEAgZXh0ZXJu
ICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9T
UigKICAgICAgICAgICAgIC8vIFdlIGFsc28gY2Fubm90IGFsbG9jYXRlIGEgbmV3IGJ1dHRlcmZs
eSBmcm9tIGNvbXBpbGF0aW9uIHRocmVhZHMgc2luY2UgaXQncyBpbnZhbGlkIHRvIGFsbG9jYXRl
IGNlbGxzIGZyb20KICAgICAgICAgICAgIC8vIGEgY29tcGlsYXRpb24gdGhyZWFkLgogICAgICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICAgICAgICAgIGNvZGVCbG9jay0+Y29u
c3RhbnRSZWdpc3RlcihuZXdBcnJheUJ1ZmZlci5pbW11dGFibGVCdXR0ZXJmbHkub2Zmc2V0KCkp
LnNldCh2bSwgY29kZUJsb2NrLCBpbW11dGFibGVCdXR0ZXJmbHkpOworICAgICAgICAgICAgY29k
ZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKG5ld0FycmF5QnVmZmVyLT5pbW11dGFibGVCdXR0ZXJm
bHkoKSkuc2V0KHZtLCBjb2RlQmxvY2ssIGltbXV0YWJsZUJ1dHRlcmZseSk7CiAgICAgICAgICAg
ICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODM4ZWQzZmVlMDRl
NmJmNDg1Yjg0YWE2OTViOGZmMWUzZTlkMGYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCkBAIC0wLDAgKzEsMzAyIEBACisj
ISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgVGhpcyB0b29sIHByb2Nlc3NlcyB0aGUgYnl0ZWNvZGUgbGlzdCB0byBjcmVhdGUg
Qnl0ZWNvZGVzLmggYW5kIEluaXRCeXRlY29kZXMuYXNtCisKK2ltcG9ydCBoYXNobGliCitpbXBv
cnQganNvbgoraW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5
cworCitjQ29weXJpZ2h0TXNnID0gIiIiLyoKKyogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKgorKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisqCisqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisqIEF1dG9nZW5lcmF0ZWQgZnJvbSAlcywgZG8gbm90IG1vZGlmeS4KKyovCisKKyIiIgor
Cithc21Db3B5cmlnaHRNc2cgPSAiIiIjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IyBBdXRvZ2VuZXJhdGVkIGZyb20gJXMsIGRvIG5vdCBtb2RpZnkuCisKKyIiIgorZGVmIG9wZW5P
ckV4aXQocGF0aCwgbW9kZSk6CisgICAgdHJ5OgorICAgICAgICByZXR1cm4gb3BlbihwYXRoLCBt
b2RlKQorICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIHByaW50KCJJL08gZXJyb3Ig
b3BlbmluZyB7MH0sICh7MX0pOiB7Mn0iLmZvcm1hdChwYXRoLCBlLmVycm5vLCBlLnN0cmVycm9y
KSkKKyAgICAgICAgZXhpdCgxKQorCitkZWYgaGFzaEZpbGUoZmlsZSk6CisgICAgc2hhMSA9IGhh
c2hsaWIuc2hhMSgpCisgICAgZmlsZS5zZWVrKDApCisgICAgZm9yIGxpbmUgaW4gZmlsZToKKyAg
ICAgICAgc2hhMS51cGRhdGUobGluZSkKKworICAgIGZpbGUuc2VlaygwKQorCisgICAgcmV0dXJu
IHNoYTEuaGV4ZGlnZXN0KCkKKworCitkZWYgdG9DcHAobmFtZSk6CisgICAgY2FtZWxDYXNlID0g
cmUuc3ViKHInKFteYS16MC05XS4pJywgbGFtYmRhIGM6IGMuZ3JvdXAoMClbMV0udXBwZXIoKSwg
bmFtZSkKKyAgICBDYW1lbENhc2UgPSBjYW1lbENhc2VbOjFdLnVwcGVyKCkgKyBjYW1lbENhc2Vb
MTpdCisgICAgcmV0dXJuIENhbWVsQ2FzZQorCisKK2RlZiB3cml0ZUluc3RydWN0aW9uQWNjZXNz
b3IoYnl0ZWNvZGVIRmlsZSwgdHlwZU5hbWUsIG5hbWUpOgorICAgIGJ5dGVjb2RlSEZpbGUud3Jp
dGUoIiAgICB7MH0mIHsxfSgpIHt7IHJldHVybiAqYml0d2lzZV9jYXN0PHswfSo+KCZtX3sxfSk7
IH19XG4iLmZvcm1hdCh0eXBlTmFtZSwgbmFtZSkpCisgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgi
ICAgIGNvbnN0IHswfSYgezF9KCkgY29uc3Qge3sgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8Y29uc3Qg
ezB9Kj4oJm1fezF9KTsgfX1cbiIuZm9ybWF0KHR5cGVOYW1lLCBuYW1lKSkKKworCitkZWYgd3Jp
dGVJbnN0cnVjdGlvbk1lbWJlcihieXRlY29kZUhGaWxlLCB0eXBlTmFtZSwgbmFtZSk6CisgICAg
Ynl0ZWNvZGVIRmlsZS53cml0ZSgiICAgIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZih7MH0p
LCBzaXplb2YoSW5zdHJ1Y3Rpb24pPjo6dHlwZSBtX3sxfTtcbiIuZm9ybWF0KHR5cGVOYW1lLCBu
YW1lKSkKKyAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
ezB9KSA8PSBzaXplb2YoSW5zdHJ1Y3Rpb24pLCBcIlNpemUgb2YgezB9IHNob3VsZG4ndCBiZSBi
aWdnZXIgdGhhbiBhbiBJbnN0cnVjdGlvbi5cIik7XG4iLmZvcm1hdCh0eXBlTmFtZSwgbmFtZSkp
CisKK2RlZiB3cml0ZVN0cnVjdChieXRlY29kZUhGaWxlLCBieXRlY29kZSk6CisgICAgYnl0ZWNv
ZGVIRmlsZS53cml0ZSgic3RydWN0IHswfSB7e1xuIi5mb3JtYXQodG9DcHAoYnl0ZWNvZGVbIm5h
bWUiXSkpKQorICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoInB1YmxpYzpcbiIpCisKKyAgICB3cml0
ZUluc3RydWN0aW9uQWNjZXNzb3IoYnl0ZWNvZGVIRmlsZSwgIk9wY29kZSIsICJvcGNvZGUiKQor
ICAgIGZvciBvZmZzZXQgaW4gYnl0ZWNvZGVbIm9mZnNldHMiXToKKyAgICAgICAgZm9yIG5hbWUs
IHR5cGVOYW1lIGluIG9mZnNldC5pdGVtcygpOgorICAgICAgICAgICAgd3JpdGVJbnN0cnVjdGlv
bkFjY2Vzc29yKGJ5dGVjb2RlSEZpbGUsIHR5cGVOYW1lLCBuYW1lKQorCisgICAgYnl0ZWNvZGVI
RmlsZS53cml0ZSgiXG5wcml2YXRlOlxuIikKKyAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjtcblxuIikKKworICAgIHdyaXRlSW5z
dHJ1Y3Rpb25NZW1iZXIoYnl0ZWNvZGVIRmlsZSwgIk9wY29kZSIsICJvcGNvZGUiKQorICAgIGZv
ciBvZmZzZXQgaW4gYnl0ZWNvZGVbIm9mZnNldHMiXToKKyAgICAgICAgZm9yIG5hbWUsIHR5cGVO
YW1lIGluIG9mZnNldC5pdGVtcygpOgorICAgICAgICAgICAgd3JpdGVJbnN0cnVjdGlvbk1lbWJl
cihieXRlY29kZUhGaWxlLCB0eXBlTmFtZSwgbmFtZSkKKyAgICBieXRlY29kZUhGaWxlLndyaXRl
KCJ9O1xuXG4iKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgcGFyc2VyID0g
b3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gInVzYWdlOiAlcHJvZyBbLS1ieXRlY29kZXNf
aCA8RklMRT5dIFstLWluaXRfYnl0ZWNvZGVzX2FzbSA8RklMRT5dIDxieXRlY29kZS1qc29uLWZp
bGU+IikKKyAgICBwYXJzZXIuYWRkX29wdGlvbigiLWIiLCAiLS1ieXRlY29kZXNfaCIsIGRlc3Qg
PSAiYnl0ZWNvZGVzSEZpbGVOYW1lIiwgaGVscCA9ICJnZW5lcmF0ZSBieXRlY29kZXMgbWFjcm8g
LmggRklMRSIsIG1ldGF2YXIgPSAiRklMRSIpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1zIiwg
Ii0tYnl0ZWNvZGVfc3RydWN0c19oIiwgZGVzdCA9ICJieXRlY29kZVN0cnVjdHNIRmlsZU5hbWUi
LCBoZWxwID0gImdlbmVyYXRlIGJ5dGVjb2RlcyBtYWNybyAuaCBGSUxFIiwgbWV0YXZhciA9ICJG
SUxFIikKKyAgICBwYXJzZXIuYWRkX29wdGlvbigiLWEiLCAiLS1pbml0X2J5dGVjb2Rlc19hc20i
LCBkZXN0ID0gImluaXRBU01GaWxlTmFtZSIsIGhlbHA9ImdlbmVyYXRlIEFTTSBieXRlY29kZXMg
aW5pdCBGSUxFIiwgbWV0YXZhciA9ICJGSUxFIikKKyAgICAob3B0aW9ucywgYXJncykgPSBwYXJz
ZXIucGFyc2VfYXJncygpCisKKyAgICBpZiBsZW4oYXJncykgIT0gMToKKyAgICAgICAgcGFyc2Vy
LmVycm9yKCJtaXNzaW5nIDxieXRlY29kZS1qc29uLWZpbGU+IikKKworICAgIGJ5dGVjb2RlSlNP
TkZpbGUgPSBhcmdzWzBdCisgICAgYnl0ZWNvZGVGaWxlID0gb3Blbk9yRXhpdChieXRlY29kZUpT
T05GaWxlLCAicmIiKQorICAgIHNoYTFIYXNoID0gaGFzaEZpbGUoYnl0ZWNvZGVGaWxlKQorCisg
ICAgaEZpbGVIYXNoU3RyaW5nID0gIi8vIFNIQTFIYXNoOiB7MH1cbiIuZm9ybWF0KHNoYTFIYXNo
KQorICAgIGFzbUZpbGVIYXNoU3RyaW5nID0gIiMgU0hBMUhhc2g6IHswfVxuIi5mb3JtYXQoc2hh
MUhhc2gpCisKKyAgICBieXRlY29kZUhGaWxlbmFtZSA9IG9wdGlvbnMuYnl0ZWNvZGVzSEZpbGVO
YW1lCisgICAgYnl0ZWNvZGVTdHJ1Y3RzSEZpbGVuYW1lID0gb3B0aW9ucy5ieXRlY29kZVN0cnVj
dHNIRmlsZU5hbWUKKyAgICBpbml0QVNNRmlsZU5hbWUgPSBvcHRpb25zLmluaXRBU01GaWxlTmFt
ZQorCisgICAgaWYgbm90IGJ5dGVjb2RlSEZpbGVuYW1lIGFuZCBub3QgaW5pdEFTTUZpbGVOYW1l
IGFuZCBub3QgYnl0ZWNvZGVTdHJ1Y3RzSEZpbGVuYW1lOgorICAgICAgICBwYXJzZXIucHJpbnRf
aGVscCgpCisgICAgICAgIGV4aXQoMCkKKworICAgIG5lZWRUb0dlbmVyYXRlID0gRmFsc2UKKwor
ICAgIGlmIGJ5dGVjb2RlSEZpbGVuYW1lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRl
Y29kZUhSZWFkRmlsZSA9IG9wZW4oYnl0ZWNvZGVIRmlsZW5hbWUsICJyYiIpCisKKyAgICAgICAg
ICAgIGhhc2hMaW5lID0gYnl0ZWNvZGVIUmVhZEZpbGUucmVhZGxpbmUoKQorICAgICAgICAgICAg
aWYgaGFzaExpbmUgIT0gaEZpbGVIYXNoU3RyaW5nOgorICAgICAgICAgICAgICAgIG5lZWRUb0dl
bmVyYXRlID0gVHJ1ZQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBuZWVkVG9HZW5lcmF0
ZSA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ5dGVjb2RlSFJlYWRGaWxlLmNs
b3NlKCkKKworICAgIGlmIGJ5dGVjb2RlU3RydWN0c0hGaWxlbmFtZToKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgYnl0ZWNvZGVTdHJ1Y3RzSFJlYWRGaWxlID0gb3BlbihieXRlY29kZVN0cnVj
dHNIRmlsZW5hbWUsICJyYiIpCisKKyAgICAgICAgICAgIGhhc2hMaW5lID0gYnl0ZWNvZGVTdHJ1
Y3RzSFJlYWRGaWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIGhhc2hMaW5lICE9IGhGaWxl
SGFzaFN0cmluZzoKKyAgICAgICAgICAgICAgICBuZWVkVG9HZW5lcmF0ZSA9IFRydWUKKyAgICAg
ICAgZXhjZXB0OgorICAgICAgICAgICAgbmVlZFRvR2VuZXJhdGUgPSBUcnVlCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBieXRlY29kZVN0cnVjdHNIUmVhZEZpbGUuY2xvc2UoKQorCisgICAg
aWYgaW5pdEFTTUZpbGVOYW1lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbml0Qnl0ZWNv
ZGVzUmVhZEZpbGUgPSBvcGVuKGluaXRBU01GaWxlTmFtZSwgInJiIikKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaGFzaExpbmUgPSBpbml0Qnl0ZWNvZGVzUmVhZEZpbGUucmVhZGxpbmUoKQor
ICAgICAgICAgICAgaWYgaGFzaExpbmUgIT0gYXNtRmlsZUhhc2hTdHJpbmc6CisgICAgICAgICAg
ICAgICAgbmVlZFRvR2VuZXJhdGUgPSBUcnVlCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAg
IG5lZWRUb0dlbmVyYXRlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW5pdEJ5
dGVjb2Rlc1JlYWRGaWxlLmNsb3NlKCkKKworICAgIGlmIG5vdCBuZWVkVG9HZW5lcmF0ZToKKyAg
ICAgICAgZXhpdCgwKQorCisgICAgaWYgYnl0ZWNvZGVIRmlsZW5hbWU6CisgICAgICAgIGJ5dGVj
b2RlSEZpbGUgPSBvcGVuT3JFeGl0KGJ5dGVjb2RlSEZpbGVuYW1lLCAidyIpCisKKyAgICBpZiBi
eXRlY29kZVN0cnVjdHNIRmlsZW5hbWU6CisgICAgICAgIGJ5dGVjb2RlU3RydWN0c0hGaWxlID0g
b3Blbk9yRXhpdChieXRlY29kZVN0cnVjdHNIRmlsZW5hbWUsICJ3IikKKworICAgIGlmIGluaXRB
U01GaWxlTmFtZToKKyAgICAgICAgaW5pdEJ5dGVjb2Rlc0ZpbGUgPSBvcGVuT3JFeGl0KGluaXRB
U01GaWxlTmFtZSwgInciKQorCisgICAgdHJ5OgorICAgICAgICBieXRlY29kZVNlY3Rpb25zID0g
anNvbi5sb2FkKGJ5dGVjb2RlRmlsZSwgZW5jb2RpbmcgPSAidXRmLTgiKQorICAgIGV4Y2VwdDoK
KyAgICAgICAgcHJpbnQoIlVuZXhwZWN0ZWQgZXJyb3IgcGFyc2luZyB7MH06IHsxfSIuZm9ybWF0
KGJ5dGVjb2RlSlNPTkZpbGUsIHN5cy5leGNfaW5mbygpKSkKKworICAgIGlmIGJ5dGVjb2RlSEZp
bGVuYW1lOgorICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKGhGaWxlSGFzaFN0cmluZykKKyAg
ICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZShjQ29weXJpZ2h0TXNnICUgYnl0ZWNvZGVKU09ORmls
ZSkKKyAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI3ByYWdtYSBvbmNlXG5cbiIpCisKKyAg
ICBpZiBieXRlY29kZVN0cnVjdHNIRmlsZW5hbWU6CisgICAgICAgIGJ5dGVjb2RlU3RydWN0c0hG
aWxlLndyaXRlKGhGaWxlSGFzaFN0cmluZykKKyAgICAgICAgYnl0ZWNvZGVTdHJ1Y3RzSEZpbGUu
d3JpdGUoY0NvcHlyaWdodE1zZyAlIGJ5dGVjb2RlSlNPTkZpbGUpCisgICAgICAgIGJ5dGVjb2Rl
U3RydWN0c0hGaWxlLndyaXRlKCIjcHJhZ21hIG9uY2VcblxuIikKKyAgICAgICAgYnl0ZWNvZGVT
dHJ1Y3RzSEZpbGUud3JpdGUoIiNpbmNsdWRlIFwiSW5zdHJ1Y3Rpb24uaFwiXG4iKQorICAgICAg
ICBieXRlY29kZVN0cnVjdHNIRmlsZS53cml0ZSgiXG4iKQorCisgICAgaWYgaW5pdEFTTUZpbGVO
YW1lOgorICAgICAgICBpbml0Qnl0ZWNvZGVzRmlsZS53cml0ZShhc21GaWxlSGFzaFN0cmluZykK
KyAgICAgICAgaW5pdEJ5dGVjb2Rlc0ZpbGUud3JpdGUoYXNtQ29weXJpZ2h0TXNnICUgYnl0ZWNv
ZGVKU09ORmlsZSkKKyAgICAgICAgaW5pdEFTTUJ5dGVjb2RlTnVtID0gMAorCisgICAgZm9yIHNl
Y3Rpb24gaW4gYnl0ZWNvZGVTZWN0aW9uczoKKyAgICAgICAgaWYgYnl0ZWNvZGVIRmlsZW5hbWUg
YW5kIHNlY3Rpb25bJ2VtaXRJbkhGaWxlJ106CisgICAgICAgICAgICBieXRlY29kZUhGaWxlLndy
aXRlKCIjZGVmaW5lIEZPUl9FQUNIX3swfV9JRChtYWNybykgXFxcbiIuZm9ybWF0KHNlY3Rpb25b
Im1hY3JvTmFtZUNvbXBvbmVudCJdKSkKKyAgICAgICAgICAgIGZpcnN0TWFjcm8gPSBUcnVlCisg
ICAgICAgICAgICBkZWZhdWx0TGVuZ3RoID0gMQorICAgICAgICAgICAgaWYgImRlZmF1bHRMZW5n
dGgiIGluIHNlY3Rpb246CisgICAgICAgICAgICAgICAgZGVmYXVsdExlbmd0aCA9IHNlY3Rpb25b
ImRlZmF1bHRMZW5ndGgiXQorCisgICAgICAgICAgICBieXRlY29kZU51bSA9IDAKKyAgICAgICAg
ICAgIGZvciBieXRlY29kZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKKyAgICAgICAgICAgICAg
ICBpZiBub3QgZmlyc3RNYWNybzoKKyAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53
cml0ZSgiIFxcXG4iKQorCisgICAgICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAor
ICAgICAgICAgICAgICAgIGlmICJsZW5ndGgiIGluIGJ5dGVjb2RlOgorICAgICAgICAgICAgICAg
ICAgICBsZW5ndGggPSBieXRlY29kZVsibGVuZ3RoIl0KKyAgICAgICAgICAgICAgICBlbGlmICJv
ZmZzZXRzIiBpbiBieXRlY29kZToKKyAgICAgICAgICAgICAgICAgICAgIyBBZGQgb25lIGZvciB0
aGUgb3Bjb2RlCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbihieXRlY29kZVsib2Zm
c2V0cyJdKSArIDEKKworICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiAgICBt
YWNybyh7MH0sIHsxfSkiLmZvcm1hdChieXRlY29kZVsibmFtZSJdLCBsZW5ndGgpKQorICAgICAg
ICAgICAgICAgIGZpcnN0TWFjcm8gPSBGYWxzZQorICAgICAgICAgICAgICAgIGJ5dGVjb2RlTnVt
ID0gYnl0ZWNvZGVOdW0gKyAxCisKKyAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIlxu
XG4iKQorICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBOVU1CRVJfT0Zf
ezB9X0lEUyB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIGJ5
dGVjb2RlTnVtKSkKKworCisgICAgICAgIGlmIGJ5dGVjb2RlU3RydWN0c0hGaWxlbmFtZSBhbmQg
c2VjdGlvblsnZW1pdEluU3RydWN0c0ZpbGUnXToKKyAgICAgICAgICAgIGJ5dGVjb2RlU3RydWN0
c0hGaWxlLndyaXRlKCJuYW1lc3BhY2UgSlNDIHtcblxuIikKKworICAgICAgICAgICAgZm9yIGJ5
dGVjb2RlIGluIHNlY3Rpb25bImJ5dGVjb2RlcyJdOgorICAgICAgICAgICAgICAgIGlmIG5vdCAi
b2Zmc2V0cyIgaW4gYnl0ZWNvZGU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgICAgICAgICAgd3JpdGVTdHJ1Y3QoYnl0ZWNvZGVTdHJ1Y3RzSEZpbGUsIGJ5dGVjb2RlKQor
CisgICAgICAgICAgICBieXRlY29kZVN0cnVjdHNIRmlsZS53cml0ZSgifSAvLyBuYW1lc3BhY2Ug
SlNDIFxuIikKKworICAgICAgICBpZiBieXRlY29kZUhGaWxlbmFtZSBhbmQgc2VjdGlvblsnZW1p
dE9wY29kZUlEU3RyaW5nVmFsdWVzSW5IRmlsZSddOgorICAgICAgICAgICAgYnl0ZWNvZGVOdW0g
PSAwCisgICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4gc2VjdGlvblsiYnl0ZWNvZGVzIl06Cisg
ICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSB7MH1fdmFsdWVfc3Ry
aW5nIFwiezF9XCJcbiIuZm9ybWF0KGJ5dGVjb2RlWyJuYW1lIl0sIGJ5dGVjb2RlTnVtKSkKKyAg
ICAgICAgICAgICAgICBmaXJzdE1hY3JvID0gRmFsc2UKKyAgICAgICAgICAgICAgICBieXRlY29k
ZU51bSA9IGJ5dGVjb2RlTnVtICsgMQorCisgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRl
KCJcbiIpICAgICAgICAgICAgCisKKyAgICAgICAgaWYgaW5pdEFTTUZpbGVOYW1lIGFuZCBzZWN0
aW9uWydlbWl0SW5BU01GaWxlJ106CisgICAgICAgICAgICBwcmVmaXggPSAiIgorICAgICAgICAg
ICAgaWYgImFzbVByZWZpeCIgaW4gc2VjdGlvbjoKKyAgICAgICAgICAgICAgICBwcmVmaXggPSBz
ZWN0aW9uWyJhc21QcmVmaXgiXQorICAgICAgICAgICAgZm9yIGJ5dGVjb2RlIGluIHNlY3Rpb25b
ImJ5dGVjb2RlcyJdOgorICAgICAgICAgICAgICAgIGluaXRCeXRlY29kZXNGaWxlLndyaXRlKCJz
ZXRFbnRyeUFkZHJlc3MoezB9LCBfezF9ezJ9KVxuIi5mb3JtYXQoaW5pdEFTTUJ5dGVjb2RlTnVt
LCBwcmVmaXgsIGJ5dGVjb2RlWyJuYW1lIl0pKQorICAgICAgICAgICAgICAgIGluaXRBU01CeXRl
Y29kZU51bSA9IGluaXRBU01CeXRlY29kZU51bSArIDEKKworICAgIGlmIGJ5dGVjb2RlSEZpbGVu
YW1lOgorICAgICAgICBieXRlY29kZUhGaWxlLmNsb3NlKCkKKworICAgIGlmIGluaXRBU01GaWxl
TmFtZToKKyAgICAgICAgaW5pdEJ5dGVjb2Rlc0ZpbGUuY2xvc2UoKQorCisgICAgYnl0ZWNvZGVG
aWxlLmNsb3NlKCkKKworICAgIGV4aXQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvQXJndW1lbnQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0FyZ3VtZW50LnJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWRkZjUwNWM0
MTQ1YjFiN2JkZjI0YzcxOWUzNjg5ZWZmYjVjMTI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJn
dW1lbnQucmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0jIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1yZXF1aXJlX3JlbGF0aXZlICdGaXRzJwotCi1jbGFzcyBB
cmd1bWVudAotICAgIGF0dHJfcmVhZGVyIDpuYW1lCi0gICAgYXR0cl9yZWFkZXIgOmluZGV4Ci0K
LSAgICBkZWYgaW5pdGlhbGl6ZShuYW1lLCB0eXBlLCBpbmRleCkKLSAgICAgICAgQG9wdGlvbmFs
ID0gbmFtZVstMV0gPT0gIj8iCi0gICAgICAgIEBuYW1lID0gQG9wdGlvbmFsID8gbmFtZVswLi4u
LTFdIDogbmFtZQotICAgICAgICBAdHlwZSA9IHR5cGUKLSAgICAgICAgQGluZGV4ID0gaW5kZXgK
LSAgICBlbmQKLQotICAgIGRlZiBmaWVsZAotICAgICAgICAiI3tAdHlwZS50b19zfSAje0BuYW1l
fTsiCi0gICAgZW5kCi0KLSAgICBkZWYgY3JlYXRlX3BhcmFtCi0gICAgICAgICIje0B0eXBlLnRv
X3N9ICN7QG5hbWV9IgotICAgIGVuZAotCi0gICAgZGVmIGZpdHNfY2hlY2soc2l6ZSkKLSAgICAg
ICAgRml0czo6Y2hlY2sgc2l6ZSwgQG5hbWUsIEB0eXBlCi0gICAgZW5kCi0KLSAgICBkZWYgZml0
c193cml0ZShzaXplKQotICAgICAgICBGaXRzOjp3cml0ZSBzaXplLCBAbmFtZSwgQHR5cGUKLSAg
ICBlbmQKLQotICAgIGRlZiBhc3NlcnRfZml0cyhzaXplKQotICAgICAgICAiQVNTRVJUKCgje2Zp
dHNfY2hlY2sgc2l6ZX0pKTsiCi0gICAgZW5kCi0KLSAgICBkZWYgbG9hZF9mcm9tX3N0cmVhbShp
bmRleCwgc2l6ZSkKLSAgICAgICAgIiN7QG5hbWV9KCN7Rml0czo6Y29udmVydChzaXplLCAic3Ry
ZWFtWyN7aW5kZXh9XSIsIEB0eXBlKX0pIgotICAgIGVuZAotCi0gICAgZGVmIHNldHRlcgotICAg
ICAgICA8PC1FT0YKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAgICAg
dm9pZCBzZXQje2NhcGl0YWxpemVkX25hbWV9KCN7QHR5cGUudG9fc30gdmFsdWUsIEZ1bmN0b3Ig
ZnVuYykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGlzV2lkZSgpKQotICAgICAgICAgICAg
ICAgIHNldCN7Y2FwaXRhbGl6ZWRfbmFtZX08T3Bjb2RlU2l6ZTo6V2lkZT4odmFsdWUsIGZ1bmMp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNldCN7Y2FwaXRhbGl6ZWRfbmFt
ZX08T3Bjb2RlU2l6ZTo6TmFycm93Pih2YWx1ZSwgZnVuYyk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0ZW1wbGF0ZSA8T3Bjb2RlU2l6ZSBzaXplLCB0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICB2
b2lkIHNldCN7Y2FwaXRhbGl6ZWRfbmFtZX0oI3tAdHlwZS50b19zfSB2YWx1ZSwgRnVuY3RvciBm
dW5jKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoISN7Rml0czo6Y2hlY2sgInNpemUiLCAi
dmFsdWUiLCBAdHlwZX0pCi0gICAgICAgICAgICAgICAgdmFsdWUgPSBmdW5jKCk7Ci0gICAgICAg
ICAgICBhdXRvKiBzdHJlYW0gPSByZWludGVycHJldF9jYXN0PHR5cGVuYW1lIFR5cGVCeVNpemU8
c2l6ZT46OnR5cGUqPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0aGlzKSArICN7QGluZGV4
fSAqIHNpemUgKyBQYWRkaW5nQnlTaXplPHNpemU+Ojp2YWx1ZSk7Ci0gICAgICAgICAgICAqc3Ry
ZWFtID0gI3tGaXRzOjpjb252ZXJ0ICJzaXplIiwgInZhbHVlIiwgQHR5cGV9OwotICAgICAgICB9
Ci0gICAgICAgIEVPRgotICAgIGVuZAotCi0gICAgZGVmIGNhcGl0YWxpemVkX25hbWUKLSAgICAg
ICAgQGNhcGl0YWxpemVkX25hbWUgfHw9IEBuYW1lLnRvX3Muc3BsaXQoJ18nKS5tYXAgZG8gfHdv
cmR8Ci0gICAgICAgICAgICBsZXR0ZXJzID0gd29yZC5zcGxpdCgnJykKLSAgICAgICAgICAgIGxl
dHRlcnMuZmlyc3QudXBjYXNlIQotICAgICAgICAgICAgbGV0dGVycy5qb2luCi0gICAgICAgIGVu
ZC5qb2luCi0gICAgZW5kCi1lbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvQXNzZXJ0aW9uLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9B
c3NlcnRpb24ucmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYjVjMzNiNTIzY2Fj
YmVjN2MzMGFmMmY5OGExN2FiMGRmYjRhYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9Bc3NlcnRp
b24ucmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0jIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1jbGFzcyBBc3NlcnRpb25FcnJvciA8IFJ1bnRpbWVFcnJvcgot
ICAgIGRlZiBpbml0aWFsaXplKG1zZykKLSAgICAgICAgc3VwZXIKLSAgICBlbmQKLWVuZAotCi1k
ZWYgYXNzZXJ0KG1zZywgJmJsb2NrKQotICAgIHJhaXNlIEFzc2VydGlvbkVycm9yLCBtc2cgdW5s
ZXNzIHlpZWxkCi1lbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YjM3MGE5ZmU5YjI4YzM1YmUzN2NiNjE0YzIzZTlk
NTUwODViMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIC9kZXYvbnVsbApAQCAt
MSwxNjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotcmVx
dWlyZV9yZWxhdGl2ZSAnQXNzZXJ0aW9uJwotcmVxdWlyZV9yZWxhdGl2ZSAnU2VjdGlvbicKLXJl
cXVpcmVfcmVsYXRpdmUgJ1RlbXBsYXRlJwotcmVxdWlyZV9yZWxhdGl2ZSAnVHlwZScKLXJlcXVp
cmVfcmVsYXRpdmUgJ0dlbmVyYXRlZEZpbGUnCi0KLW1vZHVsZSBEU0wKLSAgICBAc2VjdGlvbnMg
PSBbXQotICAgIEBjdXJyZW50X3NlY3Rpb24gPSBuaWwKLSAgICBAY29udGV4dCA9IGJpbmRpbmco
KQotICAgIEBuYW1lc3BhY2VzID0gW10KLQotICAgIGRlZiBzZWxmLmJlZ2luX3NlY3Rpb24obmFt
ZSwgY29uZmlnPXt9KQotICAgICAgICBhc3NlcnQoIm11c3QgY2FsbCBgZW5kX3NlY3Rpb25gIGJl
Zm9yZSBiZWdpbm5pbmcgYSBuZXcgc2VjdGlvbiIpIHsgQGN1cnJlbnRfc2VjdGlvbi5uaWw/IH0K
LSAgICAgICAgQGN1cnJlbnRfc2VjdGlvbiA9IFNlY3Rpb24ubmV3IG5hbWUsIGNvbmZpZwotICAg
IGVuZAotCi0gICAgZGVmIHNlbGYuZW5kX3NlY3Rpb24obmFtZSkKLSAgICAgICAgYXNzZXJ0KCJj
dXJyZW50IHNlY3Rpb24ncyBuYW1lIGlzIGAje0BjdXJyZW50X3NlY3Rpb24ubmFtZX1gLCBidXQg
ZW5kX3NlY3Rpb24gd2FzIGNhbGxlZCB3aXRoIGAje25hbWV9YCIpIHsgQGN1cnJlbnRfc2VjdGlv
bi5uYW1lID09IG5hbWUgfQotICAgICAgICBAY3VycmVudF9zZWN0aW9uLnNvcnQhCi0gICAgICAg
IEBzZWN0aW9ucyA8PCBAY3VycmVudF9zZWN0aW9uCi0gICAgICAgIEBjdXJyZW50X3NlY3Rpb24g
PSBuaWwKLSAgICBlbmQKLQotICAgIGRlZiBzZWxmLm9wKG5hbWUsIGNvbmZpZyA9IHt9KQotICAg
ICAgICBhc3NlcnQoImBvcGAgY2FuIG9ubHkgYmUgY2FsbGVkIGluIGJldHdlZW4gYGJlZ2luX3Nl
Y3Rpb25gIGFuZCBgZW5kX3NlY3Rpb25gIikgeyBub3QgQGN1cnJlbnRfc2VjdGlvbi5uaWw/IH0K
LSAgICAgICAgQGN1cnJlbnRfc2VjdGlvbi5hZGRfb3Bjb2RlKG5hbWUsIGNvbmZpZykKLSAgICBl
bmQKLQotICAgIGRlZiBzZWxmLm9wX2dyb3VwKGRlc2MsIG9wcywgY29uZmlnKQotICAgICAgICBh
c3NlcnQoImBvcF9ncm91cGAgY2FuIG9ubHkgYmUgY2FsbGVkIGluIGJldHdlZW4gYGJlZ2luX3Nl
Y3Rpb25gIGFuZCBgZW5kX3NlY3Rpb25gIikgeyBub3QgQGN1cnJlbnRfc2VjdGlvbi5uaWw/IH0K
LSAgICAgICAgQGN1cnJlbnRfc2VjdGlvbi5hZGRfb3Bjb2RlX2dyb3VwKGRlc2MsIG9wcywgY29u
ZmlnKQotICAgIGVuZAotCi0gICAgZGVmIHNlbGYudHlwZXModHlwZXMpCi0gICAgICAgIHR5cGVz
Lm1hcCBkbyB8dHlwZXwKLSAgICAgICAgICAgIHR5cGUgPSAoQG5hbWVzcGFjZXMgKyBbdHlwZV0p
LmpvaW4gIjo6IgotICAgICAgICAgICAgQGNvbnRleHQuZXZhbCgiI3t0eXBlfSA9IFR5cGUubmV3
ICcje3R5cGV9JyIpCi0gICAgICAgIGVuZAotICAgIGVuZAotCi0gICAgZGVmIHNlbGYudGVtcGxh
dGVzKHR5cGVzKQotICAgICAgICB0eXBlcy5tYXAgZG8gfHR5cGV8Ci0gICAgICAgICAgICB0eXBl
ID0gKEBuYW1lc3BhY2VzICsgW3R5cGVdKS5qb2luICI6OiIKLSAgICAgICAgICAgIEBjb250ZXh0
LmV2YWwoIiN7dHlwZX0gPSBUZW1wbGF0ZS5uZXcgJyN7dHlwZX0nIikKLSAgICAgICAgZW5kCi0g
ICAgZW5kCi0KLSAgICBkZWYgc2VsZi5uYW1lc3BhY2UobmFtZSkKLSAgICAgICAgQG5hbWVzcGFj
ZXMgPDwgbmFtZS50b19zCi0gICAgICAgIGN0eCA9IEBjb250ZXh0Ci0gICAgICAgIEBjb250ZXh0
ID0gQGNvbnRleHQuZXZhbCgiCi0gICAgICAgICAgICBtb2R1bGUgI3tuYW1lfQotICAgICAgICAg
ICAgICBkZWYgc2VsZi5nZXRfYmluZGluZwotICAgICAgICAgICAgICAgIGJpbmRpbmcoKQotICAg
ICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgI3tuYW1lfS5nZXRf
YmluZGluZwotICAgICAgICAgIikKLSAgICAgICAgeWllbGQKLSAgICAgICAgQGNvbnRleHQgPSBj
dHgKLSAgICAgICAgQG5hbWVzcGFjZXMucG9wCi0gICAgZW5kCi0KLSAgICBkZWYgc2VsZi5ydW4o
b3B0aW9ucykKLSAgICAgICAgYnl0ZWNvZGVMaXN0UGF0aCA9IG9wdGlvbnNbOmJ5dGVjb2RlTGlz
dF0KLSAgICAgICAgYnl0ZWNvZGVMaXN0ID0gRmlsZS5vcGVuKGJ5dGVjb2RlTGlzdFBhdGgpCi0g
ICAgICAgIEBjb250ZXh0LmV2YWwoYnl0ZWNvZGVMaXN0LnJlYWQsIGJ5dGVjb2RlTGlzdFBhdGgp
Ci0gICAgICAgIGFzc2VydCgibXVzdCBlbmQgbGFzdCBzZWN0aW9uIikgeyBAY3VycmVudF9zZWN0
aW9uLm5pbD8gfQotCi0gICAgICAgIHdyaXRlX2J5dGVjb2RlcyhieXRlY29kZUxpc3QsIG9wdGlv
bnNbOmJ5dGVjb2Rlc0ZpbGVuYW1lXSkKLSAgICAgICAgd3JpdGVfYnl0ZWNvZGVfc3RydWN0cyhi
eXRlY29kZUxpc3QsIG9wdGlvbnNbOmJ5dGVjb2RlU3RydWN0c0ZpbGVuYW1lXSkKLSAgICAgICAg
d3JpdGVfaW5pdF9hc20oYnl0ZWNvZGVMaXN0LCBvcHRpb25zWzppbml0QXNtRmlsZW5hbWVdKQot
ICAgICAgICB3cml0ZV9pbmRpY2VzKGJ5dGVjb2RlTGlzdCwgb3B0aW9uc1s6Ynl0ZWNvZGVJbmRp
Y2VzRmlsZW5hbWVdKQotICAgIGVuZAotCi0gICAgZGVmIHNlbGYud3JpdGVfYnl0ZWNvZGVzKGJ5
dGVjb2RlX2xpc3QsIGJ5dGVjb2Rlc19maWxlbmFtZSkKLSAgICAgICAgR2VuZXJhdGVkRmlsZTo6
Y3JlYXRlKGJ5dGVjb2Rlc19maWxlbmFtZSwgYnl0ZWNvZGVfbGlzdCkgZG8gfHRlbXBsYXRlfAot
ICAgICAgICAgICAgdGVtcGxhdGUucHJlZml4ID0gIiNwcmFnbWEgb25jZSIKLSAgICAgICAgICAg
IG51bV9vcGNvZGVzID0gQHNlY3Rpb25zLm1hcCgmOm9wY29kZXMpLmZsYXR0ZW4uc2l6ZQotICAg
ICAgICAgICAgdGVtcGxhdGUuYm9keSA9IDw8LUVPRgotICAgICAgICAgICAgICAgICN7QHNlY3Rp
b25zLm1hcCB7IHxzfCBzLmhlYWRlcl9oZWxwZXJzKG51bV9vcGNvZGVzKSB9LmpvaW4oIlxuIil9
Ci0KLSAgICAgICAgICAgICAgICAjZGVmaW5lIEZPUl9FQUNIX0JZVEVDT0RFX1NUUlVDVChtYWNy
bykgXFwKLSAgICAgICAgICAgICAgICAje29wY29kZXNfZm9yKDplbWl0X2luX3N0cnVjdHNfZmls
ZSkubWFwIHsgfG9wfCAibWFjcm8oI3tvcC5jYXBpdGFsaXplZF9uYW1lfSkgXFwiIH0uam9pbigi
XG4iKX0KLSAgICAgICAgICAgIEVPRgotICAgICAgICBlbmQKLSAgICBlbmQKLQotICAgIGRlZiBz
ZWxmLndyaXRlX2J5dGVjb2RlX3N0cnVjdHMoYnl0ZWNvZGVfbGlzdCwgYnl0ZWNvZGVfc3RydWN0
c19maWxlbmFtZSkKLSAgICAgICAgR2VuZXJhdGVkRmlsZTo6Y3JlYXRlKGJ5dGVjb2RlX3N0cnVj
dHNfZmlsZW5hbWUsIGJ5dGVjb2RlX2xpc3QpIGRvIHx0ZW1wbGF0ZXwKLSAgICAgICAgICAgIG9w
Y29kZXMgPSBvcGNvZGVzX2Zvcig6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGUpCi0KLSAgICAgICAgICAg
IHRlbXBsYXRlLnByZWZpeCA9IDw8LUVPRgotICAgICAgICAgICAgI3ByYWdtYSBvbmNlCi0KLSAg
ICAgICAgICAgICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKLSAgICAgICAgICAgICNpbmNsdWRl
ICJCeXRlY29kZUR1bXBlci5oIgotICAgICAgICAgICAgI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJh
dG9yLmgiCi0gICAgICAgICAgICAjaW5jbHVkZSAiRml0cy5oIgotICAgICAgICAgICAgI2luY2x1
ZGUgIkdldEJ5SWRNZXRhZGF0YS5oIgotICAgICAgICAgICAgI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCi0gICAgICAgICAgICAjaW5jbHVkZSAiT3Bjb2RlLmgiCi0gICAgICAgICAgICAjaW5jbHVk
ZSAiVG9UaGlzU3RhdHVzLmgiCi0KLSAgICAgICAgICAgIG5hbWVzcGFjZSBKU0MgewotICAgICAg
ICAgICAgRU9GCi0KLSAgICAgICAgICAgIHRlbXBsYXRlLmJvZHkgPSA8PC1FT0YKLSAgICAgICAg
ICAgICN7b3Bjb2Rlcy5tYXAoJjpzdHJ1Y3QpLmpvaW4oIlxuIil9Ci0KLSAgICAgICAgICAgICN7
T3Bjb2RlLmR1bXBfYnl0ZWNvZGUob3Bjb2Rlcyl9Ci0gICAgICAgICAgICBFT0YKLQotICAgICAg
ICAgICAgdGVtcGxhdGUuc3VmZml4ID0gIn0gLy8gbmFtZXNwYWNlIEpTQyIKLSAgICAgICAgZW5k
Ci0gICAgZW5kCi0KLSAgICBkZWYgc2VsZi53cml0ZV9pbml0X2FzbShieXRlY29kZV9saXN0LCBp
bml0X2FzbV9maWxlbmFtZSkKLSAgICAgICAgb3Bjb2RlcyA9IG9wY29kZXNfZm9yKDplbWl0X2lu
X2FzbV9maWxlKQotCi0gICAgICAgIEdlbmVyYXRlZEZpbGU6OmNyZWF0ZShpbml0X2FzbV9maWxl
bmFtZSwgYnl0ZWNvZGVfbGlzdCkgZG8gfHRlbXBsYXRlfAotICAgICAgICAgICAgdGVtcGxhdGUu
bXVsdGlsaW5lX2NvbW1lbnQgPSBuaWwKLSAgICAgICAgICAgIHRlbXBsYXRlLmxpbmVfY29tbWVu
dCA9ICIjIgotICAgICAgICAgICAgdGVtcGxhdGUuYm9keSA9IChvcGNvZGVzLm1hcC53aXRoX2lu
ZGV4KCY6c2V0X2VudHJ5X2FkZHJlc3MpICsgb3Bjb2Rlcy5tYXAud2l0aF9pbmRleCgmOnNldF9l
bnRyeV9hZGRyZXNzX3dpZGUpKSAuam9pbigiXG4iKQotICAgICAgICBlbmQKLSAgICBlbmQKLQot
ICAgIGRlZiBzZWxmLndyaXRlX2luZGljZXMoYnl0ZWNvZGVfbGlzdCwgaW5kaWNlc19maWxlbmFt
ZSkKLSAgICAgICAgb3Bjb2RlcyA9IG9wY29kZXNfZm9yKDplbWl0X2luX3N0cnVjdHNfZmlsZSkK
LQotICAgICAgICBHZW5lcmF0ZWRGaWxlOjpjcmVhdGUoaW5kaWNlc19maWxlbmFtZSwgYnl0ZWNv
ZGVfbGlzdCkgZG8gfHRlbXBsYXRlfAotICAgICAgICAgICAgdGVtcGxhdGUucHJlZml4ID0gIm5h
bWVzcGFjZSBKU0MgeyIKLSAgICAgICAgICAgIHRlbXBsYXRlLmJvZHkgPSBvcGNvZGVzLm1hcCgm
OnN0cnVjdF9pbmRpY2VzKS5qb2luKCJcbiIpCi0gICAgICAgICAgICB0ZW1wbGF0ZS5zdWZmaXgg
PSAifSAvLyBuYW1lc3BhY2UgSlNDIgotICAgICAgICBlbmQKLSAgICBlbmQKLQotICAgIGRlZiBz
ZWxmLm9wY29kZXNfZm9yKGZpbGUpCi0gICAgICAgIHNlY3Rpb25zID0gQHNlY3Rpb25zLnNlbGVj
dCB7IHxzfCBzLmNvbmZpZ1tmaWxlXSB9Ci0gICAgICAgIHNlY3Rpb25zLm1hcCgmOm9wY29kZXMp
LmZsYXR0ZW4KLSAgICBlbmQKLWVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9GaXRzLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9GaXRz
LnJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTI1ZjlhMDZjZGEzNjBjYTc2MGU1
NWU0MzkxYTRiMjNiNTE1OWE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRml0cy5yYgorKysgL2Rl
di9udWxsCkBAIC0xLDM2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLW1vZHVsZSBGaXRzCi0gICAgZGVmIHNlbGYuY29udmVydChzaXplLCBuYW1lLCB0eXBl
KQotICAgICAgICAiRml0czwje3R5cGUudG9fc30sICN7c2l6ZX0+Ojpjb252ZXJ0KCN7bmFtZX0p
IgotICAgIGVuZAotCi0gICAgZGVmIHNlbGYuY2hlY2soc2l6ZSwgbmFtZSwgdHlwZSkKLSAgICAg
ICAgIkZpdHM8I3t0eXBlLnRvX3N9LCAje3NpemV9Pjo6Y2hlY2soI3tuYW1lfSkiCi0gICAgZW5k
Ci0KLSAgICBkZWYgc2VsZi53cml0ZShzaXplLCBuYW1lLCB0eXBlKQotICAgICAgICAiX19nZW5l
cmF0b3ItPndyaXRlKCN7Y29udmVydChzaXplLCBuYW1lLCB0eXBlKX0pOyIKLSAgICBlbmQKLWVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9HZW5lcmF0ZWRG
aWxlLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9HZW5lcmF0ZWRGaWxlLnJi
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjBhZDFiYzQyZTNiNzI0OTJmMmFjMWE4
MTBiMTY4ZDM3ODIzNjVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvR2VuZXJhdGVkRmlsZS5yYgor
KysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0j
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi1yZXF1aXJlICdkYXRlJwotcmVxdWlyZSAnZGlnZXN0JwotCi0kTElDRU5T
RSA9IDw8LUVPRgotQ29weXJpZ2h0IChDKSAje0RhdGUudG9kYXkueWVhcn0gQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLQot
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi1FWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi1XQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi1ESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi1ESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi1PTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi1USElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotRU9GCi0KLW1vZHVsZSBHZW5lcmF0ZWRGaWxlCi0gICAgY2xhc3MgVGVt
cGxhdGUgPCBTdHJ1Y3QubmV3KDptdWx0aWxpbmVfY29tbWVudCwgOmxpbmVfY29tbWVudCwgOnBy
ZWZpeCwgOnN1ZmZpeCwgOmJvZHkpCi0gICAgICAgIGRlZiBpbml0aWFsaXplCi0gICAgICAgICAg
ICBzdXBlcihbIi8qIiwgIiAqIiwgIiovIl0sICIvLyAiLCBuaWwsIG5pbCwgbmlsKQotICAgICAg
ICBlbmQKLSAgICBlbmQKLQotICAgIGRlZiBzZWxmLmNyZWF0ZShmaWxlbmFtZSwgZGVwZW5kZW5j
eSkKLSAgICAgICAgdGVtcGxhdGUgPSBUZW1wbGF0ZS5uZXcKLSAgICAgICAgeWllbGQgdGVtcGxh
dGUKLQotICAgICAgICBmaWxlID0gRmlsZS5vcGVuKGZpbGVuYW1lLCAidyIpCi0gICAgICAgIHNl
bGYuc2hhMShmaWxlLCB0ZW1wbGF0ZSwgZGVwZW5kZW5jeSkKLSAgICAgICAgc2VsZi5saWNlbnNl
KGZpbGUsIHRlbXBsYXRlLCBkZXBlbmRlbmN5KQotCi0gICAgICAgIHVubGVzcyB0ZW1wbGF0ZS5w
cmVmaXgubmlsPwotICAgICAgICAgICAgd3JpdGUoZmlsZSwgdGVtcGxhdGUucHJlZml4LnRvX3Ms
ICJcbiIpCi0gICAgICAgIGVuZAotICAgICAgICB1bmxlc3MgdGVtcGxhdGUuYm9keS5uaWw/Ci0g
ICAgICAgICAgICB3cml0ZShmaWxlLCB0ZW1wbGF0ZS5ib2R5LnRvX3MsICJcbiIpCi0gICAgICAg
IGVuZAotICAgICAgICB1bmxlc3MgdGVtcGxhdGUuc3VmZml4Lm5pbD8KLSAgICAgICAgICAgIHdy
aXRlKGZpbGUsIHRlbXBsYXRlLnN1ZmZpeC50b19zLCAiXG4iKQotICAgICAgICBlbmQKLSAgICBl
bmQKLQotICAgIGRlZiBzZWxmLnNoYTEoZmlsZSwgdGVtcGxhdGUsIGRlcGVuZGVuY3kpCi0gICAg
ICAgIHdyaXRlKGZpbGUsIHRlbXBsYXRlLmxpbmVfY29tbWVudCwgIiBTSEExSGFzaDogIiwgRGln
ZXN0OjpTSEExLmhleGRpZ2VzdChkZXBlbmRlbmN5LnJlYWQpLCAiXG4iKQotICAgIGVuZAotCi0g
ICAgZGVmIHNlbGYubGljZW5zZShmaWxlLCB0ZW1wbGF0ZSwgZGVwZW5kZW5jeSkKLSAgICAgICAg
dW5sZXNzIHRlbXBsYXRlLm11bHRpbGluZV9jb21tZW50Lm5pbD8KLSAgICAgICAgICAgIHdyaXRl
KGZpbGUsIHRlbXBsYXRlLm11bHRpbGluZV9jb21tZW50WzBdLCAiXG4iKQotICAgICAgICBlbmQK
LQotICAgICAgICBjb21tZW50ID0gaWYgdGVtcGxhdGUubXVsdGlsaW5lX2NvbW1lbnQubmlsPyB0
aGVuIHRlbXBsYXRlLmxpbmVfY29tbWVudCBlbHNlIHRlbXBsYXRlLm11bHRpbGluZV9jb21tZW50
WzFdIGVuZAotICAgICAgICB3cml0ZShmaWxlLCAkTElDRU5TRS5zdHJpcC5zcGxpdCgiXG4iKS5t
YXAgeyB8bGluZXwgIiN7Y29tbWVudH0gI3tsaW5lfSIgfS5qb2luKCJcbiIpLCAiXG5cbiIpCi0g
ICAgICAgIHdyaXRlKGZpbGUsIGNvbW1lbnQsICIgQXV0b2dlbmVyYXRlZCBmcm9tICIsIGRlcGVu
ZGVuY3kucGF0aCwgIiwgZG8gbm90IG1vZGlmeS5cbiIpCi0KLSAgICAgICAgdW5sZXNzIHRlbXBs
YXRlLm11bHRpbGluZV9jb21tZW50Lm5pbD8KLSAgICAgICAgICAgIHdyaXRlKGZpbGUsIHRlbXBs
YXRlLm11bHRpbGluZV9jb21tZW50WzJdLCAiXG4iKQotICAgICAgICBlbmQKLQotICAgICAgICB3
cml0ZShmaWxlLCAiXG4iKQotICAgIGVuZAotCi0gICAgZGVmIHNlbGYud3JpdGUoZmlsZSwgKnN0
cmluZ3MpCi0gICAgICAgIGZpbGUud3JpdGUoc3RyaW5ncy5tYXAoJjp0b19zKS5qb2luKQotICAg
IGVuZAotZW5kCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
TWV0YWRhdGEucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFkYXRhLnJi
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjA2YzRjNjliOTA5NTZiYTI5NDcxMzdh
YTM4MWNlZmJjNzQ5ZTdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvTWV0YWRhdGEucmIKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0j
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotcmVxdWlyZV9yZWxhdGl2ZSAnRml0cycKLQotY2xhc3MgTWV0YWRhdGEKLSAgICBA
QGVtaXR0ZXJfbG9jYWwgPSBuaWwKLQotICAgIGRlZiBpbml0aWFsaXplKGZpZWxkcywgaW5pdGlh
bGl6ZXJzKQotICAgICAgICBAZmllbGRzID0gZmllbGRzCi0gICAgICAgIEBpbml0aWFsaXplcnMg
PSBpbml0aWFsaXplcnMKLSAgICBlbmQKLQotICAgIGRlZiBlbXB0eT8KLSAgICAgICAgQGZpZWxk
cy5uaWw/Ci0gICAgZW5kCi0KLSAgICBkZWYgbGVuZ3RoCi0gICAgICAgIGVtcHR5PyA/IDAgOiBA
ZmllbGRzLmxlbmd0aAotICAgIGVuZAotCi0gICAgZGVmIHN0cnVjdChvcCkKLSAgICAgICAgcmV0
dXJuIGlmIGVtcHR5PwotCi0gICAgICAgIGRlZiBjb252ZXJ0RmllbGRzKGZpZWxkcykKLSAgICAg
ICAgICAgIGZpZWxkcy5tYXAgZG8gfGZpZWxkLCB0eXBlfAotICAgICAgICAgICAgICAgIGlmIHR5
cGUua2luZF9vZj8gSGFzaAotICAgICAgICAgICAgICAgICAgICAidW5pb24ge1xuI3tjb252ZXJ0
RmllbGRzKHR5cGUpfVxufTsiCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAiI3t0eXBlLnRvX3N9ICN7ZmllbGQudG9fc307IgotICAgICAgICAgICAgICAgIGVuZAot
ICAgICAgICAgICAgZW5kLmpvaW4oIlxuIikKLSAgICAgICAgZW5kCi0KLSAgICAgICAgZmllbGRz
ID0gY29udmVydEZpZWxkcyhAZmllbGRzKQotCi0gICAgICAgIGluaXRzID0gbmlsCi0gICAgICAg
IGlmIEBpbml0aWFsaXplcnMgJiYgKG5vdCBAaW5pdGlhbGl6ZXJzLmVtcHR5PykKLSAgICAgICAg
ICAgIGluaXRzID0gIjogIiArIEBpbml0aWFsaXplcnMubWFwIGRvIHxtZXRhZGF0YSwgYXJnfAot
ICAgICAgICAgICAgICAgICIje21ldGFkYXRhfShfX29wLiN7YXJnfSkiCi0gICAgICAgICAgICBl
bmQuam9pbigiLCAiKQotICAgICAgICBlbmQKLQotICAgICAgICA8PC1FT0YKLSAgICAgICAgc3Ry
dWN0IE1ldGFkYXRhIHsKLSAgICAgICAgICAgIE1ldGFkYXRhKGNvbnN0ICN7b3AuY2FwaXRhbGl6
ZWRfbmFtZX0mI3siIF9fb3AiIGlmIGluaXRzfSkKLSAgICAgICAgICAgICN7aW5pdHN9Ci0gICAg
ICAgICAgICB7IH0KLQotICAgICAgICAgICAgI3tmaWVsZHN9Ci0gICAgICAgIH07Ci0gICAgICAg
IEVPRgotICAgIGVuZAotCi0gICAgZGVmIGFjY2Vzc29yCi0gICAgICAgIHJldHVybiBpZiBlbXB0
eT8KLQotICAgICAgICA8PC1FT0YKLSAgICAgICAgTWV0YWRhdGEmIG1ldGFkYXRhKENvZGVCbG9j
ayogY29kZUJsb2NrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29kZUJs
b2NrLT5tZXRhZGF0YTxNZXRhZGF0YT4ob3Bjb2RlSUQsICN7TWV0YWRhdGEuZmllbGRfbmFtZX0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgTWV0YWRhdGEmIG1ldGFkYXRhKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhKGV4ZWMtPmNv
ZGVCbG9jaygpKTsKLSAgICAgICAgfQotICAgICAgICBFT0YKLSAgICBlbmQKLQotICAgIGRlZiBm
aWVsZAotICAgICAgICByZXR1cm4gaWYgZW1wdHk/Ci0KLSAgICAgICAgInVuc2lnbmVkICN7TWV0
YWRhdGEuZmllbGRfbmFtZX07IgotICAgIGVuZAotCi0gICAgZGVmIGxvYWRfZnJvbV9zdHJlYW0o
aW5kZXgsIHNpemUpCi0gICAgICAgIHJldHVybiBpZiBlbXB0eT8KLQotICAgICAgICAiI3tNZXRh
ZGF0YS5maWVsZF9uYW1lfSgje0ZpdHM6OmNvbnZlcnQoc2l6ZSwgInN0cmVhbVsje2luZGV4fV0i
LCA6dW5zaWduZWQpfSkiCi0gICAgZW5kCi0KLSAgICBkZWYgY3JlYXRlX2VtaXR0ZXJfbG9jYWwK
LSAgICAgICAgcmV0dXJuIGlmIGVtcHR5PwotCi0gICAgICAgIDw8LUVPRgotICAgICAgICBhdXRv
ICN7ZW1pdHRlcl9sb2NhbC5uYW1lfSA9IF9fZ2VuZXJhdG9yLT5hZGRNZXRhZGF0YUZvcihvcGNv
ZGVJRCk7Ci0gICAgICAgIEVPRgotICAgIGVuZAotCi0gICAgZGVmIGVtaXR0ZXJfbG9jYWwKLSAg
ICAgICAgdW5sZXNzIEBAZW1pdHRlcl9sb2NhbAotICAgICAgICAgICAgQEBlbWl0dGVyX2xvY2Fs
ID0gQXJndW1lbnQubmV3KCJfX21ldGFkYXRhSUQiLCA6dW5zaWduZWQsIC0xKQotICAgICAgICBl
bmQKLQotICAgICAgICByZXR1cm4gQEBlbWl0dGVyX2xvY2FsCi0gICAgZW5kCi0KLSAgICBkZWYg
c2VsZi5maWVsZF9uYW1lCi0gICAgICAgICJtZXRhZGF0YUlEIgotICAgIGVuZAotZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wY29kZS5yYiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlLnJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlZmQ1MDc2ZWI0ZTY0NGI1OWY5NjM0Mjk5ZjRhYzYxZTVjOTIyNjA3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvT3Bjb2RlLnJiCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLXJlcXVpcmVfcmVsYXRp
dmUgJ0FyZ3VtZW50JwotcmVxdWlyZV9yZWxhdGl2ZSAnRml0cycKLXJlcXVpcmVfcmVsYXRpdmUg
J01ldGFkYXRhJwotCi1jbGFzcyBPcGNvZGUKLSAgICBhdHRyX3JlYWRlciA6aWQKLSAgICBhdHRy
X3JlYWRlciA6YXJncwotICAgIGF0dHJfcmVhZGVyIDptZXRhZGF0YQotCi0gICAgbW9kdWxlIFNp
emUKLSAgICAgICAgTmFycm93ID0gIk9wY29kZVNpemU6Ok5hcnJvdyIKLSAgICAgICAgV2lkZSA9
ICJPcGNvZGVTaXplOjpXaWRlIgotICAgIGVuZAotCi0gICAgQEBpZCA9IDAKLQotICAgIGRlZiBz
ZWxmLmlkCi0gICAgICAgIHRpZCA9IEBAaWQKLSAgICAgICAgQEBpZCA9IEBAaWQgKyAxCi0gICAg
ICAgIHRpZAotICAgIGVuZAotCi0gICAgZGVmIGluaXRpYWxpemUoc2VjdGlvbiwgbmFtZSwgYXJn
cywgbWV0YWRhdGEsIG1ldGFkYXRhX2luaXRpYWxpemVycykKLSAgICAgICAgQHNlY3Rpb24gPSBz
ZWN0aW9uCi0gICAgICAgIEBuYW1lID0gbmFtZQotICAgICAgICBAbWV0YWRhdGEgPSBNZXRhZGF0
YS5uZXcgbWV0YWRhdGEsIG1ldGFkYXRhX2luaXRpYWxpemVycwotICAgICAgICBAYXJncyA9IGFy
Z3MubWFwLndpdGhfaW5kZXggeyB8KGFyZ19uYW1lLCB0eXBlKSwgaW5kZXh8IEFyZ3VtZW50Lm5l
dyBhcmdfbmFtZSwgdHlwZSwgaW5kZXggKyAxIH0gdW5sZXNzIGFyZ3MubmlsPwotICAgIGVuZAot
Ci0gICAgZGVmIGNyZWF0ZV9pZCEKLSAgICAgICAgQGlkID0gc2VsZi5jbGFzcy5pZAotICAgIGVu
ZAotCi0gICAgZGVmIHByaW50X2FyZ3MoJmJsb2NrKQotICAgICAgICByZXR1cm4gaWYgQGFyZ3Mu
bmlsPwotCi0gICAgICAgIEBhcmdzLm1hcCgmYmxvY2spLmpvaW4gIlxuIgotICAgIGVuZAotCi0g
ICAgZGVmIGNhcGl0YWxpemVkX25hbWUKLSAgICAgICAgbmFtZS5zcGxpdCgnXycpLm1hcCgmOmNh
cGl0YWxpemUpLmpvaW4KLSAgICBlbmQKLQotICAgIGRlZiB0eXBlZF9hcmdzCi0gICAgICAgIHJl
dHVybiBpZiBAYXJncy5uaWw/Ci0KLSAgICAgICAgQGFyZ3MubWFwKCY6Y3JlYXRlX3BhcmFtKS51
bnNoaWZ0KCIiKS5qb2luKCIsICIpCi0gICAgZW5kCi0KLSAgICBkZWYgdW50eXBlZF9hcmdzCi0g
ICAgICAgIHJldHVybiBpZiBAYXJncy5uaWw/Ci0KLSAgICAgICAgQGFyZ3MubWFwKCY6bmFtZSku
dW5zaGlmdCgiIikuam9pbigiLCAiKQotICAgIGVuZAotCi0gICAgZGVmIG1hcF9maWVsZHNfd2l0
aF9zaXplKHNpemUsICZibG9jaykKLSAgICAgICAgYXJncyA9IFtBcmd1bWVudC5uZXcoIm9wY29k
ZUlEIiwgOnVuc2lnbmVkLCAwKV0KLSAgICAgICAgYXJncyArPSBAYXJncy5kdXAgaWYgQGFyZ3MK
LSAgICAgICAgdW5sZXNzIEBtZXRhZGF0YS5lbXB0eT8KLSAgICAgICAgICAgIGFyZ3MgPDwgQG1l
dGFkYXRhLmVtaXR0ZXJfbG9jYWwKLSAgICAgICAgZW5kCi0gICAgICAgIGFyZ3MubWFwIHsgfGFy
Z3wgYmxvY2suY2FsbChhcmcsIHNpemUpIH0KLSAgICBlbmQKLQotICAgIGRlZiBzdHJ1Y3QKLSAg
ICAgICAgPDwtRU9GCi0gICAgICAgIHN0cnVjdCAje2NhcGl0YWxpemVkX25hbWV9IDogcHVibGlj
IEluc3RydWN0aW9uIHsKLSAgICAgICAgICAgICN7b3Bjb2RlSUR9Ci0KLSAgICAgICAgICAgICN7
ZW1pdHRlcn0KLQotICAgICAgICAgICAgI3tkdW1wZXJ9Ci0KLSAgICAgICAgICAgICN7Y29uc3Ry
dWN0b3JzfQotCi0gICAgICAgICAgICAje3NldHRlcnN9Ci0KLSAgICAgICAgICAgICN7bWV0YWRh
dGFfc3RydWN0X2FuZF9hY2Nlc3Nvcn0KLQotICAgICAgICAgICAgI3ttZW1iZXJzfQotICAgICAg
ICB9OwotICAgICAgICBFT0YKLSAgICBlbmQKLQotICAgIGRlZiBvcGNvZGVJRAotICAgICAgICAi
c3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBvcGNvZGVJRCA9ICN7bmFtZX07IgotICAgIGVuZAot
Ci0gICAgZGVmIGVtaXR0ZXIKLSAgICAgICAgb3Bfd2lkZSA9IEFyZ3VtZW50Lm5ldygib3Bfd2lk
ZSIsIDp1bnNpZ25lZCwgMCkKLSAgICAgICAgbWV0YWRhdGFfcGFyYW0gPSBAbWV0YWRhdGEuZW1w
dHk/ID8gIiIgOiAiLCAje0BtZXRhZGF0YS5lbWl0dGVyX2xvY2FsLmNyZWF0ZV9wYXJhbX0iCi0g
ICAgICAgIG1ldGFkYXRhX2FyZyA9IEBtZXRhZGF0YS5lbXB0eT8gPyAiIiA6ICIsICN7QG1ldGFk
YXRhLmVtaXR0ZXJfbG9jYWwubmFtZX0iCi0gICAgICAgIDw8LUVPRgotICAgICAgICBzdGF0aWMg
dm9pZCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBfX2dlbmVyYXRvciN7dHlwZWRfYXJnc30pCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIF9fZ2VuZXJhdG9yLT5yZWNvcmRPcGNvZGUob3Bjb2RlSUQp
OwotICAgICAgICAgICAgI3tAbWV0YWRhdGEuY3JlYXRlX2VtaXR0ZXJfbG9jYWx9Ci0gICAgICAg
ICAgICBlbWl0PE9wY29kZVNpemU6Ok5hcnJvdywgTm9Bc3NlcnQ+KF9fZ2VuZXJhdG9yI3t1bnR5
cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KSB8fCBlbWl0PE9wY29kZVNpemU6OldpZGU+KF9fZ2Vu
ZXJhdG9yI3t1bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KTsKLSAgICAgICAgfQotCi0gICAg
ICAgICN7JXsKLSAgICAgICAgdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplLCBGaXRzQXNzZXJ0aW9u
IHNob3VsZEFzc2VydCA9IEFzc2VydD4KLSAgICAgICAgc3RhdGljIGJvb2wgZW1pdChCeXRlY29k
ZUdlbmVyYXRvciogX19nZW5lcmF0b3Ije3R5cGVkX2FyZ3N9KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBfX2dlbmVyYXRvci0+cmVjb3JkT3Bjb2RlKG9wY29kZUlEKTsKLSAgICAgICAgICAgICN7
QG1ldGFkYXRhLmNyZWF0ZV9lbWl0dGVyX2xvY2FsfQotICAgICAgICAgICAgcmV0dXJuIGVtaXQ8
c2l6ZSwgc2hvdWxkQXNzZXJ0PihfX2dlbmVyYXRvciN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFf
YXJnfSk7Ci0gICAgICAgIH0KLSAgICAgICAgfSB1bmxlc3MgQG1ldGFkYXRhLmVtcHR5P30KLQot
ICAgICAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemUsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNz
ZXJ0ID0gQXNzZXJ0PgotICAgICAgICBzdGF0aWMgYm9vbCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9y
KiBfX2dlbmVyYXRvciN7dHlwZWRfYXJnc30je21ldGFkYXRhX3BhcmFtfSkKLSAgICAgICAgewot
ICAgICAgICAgICAgYm9vbCBkaWRFbWl0ID0gZW1pdEltcGw8c2l6ZT4oX19nZW5lcmF0b3Ije3Vu
dHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOwotICAgICAgICAgICAgaWYgKHNob3VsZEFzc2Vy
dCA9PSBBc3NlcnQpCi0gICAgICAgICAgICAgICAgQVNTRVJUKGRpZEVtaXQpOwotICAgICAgICAg
ICAgcmV0dXJuIGRpZEVtaXQ7Ci0gICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAg
ICB0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+Ci0gICAgICAgIHN0YXRpYyBib29sIGVtaXRJbXBs
KEJ5dGVjb2RlR2VuZXJhdG9yKiBfX2dlbmVyYXRvciN7dHlwZWRfYXJnc30je21ldGFkYXRhX3Bh
cmFtfSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCN7bWFwX2ZpZWxkc193aXRoX3NpemUo
InNpemUiLCAmOmZpdHNfY2hlY2spLmpvaW4gIiAmJiAifSAmJiAoc2l6ZSA9PSBPcGNvZGVTaXpl
OjpXaWRlID8gI3tvcF93aWRlLmZpdHNfY2hlY2soU2l6ZTo6TmFycm93KX0gOiB0cnVlKSkgewot
ICAgICAgICAgICAgICAgIGlmIChzaXplID09IE9wY29kZVNpemU6OldpZGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgI3tvcF93aWRlLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAje21hcF9maWVsZHNfd2l0aF9zaXplKCJzaXplIiwg
JjpmaXRzX3dyaXRlKS5qb2luICJcbiJ9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAg
ICAgcHVibGljOgotICAgICAgICBFT0YKLSAgICBlbmQKLQotICAgIGRlZiBkdW1wZXIKLSAgICAg
ICAgPDwtRU9GCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgotICAgICAgICB2b2lk
IGR1bXAoQnl0ZWNvZGVEdW1wZXI8QmxvY2s+KiBfX2R1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCBfX2xvY2F0aW9uLCBib29sIF9faXNXaWRlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBfX2R1bXBlci0+cHJpbnRMb2NhdGlvbkFuZE9wKF9fbG9jYXRpb24sICYiKiN7QG5hbWV9Ilsh
X19pc1dpZGVdKTsKLSAgICAgICAgICAgICN7cHJpbnRfYXJncyB7IHxhcmd8Ci0gICAgICAgICAg
ICA8PC1FT0YKLSAgICAgICAgICAgICAgICBfX2R1bXBlci0+ZHVtcE9wZXJhbmQoI3thcmcubmFt
ZX0sICN7YXJnLmluZGV4ID09IDF9KTsKLSAgICAgICAgICAgIEVPRgotICAgICAgICAgICAgfX0K
LSAgICAgICAgfQotICAgICAgICBFT0YKLSAgICBlbmQKLQotICAgIGRlZiBjb25zdHJ1Y3RvcnMK
LSAgICAgICAgZmllbGRzID0gKEBhcmdzIHx8IFtdKSArIChAbWV0YWRhdGEuZW1wdHk/ID8gW10g
OiBbQG1ldGFkYXRhXSkKLSAgICAgICAgaW5pdCA9IC0+KHNpemUpIHsgZmllbGRzLmVtcHR5PyAg
PyAiIiA6ICI6ICN7ZmllbGRzLm1hcC53aXRoX2luZGV4IHsgfGFyZywgaXwgYXJnLmxvYWRfZnJv
bV9zdHJlYW0oaSArIDEsIHNpemUpIH0uam9pbiAiLFxuIiB9IiB9Ci0KLSAgICAgICAgPDwtRU9G
Ci0gICAgICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDhfdCogc3RyZWFtKQotICAg
ICAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJvdyIpfQotICAgICAgICB7IEFT
U0VSVF9VTlVTRUQoc3RyZWFtLCBzdHJlYW1bMF0gPT0gb3Bjb2RlSUQpOyB9Ci0KLSAgICAgICAg
I3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50MzJfdCogc3RyZWFtKQotICAgICAgICAgICAg
I3tpbml0LmNhbGwoIk9wY29kZVNpemU6OldpZGUiKX0KLSAgICAgICAgeyBBU1NFUlRfVU5VU0VE
KHN0cmVhbSwgc3RyZWFtWzBdID09IG9wY29kZUlEKTsgfQotCi0gICAgICAgIHN0YXRpYyAje2Nh
cGl0YWxpemVkX25hbWV9IGRlY29kZShjb25zdCB1aW50OF90KiBzdHJlYW0pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICgqc3RyZWFtICE9IG9wX3dpZGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHsgc3RyZWFtIH07Ci0KLSAgICAgICAgICAgIGF1dG8gd2lkZVN0cmVhbSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzdHJlYW0gKyAxKTsKLSAgICAgICAgICAgIHJldHVy
biB7IHdpZGVTdHJlYW0gfTsKLSAgICAgICAgfQotCi0gICAgICAgIEVPRgotICAgIGVuZAotCi0g
ICAgZGVmIHNldHRlcnMKLSAgICAgICAgcHJpbnRfYXJncygmOnNldHRlcikKLSAgICBlbmQKLQot
ICAgIGRlZiBtZXRhZGF0YV9zdHJ1Y3RfYW5kX2FjY2Vzc29yCi0gICAgICAgIDw8LUVPRgotICAg
ICAgICAje0BtZXRhZGF0YS5zdHJ1Y3Qoc2VsZil9Ci0KLSAgICAgICAgI3tAbWV0YWRhdGEuYWNj
ZXNzb3J9Ci0gICAgICAgIEVPRgotICAgIGVuZAotCi0gICAgZGVmIG1lbWJlcnMKLSAgICAgICAg
PDwtRU9GCi0gICAgICAgICN7cHJpbnRfYXJncygmOmZpZWxkKX0KLSAgICAgICAgI3tAbWV0YWRh
dGEuZmllbGR9Ci0gICAgICAgIEVPRgotICAgIGVuZAotCi0gICAgZGVmIHNldF9lbnRyeV9hZGRy
ZXNzKGlkKQotICAgICAgICAic2V0RW50cnlBZGRyZXNzKCN7aWR9LCBfI3tmdWxsX25hbWV9KSIK
LSAgICBlbmQKLQotICAgIGRlZiBzZXRfZW50cnlfYWRkcmVzc193aWRlKGlkKQotICAgICAgICAi
c2V0RW50cnlBZGRyZXNzV2lkZSgje2lkfSwgXyN7ZnVsbF9uYW1lfV93aWRlKSIKLSAgICBlbmQK
LQotICAgIGRlZiBzdHJ1Y3RfaW5kaWNlcwotICAgICAgICBvdXQgPSBbXQotICAgICAgICBvdXQg
Kz0gQGFyZ3MubWFwKCY6bmFtZSkgdW5sZXNzIEBhcmdzLm5pbD8KLSAgICAgICAgb3V0IDw8IE1l
dGFkYXRhLmZpZWxkX25hbWUgdW5sZXNzIEBtZXRhZGF0YS5lbXB0eT8KLSAgICAgICAgb3V0Lm1h
cC53aXRoX2luZGV4IGRvIHxuYW1lLCBpbmRleHwKLSAgICAgICAgICAgICJjb25zdCB1bnNpZ25l
ZCAje2NhcGl0YWxpemVkX25hbWV9XyN7bmFtZX1faW5kZXggPSAje2luZGV4ICsgMX07IgotICAg
ICAgICBlbmQKLSAgICBlbmQKLQotICAgIGRlZiBmdWxsX25hbWUKLSAgICAgICAgIiN7QHNlY3Rp
b24uY29uZmlnWzphc21fcHJlZml4XX0je0BzZWN0aW9uLmNvbmZpZ1s6b3BfcHJlZml4XX0je0Bu
YW1lfSIKLSAgICBlbmQKLQotICAgIGRlZiBuYW1lCi0gICAgICAgICIje0BzZWN0aW9uLmNvbmZp
Z1s6b3BfcHJlZml4XX0je0BuYW1lfSIKLSAgICBlbmQKLQotICAgIGRlZiBsZW5ndGgKLSAgICAg
ICAgMSArIChAYXJncy5uaWw/ID8gMCA6IEBhcmdzLmxlbmd0aCkgKyAoQG1ldGFkYXRhLmVtcHR5
PyA/IDAgOiAxKQotICAgIGVuZAotCi0gICAgZGVmIHNlbGYuZHVtcF9ieXRlY29kZShvcGNvZGVz
KQotICAgICAgICA8PC1FT0YKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlcjxCbG9jaz4qIF9fZHVt
cGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGNvbnN0IEluc3RydWN0
aW9uKiBfX2luc3RydWN0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKF9faW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKLSAgICAgICAgICAgICN7b3Bjb2Rlcy5tYXAgeyB8b3B8
Ci0gICAgICAgICAgICAgICAgPDwtRU9GCi0gICAgICAgICAgICAgICAgY2FzZSAje29wLm5hbWV9
OgotICAgICAgICAgICAgICAgICAgICBfX2luc3RydWN0aW9uLT5hczwje29wLmNhcGl0YWxpemVk
X25hbWV9PigpLmR1bXAoX19kdW1wZXIsIF9fbG9jYXRpb24sIF9faW5zdHJ1Y3Rpb24tPmlzV2lk
ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgRU9GCi0g
ICAgICAgICAgICB9LmpvaW4gIlxuIn0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgRU9GCi0gICAgZW5kCi1lbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvT3Bjb2RlR3JvdXAucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL09wY29kZUdyb3VwLnJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWMyYTIz
Y2Y0ODNmNjVkYjY1MmEwOWZhYTYwNjEzZTdjNDBkNTZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
T3Bjb2RlR3JvdXAucmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0jIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0jIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1yZXF1aXJlX3JlbGF0aXZlICdPcGNvZGUnCi0K
LWNsYXNzIE9wY29kZUdyb3VwCi0gICAgYXR0cl9yZWFkZXIgOm5hbWUKLSAgICBhdHRyX3JlYWRl
ciA6b3Bjb2RlcwotICAgIGF0dHJfcmVhZGVyIDpjb25maWcKLQotICAgIGRlZiBpbml0aWFsaXpl
KHNlY3Rpb24sIGRlc2MsIG9wY29kZXMsIGNvbmZpZykKLSAgICAgICAgQHNlY3Rpb24gPSBzZWN0
aW9uCi0gICAgICAgIEBuYW1lID0gbmFtZQotICAgICAgICBAb3Bjb2RlcyA9IG9wY29kZXMKLSAg
ICAgICAgQGNvbmZpZyA9IGNvbmZpZwotICAgIGVuZAotZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL09wdGlvbnMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL09wdGlvbnMucmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3
OTA4NmUwNTY1ZDkwZTY4NTc2MTFmMWU5Yzk1NTM4NzM1YWI3OGIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9PcHRpb25zLnJiCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotcmVxdWlyZSAnb3B0cGFyc2UnCi0KLSRjb25m
aWcgPSB7Ci0gICAgYnl0ZWNvZGVzRmlsZW5hbWU6IHsKLSAgICAgICAgc2hvcnQ6ICItYiIsCi0g
ICAgICAgIGxvbmc6ICItLWJ5dGVjb2Rlc19oIEZJTEUiLAotICAgICAgICBkZXNjOiAiZ2VuZXJh
dGUgYnl0ZWNvZGVzIG1hY3JvIC5oIEZJTEUiLAotICAgIH0sCi0gICAgYnl0ZWNvZGVTdHJ1Y3Rz
RmlsZW5hbWU6IHsKLSAgICAgICAgc2hvcnQ6ICItcyIsCi0gICAgICAgIGxvbmc6ICItLWJ5dGVj
b2RlX3N0cnVjdHNfaCBGSUxFIiwKLSAgICAgICAgZGVzYzogImdlbmVyYXRlIGJ5dGVjb2RlIHN0
cnVjdHMgLmggRklMRSIsCi0gICAgfSwKLSAgICBpbml0QXNtRmlsZW5hbWU6IHsKLSAgICAgICAg
c2hvcnQ6ICItYSIsCi0gICAgICAgIGxvbmc6ICItLWluaXRfYnl0ZWNvZGVzX2FzbSBGSUxFIiwK
LSAgICAgICAgZGVzYzogImdlbmVyYXRlIEFTTSBieXRlY29kZXMgaW5pdCBGSUxFIiwKLSAgICB9
LAotICAgIGJ5dGVjb2RlSW5kaWNlc0ZpbGVuYW1lOiB7Ci0gICAgICAgIHNob3J0OiAiLWkiLAot
ICAgICAgICBsb25nOiAiLS1ieXRlY29kZV9pbmRpY2VzX2ggRklMRSIsCi0gICAgICAgIGRlc2M6
ICJnZW5lcmF0ZSBpbmRpY2VzIG9mIGJ5dGVjb2RlIHN0cnVjdHMgLmggRklMRSIsCi0gICAgfSwK
LX07Ci0KLW1vZHVsZSBPcHRpb25zCi0gICAgZGVmIHNlbGYub3B0cGFyc2VyKG9wdGlvbnMpCi0g
ICAgICAgIE9wdGlvblBhcnNlci5uZXcgZG8gfG9wdHN8Ci0gICAgICAgICAgICBvcHRzLmJhbm5l
ciA9ICJ1c2FnZTogI3tvcHRzLnByb2dyYW1fbmFtZX0gW29wdGlvbnNdIDxieXRlY29kZS1saXN0
LWZpbGU+IgotICAgICAgICAgICAgJGNvbmZpZy5tYXAgZG8gfGtleSwgb3B0aW9ufAotICAgICAg
ICAgICAgICAgIG9wdHMub24ob3B0aW9uWzpzaG9ydF0sIG9wdGlvbls6bG9uZ10sIG9wdGlvbls6
ZGVzY10pIGRvIHx2fAotICAgICAgICAgICAgICAgICAgICBvcHRpb25zW2tleV0gPSB2Ci0gICAg
ICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgZW5kCi0gICAgZW5kCi0K
LSAgICBkZWYgc2VsZi5jaGVjayhhcmd2LCBvcHRpb25zKQotICAgICAgICBtaXNzaW5nID0gJGNv
bmZpZy5rZXlzLnNlbGVjdHsgfHBhcmFtfCBvcHRpb25zW3BhcmFtXS5uaWw/IH0KLSAgICAgICAg
dW5sZXNzIG1pc3NpbmcuZW1wdHk/Ci0gICAgICAgICAgICByYWlzZSBPcHRpb25QYXJzZXI6Ok1p
c3NpbmdBcmd1bWVudC5uZXcobWlzc2luZy5qb2luKCcsICcpKQotICAgICAgICBlbmQKLSAgICAg
ICAgdW5sZXNzIGFyZ3YubGVuZ3RoID09IDEKLSAgICAgICAgICAgIHJhaXNlIE9wdGlvblBhcnNl
cjo6TWlzc2luZ0FyZ3VtZW50Lm5ldygiPGJ5dGVjb2RlLWxpc3QtZmlsZT4iKQotICAgICAgICBl
bmQKLSAgICBlbmQKLQotICAgIGRlZiBzZWxmLnBhcnNlKGFyZ3YpCi0gICAgICAgIG9wdGlvbnMg
PSB7fQotICAgICAgICBwYXJzZXIgPSBvcHRwYXJzZXIob3B0aW9ucykKLQotICAgICAgICBiZWdp
bgotICAgICAgICAgICAgcGFyc2VyLnBhcnNlIShhcmd2KQotICAgICAgICAgICAgY2hlY2soYXJn
diwgb3B0aW9ucykKLSAgICAgICAgcmVzY3VlIE9wdGlvblBhcnNlcjo6TWlzc2luZ0FyZ3VtZW50
LCBPcHRpb25QYXJzZXI6OkludmFsaWRPcHRpb24KLSAgICAgICAgICAgIHB1dHMgJCEudG9fcwot
ICAgICAgICAgICAgcHV0cyBwYXJzZXIKLSAgICAgICAgICAgIGV4aXQgMQotICAgICAgICBlbmQK
LQotICAgICAgICBvcHRpb25zWzpieXRlY29kZUxpc3RdID0gYXJndlswXQotICAgICAgICBvcHRp
b25zCi0gICAgZW5kCi1lbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvU2VjdGlvbi5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvU2VjdGlv
bi5yYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ3NDg3NTdhZWUyYzg0NjEyMTYy
NWJlNWJlNzI2YjVhNGZhNWNjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1NlY3Rpb24ucmIKKysr
IC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1yZXF1aXJlICdzdHJpbmdpbycKLQotcmVxdWlyZV9yZWxhdGl2ZSAnT3Bjb2Rl
JwotcmVxdWlyZV9yZWxhdGl2ZSAnT3Bjb2RlR3JvdXAnCi0KLWNsYXNzIFNlY3Rpb24KLSAgYXR0
cl9yZWFkZXIgOm5hbWUKLSAgYXR0cl9yZWFkZXIgOmNvbmZpZwotICBhdHRyX3JlYWRlciA6b3Bj
b2RlcwotCi0gIGRlZiBpbml0aWFsaXplKG5hbWUsIGNvbmZpZykKLSAgICBAbmFtZSA9IG5hbWUK
LSAgICBAY29uZmlnID0gY29uZmlnCi0gICAgQG9wY29kZXMgPSBbXQotICAgIEBvcGNvZGVfZ3Jv
dXBzID0gW10KLSAgZW5kCi0KLSAgZGVmIGFkZF9vcGNvZGUobmFtZSwgY29uZmlnKQotICAgICAg
QG9wY29kZXMgPDwgY3JlYXRlX29wY29kZShuYW1lLCBjb25maWcpCi0gIGVuZAotCi0gIGRlZiBj
cmVhdGVfb3Bjb2RlKG5hbWUsIGNvbmZpZykKLSAgICAgIE9wY29kZS5uZXcoc2VsZiwgbmFtZSwg
Y29uZmlnWzphcmdzXSwgY29uZmlnWzptZXRhZGF0YV0sIGNvbmZpZ1s6bWV0YWRhdGFfaW5pdGlh
bGl6ZXJzXSkKLSAgZW5kCi0KLSAgZGVmIGFkZF9vcGNvZGVfZ3JvdXAobmFtZSwgb3Bjb2Rlcywg
Y29uZmlnKQotICAgICAgb3Bjb2RlcyA9IG9wY29kZXMubWFwIHsgfG9wY29kZXwgY3JlYXRlX29w
Y29kZShvcGNvZGUsIGNvbmZpZykgfQotICAgICAgQG9wY29kZV9ncm91cHMgPDwgT3Bjb2RlR3Jv
dXAubmV3KHNlbGYsIG5hbWUsIG9wY29kZXMsIGNvbmZpZykKLSAgICAgIEBvcGNvZGVzICs9IG9w
Y29kZXMKLSAgZW5kCi0KLSAgZGVmIHNvcnQhCi0gICAgICBAb3Bjb2RlcyA9IEBvcGNvZGVzLnNv
cnQgeyB8YSwgYnwgYS5tZXRhZGF0YS5lbXB0eT8gPyBiLm1ldGFkYXRhLmVtcHR5PyA/IDAgOiAx
IDogLTEgfQotICAgICAgQG9wY29kZXMuZWFjaCgmOmNyZWF0ZV9pZCEpCi0gIGVuZAotCi0gIGRl
ZiBoZWFkZXJfaGVscGVycyhudW1fb3Bjb2RlcykKLSAgICAgIG91dCA9IFN0cmluZ0lPLm5ldwot
ICAgICAgaWYgY29uZmlnWzplbWl0X2luX2hfZmlsZV0KLSAgICAgICAgICBvdXQud3JpdGUoIiNk
ZWZpbmUgRk9SX0VBQ0hfI3tjb25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fSUQobWFjcm8p
IFxcXG4iKQotICAgICAgICAgIG9wY29kZXMuZWFjaCB7IHxvcGNvZGV8IG91dC53cml0ZSgibWFj
cm8oI3tvcGNvZGUubmFtZX0sICN7b3Bjb2RlLmxlbmd0aH0pIFxcXG4iKSB9Ci0gICAgICAgICAg
b3V0IDw8ICJcbiIKLQotICAgICAgICAgIG91dC53cml0ZSgiI2RlZmluZSBOVU1CRVJfT0ZfI3tj
b25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50XX1fSURTICN7b3Bjb2Rlcy5sZW5ndGh9XG4iKQot
ICAgICAgZW5kCi0KLSAgICAgIGlmIGNvbmZpZ1s6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGVdCi0gICAg
ICAgICAgb3V0LndyaXRlKCIjZGVmaW5lIEZPUl9FQUNIXyN7Y29uZmlnWzptYWNyb19uYW1lX2Nv
bXBvbmVudF19X01FVEFEQVRBX1NJWkUobWFjcm8pIFxcXG4iKQotICAgICAgICAgIGkgPSAwCi0g
ICAgICAgICAgd2hpbGUgdHJ1ZQotICAgICAgICAgICAgICBpZiBvcGNvZGVzW2ldLm1ldGFkYXRh
LmVtcHR5PwotICAgICAgICAgICAgICAgICAgb3V0IDw8ICJcbiIKLSAgICAgICAgICAgICAgICAg
IG91dCA8PCAiI2RlZmluZSBOVU1CRVJfT0ZfI3tjb25maWdbOm1hY3JvX25hbWVfY29tcG9uZW50
XX1fV0lUSF9NRVRBREFUQSAje2l9XG4iCi0gICAgICAgICAgICAgICAgICBicmVhawotICAgICAg
ICAgICAgICBlbmQKLQotICAgICAgICAgICAgICBvdXQud3JpdGUoIm1hY3JvKHNpemVvZigje29w
Y29kZXNbaV0uY2FwaXRhbGl6ZWRfbmFtZX06Ok1ldGFkYXRhKSlcXFxuIikKLSAgICAgICAgICAg
ICAgaSArPSAxCi0gICAgICAgICAgZW5kCi0gICAgICAgICAgb3V0IDw8ICJcbiIKLSAgICAgIGVu
ZAotCi0gICAgICBpZiBjb25maWdbOmVtaXRfb3Bjb2RlX2lkX3N0cmluZ192YWx1ZXNfaW5faF9m
aWxlXQotICAgICAgICAgIG91dCA8PCAiXG4iCi0gICAgICAgICAgb3Bjb2Rlcy5lYWNoIHsgfG9w
Y29kZXwKLSAgICAgICAgICAgICAgb3V0LndyaXRlKCIjZGVmaW5lICN7b3Bjb2RlLm5hbWV9X3Zh
bHVlX3N0cmluZyBcIiN7b3Bjb2RlLmlkfVwiXG4iKQotICAgICAgICAgIH0KLSAgICAgICAgICBv
cGNvZGVzLmVhY2ggeyB8b3Bjb2RlfAotICAgICAgICAgICAgICBvdXQud3JpdGUoIiNkZWZpbmUg
I3tvcGNvZGUubmFtZX1fd2lkZV92YWx1ZV9zdHJpbmcgXCIje251bV9vcGNvZGVzICsgb3Bjb2Rl
LmlkfVwiXG4iKQotICAgICAgICAgIH0KLSAgICAgIGVuZAotICAgICAgb3V0LnN0cmluZwotICBl
bmQKLWVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9UZW1w
bGF0ZS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvVGVtcGxhdGUucmIKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4YWViMTQyNTNlZmRmYzdmNzI4ZDQzYzg3YTkx
NTdiMmVkNTJjYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9UZW1wbGF0ZS5yYgorKysgL2Rldi9u
dWxsCkBAIC0xLDMwICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLXJlcXVpcmVfcmVsYXRpdmUgJ1R5cGUnCi0KLWNsYXNzIFRlbXBsYXRlIDwgVHlwZQotICBk
ZWYgW10oKnR5cGVzKQotICAgIFR5cGUubmV3ICIje0BuYW1lfTwje3R5cGVzLm1hcCgmOnRvX3Mp
LmpvaW4gIiwifT4iCi0gIGVuZAotZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL1R5cGUucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL1R5
cGUucmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZTdkYzEzMjAzM2RkZTkxZTNi
YzgxOWQ4ODc4Mzk3Mjc0OTU1ODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9UeXBlLnJiCisrKyAv
ZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0j
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotY2xhc3MgVHlwZQotICAgIGRlZiBpbml0aWFsaXplKG5hbWUpCi0gICAgICAgIEBu
YW1lID0gbmFtZQotICAgIGVuZAotCi0gICAgZGVmICoKLSAgICAgICAgVHlwZS5uZXcgIiN7QG5h
bWV9KiIKLSAgICBlbmQKLQotICAgIGRlZiB0b19zCi0gICAgICAgIEBuYW1lLnRvX3MKLSAgICBl
bmQKLWVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9tYWlu
LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9tYWluLnJiCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3MjAwZTcwNzQ3ZTI4ZTgyYTY4YzQ5M2U2Zjg2OTRmZGNkNWM1
Y2VjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvbWFpbi5yYgorKysgL2Rldi9udWxsCkBAIC0xLDM3
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLXJlcXVpcmVf
cmVsYXRpdmUgJ0RTTCcKLXJlcXVpcmVfcmVsYXRpdmUgJ09wdGlvbnMnCi0KLSMgZm9yIHNvbWUg
cmVhc29uLCBsb3dlciBjYXNlIHZhcmlhYmxlcyBhcmUgbm90IGFjY2Vzc2libGUgdW50aWwgdGhl
IG5leHQgaW52b2NhdGlvbiBvZiBldmFsCi0jIHNvIHdlIGJpbmQgdGhlbSBoZXJlLCBiZWZvcmUg
ZXZhbCdpbmcgdGhlIGZpbGUKLURTTDo6dHlwZXMgWwotICA6Ym9vbCwKLSAgOmludCwKLSAgOnVu
c2lnbmVkLAotICA6dWludHB0cl90LAotXQotCi1vcHRpb25zID0gT3B0aW9uczo6cGFyc2UoQVJH
VikKLURTTDo6cnVuKG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0Fic3RyYWN0UEMuaAppbmRleCA0ODMyZDZkZTgyNTM4NTZjZGIwZTUxMjU0MzlhOWY5Nzk0
NmQ4ZjY4Li44NzdkM2QwNGFjNWU0ZmM3NmM2MzQzZjM0YzkxMzY5MzdmNGY2NDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIEVOQUJMRShKSVQpCi0gICAgY29uc3Qg
dm9pZCogbV9wb2ludGVyIHsgbnVsbHB0ciB9OworICAgIHZvaWQqIG1fcG9pbnRlciB7IG51bGxw
dHIgfTsKICNlbmRpZgogCiAgICAgZW51bSBNb2RlIHsgTm9uZSwgSklULCBJbnRlcnByZXRlciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcApp
bmRleCBiYWZlMWI3ZjdkZGVlNDY4YWRmMzRjZGFjZjc5NjIzY2FmNDE0YzhhLi5iNDVlM2EyNjZi
MzUwYzJjODc0MGNiNzZjNGNiNmJmNWIyYjkwYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcApAQCAtMTA3LDEyICsxMDcsMTIgQEAgU1VQ
UFJFU1NfQVNBTiBDYWxsU2l0ZUluZGV4IENhbGxGcmFtZTo6dW5zYWZlQ2FsbFNpdGVJbmRleCgp
IGNvbnN0CiB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3QgSW5zdHJ1Y3Rpb24qIENh
bGxGcmFtZTo6Y3VycmVudFZQQygpIGNvbnN0CitJbnN0cnVjdGlvbiogQ2FsbEZyYW1lOjpjdXJy
ZW50VlBDKCkgY29uc3QKIHsKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4o
Y2FsbFNpdGVJbmRleCgpLmJpdHMoKSk7CiB9CiAKLXZvaWQgQ2FsbEZyYW1lOjpzZXRDdXJyZW50
VlBDKGNvbnN0IEluc3RydWN0aW9uKiB2cGMpCit2b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQ
QyhJbnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUodnBjKTsK
ICAgICB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRdLnRhZygpID0gY2FsbFNpdGUu
Yml0cygpOwpAQCAtMTI2LDEzICsxMjYsMTMgQEAgdW5zaWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0
ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCkgY29uc3QKIH0KIAogI2Vsc2UgLy8gVVNFKEpTVkFMVUUz
Ml82NCkKLWNvbnN0IEluc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBjb25zdAor
SW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6Y3VycmVudFZQQygpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGNhbGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkpOwotICAgIHJldHVybiBjb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCgpKS5wdHIo
KTsKKyAgICByZXR1cm4gJmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtjYWxsU2l0ZUJpdHNB
c0J5dGVjb2RlT2Zmc2V0KCldOwogfQogCi12b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhj
b25zdCBJbnN0cnVjdGlvbiogdnBjKQordm9pZCBDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMoSW5z
dHJ1Y3Rpb24qIHZwYykKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKGNvZGVCbG9jaygp
LT5ieXRlY29kZU9mZnNldCh2cGMpKTsKICAgICB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRdLnRhZygpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oY2FsbFNpdGUuYml0cygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAppbmRleCA5MWRh
MTU1YmFiZjkwZTAyZWQzYWQ0N2VlMDA0YTgyNzc5MGU2YWQ4Li5mZjQ5YTIzYTE5NTc2OWRkMTBj
OWRkYzJhNzJkYjRmYjdiN2M2YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAg
ICAgICAgICAgIDogbV9iaXRzKGJpdHMpCiAgICAgICAgIHsgfQogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCi0gICAgICAgIGV4cGxpY2l0IENhbGxTaXRlSW5kZXgoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQorICAgICAgICBleHBsaWNpdCBDYWxsU2l0ZUluZGV4KEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbikKICAgICAgICAgICAgIDogbV9iaXRzKGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
aW5zdHJ1Y3Rpb24pKQogICAgICAgICB7IH0KICNlbmRpZgpAQCAtNzAsNyArNzAsNyBAQCBuYW1l
c3BhY2UgSlNDICB7CiAgICAgLy8gYXJtNjRfMzIgZXhwZWN0cyBjYWxsZXIgZnJhbWUgYW5kIHJl
dHVybiBwYyB0byB1c2UgOCBieXRlcyAKICAgICBzdHJ1Y3QgQ2FsbGVyRnJhbWVBbmRQQyB7CiAg
ICAgICAgIGFsaWduYXMoQ1BVUmVnaXN0ZXIpIENhbGxGcmFtZSogY2FsbGVyRnJhbWU7Ci0gICAg
ICAgIGFsaWduYXMoQ1BVUmVnaXN0ZXIpIGNvbnN0IEluc3RydWN0aW9uKiByZXR1cm5QQzsKKyAg
ICAgICAgYWxpZ25hcyhDUFVSZWdpc3RlcikgSW5zdHJ1Y3Rpb24qIHJldHVyblBDOwogICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IHNpemVJblJlZ2lzdGVycyA9IDIgKiBzaXplb2YoQ1BVUmVnaXN0
ZXIpIC8gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICB9OwogICAgIHN0YXRpY19hc3NlcnQoQ2FsbGVy
RnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzID09IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAv
IHNpemVvZihSZWdpc3RlciksICJDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMgaXMg
aW5jb3JyZWN0LiIpOwpAQCAtMTgzLDggKzE4Myw4IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAg
ICAgICAgIHJldHVybiB0b3BPZkZyYW1lSW50ZXJuYWwoKTsKICAgICAgICAgfQogICAgIAotICAg
ICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0OyAvLyBUaGlzIG9ubHkg
bWFrZXMgc2Vuc2UgaW4gdGhlIExMSW50IGFuZCBiYXNlbGluZS4KLSAgICAgICAgdm9pZCBzZXRD
dXJyZW50VlBDKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIEluc3RydWN0aW9uKiBjdXJy
ZW50VlBDKCkgY29uc3Q7IC8vIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiB0aGUgTExJbnQgYW5k
IGJhc2VsaW5lLgorICAgICAgICB2b2lkIHNldEN1cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYyk7
CiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGZyYW1lKSB7IGNhbGxl
ckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZSA9IGZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2Nv
cGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQsIEpTU2NvcGUqIHNjb3BlKSB7IHN0YXRpY19jYXN0
PFJlZ2lzdGVyKj4odGhpcylbc2NvcGVSZWdpc3Rlck9mZnNldF0gPSBzY29wZTsgfQpAQCAtMjY0
LDcgKzI2NCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlz
KVtDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50XS5wYXlsb2FkKCkgPSBjb3VudDsgfQogICAg
ICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKSB7IHN0YXRpY19jYXN0PFJlZ2lz
dGVyKj4odGhpcylbQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlXSA9IGNhbGxlZTsgfQogICAgICAgICB2
b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW0NhbGxGcmFtZVNsb3Q6OmNvZGVCbG9ja10gPSBjb2RlQmxvY2s7IH0KLSAg
ICAgICAgdm9pZCBzZXRSZXR1cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCku
cmV0dXJuUEMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4odmFsdWUpOyB9
CisgICAgICAgIHZvaWQgc2V0UmV0dXJuUEModm9pZCogdmFsdWUpIHsgY2FsbGVyRnJhbWVBbmRQ
QygpLnJldHVyblBDID0gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbio+KHZhbHVlKTsgfQog
CiAgICAgICAgIFN0cmluZyBmcmllbmRseUZ1bmN0aW9uTmFtZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBhZDY1MzYx
OGI0MjhmY2EwNmJlMDRkZGI2NmMwZjNkMzFkMmIyNjRjLi5iNDVkODkwMzE3YTM1OTI4Yzk0ZDlm
YTYwMzMyYmZhN2E0OTJiZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTEyMjksMzQgKzEyMjksMyBAQCBORVZFUl9JTkxJ
TkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9v
a1R5cGUgZGVidWdIbwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7
Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkRlYnVnSG9va1R5
cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEpTQzo6V2lsbEV4ZWN1
dGVQcm9ncmFtOgotICAgICAgICBvdXQucHJpbnQoIldpbGxFeGVjdXRlUHJvZ3JhbSIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OkRpZEV4ZWN1dGVQcm9ncmFtOgotICAgICAgICBv
dXQucHJpbnQoIkRpZEV4ZWN1dGVQcm9ncmFtIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEpTQzo6RGlkRW50ZXJDYWxsRnJhbWU6Ci0gICAgICAgIG91dC5wcmludCgiRGlkRW50ZXJDYWxs
RnJhbWUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpEaWRSZWFjaEJyZWFrcG9p
bnQ6Ci0gICAgICAgIG91dC5wcmludCgiRGlkUmVhY2hCcmVha3BvaW50Iik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEpTQzo6V2lsbExlYXZlQ2FsbEZyYW1lOgotICAgICAgICBvdXQucHJp
bnQoIldpbGxMZWF2ZUNhbGxGcmFtZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6
OldpbGxFeGVjdXRlU3RhdGVtZW50OgotICAgICAgICBvdXQucHJpbnQoIldpbGxFeGVjdXRlU3Rh
dGVtZW50Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6V2lsbEV4ZWN1dGVFeHBy
ZXNzaW9uOgotICAgICAgICBvdXQucHJpbnQoIldpbGxFeGVjdXRlRXhwcmVzc2lvbiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggNmI5MjZiNDJj
NDFhNGFiY2I2YzNiZjZmODUyM2I5MThmNGFlNDVmOC4uODExNzUwNjYyMzI4YTY4N2YxYzc2OWVl
YjEyNjU3MWExMzIzN2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKQEAgLTYyLDYgKzYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
c3RydWN0IEhhbmRsZXJJbmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICBzdHJ1Y3Qg
UHJvdG9DYWxsRnJhbWU7CisgICAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKICAgICBl
bnVtIERlYnVnSG9va1R5cGUgewogICAgICAgICBXaWxsRXhlY3V0ZVByb2dyYW0sCkBAIC05OSw2
ICsxMDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGlubGluZSBPcGNvZGUg
Z2V0T3Bjb2RlKE9wY29kZUlEKTsKIAogICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlEIGdl
dE9wY29kZUlEKE9wY29kZSk7CisgICAgICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bj
b2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24mKTsKKyAgICAgICAgc3RhdGljIGlubGluZSBPcGNvZGVJ
RCBnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJik7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgICAgIHN0YXRpYyBib29sIGlzT3Bjb2RlKE9wY29kZSk7CkBAIC0xODMs
MTEgKzE4NiwzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHZvaWQgc2V0dXBGb3J3YXJkQXJndW1l
bnRzRnJhbWVBbmRTZXRUaGlzKENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVj
Q2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdWludDMyX3QgbGVuZ3RoKTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0K
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6RGVidWdIb29rVHlwZSk7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCmluZGV4IDY4OWI5OTViNjljZWJiZGE2Yjgz
ZjVhZjE5NmRmYjNlMmM0NDk1NDAuLjQxYTQ1NTFhNjdkOWRmNTRjZDdjYzkxZWE1MjMwNjI1OTk2
YTVjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTY0LDYgKzY0LDE2IEBAIGlubGluZSBPcGNvZGVJRCBJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICNlbmRpZgogfQogCitpbmxp
bmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJiBp
bnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNv
ZGUpOworfQorCitpbmxpbmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0
IFVubGlua2VkSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVj
dGlvbi51Lm9wY29kZTsKK30KKwogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlKENhbGxGcmFtZUNsb3N1cmUmIGNsb3N1cmUpCiB7CiAgICAgVk0mIHZtID0gKmNsb3N1
cmUudm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuY3BwCmluZGV4IDJlMTEwYjc4MTQyY2I4MjY2OTRlM2VlYmE4ZTM3MTcwZTEzYjVjYjMu
LjJlOGM5YTYyYjI2YWNiMDQzZWZlNGJiNmZkMGU0N2U2NTBmMzE2NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC00NDgs
NyArNDQ4LDcgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQsIEluZGVudGVyIGluZGVudCwgV1RGOjpGdW5jdGlvbjwKIAogICAgICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IG1fY2FsbEZyYW1lOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1l
ID0gdGhpcy0+Y2FsbGVyRnJhbWUoKTsKLSAgICAgICAgY29uc3Qgdm9pZCogcmV0dXJuUEMgPSBj
YWxsRnJhbWUtPmhhc1JldHVyblBDKCkgPyBjYWxsRnJhbWUtPnJldHVyblBDKCkudmFsdWUoKSA6
IG51bGxwdHI7CisgICAgICAgIHZvaWQqIHJldHVyblBDID0gY2FsbEZyYW1lLT5oYXNSZXR1cm5Q
QygpID8gY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCkgOiBudWxscHRyOwogCiAgICAgICAg
IG91dC5wcmludChpbmRlbnQsICJuYW1lOiAiLCBmdW5jdGlvbk5hbWUoKSwgIlxuIik7CiAgICAg
ICAgIG91dC5wcmludChpbmRlbnQsICJzb3VyY2VVUkw6ICIsIHNvdXJjZVVSTCgpLCAiXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVj
b3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5o
CmluZGV4IDY3MjE4OGU4OTBiMDk0MjkxNDVkODRlMTQxNWJkYjMwNTFhMTM5MWUuLjZiNmViNzMx
YjNiOWJjNmE0NzY4ZmM4ZGFmODUyMTQ5NGFmMjQ3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaApAQCAtNDgsOCArNDgsNiBAQCBz
dHJ1Y3QgVk1FbnRyeVJlY29yZCB7CiAKICNpZiAhRU5BQkxFKENfTE9PUCkgJiYgTlVNQkVSX09G
X0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCiAgICAgQ1BVUmVnaXN0ZXIgY2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlcltOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSU107Ci0jZWxpZiBF
TkFCTEUoQ19MT09QKQotICAgIENQVVJlZ2lzdGVyIGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJb
MV07CiAjZW5kaWYKIAogICAgIEV4ZWNTdGF0ZSogcHJldlRvcENhbGxGcmFtZSgpIHsgcmV0dXJu
IG1fcHJldlRvcENhbGxGcmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDMw
ZTk5ZjA1MDc5Y2QxNzZiOTNjNTY2NGY2MjI5M2IzNGIxZTE5ODMuLjkwOGZmNDVhZTdlNmM2OGJj
MjE5ZGJjY2VhZjgyN2ZmYWEyMzM1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cjxDRnUKIEpJVDo6SklUKFZNKiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGxvb3BPU1JFbnRyeUJ5dGVjb2RlT2Zmc2V0
KQogICAgIDogSlNJbnRlcmZhY2VKSVQodm0sIGNvZGVCbG9jaykKICAgICAsIG1faW50ZXJwcmV0
ZXIodm0tPmludGVycHJldGVyKQotICAgICwgbV9sYWJlbHMoY29kZUJsb2NrID8gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5zaXplKCkgOiAwKQorICAgICwgbV9sYWJlbHMoY29kZUJsb2NrID8g
Y29kZUJsb2NrLT5udW1iZXJPZkluc3RydWN0aW9ucygpIDogMCkKICAgICAsIG1fYnl0ZWNvZGVP
ZmZzZXQoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICwgbV9wY1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXIoKnZtKQogICAgICwgbV9jYW5CZU9wdGltaXplZChmYWxzZSkK
QEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEpJVDo6YXNzZXJ0U3RhY2tQb2ludGVyT2Zmc2V0KCkK
IH0KIAogI2RlZmluZSBORVhUX09QQ09ERShuYW1lKSBcCi0gICAgbV9ieXRlY29kZU9mZnNldCAr
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKTsgXAorICAgIG1fYnl0ZWNvZGVPZmZzZXQgKz0g
T1BDT0RFX0xFTkdUSChuYW1lKTsgXAogICAgIGJyZWFrOwogCiAjZGVmaW5lIERFRklORV9TTE9X
X09QKG5hbWUpIFwKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEpJVDo6YXNzZXJ0U3RhY2tQb2lu
dGVyT2Zmc2V0KCkKICAgICAgICAgTkVYVF9PUENPREUob3BfIyNuYW1lKTsgXAogICAgIH0KIAot
dm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhG
dW5jdGlvbiBzdHViKQordm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwg
U2xvd1BhdGhGdW5jdGlvbiBzdHViKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
QEAgLTE4NSw4ICsxODUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgaml0QXNzZXJ0VGFnc0luUGxhY2UoKTsKICAgICBqaXRBc3NlcnRBcmd1bWVudENvdW50U2Fu
ZSgpOwogICAgIAotICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IG1fY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gbV9jb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50ID0gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOwogCiAgICAgbV9jYWxsTGlua0lu
Zm9JbmRleCA9IDA7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IGZpbmQgdGhlIG1p
bmltdW0gYnl0ZWNvZGUgb2Zmc2V0IHRoYXQgaXMgcmVhY2hhYmxlLCBhbmQKICAgICAgICAgICAg
IC8vIGNvbXBpbGUgY29kZSBmcm9tIHRoYXQgYnl0ZWNvZGUgb2Zmc2V0IG9ud2FyZHMuCiAKLSAg
ICAgICAgICAgIEJ5dGVjb2RlR3JhcGggZ3JhcGgobV9jb2RlQmxvY2ssIG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKSk7CisgICAgICAgICAgICBCeXRlY29kZUdyYXBoIGdyYXBoKG1fY29kZUJs
b2NrLCBtX2luc3RydWN0aW9ucyk7CiAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2xvb3BPU1JFbnRy
eUJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrKTsKIApA
QCAtMjIxLDExICsyMjEsMTIgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICAgICAgICAgIC8vIEFsc28gYWRkIGNhdGNoIGJsb2NrcyBmb3IgYnl0ZWNvZGVzIHRo
YXQgdGhyb3cuCiAgICAgICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5udW1iZXJPZkV4Y2Vw
dGlvbkhhbmRsZXJzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9j
ay0+bGVhZGVyT2Zmc2V0KCkgKyBibG9jay0+dG90YWxMZW5ndGgoKTspIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMuYXQoYnl0ZWNvZGVP
ZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUu
b3Bjb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBoYW5kbGVyID0gbV9j
b2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChncmFwaC5maW5kQmFzaWNCbG9j
a1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFyZ2V0KSk7CiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IGluc3RydWN0aW9uLT5zaXplKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxl
bmd0aDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KQEAgLTI0MSw4ICsyNDIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgbV9kaXNhc3Nl
bWJsZXItPnNldEZvckJ5dGVjb2RlTWFpblBhdGgobV9ieXRlY29kZU9mZnNldCwgbGFiZWwoKSk7
Ci0gICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVj
dGlvbnMuYXQobV9ieXRlY29kZU9mZnNldCkucHRyKCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoY3VycmVudEluc3RydWN0aW9uLT5zaXplKCksICJwcml2YXRlQ29tcGlsZU1haW5QYXNz
IGdvbmUgYmFkIEAgJWQiLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luICsgbV9ieXRlY29kZU9mZnNl
dDsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShJbnRlcnByZXRlcjo6aXNPcGNvZGUoY3Vy
cmVudEluc3RydWN0aW9uLT51Lm9wY29kZSksICJwcml2YXRlQ29tcGlsZU1haW5QYXNzIGdvbmUg
YmFkIEAgJWQiLCBtX2J5dGVjb2RlT2Zmc2V0KTsKIAogICAgICAgICBtX3BjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNl
dCkpOwogCkBAIC0yNTYsNyArMjU3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nRigiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBiYyMldSBhdCBvZmZzZXQgMHglbHguXG4i
LCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKIAotICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKKyAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VycmVudEluc3Ry
dWN0aW9uLT51Lm9wY29kZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKG1fY29tcGlsYXRpb24p
KSB7CiAgICAgICAgICAgICBhZGQ2NCgKQEAgLTMzNiw2ICszMzcsOSBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9iZWxvd2VxKQogICAg
ICAgICBERUZJTkVfT1Aob3BfdHJ5X2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2lu
X2J5X2lkKQorICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CisgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0
OgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJl
Y3QpCkBAIC00MDEsNyArNDA1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV9jb250cm9sX2Zsb3cpCiAgICAgICAgIERF
RklORV9PUChvcF9nZXRfcGFyZW50X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X2lkKQotICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF9kaXJlY3QpCisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFs
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9zZXR0ZXJfYnlfaWQpCkBAIC00NjUsNiArNDY5LDggQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTGlua1Bhc3MoKQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogeworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworCiAgICAgbV9nZXRCeUlkSW5kZXggPSAwOwogICAg
IG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggPSAwOwogICAgIG1fcHV0QnlJZEluZGV4ID0gMDsKQEAg
LTQ3Myw2ICs0NzksMTQgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAg
ICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9
IDA7CiAgICAgCisgICAgLy8gVXNlIHRoaXMgdG8gYXNzZXJ0IHRoYXQgc2xvdy1wYXRoIGNvZGUg
YXNzb2NpYXRlcyBuZXcgcHJvZmlsaW5nIHNpdGVzIHdpdGggZXhpc3RpbmcKKyAgICAvLyBWYWx1
ZVByb2ZpbGVzIHJhdGhlciB0aGFuIGNyZWF0aW5nIG5ldyBvbmVzLiBUaGlzIGVuc3VyZXMgdGhh
dCBmb3IgYSBnaXZlbiBpbnN0cnVjdGlvbgorICAgIC8vIChzYXksIGdldF9ieV9pZCkgd2UgZ2V0
IGNvbWJpbmVkIHN0YXRpc3RpY3MgZm9yIGJvdGggdGhlIGZhc3QtcGF0aCBleGVjdXRpb25zIG9m
IHRoYXQKKyAgICAvLyBpbnN0cnVjdGlvbnMgYW5kIHRoZSBzbG93LXBhdGggZXhlY3V0aW9ucy4g
RnVydGhlcm1vcmUsIGlmIHRoZSBzbG93LXBhdGggY29kZSBjcmVhdGVkCisgICAgLy8gbmV3IFZh
bHVlUHJvZmlsZXMgdGhlbiB0aGUgVmFsdWVQcm9maWxlcyB3b3VsZCBubyBsb25nZXIgYmUgc29y
dGVkIGJ5IGJ5dGVjb2RlIG9mZnNldCwKKyAgICAvLyB3aGljaCB3b3VsZCBicmVhayB0aGUgaW52
YXJpYW50IG5lY2Vzc2FyeSB0byB1c2UgQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldCgpLgorICAgIHVuc2lnbmVkIG51bWJlck9mVmFsdWVQcm9maWxlcyA9IG1fY29kZUJs
b2NrLT5udW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsKKwogICAgIGZvciAoVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciBpdGVyID0gbV9zbG93Q2FzZXMuYmVnaW4oKTsgaXRlciAhPSBtX3Ns
b3dDYXNlcy5lbmQoKTspIHsKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IGl0ZXItPnRvOwog
CkBAIC00ODAsNyArNDk0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkK
IAogICAgICAgICB1bnNpZ25lZCBmaXJzdFRvID0gbV9ieXRlY29kZU9mZnNldDsKIAotICAgICAg
ICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KG1fYnl0ZWNvZGVPZmZzZXQpLnB0cigpOworICAgICAgICBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBtX2J5dGVjb2Rl
T2Zmc2V0OwogICAgICAgICAKICAgICAgICAgUmFyZUNhc2VQcm9maWxlKiByYXJlQ2FzZVByb2Zp
bGUgPSAwOwogICAgICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQpAQCAtNDkyLDcgKzUw
Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGlmICht
X2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRGb3JCeXRlY29k
ZVNsb3dQYXRoKG1fYnl0ZWNvZGVPZmZzZXQsIGxhYmVsKCkpOwogCi0gICAgICAgIHN3aXRjaCAo
Y3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAoSW50ZXJw
cmV0ZXI6OmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpKSB7CiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9hZGQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9jYWxsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdGFpbF9jYWxsKQpAQCAt
NTA1LDYgKzUxOSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9lcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3RyeV9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbl9ieV9p
ZCkKKyAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgICAgICBjYXNlIG9wX2dl
dF9ieV9pZF9wcm90b19sb2FkOgorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDoKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQpAQCAtNTg0LDYgKzYwMSw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9pbkJ5SWRJbmRl
eCA9PSBtX2luQnlJZHMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlT2ZJ
bmRleCA9PSBtX2luc3RhbmNlT2ZzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jYWxs
TGlua0luZm9JbmRleCA9PSBtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChudW1iZXJPZlZhbHVlUHJvZmlsZXMgPT0gbV9jb2RlQmxvY2stPm51bWJlck9m
VmFsdWVQcm9maWxlcygpKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBSZXNldCB0aGlzLCBp
biBvcmRlciB0byBndWFyZCBpdHMgdXNlIHdpdGggQVNTRVJUcy4KQEAgLTU5Nyw2ICs2MTUsMTEg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBl
ZmZvcnQpCiAgICAgaWYgKFVOTElLRUxZKGNvbXB1dGVDb21waWxlVGltZXMoKSkpCiAgICAgICAg
IGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIAorICAgIHsKKyAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgbV9p
bnN0cnVjdGlvbnMgPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuY2xvbmUoKTsKKyAgICB9
CisKICAgICBERkc6OkNhcGFiaWxpdHlMZXZlbCBsZXZlbCA9IG1fY29kZUJsb2NrLT5jYXBhYmls
aXR5TGV2ZWwoKTsKICAgICBzd2l0Y2ggKGxldmVsKSB7CiAgICAgY2FzZSBERkc6OkNhbm5vdENv
bXBpbGU6CkBAIC04ODQsNyArOTA3LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkK
ICAgICAKICAgICBtX3ZtLT5tYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxp
bmVKSVQtPmFkZCgKICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihyZXN1bHQuc2l6ZSgpKSAv
Ci0gICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291
bnQoKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1faW5zdHJ1Y3Rpb25zLnNpemUo
KSkpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmlu
ayk7CiAgICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApp
bmRleCAwMmUzNTFmNTQ4YmQwYzhiNmQwNjNlODM3MzZiNGNiMTNlMTJlNjNkLi5iOGI4YWNjMTY1
NjAxYjVmODVmZDkwYjJhNTkyMmYxYTAyNTA5NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
QEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJKSVREaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVE1hdGhJQy5oIgotI2lu
Y2x1ZGUgIkpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJ
VC5oIgogI2luY2x1ZGUgIlBDVG9Db2RlT3JpZ2luTWFwLmgiCiAjaW5jbHVkZSAiVW51c2VkUG9p
bnRlci5oIgpAQCAtMjIzLDIyICsyMjIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9i
eXRlY29kZU9mZnNldCA9IGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleDsKLSAgICAgICAgICAgIGpp
dC5wcml2YXRlQ29tcGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWw+KGJ5VmFsSW5mbywgcmV0dXJuQWRk
cmVzcywgYXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dEJ5VmFs
KGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgYXJyYXlNb2RlKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZURpcmVjdFB1dEJ5VmFsKFZNKiB2bSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29k
ZU9mZnNldCA9IGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleDsKLSAgICAgICAgICAgIGppdC5wcml2
YXRlQ29tcGlsZVB1dEJ5VmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGJ5VmFsSW5mbywgcmV0dXJuQWRk
cmVzcywgYXJyYXlNb2RlKTsKKyAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1dEJ5VmFs
KGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgYXJyYXlNb2RlKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0
QnlWYWxXaXRoQ2FjaGVkSWQoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgUHV0S2luZCBwdXRL
aW5kLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgICAgICBqaXQubV9ieXRlY29kZU9m
ZnNldCA9IGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleDsKLSAgICAgICAgICAgIGppdC5wcml2YXRl
Q29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wPihieVZhbEluZm8sIHJldHVybkFkZHJlc3Ms
IHB1dEtpbmQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbFdpdGhDYWNoZWRJZChieVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHB1dEtpbmQsIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlSGFz
SW5kZXhlZFByb3BlcnR5KFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBh
cnJheU1vZGUpCkBAIC0yNjIsOSArMjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5
VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIGNvbnN0IElkZW50
aWZpZXImKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVQdXRCeVZhbChCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBKSVRBcnJh
eU1vZGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQ
dHIsIFB1dEtpbmQsIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJ
VEFycmF5TW9kZSk7CkBAIC0zMTIsMzUgKzMwOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBhZGRKdW1wKGNvbnN0IEp1bXBMaXN0JiwgaW50KTsKICAgICAgICAgdm9pZCBlbWl0
SnVtcFNsb3dUb0hvdChKdW1wLCBpbnQpOwogCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICB2b2lkIGNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCB1bnNpZ25l
ZCBjYWxsTGlua0luZm9JbmRleCk7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAg
ICAgICB2b2lkIGNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCk7
Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBzdGQ6OmVuYWJsZV9pZl90
PAotICAgICAgICAgICAgT3A6Om9wY29kZUlEICE9IG9wX2NhbGxfdmFyYXJncyAmJiBPcDo6b3Bj
b2RlSUQgIT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MKLSAgICAgICAgICAgICYmIE9wOjpvcGNvZGVJ
RCAhPSBvcF90YWlsX2NhbGxfdmFyYXJncyAmJiBPcDo6b3Bjb2RlSUQgIT0gb3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzCi0gICAgICAgICwgdm9pZD4gY29tcGlsZVNldHVwRnJhbWUoY29u
c3QgT3AmLCBDYWxsTGlua0luZm8qKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
LSAgICAgICAgc3RkOjplbmFibGVfaWZfdDwKLSAgICAgICAgICAgIE9wOjpvcGNvZGVJRCA9PSBv
cF9jYWxsX3ZhcmFyZ3MgfHwgT3A6Om9wY29kZUlEID09IG9wX2NvbnN0cnVjdF92YXJhcmdzCi0g
ICAgICAgICAgICB8fCBPcDo6b3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgT3A6
Om9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cwotICAgICAgICAsIHZv
aWQ+IGNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiwgQ2FsbExpbmtJbmZvKik7Ci0KLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIGJvb2wgY29tcGlsZVRhaWxDYWxsKGNv
bnN0IE9wJiwgQ2FsbExpbmtJbmZvKiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwotICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgYm9vbCBjb21waWxlQ2FsbEV2YWwo
Y29uc3QgT3AmKTsKLSAgICAgICAgdm9pZCBjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdFB1dENhbGxSZXN1bHQoY29u
c3QgT3AmKTsKKyAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsKE9wY29kZUlELCBJbnN0cnVjdGlv
biosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KTsKKyAgICAgICAgdm9pZCBjb21waWxlT3BD
YWxsU2xvd0Nhc2UoT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYsIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KTsKKyAgICAgICAgdm9pZCBj
b21waWxlU2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgQ2FsbExpbmtJ
bmZvKik7CisgICAgICAgIHZvaWQgY29tcGlsZUNhbGxFdmFsKEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFB1dENhbGxSZXN1bHQo
SW5zdHJ1Y3Rpb24qKTsKIAogICAgICAgICBlbnVtIGNsYXNzIENvbXBpbGVPcFN0cmljdEVxVHlw
ZSB7IFN0cmljdEVxLCBOU3RyaWN0RXEgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+
Ci0gICAgICAgIHZvaWQgY29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBDb21w
aWxlT3BTdHJpY3RFcVR5cGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgdm9pZCBjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qLCBDb21waWxl
T3BTdHJpY3RFcVR5cGUpOworICAgICAgICB2b2lkIGNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0
aW9uKiwgQ29tcGlsZU9wU3RyaWN0RXFUeXBlKTsKKyAgICAgICAgdm9pZCBjb21waWxlT3BTdHJp
Y3RFcUp1bXAoSW5zdHJ1Y3Rpb24qLCBDb21waWxlT3BTdHJpY3RFcVR5cGUpOwogICAgICAgICBl
bnVtIGNsYXNzIENvbXBpbGVPcEVxVHlwZSB7IEVxLCBORXEgfTsKICAgICAgICAgdm9pZCBjb21w
aWxlT3BFcUp1bXBTbG93KFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBDb21waWxl
T3BFcVR5cGUsIGludCBqdW1wVGFyZ2V0KTsKICAgICAgICAgYm9vbCBpc09wZXJhbmRDb25zdGFu
dERvdWJsZShpbnQgc3JjKTsKQEAgLTM1OCwxMiArMzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIC8vIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZSB0byBwcm9maWxlIGlzIGluIHJl
Z1QwIGFuZCB0aGF0IHJlZ1QzIGlzIGF2YWlsYWJsZSBmb3IKICAgICAgICAgLy8gc2NyYXRjaC4K
ICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsZSYpOwotICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4gdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKE1ldGFkYXRhJik7Ci0gICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJv
ZmlsZWRPcGNvZGUoLi4uKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAg
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPGRlY2x0eXBlKE9wOjpNZXRhZGF0YTo6cHJv
ZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2b2lkPgotICAgICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSk7Ci0KKyAgICAgICAgdm9pZCBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAg
dm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5
cGUsIEFycmF5UHJvZmlsZSopOwogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVG
b3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4
aW5nVHlwZSwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5
UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CkBAIC0zNzUsNTUg
KzM0OCw0NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gUHJvcGVydHkgaXMgaW50LWNo
ZWNrZWQgYW5kIHplcm8gZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLgogICAgICAgICAv
LyBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4gUmV0dXJucyB0aGUgc2xvdyBjYXNlcy4g
RmFsbC10aHJvdWdoCiAgICAgICAgIC8vIGNhc2UgY29udGFpbnMgcmVzdWx0IGluIHJlZ1QwLCBh
bmQgaXQgaXMgbm90IHlldCBwcm9maWxlZC4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
IHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgSW50MzJT
aGFwZSk7IH0KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRp
Z3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5k
ZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwotICAgICAgICBKdW1w
TGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25z
dCBJbnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0K
LSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyR2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKSB7IHJldHVybiBlbWl0Q29udGlndW91
c0dldEJ5VmFsKGluc3RydWN0aW9uLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsgfQotICAgICAgICBK
dW1wTGlzdCBlbWl0RG91YmxlR2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNHZXRCeVZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBl
eHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdEFy
cmF5U3RvcmFnZUdldEJ5VmFsKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREaXJlY3RBcmd1bWVudHNHZXRCeVZhbChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlz
dCBlbWl0U2NvcGVkQXJndW1lbnRzR2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlHZXRC
eVZhbChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJy
YXlUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheUdldEJ5VmFsKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUp
OworICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkgeyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGlu
c3RydWN0aW9uLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0
RG91YmxlTG9hZChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOworICAgICAg
ICBKdW1wTGlzdCBlbWl0Q29udGlndW91c0xvYWQoSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7
CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlN
b2RlKEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsK
KworICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJHZXRCeVZhbChJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpIHsgcmV0dXJuIGVtaXRDb250aWd1b3VzR2V0
QnlWYWwoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMyU2hhcGUpOyB9CisgICAgICAgIEp1bXBM
aXN0IGVtaXREb3VibGVHZXRCeVZhbChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c0dldEJ5VmFsKEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBD
b250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlR2V0QnlW
YWwoSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdERpcmVjdEFyZ3VtZW50c0dldEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRTY29wZWRBcmd1bWVudHNHZXRCeVZh
bChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOworICAgICAgICBKdW1wTGlz
dCBlbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBl
ZEFycmF5R2V0QnlWYWwoSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBl
ZEFycmF5VHlwZSk7CiAgICAgICAgIAogICAgICAgICAvLyBQcm9wZXJ0eSBpcyBpbiByZWdUMSwg
YmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29udGFpbnMgaW5kZWNpbmcgdHlwZS4KICAgICAgICAg
Ly8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5vdCB5ZXQgbG9hZGVkLiBQcm9wZXJ0eSBpcyBpbnQt
Y2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVyby1leHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNr
ZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLgogICAgICAgICAvLyByZXR1cm5zIHRo
ZSBzbG93IGNhc2VzLgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVt
cExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgSW50MzJTaGFwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1
b3VzUHV0QnlWYWwoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKICAg
ICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3Qg
ZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQor
ICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
LCBEb3VibGVTaGFwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBEb3VibGVTaGFwZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVt
aXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
CisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZh
bChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwogICAgICAgICB9Ci0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5n
U2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
LSAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1
bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIFR5cGVkQXJyYXlUeXBlKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAg
ICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAgICAg
SnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlW
YWwoSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7
CisgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAogICAgICAgICAv
LyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAg
ICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhCeVZhbEluZm8qLCBSZWdpc3RlcklE
IGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYsIEp1bXBMaXN0JiBz
bG93Q2FzZXMpOwogCi0gICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZW1pdEdldEJ5VmFsV2l0
aENhY2hlZElkKEJ5VmFsSW5mbyosIE9wR2V0QnlWYWwsIGNvbnN0IElkZW50aWZpZXImLCBKdW1w
JiBmYXN0RG9uZUNhc2UsIEp1bXAmIHNsb3dEb25lQ2FzZSwgSnVtcExpc3QmIHNsb3dDYXNlcyk7
Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBPcCwgUHV0S2luZCwgY29u
c3QgSWRlbnRpZmllciYsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMp
OworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChC
eVZhbEluZm8qLCBJbnN0cnVjdGlvbiosIGNvbnN0IElkZW50aWZpZXImLCBKdW1wJiBmYXN0RG9u
ZUNhc2UsIEp1bXAmIHNsb3dEb25lQ2FzZSwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CisgICAgICAg
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyos
IEluc3RydWN0aW9uKiwgUHV0S2luZCwgY29uc3QgSWRlbnRpZmllciYsIEp1bXBMaXN0JiBkb25l
Q2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCiAgICAgICAgIGVudW0gRmluYWxPYmplY3RN
b2RlIHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9OwogCkBAIC00ODksMjEyICs0NTQsMjA2
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAotICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRK
dW1wKGNvbnN0IEluc3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRpdGlvbik7Ci0gICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkKGNv
bnN0IEluc3RydWN0aW9uKiwgUmVsYXRpb25hbENvbmRpdGlvbik7Ci0gICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotICAgICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcChj
b25zdCBJbnN0cnVjdGlvbiosIFJlbGF0aW9uYWxDb25kaXRpb24pOwotICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25z
dCBJbnN0cnVjdGlvbiosIERvdWJsZUNvbmRpdGlvbiwgc2l6ZV90IChKSVRfT1BFUkFUSU9OICpv
cGVyYXRpb24pKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSksIGJv
b2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCwgaW50IG9wMSwgaW50IG9wMiwgdW5zaWdu
ZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0X2NvbXBh
cmVVbnNpZ25lZChpbnQgZHN0LCBpbnQgb3AxLCBpbnQgb3AyLCBSZWxhdGlvbmFsQ29uZGl0aW9u
KTsKKyAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAoaW50IG9wMSwgaW50
IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAgICAgICAgdm9p
ZCBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhpbnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJn
ZXQsIERvdWJsZUNvbmRpdGlvbiwgc2l6ZV90IChKSVRfT1BFUkFUSU9OICpvcGVyYXRpb24pKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSksIGJvb2wgaW52ZXJ0LCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIAogICAgICAgICB2b2lk
IGFzc2VydFN0YWNrUG9pbnRlck9mZnNldCgpOwogCi0gICAgICAgIHZvaWQgZW1pdF9vcF9hZGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JpdGFuZChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfYml0b3IoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2JpdHhvcihjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfdGFpbF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9jYWxsX2V2YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfdGFpbF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYXJndW1lbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX2FyZ3VtZW50X2NvdW50KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfcmVzdF9sZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2NoZWNrX3Rkeihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9kaXYo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX2JlbG93KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iZWxv
d2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90cnlfZ2V0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF93aXRo
X3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9p
ZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1
bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lu
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xh
enlfcmVnKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlk
ZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9p
bnN0YW5jZW9mX2N1c3RvbShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfaXNfZW1wdHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lz
X3VuZGVmaW5lZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaXNf
Ym9vbGVhbihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaXNfbnVt
YmVyKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9pc19vYmplY3Qo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2lzX2NlbGxfd2l0aF90
eXBlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamZhbHNlKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbXAoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2puZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2psZXNzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9qbGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9qZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfamdy
ZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5sZXNz
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmxlc3NlcShjb25z
dCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyKGNvbnN0IElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXJlcShjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX2piZWxvdyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bf
amJlbG93ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2p0cnVl
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9sb29wX2hpbnQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RyYXBzKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9ub3AoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVnaW4oY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N1cGVyX3NhbXBsZXJfZW5kKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9sc2hpZnQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfbW92KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmVxKGNv
bnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXFfbnVsbChjb25zdCBJ
bnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5KGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhjb25zdCBJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19l
eHAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19m
dW5jKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNf
ZnVuY19leHAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX25ld19h
c3luY19nZW5lcmF0b3JfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9uc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X2RlYyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaW5jKGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Byb2ZpbGVfY29udHJvbF9mbG93
KGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcGFyZW50X3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AgPSBPcFB1
dEJ5VmFsPgotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVy
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3Nl
dHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Jl
dChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KGNvbnN0
IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShj
b25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc3RyaWN0ZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX2NoYXIoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9pbW0oY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3RvX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfdG9fc3RyaW5nKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF90b19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX3RvX3ByaW1pdGl2ZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfdW5leHBlY3RlZF9sb2FkKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF91bnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfaGFz
X3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9kaXJlY3RfcG5hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lKGNvbnN0IEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tl
bl9wcm9sb2d1ZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbG9n
X3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLQotICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lk
IGVtaXRTbG93X29wX3RhaWxfY2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX2V2YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93
X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJn
cyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
LSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2NhbGxlZShjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNl
b2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3NlcShjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9qZ3JlYXRlcihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZ3JlYXRl
cmVxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pubGVzcyhjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9qbmxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamVxKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfanN0cmljdGVx
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX21vZChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX25lcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1Yihjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLQotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2
ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zy
b21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90
b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zy
b21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9w
dXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3Bl
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwot
Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKLQotICAgICAg
ICB2b2lkIGVtaXRSaWdodFNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVk
KTsKLSAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7Ci0K
LSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmND
b21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+
Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZGQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2JpdGFuZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYml0b3Io
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JpdHhvcihJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfdGFpbF9jYWxsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9j
YWxsX2V2YWwoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfdmFyYXJn
cyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3Mo
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2Fy
Z3VtZW50cyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3Zh
cmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYXJndW1lbnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FyZ3VtZW50
X2NvdW50KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5n
dGgoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9kZWxfYnlfdmFsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9k
aXYoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VuZChJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
ZXEoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2JlbG93KEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9iZWxvd2VxKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF90cnlfZ2V0X2J5X2lkKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRf
YnlfaWQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF93aXRo
X3RoaXMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudHNfbGVu
Z3RoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfaW5zdGFuY2VvZl9jdXN0b20oSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2lzX2VtcHR5KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc191
bmRlZmluZWQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4o
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfb2JqZWN0KEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfamVxX251bGwoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2pmYWxzZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam1wKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2puZXFfcHRyKEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9qbGVzcyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfamxl
c3NlcShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfamdyZWF0ZXIoSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pncmVhdGVyZXEoSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2pubGVzcyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3Bfam5sZXNzZXEoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pu
Z3JlYXRlcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyZXEo
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2plcShJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfanN0cmljdGVxKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbnN0
cmljdGVxKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qYmVsb3coSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2piZWxvd2VxKEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9qdHJ1ZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVj
a190cmFwcyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfbm9wKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2luKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2VuZChJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfbHNoaWZ0KEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX21v
dihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbXVsKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX25lcShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmVxX251
bGwoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheShJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZShJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX25vdChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbnN0cmljdGVxKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWMoSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2luYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfcHJvZmlsZV90eXBlKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X3BhcmVudF9zY29wZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5
X2lkKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV92YWwoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX3JzaGlmdChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0
X2Z1bmN0aW9uX25hbWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N0cmlj
dGVxKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3N3aXRjaF9jaGFyKEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfaW1tKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF90ZWFyX29mZl9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3Rocm93KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19udW1iZXIoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3RvX3N0cmluZyhJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfdG9fb2JqZWN0KEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX3VuZXhwZWN0ZWRfbG9hZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfdW5zaWduZWQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Vyc2hpZnQo
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVy
dHkoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19pbmRleGVkX3Byb3Bl
cnR5KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZGlyZWN0X3BuYW1l
KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX3N0cnVjdHVy
ZV9wbmFtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9n
ZW5lcmljX3BuYW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb2dfc2hh
ZG93X2NoaWNrZW5fcHJvbG9ndWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKEluc3RydWN0aW9uKik7CisKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbChJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90
YWlsX2NhbGwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF9ldmFsKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Nh
bGxfdmFyYXJncyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfdmFyYXJncyhJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29u
c3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2VxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdHJ5
X2dldF9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dl
dF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9pbl9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2psZXNzZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXIoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfamdyZWF0ZXJlcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3MoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3Bfam5sZXNzZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5ncmVhdGVyKEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2puZ3JlYXRlcmVxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2plcShJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmVx
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2pzdHJpY3RlcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbnN0cmljdGVx
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2p0cnVlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2xvb3BfaGludChJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9jaGVja190cmFwcyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tb2QoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lZ2F0ZShJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9u
ZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlf
aWQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zdWIoSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29s
dmVfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX3Nj
b3BlKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9mcm9tX3Njb3BlKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKKworICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7
CisKKyAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNp
Z25lZCk7CisgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOworCisg
ICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAg
IHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwogICAgICAgICB2b2lkIGVtaXRMb2Fk
V2l0aFN0cnVjdHVyZUNoZWNrKGludCBzY29wZSwgU3RydWN0dXJlKiogc3RydWN0dXJlU2xvdCk7
CkBAIC03MjAsMTUgKzY3OSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc09w
ZXJhbmRDb25zdGFudEludChpbnQgc3JjKTsKICAgICAgICAgYm9vbCBpc09wZXJhbmRDb25zdGFu
dENoYXIoaW50IHNyYyk7CiAKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFt
ZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE5vblByb2Zp
bGVkRnVuY3Rpb24+Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJv
ZmlsZWRGdW5jdGlvbik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUg
R2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBOb25Qcm9maWxl
ZEZ1bmN0aW9uPgotICAgICAgICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxH
ZW5lcmF0b3I+KiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9m
aWxlZEZ1bmN0aW9uKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlw
ZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KKyAg
ICAgICAgdm9pZCBlbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgSW5z
dHJ1Y3Rpb24qLCBQcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uKTsKKyAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlv
biwgdHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KKyAgICAgICAgdm9pZCBlbWl0TWF0aElD
RmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIEluc3RydWN0aW9uKiwgUHJvZmlsZWRG
dW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbik7CiAKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRjaEZ1bmN0
aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVuY3Rpb24+
Ci0gICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4q
LCBjb25zdCBJbnN0cnVjdGlvbiosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1
bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24pOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3As
IHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5
cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4KLSAgICAg
ICAgdm9pZCBlbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwg
UmVwYXRjaEZ1bmN0aW9uKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwg
dHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rp
b24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4KKyAgICAgICAgdm9pZCBlbWl0TWF0aElDU2xv
dyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiosIEluc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBh
dGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7CisgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRjaEZ1
bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVuY3Rp
b24+CisgICAgICAgIHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9y
PiosIEluc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVuY3Rp
b24sIFJlcGF0Y2hGdW5jdGlvbik7CiAKICAgICAgICAgSnVtcCBnZXRTbG93Q2FzZShWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogICAgICAgICB7CkBAIC03NjAsOCArNzE5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25zdCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+LCBpbnQpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBN
ZXRhZGF0YT4KLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIGNvbnN0IEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIGludCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFBy
b2ZpbGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgaW50KTsKICAgICAgICAg
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkNhbGw+CkBAIC04MDMsMTIgKzc2MSwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmIC8vIE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpCiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGw+Ci0gICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShNZXRhZGF0YSYg
bWV0YWRhdGEsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBpbnQgcmVzdWx0LCBBcmdzLi4uIGFy
Z3MpCisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShPcGVyYXRpb25UeXBlIG9wZXJh
dGlvbiwgaW50IHJlc3VsdCwgQXJncy4uLiBhcmdzKQogICAgICAgICB7CiAgICAgICAgICAgICBz
ZXR1cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKLSAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxl
KG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtODQwLDEzICs3OTgsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBOb1Byb2ZpbGluZwogICAgICAgICB9OwogCi0gICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBTbmlwcGV0R2VuZXJhdG9yPgotICAgICAg
ICB2b2lkIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeSBzaG91bGRFbWl0UHJvZmlsaW5nID0gUHJvZmls
aW5nUG9saWN5OjpOb1Byb2ZpbGluZyk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBw
ZXRHZW5lcmF0b3I+CisgICAgICAgIHZvaWQgZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGgoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsaW5nUG9saWN5IHNob3VsZEVtaXRQcm9m
aWxpbmcgPSBQcm9maWxpbmdQb2xpY3k6Ok5vUHJvZmlsaW5nKTsKIAotICAgICAgICB2b2lkIGVt
aXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgT3Bjb2RlSUQpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2
b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6U2hpZnRUeXBlKTsKKyAgICAgICAgdm9p
ZCBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IE9wY29kZUlEKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwogCkBAIC04
NTUsOCArODEwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gTG9hZHMgdGhlIGNo
YXJhY3RlciB2YWx1ZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5nIGludG8gZHN0LgogICAg
ICAgICB2b2lkIGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCwgSnVtcExpc3QmIGZhaWx1cmVzKTsKLQotICAgICAgICBpbnQganVtcFRhcmdldChj
b25zdCBJbnN0cnVjdGlvbiosIGludCB0YXJnZXQpOwogICAgICAgICAKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAgICAgdm9pZCBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwpAQCAtODc4
LDcgKzgzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoT1BDT0RF
X1NBTVBMSU5HKQotICAgICAgICB2b2lkIHNhbXBsZUluc3RydWN0aW9uKGNvbnN0IEluc3RydWN0
aW9uKiwgYm9vbCA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBzYW1wbGVJbnN0cnVjdGlvbihJbnN0
cnVjdGlvbiosIGJvb2wgPSBmYWxzZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT0RFQkxPQ0tf
U0FNUExJTkcpCkBAIC05MDIsMTUgKzg1NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGJvb2wgcmVwb3J0Q29tcGlsZVRpbWVzKCk7CiAgICAgICAgIHN0YXRpYyBib29sIGNv
bXB1dGVDb21waWxlVGltZXMoKTsKICAgICAgICAgCi0gICAgICAgIC8vIElmIHlvdSBuZWVkIHRv
IGNoZWNrIGEgdmFsdWUgZnJvbSB0aGUgbWV0YWRhdGEgdGFibGUgYW5kIHlvdSBuZWVkIGl0IHRv
Ci0gICAgICAgIC8vIGJlIGNvbnNpc3RlbnQgYWNyb3NzIHRoZSBmYXN0IGFuZCBzbG93IHBhdGgs
IHRoZW4geW91IHdhbnQgdG8gdXNlIHRoaXMuCi0gICAgICAgIC8vIEl0IHdpbGwgZ2l2ZSB0aGUg
c2xvdyBwYXRoIHRoZSBzYW1lIHZhbHVlIHJlYWQgYnkgdGhlIGZhc3QgcGF0aC4KLSAgICAgICAg
R2V0UHV0SW5mbyBjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSk7Ci0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEJpbmFyeU9wPgotICAgICAgICBBcml0aFByb2ZpbGUgY29waWVkQXJpdGhQ
cm9maWxlKEJpbmFyeU9wKTsKKyAgICAgICAgLy8gSWYgeW91IG5lZWQgdG8gY2hlY2sgdGhlIHZh
bHVlIG9mIGFuIGluc3RydWN0aW9uIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgaW5zdHJ1Y3Rpb24g
aXMKKyAgICAgICAgLy8gcGFydCBvZiBhIExMSW50IGlubGluZSBjYWNoZSwgdGhlbiB5b3Ugd2Fu
dCB0byB1c2UgdGhpcy4gSXQgd2lsbCBnaXZlIHlvdSB0aGUgdmFsdWUgb2YKKyAgICAgICAgLy8g
dGhlIGluc3RydWN0aW9uIGF0IHRoZSBzdGFydCBvZiBKSVRpbmcuCisgICAgICAgIEluc3RydWN0
aW9uKiBjb3BpZWRJbnN0cnVjdGlvbihJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIEludGVycHJl
dGVyKiBtX2ludGVycHJldGVyOwogCisgICAgICAgIFBvaXNvbmVkUmVmQ291bnRlZEFycmF5PENv
ZGVCbG9ja1BvaXNvbiwgSW5zdHJ1Y3Rpb24+IG1faW5zdHJ1Y3Rpb25zOworCiAgICAgICAgIFZl
Y3RvcjxDYWxsUmVjb3JkPiBtX2NhbGxzOwogICAgICAgICBWZWN0b3I8TGFiZWw+IG1fbGFiZWxz
OwogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlkczsKQEAgLTky
Niw5ICs4NzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFNsb3dDYXNlRW50
cnk+IG1fc2xvd0Nhc2VzOwogICAgICAgICBWZWN0b3I8U3dpdGNoUmVjb3JkPiBtX3N3aXRjaGVz
OwogCi0gICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkPiBtX2NvcGllZEdldFB1dElu
Zm9zOwotICAgICAgICBIYXNoTWFwPHNpemVfdCwgQXJpdGhQcm9maWxlPiBtX2NvcGllZEFyaXRo
UHJvZmlsZXM7Ci0KICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3M7CiAgICAgICAg
IEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrOwogICAgICAg
ICBMYWJlbCBtX2V4Y2VwdGlvbkhhbmRsZXI7CkBAIC05NDksOCArODk5LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyIG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyOwogCi0gICAgICAgIEhhc2hNYXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCB2b2lk
Kj4gbV9pbnN0cnVjdGlvblRvTWF0aElDOwotICAgICAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0
aW9uKiwgTWF0aElDR2VuZXJhdGlvblN0YXRlPiBtX2luc3RydWN0aW9uVG9NYXRoSUNHZW5lcmF0
aW9uU3RhdGU7CisgICAgICAgIEhhc2hNYXA8SW5zdHJ1Y3Rpb24qLCB2b2lkKj4gbV9pbnN0cnVj
dGlvblRvTWF0aElDOworICAgICAgICBIYXNoTWFwPEluc3RydWN0aW9uKiwgTWF0aElDR2VuZXJh
dGlvblN0YXRlPiBtX2luc3RydWN0aW9uVG9NYXRoSUNHZW5lcmF0aW9uU3RhdGU7CiAKICAgICAg
ICAgYm9vbCBtX2NhbkJlT3B0aW1pemVkOwogICAgICAgICBib29sIG1fY2FuQmVPcHRpbWl6ZWRP
cklubGluZWQ7CkBAIC05NjEsNSArOTExLDQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCi0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggMjI3NDg1YTVhZGRjZWRiMTc3NGY1MWVi
ZjI5NWNkNzczMzU2NGVjMS4uYjliN2IzNTUzYjgxMjVhNmM4MjBlNzExZmIxOGNiNzQ4ZGQyN2I5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSklUTXVsR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklU
TmVnR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpJ
VFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRTdWJHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtNTIsMTEzICs1
MywxOTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgSklUOjplbWl0X29wX2psZXNzKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9q
bGVzcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRfY29tcGFy
ZUFuZEp1bXA8T3BKbGVzcz4oY3VycmVudEluc3RydWN0aW9uLCBMZXNzVGhhbik7CisgICAgaW50
IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFyZUFuZEp1bXAo
b3Bfamxlc3MsIG9wMSwgb3AyLCB0YXJnZXQsIExlc3NUaGFuKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3Bfamxlc3NlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbGVzc2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24s
IExlc3NUaGFuT3JFcXVhbCk7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
KworICAgIGVtaXRfY29tcGFyZUFuZEp1bXAob3Bfamxlc3NlcSwgb3AxLCBvcDIsIHRhcmdldCwg
TGVzc1RoYW5PckVxdWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXIoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pncmVh
dGVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9jb21wYXJl
QW5kSnVtcDxPcEpncmVhdGVyPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEdyZWF0ZXJUaGFuKTsKKyAg
ICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3Ay
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJnZXQg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21wYXJlQW5k
SnVtcChvcF9qZ3JlYXRlciwgb3AxLCBvcDIsIHRhcmdldCwgR3JlYXRlclRoYW4pOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qZ3JlYXRlcmVxKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9jb21wYXJlQW5kSnVtcDxPcEpncmVhdGVyZXE+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgR3JlYXRlclRoYW5PckVxdWFsKTsKKyAgICBpbnQgb3AxID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21wYXJlQW5kSnVtcChvcF9qZ3Jl
YXRlcmVxLCBvcDEsIG9wMiwgdGFyZ2V0LCBHcmVhdGVyVGhhbk9yRXF1YWwpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2pubGVzcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIGVtaXRfY29tcGFyZUFuZEp1bXA8T3BKbmxlc3M+KGN1cnJlbnRJbnN0cnVj
dGlvbiwgR3JlYXRlclRoYW5PckVxdWFsKTsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOworCisgICAgZW1pdF9jb21wYXJlQW5kSnVtcChvcF9qbmxlc3MsIG9wMSwgb3AyLCB0
YXJnZXQsIEdyZWF0ZXJUaGFuT3JFcXVhbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2pubGVz
c2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9qbmxlc3NlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVt
aXRfY29tcGFyZUFuZEp1bXA8T3BKbmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9uLCBHcmVhdGVy
VGhhbik7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWdu
ZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRf
Y29tcGFyZUFuZEp1bXAob3Bfam5sZXNzZXEsIG9wMSwgb3AyLCB0YXJnZXQsIEdyZWF0ZXJUaGFu
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXIoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSm5n
cmVhdGVyPihjdXJyZW50SW5zdHJ1Y3Rpb24sIExlc3NUaGFuT3JFcXVhbCk7CisgICAgaW50IG9w
MSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFyZUFuZEp1bXAob3Bf
am5ncmVhdGVyLCBvcDEsIG9wMiwgdGFyZ2V0LCBMZXNzVGhhbk9yRXF1YWwpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyZXEoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2NvbXBhcmVBbmRKdW1wPE9wSm5ncmVhdGVyZXE+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgTGVzc1RoYW4pOworICAgIGludCBvcDEgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2puZ3JlYXRlcmVxLCBv
cDEsIG9wMiwgdGFyZ2V0LCBMZXNzVGhhbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9q
bGVzcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2psZXNzKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7Ci0gICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKbGVzcz4oY3Vy
cmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbiwgb3BlcmF0aW9uQ29tcGFyZUxlc3MsIGZh
bHNlLCBpdGVyKTsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1
bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAg
ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlTGVzc1RoYW4s
IG9wZXJhdGlvbkNvbXBhcmVMZXNzLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9qbGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3Bfamxlc3NlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93
PE9wSmxlc3NlcT4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVMZXNzVGhhbk9yRXF1YWwsIG9w
ZXJhdGlvbkNvbXBhcmVMZXNzRXEsIGZhbHNlLCBpdGVyKTsKKyAgICBpbnQgb3AxID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIs
IHRhcmdldCwgRG91YmxlTGVzc1RoYW5PckVxdWFsLCBvcGVyYXRpb25Db21wYXJlTGVzc0VxLCBm
YWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7Ci0gICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKZ3JlYXRlcj4oY3VycmVudElu
c3RydWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbiwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIsIGZh
bHNlLCBpdGVyKTsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1
bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAg
ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlR3JlYXRlclRo
YW4sIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGVtaXRfY29tcGFy
ZUFuZEp1bXBTbG93PE9wSmdyZWF0ZXJlcT4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVHcmVh
dGVyVGhhbk9yRXF1YWwsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEsIGZhbHNlLCBpdGVyKTsK
KyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQg
b3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21wYXJl
QW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlR3JlYXRlclRoYW5PckVxdWFsLCBv
cGVyYXRpb25Db21wYXJlR3JlYXRlckVxLCBmYWxzZSwgaXRlcik7CiB9CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9qbmxlc3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dzxPcEpubGVzcz4oY3VycmVudEluc3RydWN0aW9uLCBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxP
clVub3JkZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUxlc3MsIHRydWUsIGl0ZXIpOworICAgIGludCBv
cDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dyhvcDEsIG9wMiwgdGFyZ2V0LCBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZCwg
b3BlcmF0aW9uQ29tcGFyZUxlc3MsIHRydWUsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3Bfam5sZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9qbmxlc3NlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93
PE9wSm5sZXNzZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlR3JlYXRlclRoYW5PclVub3Jk
ZXJlZCwgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcSwgdHJ1ZSwgaXRlcik7CisgICAgaW50IG9wMSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9w
MSwgb3AyLCB0YXJnZXQsIERvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQsIG9wZXJhdGlvbkNv
bXBhcmVMZXNzRXEsIHRydWUsIGl0ZXIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5n
cmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVh
dGVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3c8T3BKbmdy
ZWF0ZXI+KGN1cnJlbnRJbnN0cnVjdGlvbiwgRG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVy
ZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyLCB0cnVlLCBpdGVyKTsKKyAgICBpbnQgb3AxID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3Ax
LCBvcDIsIHRhcmdldCwgRG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIG9wZXJhdGlv
bkNvbXBhcmVHcmVhdGVyLCB0cnVlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2puZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
am5ncmVhdGVyZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dzxPcEpuZ3JlYXRlcmVxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIERvdWJsZUxlc3NUaGFuT3JVbm9y
ZGVyZWQsIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyRXEsIHRydWUsIGl0ZXIpOworICAgIGludCBv
cDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dyhvcDEsIG9wMiwgdGFyZ2V0LCBEb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkLCBvcGVyYXRpb25D
b21wYXJlR3JlYXRlckVxLCB0cnVlLCBpdGVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYmVs
b3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2JlbG93KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9j
b21wYXJlVW5zaWduZWQ8T3BCZWxvdz4oY3VycmVudEluc3RydWN0aW9uLCBCZWxvdyk7CisgICAg
aW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgZW1pdF9jb21wYXJlVW5zaWduZWQoZHN0LCBv
cDEsIG9wMiwgQmVsb3cpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iZWxvd2VxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9iZWxvd2Vx
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9jb21wYXJlVW5z
aWduZWQ8T3BCZWxvd2VxPihjdXJyZW50SW5zdHJ1Y3Rpb24sIEJlbG93T3JFcXVhbCk7CisgICAg
aW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgZW1pdF9jb21wYXJlVW5zaWduZWQoZHN0LCBv
cDEsIG9wMiwgQmVsb3dPckVxdWFsKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9q
YmVsb3coSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2NvbXBh
cmVVbnNpZ25lZEFuZEp1bXA8T3BKYmVsb3c+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQmVsb3cpOwor
ICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBv
cDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHRhcmdl
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0X2NvbXBhcmVV
bnNpZ25lZEFuZEp1bXAob3AxLCBvcDIsIHRhcmdldCwgQmVsb3cpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9qYmVsb3dlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfamJlbG93ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXA8T3BKYmVsb3dlcT4oY3VycmVu
dEluc3RydWN0aW9uLCBCZWxvd09yRXF1YWwpOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7CisKKyAgICBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAob3AxLCBvcDIsIHRh
cmdldCwgQmVsb3dPckVxdWFsKTsKIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklU
OjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF91bnNpZ25lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVW5z
aWduZWQ+KCk7Ci0gICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBp
bnQgb3AxID0gYnl0ZWNvZGUub3BlcmFuZC5vZmZzZXQoKTsKKyAgICBpbnQgcmVzdWx0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9w
MSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCk7CkBAIC0xNjcs
MTggKzI0NSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91bnNpZ25lZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
LCByZWdUMCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXRfY29t
cGFyZUFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmRpdGlvbikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlE
LCBpbnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZGl0aW9uKQogewogICAgIC8vIFdlIGdlbmVyYXRlIGlubGluZSBjb2RlIGZvciB0aGUgZm9s
bG93aW5nIGNhc2VzIGluIHRoZSBmYXN0IHBhdGg6CiAgICAgLy8gLSBpbnQgaW1tZWRpYXRlIHRv
IGNvbnN0YW50IGludCBpbW1lZGlhdGUKICAgICAvLyAtIGNvbnN0YW50IGludCBpbW1lZGlhdGUg
dG8gaW50IGltbWVkaWF0ZQogICAgIC8vIC0gaW50IGltbWVkaWF0ZSB0byBpbnQgaW1tZWRpYXRl
CiAKLSAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIGludCBv
cDEgPSBieXRlY29kZS5saHMub2Zmc2V0KCk7Ci0gICAgaW50IG9wMiA9IGJ5dGVjb2RlLnJocy5v
ZmZzZXQoKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBi
eXRlY29kZS50YXJnZXQpOwogICAgIGlmIChpc09wZXJhbmRDb25zdGFudENoYXIob3AxKSkgewog
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDApOwogICAgICAgICBhZGRT
bG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDApKTsKQEAgLTIxOSwxMyArMjkyLDggQEAgdm9p
ZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBSZWxhdGlvbmFsQ29uZGl0aW8KICAgICBhZGRKdW1wKGJyYW5jaDMyKGNvbmRpdGlvbiwgcmVn
VDAsIHJlZ1QxKSwgdGFyZ2V0KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJ
VDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit2b2lkIEpJVDo6ZW1pdF9jb21w
YXJlVW5zaWduZWRBbmRKdW1wKGludCBvcDEsIGludCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGluc3Ry
dWN0aW9uLT5hczxPcD4oKTsKLSAgICBpbnQgb3AxID0gYnl0ZWNvZGUubGhzLm9mZnNldCgpOwot
ICAgIGludCBvcDIgPSBieXRlY29kZS5yaHMub2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0
ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUudGFyZ2V0KTsKICAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbnQob3AyKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KG9wMSwgcmVnVDApOwogICAgICAgICBpbnQzMl90IG9wMmltbSA9IGdldE9wZXJhbmRDb25zdGFu
dEludChvcDIpOwpAQCAtMjQwLDEzICszMDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5z
aWduZWRBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbAog
ICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6ZW1pdF9jb21wYXJl
VW5zaWduZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmRpdGlvbikKK3ZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZChpbnQgZHN0LCBp
bnQgb3AxLCBpbnQgb3AyLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIGludCBkc3QgPSBieXRl
Y29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IG9wMSA9IGJ5dGVjb2RlLmxocy5vZmZzZXQoKTsK
LSAgICBpbnQgb3AyID0gYnl0ZWNvZGUucmhzLm9mZnNldCgpOwogICAgIGlmIChpc09wZXJhbmRD
b25zdGFudEludChvcDIpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBy
ZWdUMCk7CiAgICAgICAgIGludDMyX3Qgb3AyaW1tID0gZ2V0T3BlcmFuZENvbnN0YW50SW50KG9w
Mik7CkBAIC0yNjMsMTQgKzMyNiwxNiBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aQogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12
b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBEb3VibGVDb25kaXRpb24gY29uZGl0aW9uLCBzaXplX3QgKEpJVF9PUEVSQVRJT04g
Km9wZXJhdGlvbikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSwg
Ym9vbCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQg
dGFyZ2V0LCBEb3VibGVDb25kaXRpb24gY29uZGl0aW9uLCBzaXplX3QgKEpJVF9PUEVSQVRJT04g
Km9wZXJhdGlvbikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSwg
Ym9vbCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0g
ICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBpbnQgb3AxID0g
Ynl0ZWNvZGUubGhzLm9mZnNldCgpOwotICAgIGludCBvcDIgPSBieXRlY29kZS5yaHMub2Zmc2V0
KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUudGFyZ2V0KTsKLQorICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3Bfamxlc3Mp
ID09IE9QQ09ERV9MRU5HVEgob3Bfamxlc3NlcSksIE9QQ09ERV9MRU5HVEhfb3Bfamxlc3NlcV9l
cXVhbHNfb3Bfamxlc3MpOworICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3Bfamxl
c3MpID09IE9QQ09ERV9MRU5HVEgob3Bfam5sZXNzKSwgT1BDT0RFX0xFTkdUSF9vcF9qbmxlc3Nf
ZXF1YWxzX29wX2psZXNzKTsKKyAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2ps
ZXNzKSA9PSBPUENPREVfTEVOR1RIKG9wX2pubGVzc2VxKSwgT1BDT0RFX0xFTkdUSF9vcF9qbmxl
c3NlcV9lcXVhbHNfb3Bfamxlc3MpOworICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgo
b3Bfamxlc3MpID09IE9QQ09ERV9MRU5HVEgob3BfamdyZWF0ZXIpLCBPUENPREVfTEVOR1RIX29w
X2pncmVhdGVyX2VxdWFsc19vcF9qbGVzcyk7CisgICAgQ09NUElMRV9BU1NFUlQoT1BDT0RFX0xF
TkdUSChvcF9qbGVzcykgPT0gT1BDT0RFX0xFTkdUSChvcF9qZ3JlYXRlcmVxKSwgT1BDT0RFX0xF
TkdUSF9vcF9qZ3JlYXRlcmVxX2VxdWFsc19vcF9qbGVzcyk7CisgICAgQ09NUElMRV9BU1NFUlQo
T1BDT0RFX0xFTkdUSChvcF9qbGVzcykgPT0gT1BDT0RFX0xFTkdUSChvcF9qbmdyZWF0ZXIpLCBP
UENPREVfTEVOR1RIX29wX2puZ3JlYXRlcl9lcXVhbHNfb3Bfamxlc3MpOworICAgIENPTVBJTEVf
QVNTRVJUKE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpID09IE9QQ09ERV9MRU5HVEgob3Bfam5ncmVh
dGVyZXEpLCBPUENPREVfTEVOR1RIX29wX2puZ3JlYXRlcmVxX2VxdWFsc19vcF9qbGVzcyk7Cisg
ICAgCiAgICAgLy8gV2UgZ2VuZXJhdGUgaW5saW5lIGNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgY2Fz
ZXMgaW4gdGhlIHNsb3cgcGF0aDoKICAgICAvLyAtIGZsb2F0aW5nLXBvaW50IG51bWJlciB0byBj
b25zdGFudCBpbnQgaW1tZWRpYXRlCiAgICAgLy8gLSBjb25zdGFudCBpbnQgaW1tZWRpYXRlIHRv
IGZsb2F0aW5nLXBvaW50IG51bWJlcgpAQCAtMzAwLDcgKzM2NSw3IEBAIHZvaWQgSklUOjplbWl0
X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIERvdWJs
ZUNvbmRpdGlvCiAKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaERvdWJsZShj
b25kaXRpb24sIGZwUmVnVDAsIGZwUmVnVDEpLCB0YXJnZXQpOwogCi0gICAgICAgICAgICBlbWl0
SnVtcFNsb3dUb0hvdChqdW1wKCksIGluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAg
ZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBPUENPREVfTEVOR1RIKG9wX2psZXNzKSk7CiAKICAg
ICAgICAgICAgIGZhaWwxLmxpbmsodGhpcyk7CiAgICAgICAgIH0KQEAgLTMyNiw3ICszOTEsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBEb3VibGVDb25kaXRpbwogCiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dUb0hv
dChicmFuY2hEb3VibGUoY29uZGl0aW9uLCBmcFJlZ1QwLCBmcFJlZ1QxKSwgdGFyZ2V0KTsKIAot
ICAgICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBpbnN0cnVjdGlvbi0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwgT1BDT0RFX0xFTkdUSChv
cF9qbGVzcykpOwogCiAgICAgICAgICAgICBmYWlsMS5saW5rKHRoaXMpOwogICAgICAgICB9CkBA
IC0zNTAsNyArNDE1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRG91YmxlQ29uZGl0aW8KIAogICAgICAgICBlbWl0
SnVtcFNsb3dUb0hvdChicmFuY2hEb3VibGUoY29uZGl0aW9uLCBmcFJlZ1QwLCBmcFJlZ1QxKSwg
dGFyZ2V0KTsKIAotICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChqdW1wKCksIGluc3RydWN0aW9u
LT5zaXplKCkpOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChqdW1wKCksIE9QQ09ERV9MRU5H
VEgob3Bfamxlc3MpKTsKIAogICAgICAgICBmYWlsMS5saW5rKHRoaXMpOwogICAgICAgICBmYWls
Mi5saW5rKHRoaXMpOwpAQCAtMzYyLDEwICs0MjcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJl
QW5kSnVtcFNsb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBEb3VibGVDb25kaXRp
bwogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9u
WmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9p
bmMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5jPigpOwotICAgIGludCBzcmNEc3Qg
PSBieXRlY29kZS5zcmNEc3Qub2Zmc2V0KCk7CisgICAgaW50IHNyY0RzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0Rz
dCwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCk7CkBAIC0zNzQs
MTAgKzQzOCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2luYyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0KTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfZGVjKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERl
Yz4oKTsKLSAgICBpbnQgc3JjRHN0ID0gYnl0ZWNvZGUuc3JjRHN0Lm9mZnNldCgpOworICAgIGlu
dCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihzcmNEc3QsIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RJbnQocmVnVDApOwpAQCAtMzkwLDEyICs0NTMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVj
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICNpZiBDUFUoWDg2XzY0
KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX21vZChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
TW9kPigpOwotICAgIGludCByZXN1bHQgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50
IG9wMSA9IGJ5dGVjb2RlLmxocy5vZmZzZXQoKTsKLSAgICBpbnQgb3AyID0gYnl0ZWNvZGUucmhz
Lm9mZnNldCgpOworICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
IGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgLy8gTWFr
ZSBzdXJlIHJlZ2lzdGVycyBhcmUgY29ycmVjdCBmb3IgeDg2IElESVYgaW5zdHJ1Y3Rpb25zLgog
ICAgIEFTU0VSVChyZWdUMCA9PSBYODZSZWdpc3RlcnM6OmVheCk7CkBAIC00MjIsNyArNDg0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IApAQCAtNDMyLDEzICs0OTQsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKIAogI2Vsc2Ug
Ly8gQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX21vZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQpAQCAtNDQ5LDI5ICs1MTEs
MjggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
IAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5hcml0aFBy
b2ZpbGU7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2NvZGVCbG9jay0+YXJp
dGhQcm9maWxlRm9yUEMoY3VycmVudEluc3RydWN0aW9uKTsKICAgICBKSVROZWdJQyogbmVnYXRl
SUMgPSBtX2NvZGVCbG9jay0+YWRkSklUTmVnSUMoYXJpdGhQcm9maWxlLCBjdXJyZW50SW5zdHJ1
Y3Rpb24pOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9u
LCBuZWdhdGVJQyk7Ci0gICAgZW1pdE1hdGhJQ0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFy
aXRoTmVnYXRlKTsKKyAgICBlbWl0TWF0aElDRmFzdChuZWdhdGVJQywgY3VycmVudEluc3RydWN0
aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgSklUTmVnSUMqIG5lZ0lDID0gYml0d2lzZV9jYXN0
PEpJVE5lZ0lDKj4obV9pbnN0cnVjdGlvblRvTWF0aElDLmdldChjdXJyZW50SW5zdHJ1Y3Rpb24p
KTsKLSAgICBlbWl0TWF0aElDU2xvdzxPcE5lZ2F0ZT4obmVnSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplLCBvcGVyYXRpb25Bcml0aE5l
Z2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKTsKKyAgICBlbWl0TWF0
aElDU2xvdyhuZWdJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVBy
b2ZpbGVkT3B0aW1pemUsIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFy
aXRoTmVnYXRlT3B0aW1pemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUg
U25pcHBldEdlbmVyYXRvcj4KLXZvaWQgSklUOjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3kgcHJvZmls
aW5nUG9saWN5KQordGVtcGxhdGU8dHlwZW5hbWUgU25pcHBldEdlbmVyYXRvcj4KK3ZvaWQgSklU
OjplbWl0Qml0QmluYXJ5T3BGYXN0UGF0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxpbmdQb2xpY3kgcHJvZmlsaW5nUG9saWN5KQogewotICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIGludCByZXN1bHQgPSBieXRlY29k
ZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IG9wMSA9IGJ5dGVjb2RlLmxocy5vZmZzZXQoKTsKLSAg
ICBpbnQgb3AyID0gYnl0ZWNvZGUucmhzLm9mZnNldCgpOworICAgIGludCByZXN1bHQgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVn
cyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKQEAgLTUwNyw1NCArNTY4LDQyIEBAIHZvaWQgSklUOjpl
bWl0Qml0QmluYXJ5T3BGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBQcm9maWxpCiAgICAgQVNTRVJUKGdlbi5kaWRFbWl0RmFzdFBhdGgoKSk7CiAgICAgZ2Vu
LmVuZEp1bXBMaXN0KCkubGluayh0aGlzKTsKICAgICBpZiAocHJvZmlsaW5nUG9saWN5ID09IFBy
b2ZpbGluZ1BvbGljeTo6U2hvdWxkRW1pdFByb2ZpbGluZykKLSAgICAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoYnl0ZWNvZGUpOworICAgICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlc3Vs
dFJlZ3MpOwogCiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKSk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2JpdGFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0YW5kKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdEJpdEJpbmFyeU9wRmFzdFBhdGg8T3BCaXRhbmQsIEpJVEJp
dEFuZEdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3k6OlNob3Vs
ZEVtaXRQcm9maWxpbmcpOworICAgIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRoPEpJVEJpdEFuZEdl
bmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQb2xpY3k6OlNob3VsZEVtaXRQ
cm9maWxpbmcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0b3IoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxP
cEJpdG9yLCBKSVRCaXRPckdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxpbmdQ
b2xpY3k6OlNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIGVtaXRCaXRCaW5hcnlPcEZhc3RQYXRo
PEpJVEJpdE9yR2VuZXJhdG9yPihjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGluZ1BvbGljeTo6
U2hvdWxkRW1pdFByb2ZpbGluZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdHhvcihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYml0
eG9yKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdEJpdEJpbmFy
eU9wRmFzdFBhdGg8T3BCaXR4b3IsIEpJVEJpdFhvckdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0
aW9uKTsKKyAgICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxKSVRCaXRYb3JHZW5lcmF0b3I+KGN1
cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xzaGlmdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdEJpdEJpbmFyeU9w
RmFzdFBhdGg8T3BMc2hpZnQsIEpJVExlZnRTaGlmdEdlbmVyYXRvcj4oY3VycmVudEluc3RydWN0
aW9uKTsKKyAgICBlbWl0Qml0QmluYXJ5T3BGYXN0UGF0aDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3I+
KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0UmlnaHRTaGlmdEZhc3RQ
YXRoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIE9wY29kZUlEIG9wY29k
ZUlEKQordm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CiAgICAgQVNTRVJUKG9wY29kZUlE
ID09IG9wX3JzaGlmdCB8fCBvcGNvZGVJRCA9PSBvcF91cnNoaWZ0KTsKLSAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7Ci0gICAgY2FzZSBvcF9yc2hpZnQ6Ci0gICAgICAgIGVtaXRSaWdodFNoaWZ0RmFz
dFBhdGg8T3BSc2hpZnQ+KGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdlbmVyYXRv
cjo6U2lnbmVkU2hpZnQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIG9wX3Vyc2hpZnQ6Ci0g
ICAgICAgIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGg8T3BVcnNoaWZ0PihjdXJyZW50SW5zdHJ1Y3Rp
b24sIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OlVuc2lnbmVkU2hpZnQpOwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0RmFzdFBh
dGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdl
bmVyYXRvcjo6U2hpZnRUeXBlIHNuaXBwZXRTaGlmdFR5cGUpCi17Ci0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgaW50IHJlc3VsdCA9IGJ5dGVj
b2RlLmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgb3AxID0gYnl0ZWNvZGUubGhzLm9mZnNldCgpOwot
ICAgIGludCBvcDIgPSBieXRlY29kZS5yaHMub2Zmc2V0KCk7CisgICAgSklUUmlnaHRTaGlmdEdl
bmVyYXRvcjo6U2hpZnRUeXBlIHNuaXBwZXRTaGlmdFR5cGUgPSBvcGNvZGVJRCA9PSBvcF9yc2hp
ZnQgPworICAgICAgICBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaWduZWRTaGlmdCA6IEpJVFJp
Z2h0U2hpZnRHZW5lcmF0b3I6OlVuc2lnbmVkU2hpZnQ7CisKKyAgICBpbnQgcmVzdWx0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CkBAIC01OTcsNDMgKzY0Niw0MiBAQCB2b2lkIEpJVDo6
ZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBKSVRSaWdodAogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXBMaXN0KCkpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9yc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3JzaGlmdChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY3VycmVudEluc3Ry
dWN0aW9uLCBvcF9yc2hpZnQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF91cnNo
aWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdFJpZ2h0U2hp
ZnRGYXN0UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNf
SU5MSU5FIHN0YXRpYyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJv
ZmlsZSYgYXJpdGhQcm9maWxlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgT3BlcmFuZFR5cGVzIGdl
dE9wZXJhbmRUeXBlcyhJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7Ci0gICAgcmV0dXJuIE9w
ZXJhbmRUeXBlcyhhcml0aFByb2ZpbGUubGhzUmVzdWx0VHlwZSgpLCBhcml0aFByb2ZpbGUucmhz
UmVzdWx0VHlwZSgpKTsKKyAgICByZXR1cm4gT3BlcmFuZFR5cGVzKEFyaXRoUHJvZmlsZTo6ZnJv
bUludChpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpLmxoc1Jlc3VsdFR5cGUoKSwgQXJpdGhQcm9m
aWxlOjpmcm9tSW50KGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkucmhzUmVzdWx0VHlwZSgpKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5hcml0aFByb2ZpbGU7
CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2NvZGVCbG9jay0+YXJpdGhQcm9m
aWxlRm9yUEMoY3VycmVudEluc3RydWN0aW9uKTsKICAgICBKSVRBZGRJQyogYWRkSUMgPSBtX2Nv
ZGVCbG9jay0+YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
ICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7
Ci0gICAgZW1pdE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9w
ZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKKyAgICBlbWl0TWF0
aElDRmFzdChhZGRJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZUFkZFByb2Zp
bGVkLCBvcGVyYXRpb25WYWx1ZUFkZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9hZGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgSklUQWRkSUMqIGFk
ZElDID0gYml0d2lzZV9jYXN0PEpJVEFkZElDKj4obV9pbnN0cnVjdGlvblRvTWF0aElDLmdldChj
dXJyZW50SW5zdHJ1Y3Rpb24pKTsKLSAgICBlbWl0TWF0aElDU2xvdzxPcEFkZD4oYWRkSUMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplLCBvcGVy
YXRpb25WYWx1ZUFkZFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKTsKKyAgICBl
bWl0TWF0aElDU2xvdyhhZGRJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZUFk
ZFByb2ZpbGVkT3B0aW1pemUsIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZh
bHVlQWRkT3B0aW1pemUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdl
bmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUHJvZmlsZWRG
dW5jdGlvbj4KLXZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0
b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2Zp
bGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9m
aWxlZEZ1bmN0aW9uKQordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJv
ZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUHJvZmlsZWRGdW5jdGlvbj4KK3ZvaWQgSklUOjpl
bWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlv
biwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1bmN0aW9uKQogewotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIGludCByZXN1bHQg
PSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IG9wZXJhbmQgPSBieXRlY29kZS5vcGVy
YW5kLm9mZnNldCgpOworICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOworICAgIGludCBvcGVyYW5kID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgLy8gQXJpdGhOZWdhdGUgYmVuZWZpdHMgZnJv
bSB1c2luZyB0aGUgc2FtZSByZWdpc3RlciBhcyBzcmMgYW5kIGRzdC4KQEAgLTY3OCwyMiArNzI2
LDIyIEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHQsIHJlc3VsdFJlZ3MpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVu
YW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUHJv
ZmlsZWRGdW5jdGlvbj4KLXZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24g
bm9uUHJvZmlsZWRGdW5jdGlvbikKK3RlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVu
YW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE5vblByb2ZpbGVkRnVuY3Rpb24+Cit2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxl
ZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCiB7Ci0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3Bl
cmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRl
Y29kZSkpOwotICAgIGludCByZXN1bHQgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50
IG9wMSA9IGJ5dGVjb2RlLmxocy5vZmZzZXQoKTsKLSAgICBpbnQgb3AyID0gYnl0ZWNvZGUucmhz
Lm9mZnNldCgpOworICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
IGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVk
SW5zdHJ1Y3Rpb24oY3VycmVudEluc3RydWN0aW9uKSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDIpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUMzsKICAgICBGUFJSZWcgc2Ny
YXRjaEZQUiA9IGZwUmVnVDI7CiAjZWxzZQorICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9w
ZXJhbmRUeXBlcyhjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdz
ID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSBsZWZ0UmVnczsKQEAgLTc1MSwxNCArNzk5LDEzIEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFz
dChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxl
ZFJlcGF0Y2hGdW5jdGlvbiwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVw
YXRjaEZ1bmN0aW9uPgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
UHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24gcHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVk
RnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1bmN0aW9uIHJlcGF0Y2hGdW5jdGlv
bikKK3RlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRj
aEZ1bmN0aW9uLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVu
Y3Rpb24+Cit2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9y
PiogbWF0aElDLCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZFJlcGF0
Y2hGdW5jdGlvbiBwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9m
aWxlZEZ1bmN0aW9uLCBSZXBhdGNoRnVuY3Rpb24gcmVwYXRjaEZ1bmN0aW9uKQogewogICAgIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElDR2VuZXJhdGlvblN0YXRlID0gbV9pbnN0cnVjdGlv
blRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZpbmQoY3VycmVudEluc3RydWN0aW9uKS0+dmFsdWU7
CiAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCi0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgaW50
IHJlc3VsdCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKKyAgICBpbnQgcmVzdWx0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgSlNW
YWx1ZVJlZ3Mgc3JjUmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxKTsKQEAgLTc5NywyMyArODQ0LDIz
IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBt
YXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjCiAgICAgfSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5j
dGlvbiwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9u
Pgotdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBt
YXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVw
YXRjaEZ1bmN0aW9uIHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHBy
b2ZpbGVkRnVuY3Rpb24sIFJlcGF0Y2hGdW5jdGlvbiByZXBhdGNoRnVuY3Rpb24pCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwg
dHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgUmVwYXRjaEZ1bmN0aW9uPgordm9p
ZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMs
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9u
IHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rp
b24sIFJlcGF0Y2hGdW5jdGlvbiByZXBhdGNoRnVuY3Rpb24pCiB7CiAgICAgTWF0aElDR2VuZXJh
dGlvblN0YXRlJiBtYXRoSUNHZW5lcmF0aW9uU3RhdGUgPSBtX2luc3RydWN0aW9uVG9NYXRoSUNH
ZW5lcmF0aW9uU3RhdGUuZmluZChjdXJyZW50SW5zdHJ1Y3Rpb24pLT52YWx1ZTsKICAgICBtYXRo
SUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAKLSAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBPcGVyYW5kVHlwZXMg
dHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5dGVjb2RlKSk7Ci0g
ICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgb3AxID0gYnl0
ZWNvZGUubGhzLm9mZnNldCgpOwotICAgIGludCBvcDIgPSBieXRlY29kZS5yaHMub2Zmc2V0KCk7
CisgICAgaW50IHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
aW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9
IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRJbnN0cnVjdGlv
bihjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFs
dWVSZWdzKHJlZ1QxKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhy
ZWdUMik7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsK
ICNlbHNlCisgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApOwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1Qz
LCByZWdUMik7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtODYz
LDIyICs5MTAsMjAgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxH
ZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIH0pOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGl2PigpOwot
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAg
IGludCByZXN1bHQgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IG9wMSA9IGJ5dGVj
b2RlLmxocy5vZmZzZXQoKTsKLSAgICBpbnQgb3AyID0gYnl0ZWNvZGUucmhzLm9mZnNldCgpOwor
ICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGlu
dCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEuYXJpdGhQcm9m
aWxlKTsKKyAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkSW5z
dHJ1Y3Rpb24oY3VycmVudEluc3RydWN0aW9uKSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1
ZVJlZ3MocmVnVDEpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwogI2Vsc2UKLSAgICBPcGVyYW5kVHlwZXMgdHlw
ZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEuYXJpdGhQcm9maWxlKTsKKyAgICBPcGVyYW5k
VHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY3VycmVudEluc3RydWN0aW9uKTsKICAgICBK
U1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgSlNW
YWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKTsKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CkBAIC04ODgsNyArOTMzLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAK
ICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CiAgICAgaWYgKHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BEaXY+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLmFyaXRoUHJvZmlsZTsKKyAg
ICAgICAgYXJpdGhQcm9maWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJl
bnRJbnN0cnVjdGlvbik7CiAKICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5m
aXJzdCgpKTsKICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkp
OwpAQCAtOTMxLDM2ICs5NzYsMzYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX211bChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCku
bWV0YWRhdGEobV9jb2RlQmxvY2spLmFyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhjdXJyZW50SW5zdHJ1
Y3Rpb24pOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRNdWxJQyhh
cml0aFByb2ZpbGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0
aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG11bElDKTsKLSAgICBlbWl0TWF0aElDRmFzdDxP
cE11bD4obXVsSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxl
ZCwgb3BlcmF0aW9uVmFsdWVNdWwpOworICAgIGVtaXRNYXRoSUNGYXN0KG11bElDLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVs
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX211bChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKICAgICBKSVRNdWxJQyogbXVsSUMgPSBiaXR3aXNlX2Nhc3Q8SklU
TXVsSUMqPihtX2luc3RydWN0aW9uVG9NYXRoSUMuZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbikpOwot
ICAgIGVtaXRNYXRoSUNTbG93PE9wTXVsPihtdWxJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVy
YXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUsIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQs
IG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUpOworICAgIGVtaXRNYXRoSUNTbG93KG11bElDLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZSwgb3Bl
cmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZSk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc3ViKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFN1Yj4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykuYXJpdGhQcm9maWxlOworICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9jb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZv
clBDKGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgSklUU3ViSUMqIHN1YklDID0gbV9jb2RlQmxv
Y2stPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSwgY3VycmVudEluc3RydWN0aW9uKTsKICAgICBt
X2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgc3ViSUMpOwotICAg
IGVtaXRNYXRoSUNGYXN0PE9wU3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CisgICAgZW1pdE1hdGhJQ0Zh
c3Qoc3ViSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZCwg
b3BlcmF0aW9uVmFsdWVTdWIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIEpJVFN1YklDKiBzdWJJQyA9
IGJpdHdpc2VfY2FzdDxKSVRTdWJJQyo+KG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5nZXQoY3VycmVu
dEluc3RydWN0aW9uKSk7Ci0gICAgZW1pdE1hdGhJQ1Nsb3c8T3BTdWI+KHN1YklDLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9u
VmFsdWVTdWJQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZSk7CisgICAgZW1pdE1h
dGhJQ1Nsb3coc3ViSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVTdWJQcm9m
aWxlZE9wdGltaXplLCBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1
Yk9wdGltaXplKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVORDog
T1BfQURELCBPUF9TVUIsIE9QX01VTCwgT1BfUE9XIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggYjJhZGE3NWEx
MjljYzc1NDNmNmU2OWEyNzZlNDI1Y2EyMzgxMGE4ZS4uODUxMWVlYTYyYTZhZTViNDJiNDFhNmI2
MDA2Yjg5YmE5NzRjYjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBA
IC00Nyw1MiArNDcsMjMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9wJiBieXRlY29kZSkKK3Zv
aWQgSklUOjplbWl0UHV0Q2FsbFJlc3VsdChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7Ci0g
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykp
OwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuZHN0Lm9mZnNldCgpKTsKKyAg
ICBpbnQgZHN0ID0gaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIE9wPgotc3RkOjplbmFibGVfaWZfdDwKLSAgICBPcDo6b3Bjb2RlSUQgIT0g
b3BfY2FsbF92YXJhcmdzICYmIE9wOjpvcGNvZGVJRCAhPSBvcF9jb25zdHJ1Y3RfdmFyYXJncwot
ICAgICYmIE9wOjpvcGNvZGVJRCAhPSBvcF90YWlsX2NhbGxfdmFyYXJncyAmJiBPcDo6b3Bjb2Rl
SUQgIT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzCi0sIHZvaWQ+Ci1KSVQ6OmNvbXBp
bGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKK3ZvaWQgSklU
Ojpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2RlSUQgb3Bjb2RlLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIENhbGxMaW5rSW5mbyogaW5mbykKIHsKLSAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYXJnQ291bnQgPSBieXRl
Y29kZS5hcmdjOwotICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5
dGVjb2RlLmFyZ3YpOwotCi0gICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlZ2lz
dGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJl
Z1QwKTsKLSAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKLSAgICAg
ICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QwKTsKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEuYXJyYXlQcm9maWxlLmFkZHJl
c3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7Ci0gICAgICAgIGRvbmUubGluayh0aGlzKTsKLSAg
ICB9Ci0KLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJl
Z2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBz
dGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQp
LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKLX0KLQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLXN0ZDo6ZW5hYmxlX2lmX3Q8Ci0gICAgT3A6Om9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJn
cyB8fCBPcDo6b3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MKLSAgICB8fCBPcDo6b3Bj
b2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgT3A6Om9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50cwotLCB2b2lkPgotSklUOjpjb21waWxlU2V0dXBGcmFtZShj
b25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyogaW5mbykKLXsKLSAgICBpbnQgdGhpc1Zh
bHVlID0gYnl0ZWNvZGUudGhpc1ZhbHVlLm9mZnNldCgpOwotICAgIGludCBhcmd1bWVudHMgPSBi
eXRlY29kZS5hcmd1bWVudHMub2Zmc2V0KCk7Ci0gICAgaW50IGZpcnN0RnJlZVJlZ2lzdGVyID0g
Ynl0ZWNvZGUuZmlyc3RGcmVlLm9mZnNldCgpOwotICAgIGludCBmaXJzdFZhckFyZ09mZnNldCA9
IGJ5dGVjb2RlLmZpcnN0VmFyQXJnOworICAgIGludCB0aGlzVmFsdWUgPSBpbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CisgICAgaW50IGFyZ3VtZW50cyA9IGluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZDsKKyAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSBpbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQ7
CisgICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25bNl0udS5vcGVyYW5kOwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMsIHJlZ1QxKTsKICAgICBaX0pJ
VE9wZXJhdGlvbl9FSlpaIHNpemVPcGVyYXRpb247Ci0gICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBv
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCisgICAgaWYgKG9wY29kZSA9PSBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIHNpemVPcGVyYXRpb24gPSBvcGVyYXRp
b25TaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzOwogICAgIGVsc2UKICAgICAgICAgc2l6ZU9w
ZXJhdGlvbiA9IG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3M7CkBAIC0xMDIsNyArNzMsNyBA
QCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZv
KiBpbmZvKQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykgKyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICog
c2l6ZW9mKHZvaWQqKSkpKSwgcmVnVDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywgcmVnVDIpOwogICAgIEZfSklUT3BlcmF0aW9u
X0VGSlpaIHNldHVwT3BlcmF0aW9uOwotICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzKQorICAgIGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX2Zv
cndhcmRfYXJndW1lbnRzKQogICAgICAgICBzZXR1cE9wZXJhdGlvbiA9IG9wZXJhdGlvblNldHVw
Rm9yd2FyZEFyZ3VtZW50c0ZyYW1lOwogICAgIGVsc2UKICAgICAgICAgc2V0dXBPcGVyYXRpb24g
PSBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZTsKQEAgLTEyMywxNCArOTQsNyBAQCBKSVQ6OmNv
bXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKiBpbmZvKQog
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmVnVDEs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1ib29s
IEpJVDo6Y29tcGlsZUNhbGxFdmFsKGNvbnN0IE9wJikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXRlbXBsYXRlPD4KLWJvb2wgSklUOjpjb21waWxlQ2FsbEV2YWwoY29uc3QgT3BDYWxsRXZh
bCYgYnl0ZWNvZGUpCit2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKIHsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxwdHJkaWZm
X3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBzdGFja1BvaW50ZXJSZWdpc3RlciwgcmVn
VDEpOwogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCBBZGRyZXNzKHJlZ1QxLCBDYWxs
RnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKQEAgLTE0NCwyMCArMTA4LDE3IEBAIGJvb2wg
SklUOjpjb21waWxlQ2FsbEV2YWwoY29uc3QgT3BDYWxsRXZhbCYgYnl0ZWNvZGUpCiAKICAgICBz
YW1wbGVDb2RlQmxvY2sobV9jb2RlQmxvY2spOwogICAgIAotICAgIGVtaXRQdXRDYWxsUmVzdWx0
KGJ5dGVjb2RlKTsKLQotICAgIHJldHVybiB0cnVlOworICAgIGVtaXRQdXRDYWxsUmVzdWx0KGlu
c3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVj
dGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVC
bG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgaW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5m
bzo6Q2FsbCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgcmVnVDApOwogCi0gICAgaW50
IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLmFyZ3Y7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0
ID0gLWluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
cmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIApAQCAtMTY4
LDQ1ICsxMjksMTIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXMKIAogICAgIHNhbXBsZUNvZGVC
bG9jayhtX2NvZGVCbG9jayk7CiAgICAgCi0gICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUp
OworICAgIGVtaXRQdXRDYWxsUmVzdWx0KGluc3RydWN0aW9uKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci1ib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wJiwgQ2FsbExpbmtJ
bmZvKiwgdW5zaWduZWQpCit2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJ
RCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCkK
IHsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlPD4KLWJvb2wgSklUOjpjb21waWxl
VGFpbENhbGwoY29uc3QgT3BUYWlsQ2FsbCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyogaW5mbywg
dW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCi17Ci0gICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEg
c2h1ZmZsZURhdGE7Ci0gICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJncyA9IGJ5dGVjb2RlLmFy
Z2M7Ci0gICAgc2h1ZmZsZURhdGEudGFnVHlwZU51bWJlciA9IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlcjsKLSAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPQotICAgICAgICBieXRlY29k
ZS5hcmd2IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpIC8gc2l6ZW9mKFJlZ2lzdGVyKTsKLSAg
ICBzaHVmZmxlRGF0YS5hcmdzLnJlc2l6ZShieXRlY29kZS5hcmdjKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYnl0ZWNvZGUuYXJnYzsgKytpKSB7Ci0gICAgICAgIHNodWZmbGVEYXRh
LmFyZ3NbaV0gPQotICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6ZGlzcGxhY2VkSW5KU1N0YWNr
KAotICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpIC0gYnl0ZWNv
ZGUuYXJndiwKLSAgICAgICAgICAgICAgICBEYXRhRm9ybWF0SlMpOwotICAgIH0KLSAgICBzaHVm
ZmxlRGF0YS5jYWxsZWUgPQotICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQUihyZWdUMCwgRGF0
YUZvcm1hdEpTKTsKLSAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMobV9j
b2RlQmxvY2spOwotICAgIGluZm8tPnNldEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOwot
ICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlzLCBzaHVmZmxlRGF0YSkucHJlcGFyZUZvclRhaWxD
YWxsKCk7Ci0gICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQ
YXRoT3RoZXIgPSBlbWl0TmFrZWRUYWlsQ2FsbCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCi17Ci0gICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7Ci0gICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBpbnQgY2FsbGVlID0gYnl0ZWNvZGUuY2FsbGVlLm9m
ZnNldCgpOworICAgIGludCBjYWxsZWUgPSBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAg
ICAvKiBDYWxsZXIgYWx3YXlzOgogICAgICAgICAtIFVwZGF0ZXMgY2FsbEZyYW1lUmVnaXN0ZXIg
dG8gY2FsbGVlIGNhbGxGcmFtZS4KQEAgLTIyMCwxMiArMTQ4LDM0IEBAIHZvaWQgSklUOjpjb21w
aWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExp
bmtJbmZvSW5kCiAgICAgICAgIC0gQ2FsbGVyIGluaXRpYWxpemVzIFJldHVyblBDOyBDb2RlQmxv
Y2suCiAgICAgICAgIC0gQ2FsbGVyIHJlc3RvcmVzIGNhbGxGcmFtZVJlZ2lzdGVyIGFmdGVyIHJl
dHVybi4KICAgICAqLworICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkg
PT0gT1BDT0RFX0xFTkdUSChvcF9jb25zdHJ1Y3QpLCBjYWxsX2FuZF9jb25zdHJ1Y3Rfb3Bjb2Rl
c19tdXN0X2JlX3NhbWVfbGVuZ3RoKTsKKyAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RI
KG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSwgY2FsbF9hbmRfY2Fs
bF92YXJhcmdzX29wY29kZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CisgICAgQ09NUElMRV9BU1NF
UlQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX2NvbnN0cnVjdF92
YXJhcmdzKSwgY2FsbF9hbmRfY29uc3RydWN0X3ZhcmFyZ3Nfb3Bjb2Rlc19tdXN0X2JlX3NhbWVf
bGVuZ3RoKTsKKyAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9Q
Q09ERV9MRU5HVEgob3BfdGFpbF9jYWxsKSwgY2FsbF9hbmRfdGFpbF9jYWxsX29wY29kZXNfbXVz
dF9iZV9zYW1lX2xlbmd0aCk7CisgICAgQ09NUElMRV9BU1NFUlQoT1BDT0RFX0xFTkdUSChvcF9j
YWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbF92YXJhcmdzKSwgY2FsbF9hbmRfdGFp
bF9jYWxsX3ZhcmFyZ3Nfb3Bjb2Rlc19tdXN0X2JlX3NhbWVfbGVuZ3RoKTsKKyAgICBDT01QSUxF
X0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzKSwgY2FsbF9hbmRfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzX29wY29kZXNfbXVzdF9iZV9zYW1lX2xlbmd0aCk7CisKICAgICBDYWxsTGlua0luZm8qIGlu
Zm8gPSBudWxscHRyOwogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9jYWxsX2V2YWwpCiAgICAgICAg
IGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgY29tcGlsZVNldHVw
RnJhbWUoYnl0ZWNvZGUsIGluZm8pOwotCi0gICAgLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1lICsg
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQu
CisgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF9j
b25zdHJ1Y3RfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBv
cGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCisgICAgICAgIGNvbXBp
bGVTZXR1cFZhcmFyZ3NGcmFtZShvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGluZm8pOworICAgIGVs
c2UgeworICAgICAgICBpbnQgYXJnQ291bnQgPSBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1pbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CisK
KyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygp
KSB7CisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsg
Q2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwKTsKKyAgICAg
ICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CisgICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDAp
OworICAgICAgICAgICAgc3RvcmUzMihyZWdUMCwgYXJyYXlQcm9maWxlRm9yPE9wQ2FsbFNoYXBl
PihpbnN0cnVjdGlvbiktPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisgICAgICAg
ICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpOworICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1lICsgc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQuCisgICAgCiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2NvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
aW5zdHJ1Y3Rpb24pOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgo
Ynl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlv
bkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkp
OwpAQCAtMjMzLDcgKzE4Myw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgog
ICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAotICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNv
ZGUpKSB7CisgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkgeworICAgICAgICBjb21w
aWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0y
NDcsNyArMTk4LDI1IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgbV9jYWxsQ29tcGls
YXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoQmVnaW4gPSBhZGRyZXNzT2ZMaW5r
ZWRGdW5jdGlvbkNoZWNrOwogICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9J
bmRleF0uY2FsbExpbmtJbmZvID0gaW5mbzsKIAotICAgIGlmIChjb21waWxlVGFpbENhbGwoYnl0
ZWNvZGUsIGluZm8sIGNhbGxMaW5rSW5mb0luZGV4KSkgeworICAgIGlmIChvcGNvZGVJRCA9PSBv
cF90YWlsX2NhbGwpIHsKKyAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7
CisgICAgICAgIHNodWZmbGVEYXRhLm51bVBhc3NlZEFyZ3MgPSBpbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CisgICAgICAgIHNodWZmbGVEYXRhLnRhZ1R5cGVOdW1iZXIgPSBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXI7CisgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9CisgICAg
ICAgICAgICBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykgLyBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICBzaHVmZmxlRGF0YS5hcmdzLnJlc2l6ZShp
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsgKytpKSB7CisgICAgICAgICAgICBzaHVmZmxlRGF0YS5h
cmdzW2ldID0KKyAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3Rh
Y2soCisgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpIC0g
aW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgICAgICBEYXRhRm9ybWF0
SlMpOworICAgICAgICB9CisgICAgICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9CisgICAgICAgICAg
ICBWYWx1ZVJlY292ZXJ5OjppbkdQUihyZWdUMCwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgc2h1
ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKG1fY29kZUJsb2NrKTsKKyAgICAgICAg
aW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CisgICAgICAgIENhbGxGcmFt
ZVNodWZmbGVyKCp0aGlzLCBzaHVmZmxlRGF0YSkucHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAg
ICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uaG90UGF0aE90aGVy
ID0gZW1pdE5ha2VkVGFpbENhbGwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY1
LDE0ICsyMzQsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIAogICAgIHNhbXBsZUNvZGVC
bG9jayhtX2NvZGVCbG9jayk7CiAgICAgCi0gICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUp
OworICAgIGVtaXRQdXRDYWxsUmVzdWx0KGluc3RydWN0aW9uKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci12b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwg
dW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCit2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dD
YXNlKE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4
KQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gT3A6Om9wY29kZUlEOwotICAgIEFTU0VSVChv
cGNvZGVJRCAhPSBvcF9jYWxsX2V2YWwpOworICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2
YWwpIHsKKyAgICAgICAgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoaW5zdHJ1Y3Rpb24sIGl0ZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IApAQCAtMjk0LDg4ICsyNjQsODcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKIAogICAgIHNh
bXBsZUNvZGVCbG9jayhtX2NvZGVCbG9jayk7CiAgICAgCi0gICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7Cisg
ICAgZW1pdFB1dENhbGxSZXN1bHQoaW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9jYWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgY29t
cGlsZU9wQ2FsbDxPcENhbGw+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKKyAgICBjb21waWxlT3BDYWxsKG9wX2NhbGwsIGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9j
YWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90
YWlsX2NhbGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBjb21waWxl
T3BDYWxsPE9wVGFpbENhbGw+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKKyAgICBjb21waWxlT3BDYWxsKG9wX3RhaWxfY2FsbCwgY3VycmVudEluc3RydWN0aW9u
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX2V2
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2NhbGxfZXZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGNv
bXBpbGVPcENhbGw8T3BDYWxsRXZhbD4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5m
b0luZGV4KTsKKyAgICBjb21waWxlT3BDYWxsKG9wX2NhbGxfZXZhbCwgY3VycmVudEluc3RydWN0
aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY2FsbF92
YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBjb21waWxlT3BDYWxsPE9wQ2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9j
YWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBjb21waWxlT3BDYWxsKG9wX2NhbGxfdmFyYXJncywg
Y3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBjb21waWxlT3BDYWxsPE9wVGFpbENhbGxW
YXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAg
Y29tcGlsZU9wQ2FsbChvcF90YWlsX2NhbGxfdmFyYXJncywgY3VycmVudEluc3RydWN0aW9uLCBt
X2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGNvbXBpbGVPcENhbGw8T3BUYWlsQ2FsbEZv
cndhcmRBcmd1bWVudHM+KGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsr
KTsKKyAgICBjb21waWxlT3BDYWxsKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywgY3Vy
cmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBjb21waWxlT3BDYWxsPE9wQ29uc3RydWN0VmFy
YXJncz4oY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNv
bXBpbGVPcENhbGwob3BfY29uc3RydWN0X3ZhcmFyZ3MsIGN1cnJlbnRJbnN0cnVjdGlvbiwgbV9j
YWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY29uc3RydWN0KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9j
b25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBjb21waWxl
T3BDYWxsPE9wQ29uc3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5k
ZXgrKyk7CisgICAgY29tcGlsZU9wQ2FsbChvcF9jb25zdHJ1Y3QsIGN1cnJlbnRJbnN0cnVjdGlv
biwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Nh
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7Ci0gICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ2FsbD4oY3VycmVudElu
c3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNvbXBpbGVPcENh
bGxTbG93Q2FzZShvcF9jYWxsLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2NhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2NhbGwoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKLSAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbD4oY3VycmVudElu
c3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNvbXBpbGVPcENh
bGxTbG93Q2FzZShvcF90YWlsX2NhbGwsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxs
TGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewotICAgIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVj
dGlvbiwgaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlKG9wX2NhbGxfZXZhbCwgY3Vy
cmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KTsKIH0KICAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBjb21w
aWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVy
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZShvcF9j
YWxsX3ZhcmFyZ3MsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF92YXJhcmdzKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX3ZhcmFyZ3Mo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKLSAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbFZh
cmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsK
KyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2Uob3BfdGFpbF9jYWxsX3ZhcmFyZ3MsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewotICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcFRhaWxDYWxsRm9y
d2FyZEFyZ3VtZW50cz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0lu
ZGV4KyspOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZShvcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsr
KTsKIH0KICAgICAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0
VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4Kysp
OworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZShvcF9jb25zdHJ1Y3RfdmFyYXJncywgY3VycmVu
dEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQogICAgIAotdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGNvbXBpbGVP
cENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2Nh
bGxMaW5rSW5mb0luZGV4KyspOworICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZShvcF9jb25zdHJ1
Y3QsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
c2Fzc2VtYmxlci5jcHAKaW5kZXggZDU3N2YyMDIwYTQ1YzM0ZDZjMzA1MDlmYThlYmE3OWYzODZj
NmMzMC4uOTg5ZWNhMjNiYWVmYjUyNTU4ZmExNjdhZWYwODgyNjk5ODZjODg0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcApAQCAtNDEsOCArNDEs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogSklURGlzYXNzZW1ibGVyOjpKSVREaXNhc3NlbWJsZXIo
Q29kZUJsb2NrICpjb2RlQmxvY2spCiAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCi0gICAg
LCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluTWFpblBhdGgoY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5zaXplKCkpCi0gICAgLCBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGgoY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpCisgICAgLCBtX2xhYmVsRm9yQnl0ZWNvZGVJ
bmRleEluTWFpblBhdGgoY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpCisgICAgLCBtX2xh
YmVsRm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGgoY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhj
ZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3Bw
CmluZGV4IDljMmM1ZjM0YjFjYzgwN2NjOWQ1OTg3MTY4Y2Q3MzY5ZmEyZGI3MzkuLjdkYmFjN2Q3
ZTliZTM3MDQ2MWNkMzUyYjQ1YjMwNWZkMTBjZTRhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIGdlbmVyaWNV
bndpbmQoVk0qIHZtLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSkKICAgICBIYW5kbGVySW5mbyogaGFu
ZGxlciA9IHZtLT5pbnRlcnByZXRlci0+dW53aW5kKCp2bSwgY2FsbEZyYW1lLCBleGNlcHRpb24p
OyAvLyBUaGlzIG1heSB1cGRhdGUgY2FsbEZyYW1lLgogCiAgICAgdm9pZCogY2F0Y2hSb3V0aW5l
OwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSBudWxscHRy
OworICAgIEluc3RydWN0aW9uKiBjYXRjaFBDRm9ySW50ZXJwcmV0ZXIgPSAwOwogICAgIGlmICho
YW5kbGVyKSB7CiAgICAgICAgIC8vIGhhbmRsZXItPnRhcmdldCBpcyBtZWFuaW5nbGVzcyBmb3Ig
Z2V0dGluZyBhIGNvZGUgb2Zmc2V0IHdoZW4gY2F0Y2hpbmcKICAgICAgICAgLy8gdGhlIGV4Y2Vw
dGlvbiBpbiBhIERGRy9GVEwgZnJhbWUuIFRoaXMgYnl0ZWNvZGUgdGFyZ2V0IG9mZnNldCBjb3Vs
ZCBiZQpAQCAtNjksMTEgKzY5LDExIEBAIHZvaWQgZ2VuZXJpY1Vud2luZChWTSogdm0sIEV4ZWNT
dGF0ZSogY2FsbEZyYW1lKQogICAgICAgICAvLyBhbmQgY2FuIGNhdXNlIGFuIG92ZXJmbG93LiBP
U1IgZXhpdCBwcm9wZXJseSBleGl0cyB0byBoYW5kbGVyLT50YXJnZXQKICAgICAgICAgLy8gaW4g
dGhlIHByb3BlciBmcmFtZS4KICAgICAgICAgaWYgKCFKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aml0VHlwZSgpKSkKLSAgICAgICAgICAgIGNhdGNoUENG
b3JJbnRlcnByZXRlciA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmF0
KGhhbmRsZXItPnRhcmdldCkucHRyKCk7CisgICAgICAgICAgICBjYXRjaFBDRm9ySW50ZXJwcmV0
ZXIgPSAmY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbaGFuZGxlci0+dGFy
Z2V0XTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBjYXRjaFJvdXRpbmUgPSBoYW5kbGVyLT5u
YXRpdmVDb2RlLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAjZWxzZQotICAgICAgICBjYXRjaFJvdXRp
bmUgPSBMTEludDo6Z2V0Q29kZVB0cihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPm9wY29kZUlEKCkp
OworICAgICAgICBjYXRjaFJvdXRpbmUgPSBjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPnUucG9pbnRl
cjsKICNlbmRpZgogICAgIH0gZWxzZQogICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6Z2V0
Q29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihoYW5kbGVVbmNhdWdodEV4Y2VwdGlvbiku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
aW5kZXggMTE5ODI4MDU3YzUxYzY5YTkzNGM3NWVkNGE3YWZhZjg0Y2Q1ZmEzNi4uMmJiNjdmMTNi
ZWRlMDRkNzU0YjkyYzU3NmFmOGE5ZmEwMzk3YzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlu
bGluZSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlR2V0QnlWYWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQoraW5s
aW5lIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVHZXRCeVZhbChJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBKU1ZhbHVlUmVncyhyZWdUMCk7
CkBAIC00Myw3ICs0Myw3IEBAIGlubGluZSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjpl
bWl0RG91YmxlR2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RyCiAgICAgcmV0dXJuIHNs
b3dDYXNlczsKIH0KIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklU
OjplbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5
TW9kZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlN
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7
CiAgICAgY2FzZSBKSVRJbnQzMjoKQEAgLTYxLDEyICs2MSwxMiBAQCBBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IElu
c3RydWN0aQogICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QoKTsKIH0KIAotaW5s
aW5lIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzR2V0QnlWYWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJ
bmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKK2lubGluZSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgSklUOjplbWl0Q29udGlndW91c0dldEJ5VmFsKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAg
ICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgZXhwZWN0
ZWRTaGFwZSk7CiB9CiAKLWlubGluZSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0
QXJyYXlTdG9yYWdlR2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQoraW5saW5lIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6
OmVtaXRBcnJheVN0b3JhZ2VHZXRCeVZhbChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpCiB7CiAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGlu
c3RydWN0aW9uLCBiYWRUeXBlKTsKIH0KQEAgLTE4MSwxMSArMTgxLDEwIEBAIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE1l
dGFkYXRhPgotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEm
IG1ldGFkYXRhLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBp
bnQgZHN0KQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoY29uc3QgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgaW50IGRzdCkKIHsKICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5j
dGlvbik7Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZSgpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKICNlbHNlCkBAIC0yNzYsMTMgKzI3NSwx
MyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0Q291bnQoQWJzdHJhY3RTYW1wbGluZ0Nv
dW50ZXImIGNvdW50ZXIsIGludDMyX3QgY291bgogCiAjaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElO
RykKICNpZiBDUFUoWDg2XzY0KQotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6c2FtcGxlSW5zdHJ1
Y3Rpb24oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBib29sIGluSG9zdEZ1bmN0aW9u
KQorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6c2FtcGxlSW5zdHJ1Y3Rpb24oSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBib29sIGluSG9zdEZ1bmN0aW9uKQogewogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihtX2ludGVycHJldGVyLT5zYW1wbGVyKCktPnNhbXBsZVNsb3QoKSksIFg4NlJlZ2lzdGVy
czo6ZWN4KTsKICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG1faW50ZXJwcmV0ZXItPnNhbXBs
ZXIoKS0+ZW5jb2RlU2FtcGxlKGluc3RydWN0aW9uLCBpbkhvc3RGdW5jdGlvbikpLCBYODZSZWdp
c3RlcnM6OmVjeCk7CiB9CiAjZWxzZQotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6c2FtcGxlSW5z
dHJ1Y3Rpb24oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBib29sIGluSG9zdEZ1bmN0
aW9uKQorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6c2FtcGxlSW5zdHJ1Y3Rpb24oSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBib29sIGluSG9zdEZ1bmN0aW9uKQogewogICAgIHN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIobV9pbnRlcnByZXRlci0+c2FtcGxlcigpLT5lbmNvZGVTYW1wbGUoaW5zdHJ1
Y3Rpb24sIGluSG9zdEZ1bmN0aW9uKSksIG1faW50ZXJwcmV0ZXItPnNhbXBsZXIoKS0+c2FtcGxl
U2xvdCgpKTsKIH0KQEAgLTMyOSwyMCArMzI4LDE2IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZSkKICNlbmRpZgogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6OnByb2ZpbGUpLCBWYWx1ZVByb2ZpbGU+Ojp2YWx1
ZSwgdm9pZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBi
eXRlY29kZSkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgaWYgKCFzaG91bGRFbWl0UHJvZmlsaW5nKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1fY29kZUJsb2Nr
LT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpOwogfQogCi1p
bmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4u
LikgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgotaW5saW5lIHZvaWQgSklUOjpl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKE1ldGFkYXRhJiBtZXRhZGF0YSkKK2lubGluZSB2b2lkIEpJ
VDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpCiB7Ci0gICAgaWYgKCFzaG91bGRFbWl0UHJvZmls
aW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFk
YXRhLnByb2ZpbGUpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobV9ieXRlY29kZU9mZnNl
dCk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxs
KFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlKQpAQCAtNzA2LDM0ICs3MDEsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklU
OjplbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCByZWcpCiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3ROdW1iZXIocmVnKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgaW50IEpJ
VDo6anVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGludCB0YXJnZXQp
Ci17Ci0gICAgaWYgKHRhcmdldCkKLSAgICAgICAgcmV0dXJuIHRhcmdldDsKLSAgICByZXR1cm4g
bV9jb2RlQmxvY2stPm91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24pOwotfQotCi1BTFdB
WVNfSU5MSU5FIEdldFB1dEluZm8gSklUOjpjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSBi
eXRlY29kZSkKLXsKLSAgICB1bnNpZ25lZCBrZXkgPSBieXRlY29kZS5tZXRhZGF0YUlEICsgMTsg
Ly8gSGFzaE1hcCBkb2Vzbid0IGxpa2UgMCBhcyBhIGtleQotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X2NvcGllZEdldFB1dEluZm9zLmZpbmQoa2V5KTsKLSAgICBpZiAoaXRlcmF0b3IgIT0gbV9jb3Bp
ZWRHZXRQdXRJbmZvcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIEdldFB1dEluZm8oaXRlcmF0b3It
PnZhbHVlKTsKLSAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8gPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jaykuZ2V0UHV0SW5mbzsKLSAgICBtX2NvcGllZEdldFB1dEluZm9zLmFkZChrZXks
IGdldFB1dEluZm8ub3BlcmFuZCgpKTsKLSAgICByZXR1cm4gZ2V0UHV0SW5mbzsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci1BTFdBWVNfSU5MSU5FIEFyaXRoUHJvZmlsZSBKSVQ6
OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKK2lubGluZSBJbnN0cnVjdGlv
biogSklUOjpjb3BpZWRJbnN0cnVjdGlvbihJbnN0cnVjdGlvbiogaW5zdCkKIHsKLSAgICBzaXpl
X3Qga2V5ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihCaW5hcnlPcDo6b3Bjb2RlSUQpIDw8IDMyIHwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlY29kZS5tZXRhZGF0YUlEKTsKLSAgICBhdXRvIGl0ZXJh
dG9yID0gbV9jb3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKLSAgICBpZiAoaXRlcmF0b3Ig
IT0gbV9jb3BpZWRBcml0aFByb2ZpbGVzLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRlcmF0b3It
PnZhbHVlOwotICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jaykuYXJpdGhQcm9maWxlOwotICAgIG1fY29waWVkQXJpdGhQcm9maWxlcy5h
ZGQoa2V5LCBhcml0aFByb2ZpbGUpOwotICAgIHJldHVybiBhcml0aFByb2ZpbGU7CisgICAgcmV0
dXJuICZtX2luc3RydWN0aW9uc1ttX2NvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoaW5zdCldOwog
fQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE1hdGhJQy5oCmluZGV4IDZlNzg1OWQ1MjZmMDBkYmZkZGVlMWI2OTg1ZjgxZDM2MDYyMTE5NWUu
LmE2MDJkYWE2YmM3MTMzMzYxYzY3OWQxYjRmOTY4YzBmN2FkODYwZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNYXRoSUMuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYpPgog
Y2xhc3MgSklUTWF0aElDIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKKyAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgOiBtX2FyaXRoUHJvZmlsZShh
cml0aFByb2ZpbGUpCiAgICAgICAgICwgbV9pbnN0cnVjdGlvbihpbnN0cnVjdGlvbikKICAgICB7
CkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KLSAgICBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9u
OyB9CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0
cnVjdGlvbjsgfQogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2Vu
ZXJhdGVkQ29kZVNpemUgeyAwIH07CkBAIC0yNDYsNyArMjQ2LDcgQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwotICAgIGNvbnN0IEluc3RydWN0
aW9uKiBtX2luc3RydWN0aW9uOworICAgIEluc3RydWN0aW9uKiBtX2luc3RydWN0aW9uOwogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gbV9jb2RlOwogICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5lU3RhcnQ7CiAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9pbmxpbmVFbmQ7CkBAIC0yNjMs
NyArMjYzLDcgQEAgaW5saW5lIGJvb2wgaXNCaW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxl
JiBhcml0aFByb2ZpbGUpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KIGNsYXNz
IEpJVEJpbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5h
cnlQcm9maWxlRW1wdHk+IHsKIHB1YmxpYzoKLSAgICBKSVRCaW5hcnlNYXRoSUMoQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKKyAgICBK
SVRCaW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbikKICAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQ
cm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSwgaW5zdHJ1Y3Rpb24pCiAgICAgewogICAgIH0KQEAg
LTI4MSw3ICsyODEsNyBAQCBpbmxpbmUgYm9vbCBpc1VuYXJ5UHJvZmlsZUVtcHR5KEFyaXRoUHJv
ZmlsZSYgYXJpdGhQcm9maWxlKQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+CiBj
bGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNV
bmFyeVByb2ZpbGVFbXB0eT4gewogcHVibGljOgotICAgIEpJVFVuYXJ5TWF0aElDKEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCisgICAg
SklUVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbikKICAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVBy
b2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxlLCBpbnN0cnVjdGlvbikKICAgICB7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggY2Q0OGQ1MWM0NzQxZGU3
YzA3ZjAxOWVkNWE2ZjUzYzRlM2YwYTllMS4uY2ZjMGQyMjg4MmU5NDM2MWMzNzljZTk3NTc2Y2Jh
YWE2MmNhOWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC01MywxMSArNTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9tb3YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX21vdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTW92
PigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNyYyA9
IGJ5dGVjb2RlLnNyYy5vZmZzZXQoKTsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc3JjID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKIAogICAgIGlmIChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoc3Jj
KSkgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9jb2RlQmxvY2stPmdldENvbnN0YW50KHNy
Yyk7CkBAIC03MywyOCArNzIsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW92KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9lbmQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVuZD4oKTsKICAgICBSRUxFQVNFX0FTU0VS
VChyZXR1cm5WYWx1ZUdQUiAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS52YWx1ZS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
cmV0dXJuVmFsdWVHUFIpOwogICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICBlbWl0
RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgIHJldCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9q
bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2ptcChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm1wPigpOwotICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS50YXJnZXQpOwor
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAg
ICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19v
YmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld09iamVjdD4oKTsK
LSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1ldGFkYXRhLm9iamVjdEFsbG9jYXRpb25Qcm9maWxl
LnN0cnVjdHVyZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpOwogICAgIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVy
ZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHN1YnNwYWNl
Rm9yPEpTRmluYWxPYmplY3Q+KCptX3ZtKS0+YWxsb2NhdG9yRm9yTm9uVmlydHVhbChhbGxvY2F0
aW9uU2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCkBAIC0xMTAs
MjggKzEwNSwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJl
c3VsdFJlZywgSklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxvY2F0b3IpLCBhbGxvY2F0b3JSZWcs
IFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2Fz
ZXMpOwogICAgICAgICBlbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0UmVnLCBzdHJ1
Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMp
OwotICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmRzdC5vZmZzZXQoKSk7
CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmplY3Q+KCk7Ci0gICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgaW50IGRz
dCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1l
dGFkYXRhLm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLnN0cnVjdHVyZSgpOworICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0
cnVjdHVyZSgpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3T2JqZWN0LCBzdHJ1Y3R1
cmUpOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFu
Y2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hhc0luc3RhbmNlPigpOwotICAg
IGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IGNvbnN0cnVjdG9yID0g
Ynl0ZWNvZGUuY29uc3RydWN0b3Iub2Zmc2V0KCk7Ci0gICAgaW50IGhhc0luc3RhbmNlVmFsdWUg
PSBieXRlY29kZS5oYXNJbnN0YW5jZVZhbHVlLm9mZnNldCgpOworICAgIGF1dG8mIGJ5dGVjb2Rl
ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BPdmVycmlkZXNIYXNJbnN0YW5jZSo+KGN1cnJlbnRJbnN0
cnVjdGlvbik7CisgICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdCgpOworICAgIGludCBjb25zdHJ1
Y3RvciA9IGJ5dGVjb2RlLmNvbnN0cnVjdG9yKCk7CisgICAgaW50IGhhc0luc3RhbmNlVmFsdWUg
PSBieXRlY29kZS5oYXNJbnN0YW5jZVZhbHVlKCk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1QwKTsKIApAQCAtMTUyLDEyICsxNDUsMTIgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSW5zdGFuY2VvZj4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUuZHN0Lm9m
ZnNldCgpOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLnZhbHVlLm9mZnNldCgpOwotICAgIGlu
dCBwcm90byA9IGJ5dGVjb2RlLnByb3RvdHlwZS5vZmZzZXQoKTsKKyAgICBhdXRvJiBieXRlY29k
ZSA9ICpyZWludGVycHJldF9jYXN0PE9wSW5zdGFuY2VvZio+KGN1cnJlbnRJbnN0cnVjdGlvbik7
CisgICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdCgpOworICAgIGludCB2YWx1ZSA9IGJ5dGVjb2Rl
LnZhbHVlKCk7CisgICAgaW50IHByb3RvID0gYnl0ZWNvZGUucHJvdG90eXBlKCk7CiAKICAgICAv
LyBMb2FkIHRoZSBvcGVyYW5kcyAoYmFzZVZhbCwgcHJvdG8sIGFuZCB2YWx1ZSByZXNwZWN0aXZl
bHkpIGludG8gcmVnaXN0ZXJzLgogICAgIC8vIFdlIHVzZSByZWdUMCBmb3IgYmFzZVZhbCBzaW5j
ZSB3ZSB3aWxsIGJlIGRvbmUgd2l0aCB0aGlzIGZpcnN0LCBhbmQgd2UgY2FuIHRoZW4gdXNlIGl0
IGZvciB0aGUgcmVzdWx0LgpAQCAtMTgxLDEyICsxNzQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2lu
c3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0
YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKICAg
ICAKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNl
b2Y+KCk7Ci0gICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7CisgICAg
aW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIAog
ICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiA9IG1faW5zdGFuY2VPZnNbbV9pbnN0YW5j
ZU9mSW5kZXgrK107CiAgICAgCkBAIC0xOTUsMTcgKzE4NywxNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2ZfY3VzdG9tKGNvbnN0IEluc3RydWN0
aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2ZfY3VzdG9tKEluc3RydWN0aW9uKikK
IHsKICAgICAvLyBUaGlzIGFsd2F5cyBnb2VzIHRvIHNsb3cgcGF0aCBzaW5jZSB3ZSBleHBlY3Qg
aXQgdG8gYmUgcmFyZS4KICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogfQogICAgIAotdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2lzX2VtcHR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJ
c0VtcHR5PigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50
IHZhbHVlID0gYnl0ZWNvZGUub3BlcmFuZC5vZmZzZXQoKTsKKyAgICBpbnQgZHN0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwg
cmVnVDApOwogICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKSksIHJlZ1QwKTsKQEAgLTIxNCwxMSArMjA1LDEwIEBAIHZvaWQg
SklUOjplbWl0X29wX2lzX2VtcHR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9pc191bmRlZmluZWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SXNVbmRlZmluZWQ+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAg
ICBpbnQgdmFsdWUgPSBieXRlY29kZS5vcGVyYW5kLm9mZnNldCgpOworICAgIGludCBkc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cih2YWx1ZSwgcmVnVDApOwogICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZDZWxsKHJlZ1QwKTsK
QEAgLTI0MywxMSArMjMzLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVh
bihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCb29sZWFuPigpOwotICAgIGludCBkc3QgPSBi
eXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHZhbHVlID0gYnl0ZWNvZGUub3BlcmFuZC5v
ZmZzZXQoKTsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICB4b3I2NChUcnVz
dGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWdUMCk7CkBAIC0y
NTYsMTEgKzI0NSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSXNOdW1iZXI+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRz
dC5vZmZzZXQoKTsKLSAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5vcGVyYW5kLm9mZnNldCgpOwor
ICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCB2
YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIHRlc3Q2NChOb25aZXJvLCByZWdU
MCwgdGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CkBAIC0yNjgsMTIgKzI1NiwxMSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2Rl
LmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5vcGVyYW5kLm9mZnNldCgp
OwotICAgIGludCB0eXBlID0gYnl0ZWNvZGUudHlwZTsKKyAgICBpbnQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOworICAgIGludCB0eXBlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAg
ICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CkBAIC0yODksMTEgKzI3
NiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19vYmplY3QoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElzT2JqZWN0PigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qu
b2Zmc2V0KCk7Ci0gICAgaW50IHZhbHVlID0gYnl0ZWNvZGUub3BlcmFuZC5vZmZzZXQoKTsKKyAg
ICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFs
dWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZO
b3RDZWxsKHJlZ1QwKTsKQEAgLTMwOSwxNSArMjk1LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2lz
X29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXQo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBBU1NFUlQoY2FsbEZyYW1l
UmVnaXN0ZXIgIT0gcmVnVDEpOwogICAgIEFTU0VSVChyZWdUMSAhPSByZXR1cm5WYWx1ZUdQUik7
CiAgICAgQVNTRVJUKHJldHVyblZhbHVlR1BSICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKIAogICAg
IC8vIFJldHVybiB0aGUgcmVzdWx0IGluICVlYXguCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BSZXQ+KCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS52YWx1ZS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVH
UFIpOwogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKICAgICBlbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzKCk7CkBAIC0zMjUsMTEgKzMxMCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9y
ZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXQoKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFRvUHJpbWl0aXZlPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5k
c3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNyYyA9IGJ5dGVjb2RlLnNyYy5vZmZzZXQoKTsKKyAgICBp
bnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc3JjID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoc3JjLCByZWdUMCk7CiAgICAgCkBAIC0zNDIsMTggKzMyNiwxNiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X2Z1bmN0
aW9uX25hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFNldEZ1bmN0aW9uTmFtZT4oKTsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmZ1bmN0aW9uLm9mZnNldCgpLCByZWdU
MCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5uYW1lLm9mZnNldCgpLCBy
ZWdUMSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TZXRGdW5jdGlvbk5hbWUsIHJlZ1QwLCByZWdUMSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X25vdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3Bfbm90KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOb3Q+KCk7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5vcGVyYW5kLm9mZnNldCgpLCByZWdUMCk7CisgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
MCk7CiAKICAgICAvLyBJbnZlcnQgYWdhaW5zdCBKU1ZhbHVlKGZhbHNlKTsgaWYgdGhlIHZhbHVl
IHdhcyB0YWdnZWQgYXMgYSBib29sZWFuLCB0aGVuIGFsbCBiaXRzIHdpbGwgYmUKICAgICAvLyBj
bGVhciBvdGhlciB0aGFuIHRoZSBsb3cgYml0ICh3aGljaCB3aWxsIGJlIDAgb3IgMSBmb3IgZmFs
c2Ugb3IgdHJ1ZSBpbnB1dHMgcmVzcGVjdGl2ZWx5KS4KQEAgLTM2MiwyOCArMzQ0LDI2IEBAIHZv
aWQgSklUOjplbWl0X29wX25vdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDAsIFRydXN0ZWRJ
bW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSk7CiAgICAgeG9yNjQoVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlVHJ1ZSkpLCByZWdUMCk7CiAKLSAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmRzdC5vZmZzZXQoKSk7CisgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfamZhbHNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxz
ZT4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
biwgYnl0ZWNvZGUudGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgR1BSUmVnIHZhbHVlID0gcmVnVDA7CiAgICAgR1BS
UmVnIHNjcmF0Y2gxID0gcmVnVDE7CiAgICAgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDI7CiAgICAg
Ym9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCi0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5jb25kaXRpb24ub2Zmc2V0KCksIHZhbHVlKTsK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQsIHZhbHVlKTsKICAgICBhZGRKdW1wKGJyYW5jaElmRmFsc2V5KCp2bSgpLCBKU1ZhbHVlUmVn
cyh2YWx1ZSksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hl
Y2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCB0
YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEplcU51bGw+KCk7Ci0gICAgaW50IHNyYyA9IGJ5dGVjb2RlLnZh
bHVlLm9mZnNldCgpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudElu
c3RydWN0aW9uLCBieXRlY29kZS50YXJnZXQpOworICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVn
VDApOwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwpAQCAt
NDAzLDExICszODMsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQubGluayh0aGlzKTsKICAgICBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbi5saW5r
KHRoaXMpOwogfTsKLXZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxTnVsbD4oKTsKLSAgICBpbnQgc3JjID0gYnl0ZWNvZGUu
dmFsdWUub2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLnRhcmdldCk7CisgICAgaW50IHNyYyA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCBy
ZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CkBA
IC00MjcsOTAgKzQwNiw4MCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0
aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBzcmMgPSBieXRlY29kZS52YWx1ZS5v
ZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGJ5dGVjb2RlLnNwZWNpYWxQb2lu
dGVyOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9u
LCBieXRlY29kZS50YXJnZXQpOworICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUuc3BlY2lhbFBvaW50ZXI7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNy
YywgcmVnVDApOwogICAgIENDYWxsSGVscGVyczo6SnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVh
bCwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywgcHRy
KSkpOwotICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5oYXNKdW1wZWQpOwor
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDEpLCAmY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCk7CiAgICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7CiAgICAgZXF1YWwubGluayh0aGlz
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BFcT4oKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhieXRlY29kZS5saHMub2Zmc2V0
KCksIHJlZ1QwLCBieXRlY29kZS5yaHMub2Zmc2V0KCksIHJlZ1QxKTsKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVycyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCwgY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEludChyZWdUMCwgcmVnVDEsIHJlZ1QyKTsKICAgICBjb21wYXJlMzIoRXF1YWwsIHJl
Z1QxLCByZWdUMCwgcmVnVDApOwogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsg
cmVnVDAgfSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3Qub2Zmc2V0
KCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfamVxKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BKZXE+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLnRhcmdldCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcnMoYnl0ZWNvZGUubGhzLm9mZnNldCgpLCByZWdUMCwgYnl0ZWNvZGUucmhzLm9mZnNldCgp
LCByZWdUMSk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCByZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVn
VDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCwgcmVnVDEsIHJlZ1QyKTsK
ICAgICBhZGRKdW1wKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgcmVnVDEpLCB0YXJnZXQpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEp0cnVlPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3Ry
dWN0aW9uLCBieXRlY29kZS50YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBHUFJSZWcgdmFsdWUgPSByZWdUMDsKICAg
ICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMTsKICAgICBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMjsK
ICAgICBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5jb25kaXRpb24ub2Zmc2V0KCksIHZhbHVl
KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIHZhbHVlKTsKICAgICBhZGRKdW1wKGJyYW5jaElmVHJ1dGh5KCp2bSgpLCBKU1ZhbHVl
UmVncyh2YWx1ZSksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25lcShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wTmVxPigpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJ5dGVjb2Rl
Lmxocy5vZmZzZXQoKSwgcmVnVDAsIGJ5dGVjb2RlLnJocy5vZmZzZXQoKSwgcmVnVDEpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQs
IHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwLCByZWdUMSwgcmVnVDIpOwogICAgIGNvbXBhcmUz
MihOb3RFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7CiAgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKIAotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUuZHN0Lm9mZnNldCgpKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9q
bmVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdl
dCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS50YXJnZXQpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJ5dGVjb2RlLmxocy5vZmZzZXQoKSwgcmVnVDAsIGJ5
dGVjb2RlLnJocy5vZmZzZXQoKSwgcmVnVDEpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVn
VDAsIHJlZ1QxLCByZWdUMik7CiAgICAgYWRkSnVtcChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAs
IHJlZ1QxKSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3Rocm93KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUaHJvdz4oKTsKICAgICBBU1NFUlQocmVnVDAgPT0gcmV0
dXJuVmFsdWVHUFIpOwogICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKHZtKCktPnRvcEVudHJ5RnJhbWUpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUudmFsdWUub2Zmc2V0KCksIHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKICAgICBjYWxsT3Bl
cmF0aW9uTm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25UaHJvdywgcmVnVDApOwogICAgIGp1bXBU
b0V4Y2VwdGlvbkhhbmRsZXIoKnZtKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZv
aWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5cGUgdHlwZSkKK3ZvaWQgSklUOjpjb21waWxlT3BT
dHJpY3RFcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RF
cVR5cGUgdHlwZSkKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcD4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUuZHN0Lm9mZnNldCgpOwotICAgIGludCBz
cmMxID0gYnl0ZWNvZGUubGhzLm9mZnNldCgpOwotICAgIGludCBzcmMyID0gYnl0ZWNvZGUucmhz
Lm9mZnNldCgpOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBp
bnQgc3JjMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwogICAgIApAQCAtNTM3
LDIzICs1MDYsMjEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmkKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N0cmljdGVxKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3Rl
cShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGNvbXBpbGVPcFN0cmlj
dEVxPE9wU3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeXBl
OjpTdHJpY3RFcSk7CisgICAgY29tcGlsZU9wU3RyaWN0RXEoY3VycmVudEluc3RydWN0aW9uLCBD
b21waWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBjb21waWxlT3BTdHJpY3RFcTxPcE5zdHJpY3RlcT4oY3VycmVudEluc3RydWN0aW9uLCBD
b21waWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSk7CisgICAgY29tcGlsZU9wU3RyaWN0RXEo
Y3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVt
cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RF
cVR5cGUgdHlwZSkKK3ZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeXBlIHR5cGUpCiB7Ci0gICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgaW50IHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS50YXJnZXQpOwot
ICAgIGludCBzcmMxID0gYnl0ZWNvZGUubGhzLm9mZnNldCgpOwotICAgIGludCBzcmMyID0gYnl0
ZWNvZGUucmhzLm9mZnNldCgpOworICAgIGludCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOworICAgIGludCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICBpbnQgc3JjMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwog
CkBAIC01NzcsODIgKzU0NCw3NCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcAogICAgICAgICBh
ZGRKdW1wKGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMSwgcmVnVDApLCB0YXJnZXQpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2pzdHJpY3RlcShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewotICAgIGNvbXBpbGVPcFN0cmljdEVxSnVtcDxPcEpzdHJpY3RlcT4o
Y3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKTsKKyAg
ICBjb21waWxlT3BTdHJpY3RFcUp1bXAoY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJp
Y3RFcVR5cGU6OlN0cmljdEVxKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfam5zdHJpY3RlcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
am5zdHJpY3RlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGNvbXBp
bGVPcFN0cmljdEVxSnVtcDxPcEpuc3RyaWN0ZXE+KGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGls
ZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0RXEpOworICAgIGNvbXBpbGVPcFN0cmljdEVxSnVtcChj
dXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdEVxVHlwZTo6TlN0cmljdEVxKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEpzdHJpY3RlcT4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFy
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUudGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0
YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZWdUMCwgcmVnVDEpOwogICAgIGVtaXRKdW1w
U2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEpuc3RyaWN0ZXE+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0g
anVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLnRhcmdldCk7CisgICAgdW5z
aWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVnVDAsIHJlZ1QxKTsKICAgICBl
bWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJn
ZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RvX251bWJlcihJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wVG9OdW1iZXI+KCk7Ci0gICAgaW50IGRzdFZSZWcgPSBieXRlY29k
ZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNyY1ZSZWcgPSBieXRlY29kZS5vcGVyYW5kLm9mZnNl
dCgpOworICAgIGludCBkc3RWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgc3JjVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAgICAgCiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3ROdW1iZXIocmVnVDApKTsKIAotICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKKyAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKCk7CiAgICAgaWYgKHNyY1ZSZWcgIT0gZHN0VlJlZykKICAgICAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3RWUmVnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fc3Ry
aW5nKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvU3RyaW5nPigpOwotICAg
IGludCBzcmNWUmVnID0gYnl0ZWNvZGUub3BlcmFuZC5vZmZzZXQoKTsKKyAgICBpbnQgc3JjVlJl
ZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENl
bGwocmVnVDApKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFN0cmluZyhyZWdUMCkpOwog
Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3Qub2Zmc2V0KCkpOworICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BUb09iamVjdD4oKTsKLSAgICBpbnQgZHN0VlJlZyA9IGJ5dGVjb2RlLmRz
dC5vZmZzZXQoKTsKLSAgICBpbnQgc3JjVlJlZyA9IGJ5dGVjb2RlLm9wZXJhbmQub2Zmc2V0KCk7
CisgICAgaW50IGRzdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
IGludCBzcmNWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHNyY1ZSZWcsIHJlZ1QwKTsKIAogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmTm90Q2VsbChyZWdUMCkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90T2JqZWN0
KHJlZ1QwKSk7CiAKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGlmIChz
cmNWUmVnICE9IGRzdFZSZWcpCiAgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0VlJl
Zyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wQ2F0Y2g+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7Ci0KICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNh
bGxlZVNhdmVzQnVmZmVyKHZtKCktPnRvcEVudHJ5RnJhbWUpOwogCiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKG1fdm0pLCByZWdUMyk7CkBAIC02NjksMTcgKzYyOCwxNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9jYXRjaChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihtX3ZtKSwgcmVnVDMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1Qz
LCBWTTo6ZXhjZXB0aW9uT2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBBZGRyZXNzKHJlZ1QzLCBWTTo6ZXhjZXB0
aW9uT2Zmc2V0KCkpKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmV4Y2Vw
dGlvbi5vZmZzZXQoKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKIAogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QwLCBFeGNlcHRp
b246OnZhbHVlT2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS50aHJvd25WYWx1ZS5vZmZzZXQoKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIAogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2FjaGluZyB0aGUgcHJvY2VzcyBvZiBk
b2luZyBPU1IgZW50cnksIGluY2x1ZGluZwogICAgIC8vIGFyZ3VtZW50IHR5cGUgcHJvb2ZzLCBz
dG9yaW5nIGxvY2FscyB0byB0aGUgYnVmZmVyLCBldGMKICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CiAKLSAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKiBidWZmZXIgPSBtZXRhZGF0YS5idWZmZXI7CisgICAgVmFsdWVQcm9maWxlQW5k
T3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFu
ZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnBvaW50ZXIpOwogICAgIGlmIChidWZm
ZXIgfHwgIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIGVsc2UKQEAg
LTY5OCwyNiArNjU3LDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVjdGlv
biopCit2b2lkIEpJVDo6ZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoSW5zdHJ1Y3Rpb24q
KQogewogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaGVyZS4uLgogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQYXJlbnRTY29wZT4oKTsKLSAgICBpbnQgY3VycmVudFNj
b3BlID0gYnl0ZWNvZGUuc2NvcGUub2Zmc2V0KCk7CisgICAgaW50IGN1cnJlbnRTY29wZSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50U2NvcGUsIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTU2Nv
cGU6Om9mZnNldE9mTmV4dCgpKSwgcmVnVDApOwotICAgIGVtaXRTdG9yZUNlbGwoYnl0ZWNvZGUu
ZHN0Lm9mZnNldCgpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9p
bW0oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX3N3aXRjaF9pbW0oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN3aXRjaEltbT4oKTsKLSAg
ICBzaXplX3QgdGFibGVJbmRleCA9IGJ5dGVjb2RlLnRhYmxlSW5kZXg7Ci0gICAgdW5zaWduZWQg
ZGVmYXVsdE9mZnNldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5k
ZWZhdWx0T2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBzY3J1dGluZWUgPSBieXRlY29kZS5zY3J1dGlu
ZWUub2Zmc2V0KCk7CisgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHNjcnV0aW5lZSA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICAvLyBjcmVhdGUganVtcCB0YWJsZSBmb3Igc3dp
dGNoIGRlc3RpbmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgogICAgIFNpbXBs
ZUp1bXBUYWJsZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFi
bGVJbmRleCk7CkBAIC03MjksMTIgKzY4NiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hf
aW1tKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAganVtcChyZXR1
cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zd2l0
Y2hfY2hhcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3Bfc3dpdGNoX2NoYXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFN3aXRjaENoYXI+
KCk7Ci0gICAgc2l6ZV90IHRhYmxlSW5kZXggPSBieXRlY29kZS50YWJsZUluZGV4OwotICAgIHVu
c2lnbmVkIGRlZmF1bHRPZmZzZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0
ZWNvZGUuZGVmYXVsdE9mZnNldCk7Ci0gICAgdW5zaWduZWQgc2NydXRpbmVlID0gYnl0ZWNvZGUu
c2NydXRpbmVlLm9mZnNldCgpOworICAgIHNpemVfdCB0YWJsZUluZGV4ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBkZWZhdWx0T2Zmc2V0ID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBzY3J1dGluZWUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgLy8gY3JlYXRlIGp1bXAgdGFibGUg
Zm9yIHN3aXRjaCBkZXN0aW5hdGlvbnMsIHRyYWNrIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KICAg
ICBTaW1wbGVKdW1wVGFibGUqIGp1bXBUYWJsZSA9ICZtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKHRhYmxlSW5kZXgpOwpAQCAtNzQ2LDEyICs3MDIsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
c3dpdGNoX2NoYXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBq
dW1wKHJldHVyblZhbHVlR1BSLCBKU1N3aXRjaFB0clRhZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX3N3aXRjaF9zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFN3aXRjaFN0cmluZz4oKTsKLSAgICBzaXplX3QgdGFibGVJbmRleCA9IGJ5dGVjb2RlLnRhYmxl
SW5kZXg7Ci0gICAgdW5zaWduZWQgZGVmYXVsdE9mZnNldCA9IGp1bXBUYXJnZXQoY3VycmVudElu
c3RydWN0aW9uLCBieXRlY29kZS5kZWZhdWx0T2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBzY3J1dGlu
ZWUgPSBieXRlY29kZS5zY3J1dGluZWUub2Zmc2V0KCk7CisgICAgc2l6ZV90IHRhYmxlSW5kZXgg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGRlZmF1bHRP
ZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHNj
cnV0aW5lZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICAvLyBjcmVh
dGUganVtcCB0YWJsZSBmb3Igc3dpdGNoIGRlc3RpbmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2gg
c3RhdGVtZW50LgogICAgIFN0cmluZ0p1bXBUYWJsZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2Nr
LT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CkBAIC03NjIsMjAgKzcxNywxOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAganVtcChyZXR1cm5WYWx1ZUdQUiwgSlNTd2l0Y2hQdHJUYWcp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcERlYnVnPigpOwogICAgIGxvYWQzMihjb2RlQmxvY2soKS0+ZGVidWdnZXJSZXF1ZXN0
c0FkZHJlc3MoKSwgcmVnVDApOwogICAgIEp1bXAgbm9EZWJ1Z2dlclJlcXVlc3RzID0gYnJhbmNo
VGVzdDMyKFplcm8sIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlYnVnLCBz
dGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLmRlYnVnSG9va1R5cGUpKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRlYnVnLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAg
ICBub0RlYnVnZ2VyUmVxdWVzdHMubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
ZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRXFOdWxsPigpOwotICAg
IGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNyYzEgPSBieXRlY29k
ZS5vcGVyYW5kLm9mZnNldCgpOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIGludCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDApOwogICAgIEp1bXAg
aXNJbW1lZGlhdGUgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwpAQCAtODA0LDExICs3NTcsMTAg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxTnVsbD4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNv
ZGUuZHN0Lm9mZnNldCgpOwotICAgIGludCBzcmMxID0gYnl0ZWNvZGUub3BlcmFuZC5vZmZzZXQo
KTsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBp
bnQgc3JjMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJh
bmNoSWZOb3RDZWxsKHJlZ1QwKTsKQEAgLTgzNiw3ICs3ODgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9uZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24q
KQogewogICAgIC8vIEV2ZW4gdGhvdWdoIENUSSBkb2Vzbid0IHVzZSB0aGVtLCB3ZSBpbml0aWFs
aXplIG91ciBjb25zdGFudAogICAgIC8vIHJlZ2lzdGVycyB0byB6YXAgc3RhbGUgcG9pbnRlcnMs
IHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcHJvbG9uZ2luZwpAQCAtODUwLDIxICs4MDIsMTggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKQogICAgIGVtaXRFbnRl
ck9wdGltaXphdGlvbkNoZWNrKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRTY29wZT4oKTsKLSAgICBpbnQg
ZHN0ID0gYnl0ZWNvZGUuZHN0Lm9mZnNldCgpOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMCk7CiAgICAgZW1pdFN0b3Jl
Q2VsbChkc3QsIHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhp
cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwotICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIFdyaXRlQmFycmllckJhc2U8
U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gJm1ldGFkYXRhLmNhY2hlZFN0cnVjdHVyZTsK
LSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLnNyY0RzdC5vZmZzZXQoKSwgcmVn
VDEpOworICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0g
JmN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnN0cnVjdHVyZTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QxKTsKIAogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSk7CiAKQEAgLTg3NSwxMiArODI0LDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BDcmVhdGVUaGlzPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgIGludCBjYWxsZWUgPSBieXRlY29kZS5jYWxsZWUub2Zmc2V0KCk7
Ci0gICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+KiBjYWNoZWRGdW5jdGlvbiA9ICZtZXRhZGF0
YS5jYWNoZWRDYWxsZWU7CisgICAgaW50IGNhbGxlZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CisgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+KiBjYWNoZWRGdW5jdGlvbiA9
ICZjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5qc0NlbGw7CiAgICAgUmVnaXN0ZXJJRCBjYWxsZWVS
ZWcgPSByZWdUMDsKICAgICBSZWdpc3RlcklEIHJhcmVEYXRhUmVnID0gcmVnVDQ7CiAgICAgUmVn
aXN0ZXJJRCByZXN1bHRSZWcgPSByZWdUMDsKQEAgLTkxMSw2OSArODU4LDY0IEBAIHZvaWQgSklU
OjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgbG9hZDMyKEFkZHJlc3Moc2NyYXRjaFJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIHNjcmF0Y2hSZWcpOwogICAgIGVtaXRJbml0aWFs
aXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOwogICAgIGFkZFNsb3dDYXNl
KHNsb3dDYXNlcyk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5kc3Qub2Zm
c2V0KCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NoZWNrX3Rkeihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLnRhcmdldC5vZmZzZXQoKSwgcmVnVDApOworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwog
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIH0KIAogCiAvLyBTbG93IGNh
c2VzCiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRXE+KCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QwLCBy
ZWdUMSk7CiAgICAgYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgeyByZXR1
cm5WYWx1ZUdQUiB9KTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmRzdC5v
ZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfbmVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxPigp
OwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMCwgcmVnVDEpOwog
ICAgIHhvcjMyKFRydXN0ZWRJbW0zMigweDEpLCByZWdUMCk7CiAgICAgYm94Qm9vbGVhbihyZXR1
cm5WYWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgeyByZXR1cm5WYWx1ZUdQUiB9KTsKLSAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmRzdC5vZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIpOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamVxKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1
bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS50YXJnZXQpOworICAgIHVuc2ln
bmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QwLCByZWdUMSk7CiAgICAgZW1pdEp1bXBT
bG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9qbmVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSm5lcT4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYnl0ZWNvZGUudGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q29tcGFyZUVxLCByZWdUMCwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRl
c3QzMihaZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSW5zdGFuY2VvZkN1c3RvbT4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUu
ZHN0Lm9mZnNldCgpOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLnZhbHVlLm9mZnNldCgpOwot
ICAgIGludCBjb25zdHJ1Y3RvciA9IGJ5dGVjb2RlLmNvbnN0cnVjdG9yLm9mZnNldCgpOwotICAg
IGludCBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUuaGFzSW5zdGFuY2VWYWx1ZS5vZmZzZXQo
KTsKKyAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0PE9wSW5zdGFuY2VvZkN1
c3RvbSo+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdCgp
OworICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLnZhbHVlKCk7CisgICAgaW50IGNvbnN0cnVjdG9y
ID0gYnl0ZWNvZGUuY29uc3RydWN0b3IoKTsKKyAgICBpbnQgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5
dGVjb2RlLmhhc0luc3RhbmNlVmFsdWUoKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dmFsdWUsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNvbnN0cnVjdG9yLCBy
ZWdUMSk7CkBAIC05ODUsNyArOTI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNl
b2ZfY3VzdG9tKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFYKIAogI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25z
dCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24q
KQogewogICAgIC8vIEVtaXQgdGhlIEpJVCBvcHRpbWl6YXRpb24gY2hlY2s6IAogICAgIGlmIChj
YW5CZU9wdGltaXplZCgpKSB7CkBAIC05OTQsNyArOTM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bG9vcF9oaW50KGNvbnN0IEluc3RydWN0aW9uKikKICAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIEVtaXQgdGhlIHNsb3cg
cGF0aCBmb3IgdGhlIEpJVCBvcHRpbWl6YXRpb24gY2hlY2s6CkBAIC0xMDEzLDYzICs5NTUsNjAg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICAgICAganVtcChyZXR1cm5WYWx1ZUdQUiwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICBub09wdGltaXplZEVudHJ5Lmxp
bmsodGhpcyk7CiAKLSAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBjdXJyZW50SW5z
dHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwgT1BD
T0RFX0xFTkdUSChvcF9sb29wX2hpbnQpKTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShpdGVyKTsKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFwcyhjb25z
dCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFwcyhJbnN0cnVjdGlv
biopCiB7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRy
ZXNzKG1fdm0tPm5lZWRUcmFwSGFuZGxpbmdBZGRyZXNzKCkpKSk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX25vcChjb25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9ub3AoSW5z
dHJ1Y3Rpb24qKQogewogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zdXBlcl9zYW1wbGVyX2JlZ2lu
KGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfYmVn
aW4oSW5zdHJ1Y3Rpb24qKQogewogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVB
ZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmdfc3VwZXJTYW1wbGVyQ291bnQpKSk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfZW5kKGNvbnN0IEluc3RydWN0aW9uKikK
K3ZvaWQgSklUOjplbWl0X29wX3N1cGVyX3NhbXBsZXJfZW5kKEluc3RydWN0aW9uKikKIHsKICAg
ICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZnX3N1cGVyU2FtcGxlckNvdW50KSkpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Y2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYW5kbGVU
cmFwcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE5ld1JlZ2V4cD4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNv
ZGUuZHN0Lm9mZnNldCgpOwotICAgIGludCByZWdleHAgPSBieXRlY29kZS5yZWdleHAub2Zmc2V0
KCk7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
aW50IHJlZ2V4cCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIGpzQ2FzdDxSZWdFeHAqPihtX2NvZGVCbG9jay0+
Z2V0Q29uc3RhbnQocmVnZXhwKSkpOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1
ZUdQUik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXROZXdGdW5j
Q29tbW9uKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBKdW1wIGxhenlKdW1wOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7CisgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuc2NvcGUub2Zmc2V0KCks
IHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQsIHJlZ1QwKTsKICNlbHNlCi0gICAgZW1pdExvYWRQYXlsb2FkKGJ5dGVjb2Rl
LnNjb3BlLm9mZnNldCgpLCByZWdUMCk7CisgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKICNlbmRpZgotICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY0V4ZWMgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGJ5dGVjb2RlLmZ1bmN0
aW9uRGVjbCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYyA9IG1fY29kZUJsb2Nr
LT5mdW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAKLSAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsK
ICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKICAgICBlbHNlIGlm
IChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCkBAIC0xMDgyLDM5ICsxMDIxLDM3
IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25l
d19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE5ld0Z1
bmNDb21tb248T3BOZXdGdW5jPihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIGVtaXROZXdGdW5j
Q29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19n
ZW5lcmF0b3JfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE5ld0Z1bmNDb21tb248T3BOZXdHZW5lcmF0b3JGdW5jPihj
dXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVj
dGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19nZW5lcmF0b3JfZnVuYyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7Ci0gICAgZW1pdE5ld0Z1bmNDb21tb248T3BOZXdBc3luY0dlbmVyYXRvckZ1bmM+KGN1cnJl
bnRJbnN0cnVjdGlvbik7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9u
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5j
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE5ld0Z1bmNDb21t
b248T3BOZXdBc3luY0Z1bmM+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgZW1pdE5ld0Z1bmND
b21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KICAgICAKLXRlbXBsYXRlPHR5cGVuYW1lIE9w
Pgotdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0
KCk7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLnNjb3Bl
Lm9mZnNldCgpLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZWxzZQotICAgIGVtaXRMb2FkUGF5bG9h
ZChieXRlY29kZS5zY29wZS5vZmZzZXQoKSwgcmVnVDApOworICAgIGVtaXRMb2FkUGF5bG9hZChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZW5kaWYKIAotICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGJ5
dGVjb2RlLmZ1bmN0aW9uRGVjbCk7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2Rl
SUQ7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IG1fY29kZUJsb2NrLT5mdW5j
dGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51
Lm9wY29kZSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKQogICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlv
bik7CkBAIC0xMTI4LDYyICsxMDY1LDU3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21t
b24oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uPE9wTmV3RnVu
Y0V4cD4oY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3Vy
cmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5ld0dlbmVyYXRvckZ1bmNF
eHA+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJl
bnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4
cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2FzeW5jX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
Ci0gICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uPE9wTmV3QXN5bmNGdW5jRXhwPihjdXJyZW50SW5z
dHJ1Y3Rpb24pOworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24p
OwogfQogICAgIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4
cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbjxPcE5ld0FzeW5jR2VuZXJhdG9y
RnVuY0V4cD4oY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24o
Y3VycmVudEluc3RydWN0aW9uKTsKIH0KICAgICAKLXZvaWQgSklUOjplbWl0X29wX25ld19hcnJh
eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheT4oKTsKLSAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQg
ZHN0ID0gYnl0ZWNvZGUuZHN0Lm9mZnNldCgpOwotICAgIGludCB2YWx1ZXNJbmRleCA9IGJ5dGVj
b2RlLmFyZ3Yub2Zmc2V0KCk7Ci0gICAgaW50IHNpemUgPSBieXRlY29kZS5hcmdjOworICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCB2YWx1ZXNJ
bmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHNpemUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
dmFsdWVzSW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1Qw
KTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUsIGRzdCwK
LSAgICAgICAgJm1ldGFkYXRhLmFycmF5QWxsb2NhdGlvblByb2ZpbGUsIHJlZ1QwLCBzaXplKTsK
KyAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwg
cmVnVDAsIHNpemUpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXlfd2l0aF9zaXpl
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfYXJyYXlfd2l0aF9zaXplKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheVdp
dGhTaXplPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNp
emVJbmRleCA9IGJ5dGVjb2RlLmxlbmd0aC5vZmZzZXQoKTsKKyAgICBpbnQgZHN0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc2l6ZUluZGV4ID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoc2l6ZUluZGV4LCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZSwgZHN0LAotICAgICAgICAmbWV0YWRhdGEu
YXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwgcmVnVDApOworICAgICAgICBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5hcnJheUFsbG9jYXRpb25Qcm9maWxlLCByZWdUMCk7CiAjZWxzZQogICAgIGVtaXRM
b2FkKHNpemVJbmRleCwgcmVnVDEsIHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlLCBkc3QsCi0gICAgICAgICZtZXRhZGF0YS5hcnJh
eUFsbG9jYXRpb25Qcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICAgICAg
Y3VycmVudEluc3RydWN0aW9uWzNdLnUuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwgSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKSk7CiAjZW5kaWYKIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCi12b2lk
IEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3Bl
cnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNTdHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKLSAg
ICBpbnQgZHN0ID0gYnl0ZWNvZGUuZHN0Lm9mZnNldCgpOwotICAgIGludCBiYXNlID0gYnl0ZWNv
ZGUuYmFzZS5vZmZzZXQoKTsKLSAgICBpbnQgZW51bWVyYXRvciA9IGJ5dGVjb2RlLmVudW1lcmF0
b3Iub2Zmc2V0KCk7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
IGludCBlbnVtZXJhdG9yID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoZW51bWVyYXRvciwgcmVnVDEpOwpAQCAtMTE5OCw3ICsxMTMwLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJv
cGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5m
by0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7CisgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnlWYWxJbmZvLT5ieXRlY29kZUlu
ZGV4XTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CiAgICAgCkBAIC0xMjIzLDE0
ICsxMTU1LDEyIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShC
eVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2hhc19pbmRleGVkX3Byb3BlcnR5KEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNJbmRleGVkUHJvcGVydHk+KCk7Ci0gICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgaW50IGRzdCA9IGJ5
dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLmJhc2Uub2Zmc2V0
KCk7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUucHJvcGVydHkub2Zmc2V0KCk7Ci0gICAg
QXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLmFycmF5UHJvZmlsZTsKKyAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgYmFzZSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHByb3BlcnR5ID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBh
cnJheVByb2ZpbGVGb3I8T3BIYXNJbmRleGVkUHJvcGVydHlTaGFwZT4oY3VycmVudEluc3RydWN0
aW9uKTsKICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbElu
Zm8oKTsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhiYXNlLCByZWdUMCwgcHJv
cGVydHksIHJlZ1QxKTsKQEAgLTEyNjgsMTQgKzExOTgsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aGFzX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5m
byhieVZhbEluZm8sIG1fYnl0ZWNvZGVPZmZzZXQsIFBhdGNoYWJsZUp1bXAoKSwgYmFkVHlwZSwg
bW9kZSwgcHJvZmlsZSwgZG9uZSwgbmV4dEhvdFBhdGgpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2hhc19pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BIYXNJbmRleGVkUHJvcGVydHk+KCk7Ci0gICAgaW50IGRzdCA9IGJ5
dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLmJhc2Uub2Zmc2V0
KCk7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUucHJvcGVydHkub2Zmc2V0KCk7CisgICAg
aW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGJhc2Ug
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBwcm9wZXJ0eSA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8g
PSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbElu
Zm87CiAKICAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CkBAIC0xMjg5LDEzICsxMjE4LDEy
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uCiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgr
KzsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2RpcmVjdF9wbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2RpcmVjdF9w
bmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RGlyZWN0UG5hbWU+KCk7Ci0gICAgaW50
IGRzdCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLmJh
c2Uub2Zmc2V0KCk7Ci0gICAgaW50IGluZGV4ID0gYnl0ZWNvZGUuaW5kZXgub2Zmc2V0KCk7Ci0g
ICAgaW50IGVudW1lcmF0b3IgPSBieXRlY29kZS5lbnVtZXJhdG9yLm9mZnNldCgpOworICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBiYXNlID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgaW5kZXggPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOworICAgIGludCBlbnVtZXJhdG9yID0gY3VycmVudElu
c3RydWN0aW9uWzVdLnUub3BlcmFuZDsKIAogICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhIGNl
bGwKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKQEAgLTEzMjYsMTYg
KzEyNTQsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2RpcmVjdF9wbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGxvYWQ2NChCYXNlSW5kZXgocmVnVDAs
IHJlZ1QxLCBUaW1lc0VpZ2h0LCBvZmZzZXRPZkZpcnN0UHJvcGVydHkpLCByZWdUMCk7CiAgICAg
CiAgICAgZG9uZS5saW5rKHRoaXMpOwotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3Jfc3RydWN0dXJl
X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWU+
KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgZW51bWVy
YXRvciA9IGJ5dGVjb2RlLmVudW1lcmF0b3Iub2Zmc2V0KCk7Ci0gICAgaW50IGluZGV4ID0gYnl0
ZWNvZGUuaW5kZXgub2Zmc2V0KCk7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CisgICAgaW50IGVudW1lcmF0b3IgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOworICAgIGludCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGluZGV4LCByZWdUMCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihlbnVtZXJhdG9yLCByZWdUMSk7CkBAIC0xMzU0LDEyICsxMjgx
LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVy
YXRvckdlbmVyaWNQbmFtZT4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUuZHN0Lm9mZnNldCgp
OwotICAgIGludCBlbnVtZXJhdG9yID0gYnl0ZWNvZGUuZW51bWVyYXRvci5vZmZzZXQoKTsKLSAg
ICBpbnQgaW5kZXggPSBieXRlY29kZS5pbmRleC5vZmZzZXQoKTsKKyAgICBpbnQgZHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZW51bWVyYXRvciA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IGluZGV4ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoaW5kZXgs
IHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGVudW1lcmF0b3IsIHJlZ1QxKTsK
QEAgLTEzNzgsMTIgKzEzMDQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZW5l
cmljX3BuYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVf
dHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfcHJvZmlsZV90eXBlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQcm9maWxlVHlwZT4o
KTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
LSAgICBUeXBlTG9jYXRpb24qIGNhY2hlZFR5cGVMb2NhdGlvbiA9IG1ldGFkYXRhLnR5cGVMb2Nh
dGlvbjsKLSAgICBpbnQgdmFsdWVUb1Byb2ZpbGUgPSBieXRlY29kZS50YXJnZXQub2Zmc2V0KCk7
CisgICAgVHlwZUxvY2F0aW9uKiBjYWNoZWRUeXBlTG9jYXRpb24gPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5sb2NhdGlvbjsKKyAgICBpbnQgdmFsdWVUb1Byb2ZpbGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZVRv
UHJvZmlsZSwgcmVnVDApOwogCkBAIC0xNDQyLDQwICsxMzY2LDM2IEBAIHZvaWQgSklUOjplbWl0
X29wX3Byb2ZpbGVfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGp1bXBUb0VuZC5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hh
ZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwog
ICAgIHN0YXRpY19hc3NlcnQobm9uQXJnR1BSMCAhPSByZWdUMCAmJiBub25BcmdHUFIwICE9IHJl
Z1QyLCAid2Ugd2lsbCBoYXZlIHByb2JsZW1zIGlmIHRoaXMgaXMgdHJ1ZS4iKTsKLSAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcExvZ1NoYWRvd0NoaWNrZW5Qcm9s
b2d1ZT4oKTsKICAgICBHUFJSZWcgc2hhZG93UGFja2V0UmVnID0gcmVnVDA7CiAgICAgR1BSUmVn
IHNjcmF0Y2gxUmVnID0gbm9uQXJnR1BSMDsgLy8gVGhpcyBtdXN0IGJlIGEgbm9uLWFyZ3VtZW50
IHJlZ2lzdGVyLgogICAgIEdQUlJlZyBzY3JhdGNoMlJlZyA9IHJlZ1QyOwogICAgIGVuc3VyZVNo
YWRvd0NoaWNrZW5QYWNrZXQoKnZtKCksIHNoYWRvd1BhY2tldFJlZywgc2NyYXRjaDFSZWcsIHNj
cmF0Y2gyUmVnKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLnNjb3BlLm9m
ZnNldCgpLCByZWdUMyk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMyk7CiAgICAgbG9nU2hhZG93Q2hpY2tlblByb2xvZ3Vl
UGFja2V0KHNoYWRvd1BhY2tldFJlZywgc2NyYXRjaDFSZWcsIHJlZ1QzKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90
YWlsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdXBkYXRlVG9wQ2Fs
bEZyYW1lKCk7CiAgICAgc3RhdGljX2Fzc2VydChub25BcmdHUFIwICE9IHJlZ1QwICYmIG5vbkFy
Z0dQUjAgIT0gcmVnVDIsICJ3ZSB3aWxsIGhhdmUgcHJvYmxlbXMgaWYgdGhpcyBpcyB0cnVlLiIp
OwotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTG9nU2hhZG93
Q2hpY2tlblRhaWw+KCk7CiAgICAgR1BSUmVnIHNoYWRvd1BhY2tldFJlZyA9IHJlZ1QwOwogICAg
IEdQUlJlZyBzY3JhdGNoMVJlZyA9IG5vbkFyZ0dQUjA7IC8vIFRoaXMgbXVzdCBiZSBhIG5vbi1h
cmd1bWVudCByZWdpc3Rlci4KICAgICBHUFJSZWcgc2NyYXRjaDJSZWcgPSByZWdUMjsKICAgICBl
bnN1cmVTaGFkb3dDaGlja2VuUGFja2V0KCp2bSgpLCBzaGFkb3dQYWNrZXRSZWcsIHNjcmF0Y2gx
UmVnLCBzY3JhdGNoMlJlZyk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS50
aGlzVmFsdWUub2Zmc2V0KCksIHJlZ1QyKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLnNjb3BlLm9mZnNldCgpLCByZWdUMyk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMik7CisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMyk7CiAg
ICAgbG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQoc2hhZG93UGFja2V0UmVnLCBKU1ZhbHVlUmVn
cyhyZWdUMiksIHJlZ1QzLCBtX2NvZGVCbG9jaywgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlT2Zm
c2V0KSk7CiB9CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9wcm9maWxlX2NvbnRyb2xfZmxvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFByb2ZpbGVDb250cm9sRmxvdz4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBCYXNpY0Jsb2NrTG9jYXRpb24q
IGJhc2ljQmxvY2tMb2NhdGlvbiA9IG1ldGFkYXRhLmJhc2ljQmxvY2tMb2NhdGlvbjsKKyAgICBC
YXNpY0Jsb2NrTG9jYXRpb24qIGJhc2ljQmxvY2tMb2NhdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51LmJhc2ljQmxvY2tMb2NhdGlvbjsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGJhc2lj
QmxvY2tMb2NhdGlvbi0+ZW1pdEV4ZWN1dGVDb2RlKCp0aGlzKTsKICNlbHNlCkBAIC0xNDgzLDEw
ICsxNDAzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jb250cm9sX2Zsb3coY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfYXJndW1lbnRfY291bnQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEFyZ3VtZW50Q291bnQ+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdC5vZmZz
ZXQoKTsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAg
ICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVnVDAp
OwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEpTVmFsdWVSZWdzIHJl
c3VsdCA9IEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxhYmxlUmVncyhyZWdUMCwgcmVnVDEpOwpA
QCAtMTQ5NCwxMSArMTQxMywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hcmd1bWVudF9jb3VudChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCByZXN1bHQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9s
ZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UmVzdExl
bmd0aD4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUuZHN0Lm9mZnNldCgpOwotICAgIHVuc2ln
bmVkIG51bVBhcmFtc1RvU2tpcCA9IGJ5dGVjb2RlLm51bVBhcmFtZXRlcnNUb1NraXA7CisgICAg
aW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQg
bnVtUGFyYW1zVG9Ta2lwID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsK
ICAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVn
VDApOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgemVyb0xl
bmd0aCA9IGJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgcmVnVDAsIEltbTMyKG51bVBhcmFtc1Rv
U2tpcCkpOwpAQCAtMTUyNCwxMSArMTQ0MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVz
dF9sZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1bWVudChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QXJndW1lbnQ+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2Rl
LmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgaW5kZXggPSBieXRlY29kZS5pbmRleDsKKyAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgaW5kZXggPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyhyZWdUMCk7CiAjZWxzZQpAQCAtMTU0NCw3ICsxNDYxLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgbW92ZVZhbHVlKGpzVW5kZWZpbmVkKCksIHJlc3VsdFJlZ3Mp
OwogCiAgICAgZG9uZS5saW5rKHRoaXMpOwotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdFJlZ3MpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggZWYw
MzEwMmVjNjEwOTZmOTJmNjU3MTYwNDY2YTZlY2M3OTI1N2JhZC4uYzZiZDUyODMxMmUwOTNhNjFl
NWQ3ZjJlNzIwNDk5MTIyNzg1NGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcApAQCAtOTcyLDEwICs5NzIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7Ci0g
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAg
V3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+KiBjYWNoZWRTdHJ1Y3R1cmUgPSAmbWV0YWRhdGEu
Y2FjaGVkU3RydWN0dXJlOwotICAgIGludCB0aGlzUmVnaXN0ZXIgPSBieXRlY29kZS5zcmNEc3Qu
b2Zmc2V0KCk7CisgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+KiBjYWNoZWRTdHJ1Y3R1
cmUgPSAmY3VycmVudEluc3RydWN0aW9uWzJdLnUuc3RydWN0dXJlOworICAgIGludCB0aGlzUmVn
aXN0ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQo
dGhpc1JlZ2lzdGVyLCByZWdUMywgcmVnVDIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAxZThmZTAwNDUwNDFlYjM5MmRhZGM5Y2U0M2Y0ODE1
MjEyZTM5MWQyLi5iNWUxOTJjMGRhNDRjYTgxNjcwMGYwNzA4NTY3NmFhOTEzMTc1OGRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTc1Myw3ICs3
NTMsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeVB1dEJ5VmFsT3B0aW1pemUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogICAgICAgICAgICAgQVNTRVJUKCFieVZh
bEluZm8tPnN0dWJSb3V0aW5lKTsKICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsK
ICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5jYWNoZWRJZCA9PSBwcm9wZXJ0eU5hbWUp
IHsKLSAgICAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8
T3BQdXRCeVZhbD4oJnZtLCBleGVjLT5jb2RlQmxvY2soKSwgYnlWYWxJbmZvLCByZXR1cm5BZGRy
ZXNzLCBOb3REaXJlY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIEpJVDo6
Y29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKCZ2bSwgZXhlYy0+Y29kZUJsb2NrKCksIGJ5VmFs
SW5mbywgcmV0dXJuQWRkcmVzcywgTm90RGlyZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGlt
aXplZDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBT
ZWVtIGxpa2UgYSBnZW5lcmljIHByb3BlcnR5IGFjY2VzcyBzaXRlLgpAQCAtODM1LDcgKzgzNSw3
IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvCiAgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUpOwogICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2VlbikgewogICAg
ICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmNhY2hlZElkID09IHByb3BlcnR5TmFtZSkgewot
ICAgICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1
dEJ5VmFsRGlyZWN0Pigmdm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBieVZhbEluZm8sIHJldHVybkFk
ZHJlc3MsIERpcmVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgSklUOjpj
b21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoJnZtLCBleGVjLT5jb2RlQmxvY2soKSwgYnlWYWxJ
bmZvLCByZXR1cm5BZGRyZXNzLCBEaXJlY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAg
ICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVk
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNlZW0g
bGlrZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCkBAIC0xNjU3LDkgKzE2NTcsOCBA
QCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVl
UHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgfQogCiAgICAgY29kZUJsb2NrLT5lbnN1cmVD
YXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2Rl
SW5kZXgpLT5hczxPcENhdGNoPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKTsKLSAgICBtZXRhZGF0YS5idWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
cio+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleCArIDNdLnUucG9pbnRl
cik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJv
ZmlsZSkgewogICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsK
ICAgICB9KTsKIApAQCAtMjI4MSwxOCArMjI4MCwxOCBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3duS2V5VHlwZShFeGVjU3RhdGUqIGV4ZWMsIEVu
YwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29wZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBwYykKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0RnJvbVNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIGJ5
dGVjb2RlUEMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIEluc3RydWN0aW9uKiBwYyA9IGJ5dGVjb2RlUEM7CiAKLSAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0RnJvbVNjb3BlPigpOwotICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLnZhcik7Ci0gICAgSlNP
YmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dW5jaGVja2VkUihieXRlY29k
ZS5zY29wZS5vZmZzZXQoKSkuanNWYWx1ZSgpKTsKLSAgICBHZXRQdXRJbmZvJiBnZXRQdXRJbmZv
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5nZXRQdXRJbmZvOworICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7
CisgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dW5jaGVja2Vk
UihwY1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZv
KHBjWzRdLnUub3BlcmFuZCk7CiAKICAgICAvLyBNb2R1bGVWYXIgaXMgYWx3YXlzIGNvbnZlcnRl
ZCB0byBDbG9zdXJlVmFyIGZvciBnZXRfZnJvbV9zY29wZS4KICAgICBBU1NFUlQoZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpICE9IE1vZHVsZVZhcik7CkBAIC0yMzE0LDcgKzIzMTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29wZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEluc3RydQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbChleGVjLCB2bSwgYnl0
ZWNvZGUsIHNjb3BlLCBzbG90LCBpZGVudCk7CisgICAgICAgIENvbW1vblNsb3dQYXRoczo6dHJ5
Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoZXhlYywgdm0sIHBjLCBzY29wZSwgc2xvdCwgaWRlbnQp
OwogCiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFs
dWUoZXhlYywgaWRlbnQpOwpAQCAtMjMyMiwyOCArMjMyMSwyNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29wZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEluc3RydQogICAgIH0pKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRU
b1Njb3BlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogYnl0ZWNvZGVQQykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFRvU2NvcGU+
KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwor
ICAgIEluc3RydWN0aW9uKiBwYyA9IGJ5dGVjb2RlUEM7CiAKLSAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS52YXIpOwotICAgIEpTT2Jq
ZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hlY2tlZFIoYnl0ZWNvZGUu
c2NvcGUub2Zmc2V0KCkpLmpzVmFsdWUoKSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIo
Ynl0ZWNvZGUudmFsdWUub2Zmc2V0KCkpLmpzVmFsdWUoKTsKLSAgICBHZXRQdXRJbmZvJiBnZXRQ
dXRJbmZvID0gbWV0YWRhdGEuZ2V0UHV0SW5mbzsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJs
b2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0g
anNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQpLmpzVmFs
dWUoKSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIocGNbM10udS5vcGVyYW5kKS5qc1Zh
bHVlKCk7CisgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhwY1s0XS51Lm9w
ZXJhbmQpOwogCiAgICAgLy8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNjb3BlIHJlZ2lz
dGVyIHZhbHVlIGFsaXZlIGluIERGRy4KICAgICBBU1NFUlQoZ2V0UHV0SW5mby5yZXNvbHZlVHlw
ZSgpICE9IE1vZHVsZVZhcik7CiAKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09
IExvY2FsQ2xvc3VyZVZhcikgewogICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogZW52aXJv
bm1lbnQgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7Ci0gICAgICAgIGVu
dmlyb25tZW50LT52YXJpYWJsZUF0KFNjb3BlT2Zmc2V0KG1ldGFkYXRhLm9wZXJhbmQpKS5zZXQo
dm0sIGVudmlyb25tZW50LCB2YWx1ZSk7Ci0gICAgICAgIGlmIChXYXRjaHBvaW50U2V0KiBzZXQg
PSBtZXRhZGF0YS53YXRjaHBvaW50U2V0KQorICAgICAgICBlbnZpcm9ubWVudC0+dmFyaWFibGVB
dChTY29wZU9mZnNldChwY1s2XS51Lm9wZXJhbmQpKS5zZXQodm0sIGVudmlyb25tZW50LCB2YWx1
ZSk7CisgICAgICAgIGlmIChXYXRjaHBvaW50U2V0KiBzZXQgPSBwY1s1XS51LndhdGNocG9pbnRT
ZXQpCiAgICAgICAgICAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQgb3BfcHV0X3Njb3BlPExv
Y2FsQ2xvc3VyZVZhcj4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIzNzIsNyArMjM3
MCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAgIAogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgdm9pZCgpKTsKIAotICAgIENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQ
dXRUb1Njb3BlR2xvYmFsKGV4ZWMsIGNvZGVCbG9jaywgYnl0ZWNvZGUsIHNjb3BlLCBzbG90LCBp
ZGVudCk7CisgICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoZXhl
YywgY29kZUJsb2NrLCBwYywgc2NvcGUsIGdldFB1dEluZm8sIHNsb3QsIGlkZW50KTsKIH0KIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEV4Y2VwdGlvblZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCA3MmY5YTg1ZDI5ZTVmMjkxODRlYWUxYTBjN2IyNmM4MDNh
ODNiYjE3Li5iNjVkZDE4OTEwNzIxNmM2ZDQxOGRlN2NmMDYwMzc3M2E2MDFjMmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNDYyLDggKzQ2Miw4IEBA
IENhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZShFeGVj
U3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNvCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3
aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUga2V5
LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRoVW5rbm93bktleVR5cGUoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRGcm9tU2NvcGUoRXhlY1N0
YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpIFdURl9JTlRFUk5BTDsKLXZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3Ry
dWN0aW9uKiBieXRlY29kZVBDKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29wZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiogYnl0
ZWNvZGVQQykgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRv
U2NvcGUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpIFdURl9JTlRFUk5BTDsK
IAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZl
UHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShFeGVjU3RhdGUqLCBKU09iamVjdCop
IFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1
dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVf
dCBuZXdTaXplKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGJkNzg1YmU4NjZkNmQ4M2U2YTY5NDFhOTc3MzAw
YjVhZDQyYWI0OWYuLjdjNGViMmVkNTQ1NWQ3MjhiY2FlYTY1MGE5ODRhZmRhYzdmZDc2NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC01MSwxNCArNTEsMTIgQEAKIG5hbWVzcGFjZSBKU0MgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAK
LXZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5VmFsPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7
Ci0gICAgaW50IGJhc2UgPSBieXRlY29kZS5iYXNlLm9mZnNldCgpOwotICAgIGludCBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLnByb3BlcnR5Lm9mZnNldCgpOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmls
ZSA9ICZtZXRhZGF0YS5hcnJheVByb2ZpbGU7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOworICAgIGludCBwcm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gYXJyYXlQcm9maWxlRm9yPE9wR2V0
QnlWYWxTaGFwZT4oY3VycmVudEluc3RydWN0aW9uKTsKICAgICBCeVZhbEluZm8qIGJ5VmFsSW5m
byA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8oKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSwgcmVnVDApOwpAQCAtMTIwLDcgKzExOCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAg
ICAgcmVzdWx0T0subGluayh0aGlzKTsKICAgICB9CiAKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKG1ldGFkYXRhKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogCiAgICAgTGFiZWwgbmV4dEhvdFBhdGggPSBsYWJlbCgp
OwpAQCAtMTI4LDEzICsxMjYsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZU9m
ZnNldCwgbm90SW5kZXgsIGJhZFR5cGUsIG1vZGUsIHByb2ZpbGUsIGRvbmUsIG5leHRIb3RQYXRo
KSk7CiB9CiAKLUpJVEdldEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVk
SWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIE9wR2V0QnlWYWwgYnl0ZWNvZGUsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSnVtcCYgZmFzdERvbmVDYXNlLCBKdW1wJiBzbG93RG9uZUNh
c2UsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCitKSVRHZXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdEdl
dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXAmIGZh
c3REb25lQ2FzZSwgSnVtcCYgc2xvd0RvbmVDYXNlLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQogewog
ICAgIC8vIGJhc2U6IHJlZ1QwCiAgICAgLy8gcHJvcGVydHk6IHJlZ1QxCiAgICAgLy8gc2NyYXRj
aDogcmVnVDMKIAotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7CisgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaElmTm90Q2VsbChyZWdUMSkpOwogICAgIGVtaXRCeVZhbElkZW50aWZpZXJD
aGVjayhieVZhbEluZm8sIHJlZ1QxLCByZWdUMywgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwpA
QCAtMTQ5LDE5ICsxNDcsMTggQEAgSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZh
bFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgT3BHZXRCeVYKICAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlz
KTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZHN0LCBnZW4u
c3R1YkluZm8oKSwgcmVnVDAsIHByb3BlcnR5TmFtZS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRzdCwg
Z2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIHNsb3dEb25lQ2FzZSA9
IGp1bXAoKTsKIAogICAgIHJldHVybiBnZW47CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdC5v
ZmZzZXQoKTsKLSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLmJhc2Uub2Zmc2V0KCk7Ci0gICAgaW50
IHByb3BlcnR5ID0gYnl0ZWNvZGUucHJvcGVydHkub2Zmc2V0KCk7CisgICAgaW50IGRzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGJhc2UgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBwcm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQ7CiAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87CiAgICAgCiAg
ICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZSk7IC8vIGJhc2UgY2VsbCBjaGVj
awpAQCAtMTc0LDcgKzE3MSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgZW1pdE5h
a2VkQ2FsbChDb2RlTG9jYXRpb25MYWJlbDxOb1B0clRhZz4obV92bS0+Z2V0Q1RJU3R1YihzdHJp
bmdHZXRCeVZhbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgSnVt
cCBmYWlsZWQgPSBicmFuY2hUZXN0NjQoWmVybywgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCByZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBP
UENPREVfTEVOR1RIKG9wX2dldF9ieV92YWwpKTsKICAgICBmYWlsZWQubGluayh0aGlzKTsKICAg
ICBub3RTdHJpbmcubGluayh0aGlzKTsKICAgICBub25DZWxsLmxpbmsodGhpcyk7CkBAIC0xOTIs
MjIgKzE4OSwxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwog
ICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CiAKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZSgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRfb3Bf
cHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLmJhc2Uu
b2Zmc2V0KCk7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUucHJvcGVydHkub2Zmc2V0KCk7
Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLmFycmF5UHJvZmlsZTsKKyAg
ICBpbnQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHBy
b3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSBhcnJheVByb2ZpbGVGb3I8T3BQdXRCeVZhbFNoYXBlPihjdXJyZW50SW5z
dHJ1Y3Rpb24pOwogICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5
VmFsSW5mbygpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CkBA
IC0yMzcsMTYgKzIyNiwxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBj
aG9vc2VBcnJheU1vZGUocHJvZmlsZSk7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBK
SVRJbnQzMjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJs
ZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91
czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoY3Vy
cmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRB
cnJheVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpAQCAtMjYxLDEzICsyNTAsMTEgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRp
b25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZU9mZnNldCwgbm90SW5kZXgsIGJhZFR5cGUsIG1v
ZGUsIHByb2ZpbGUsIGRvbmUsIGRvbmUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQor
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5n
VHlwZSBpbmRleGluZ1NoYXBlKQogewotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLnZhbHVlLm9mZnNl
dCgpOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5hcnJheVByb2ZpbGU7
Ci0gICAgCisgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
KyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBhcnJheVByb2ZpbGVGb3I8T3BQdXRCeVZhbFNo
YXBlPihjdXJyZW50SW5zdHJ1Y3Rpb24pOworCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZElt
bTMyKGluZGV4aW5nU2hhcGUpKTsKQEAgLTI5Niw3ICsyODMsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZAogICAgIH0KICAgICBjYXNlIENvbnRpZ3VvdXNTaGFwZToKICAgICAgICAgc3RvcmU2
NChyZWdUMywgQmFzZUluZGV4KHJlZ1QyLCByZWdUMSwgVGltZXNFaWdodCkpOwotICAgICAgICBl
bWl0V3JpdGVCYXJyaWVyKGJ5dGVjb2RlLmJhc2Uub2Zmc2V0KCksIHZhbHVlLCBTaG91bGRGaWx0
ZXJWYWx1ZSk7CisgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgdmFsdWUsIFNob3VsZEZpbHRlclZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKQEAgLTMxOSwxMyArMzA2LDExIEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogewotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLnZhbHVl
Lm9mZnNldCgpOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5hcnJheVBy
b2ZpbGU7Ci0gICAgCisgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBhcnJheVByb2ZpbGVGb3I8T3BQdXRC
eVZhbFNoYXBlPihjdXJyZW50SW5zdHJ1Y3Rpb24pOworCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
OwogICAgIAogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIs
IFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwpAQCAtMzM3LDcgKzMyMiw3IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgTGFiZWwgc3RvcmVSZXN1bHQodGhpcyk7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDMpOwogICAgIHN0b3JlNjQocmVnVDMs
IEJhc2VJbmRleChyZWdUMiwgcmVnVDEsIFRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9y
T2Zmc2V0KCkpKTsKLSAgICBlbWl0V3JpdGVCYXJyaWVyKGJ5dGVjb2RlLmJhc2Uub2Zmc2V0KCks
IHZhbHVlLCBTaG91bGRGaWx0ZXJWYWx1ZSk7CisgICAgZW1pdFdyaXRlQmFycmllcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCB2YWx1ZSwgU2hvdWxkRmlsdGVyVmFsdWUpOwogICAg
IEp1bXAgZW5kID0ganVtcCgpOwogICAgIAogICAgIGVtcHR5LmxpbmsodGhpcyk7CkBAIC0zNTUs
MTUgKzM0MCwxNCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIHJldHVybiBzbG93Q2Fz
ZXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6
OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgT3AgYnl0ZWNv
ZGUsIFB1dEtpbmQgcHV0S2luZCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKdW1w
TGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQorSklUUHV0QnlJZEdlbmVyYXRv
ciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHV0S2luZCBwdXRLaW5kLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93
Q2FzZXMpCiB7CiAgICAgLy8gYmFzZTogcmVnVDAKICAgICAvLyBwcm9wZXJ0eTogcmVnVDEKICAg
ICAvLyBzY3JhdGNoOiByZWdUMgogCi0gICAgaW50IGJhc2UgPSBieXRlY29kZS5iYXNlLm9mZnNl
dCgpOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLnZhbHVlLm9mZnNldCgpOworICAgIGludCBi
YXNlID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChi
cmFuY2hJZk5vdENlbGwocmVnVDEpKTsKICAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soYnlW
YWxJbmZvLCByZWdUMSwgcmVnVDEsIHByb3BlcnR5TmFtZSwgc2xvd0Nhc2VzKTsKQEAgLTM4OSwy
NCArMzczLDExIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAgICAgcmV0dXJuIGdlbjsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAg
Ym9vbCBpc0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRf
YnlfdmFsX2RpcmVjdDsKLSAgICBpbnQgYmFzZTsKLSAgICBpbnQgcHJvcGVydHk7Ci0gICAgaW50
IHZhbHVlOwotCi0gICAgYXV0byBsb2FkID0gWyZdKGF1dG8gYnl0ZWNvZGUpIHsKLSAgICAgICAg
YmFzZSA9IGJ5dGVjb2RlLmJhc2Uub2Zmc2V0KCk7Ci0gICAgICAgIHByb3BlcnR5ID0gYnl0ZWNv
ZGUucHJvcGVydHkub2Zmc2V0KCk7Ci0gICAgICAgIHZhbHVlID0gYnl0ZWNvZGUudmFsdWUub2Zm
c2V0KCk7Ci0gICAgfTsKLQotICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgbG9hZChjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCkpOwotICAgIGVsc2UKLSAgICAgICAg
bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWw+KCkpOwotCisgICAgaW50IGJh
c2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBwcm9wZXJ0eSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHZhbHVlID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsK
IAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CkBAIC00MTUsNiArMzg2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1Qw
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDIpOworICAgIGJvb2wgaXNEaXJlY3QgPSBJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0g
b3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0Rp
cmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZh
bE9wdGltaXplLCByZWdUMCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8pOwogCiAgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQg
PSBzbG93UGF0aDsKQEAgLTQyMiw4MSArMzk0LDczIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0R2V0dGVyQnlJZD4oKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
LmJhc2Uub2Zmc2V0KCksIHJlZ1QwKTsKLSAgICBpbnQzMl90IG9wdGlvbnMgPSBieXRlY29kZS5h
dHRyaWJ1dGVzOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuYWNjZXNzb3Iu
b2Zmc2V0KCksIHJlZ1QxKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlckJ5
SWQsIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5wcm9wZXJ0eSkuaW1w
bCgpLCBvcHRpb25zLCByZWdUMSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgaW50MzJfdCBvcHRpb25zID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQsIHJlZ1QxKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblB1dEdldHRlckJ5SWQsIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRlbnRp
ZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKS5pbXBsKCksIG9wdGlvbnMsIHJl
Z1QxKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRl
cl9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0U2V0dGVyQnlJZD4oKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLmJhc2Uub2Zmc2V0KCksIHJlZ1QwKTsKLSAg
ICBpbnQzMl90IG9wdGlvbnMgPSBieXRlY29kZS5hdHRyaWJ1dGVzOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuYWNjZXNzb3Iub2Zmc2V0KCksIHJlZ1QxKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblB1dFNldHRlckJ5SWQsIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5wcm9wZXJ0eSkuaW1wbCgpLCBvcHRpb25zLCByZWdUMSk7CisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBy
ZWdUMCk7CisgICAgaW50MzJfdCBvcHRpb25zID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQsIHJlZ1QxKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFNldHRlckJ5
SWQsIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKS5pbXBsKCksIG9wdGlvbnMsIHJlZ1QxKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRHZXR0ZXJTZXR0ZXJCeUlkPigpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuYmFzZS5vZmZzZXQoKSwgcmVnVDApOwotICAgIGludDMy
X3QgYXR0cmlidXRlID0gYnl0ZWNvZGUuYXR0cmlidXRlczsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLmdldHRlci5vZmZzZXQoKSwgcmVnVDEpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUuc2V0dGVyLm9mZnNldCgpLCByZWdUMik7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIsIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5wcm9wZXJ0eSkuaW1wbCgpLCBhdHRyaWJ1dGUsIHJlZ1QxLCByZWdU
Mik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kLCByZWdUMCk7CisgICAgaW50MzJfdCBhdHRyaWJ1dGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzRdLnUub3BlcmFuZCwgcmVnVDEpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZCwgcmVnVDIpOworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCByZWdUMCwgbV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkuaW1wbCgpLCBhdHRyaWJ1dGUsIHJl
Z1QxLCByZWdUMik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlWYWw+
KCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5iYXNlLm9mZnNldCgpLCBy
ZWdUMCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5wcm9wZXJ0eS5vZmZz
ZXQoKSwgcmVnVDEpOwotICAgIGludDMyX3QgYXR0cmlidXRlcyA9IGJ5dGVjb2RlLmF0dHJpYnV0
ZXM7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5hY2Nlc3NvciwgcmVnVDIp
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCwgcmVnVDEpOworICAgIGludDMyX3QgYXR0cmlidXRlcyA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMik7CiAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25QdXRHZXR0ZXJCeVZhbCwgcmVnVDAsIHJlZ1QxLCBhdHRyaWJ1dGVzLCByZWdU
Mik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVy
X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0U2V0dGVyQnlWYWw+KCk7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5iYXNlLm9mZnNldCgpLCByZWdUMCk7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5wcm9wZXJ0eS5vZmZzZXQoKSwgcmVn
VDEpOwotICAgIGludDMyX3QgYXR0cmlidXRlcyA9IGJ5dGVjb2RlLmF0dHJpYnV0ZXM7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5hY2Nlc3Nvci5vZmZzZXQoKSwgcmVnVDIp
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCwgcmVnVDEpOworICAgIGludDMyX3QgYXR0cmlidXRlcyA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMik7CiAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25QdXRTZXR0ZXJCeVZhbCwgcmVnVDAsIHJlZ1QxLCBhdHRyaWJ1dGVzLCByZWdU
Mik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qu
b2Zmc2V0KCk7Ci0gICAgaW50IGJhc2UgPSBieXRlY29kZS5iYXNlLm9mZnNldCgpOwotICAgIGlu
dCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLnByb3BlcnR5OworICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKKyAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIHJlZ1QwLCBt
X2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGVsQnlWYWw+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBp
bnQgYmFzZSA9IGJ5dGVjb2RlLmJhc2Uub2Zmc2V0KCk7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0
ZWNvZGUucHJvcGVydHkub2Zmc2V0KCk7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kOworICAgIGludCBwcm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCByZWdUMCwgcmVnVDEpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOwotICAgIGludCByZXN1bHRWUmVnID0gYnl0ZWNvZGUu
ZHN0Lm9mZnNldCgpOwotICAgIGludCBiYXNlVlJlZyA9IGJ5dGVjb2RlLmJhc2Uub2Zmc2V0KCk7
Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLnByb3BlcnR5KSk7CisgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQ7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJs
b2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIHJlZ1QwKTsKIApAQCAtNTA5LDE3ICs0
NzMsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKICAgICAKLSAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7Ci0gICAgaW50IHJlc3VsdFZS
ZWcgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLnByb3BlcnR5KSk7CisgICAgaW50
IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4g
PSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwogCkBAIC01MzAsMTIgKzQ5MywxMSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3Qo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF9kaXJlY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+
KCk7Ci0gICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50
IGJhc2VWUmVnID0gYnl0ZWNvZGUuYmFzZS5vZmZzZXQoKTsKLSAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpKTsK
KyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlVlJlZywgcmVnVDApOwogCkBAIC01NDgsMzMgKzUxMCwzMSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRz
LmFwcGVuZChnZW4pOwogCi0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIGludCByZXN1bHRWUmVnID0gYnl0ZWNvZGUu
ZHN0Lm9mZnNldCgpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5wcm9wZXJ0eSkpOworICAgIGludCByZXN1bHRWUmVnID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCkpOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1tt
X2dldEJ5SWRJbmRleCsrXTsKIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwog
Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplLCByZXN1bHRW
UmVnLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOworICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1p
emUsIHJlc3VsdFZSZWcsIGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CiAK
ICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0QnlJZD4oKTsKLSAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLmRzdC5vZmZz
ZXQoKTsKLSAgICBpbnQgYmFzZVZSZWcgPSBieXRlY29kZS5iYXNlLm9mZnNldCgpOwotICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5wcm9wZXJ0eSkpOworICAgIGludCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICBpbnQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRl
bnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CiAgICAgCkBAIC01OTAsMTcgKzU1MCwx
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZSgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKLSAgICBpbnQgcmVzdWx0
VlJlZyA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBpbnQgYmFzZVZSZWcgPSBieXRlY29k
ZS5iYXNlLm9mZnNldCgpOwotICAgIGludCB0aGlzVlJlZyA9IGJ5dGVjb2RlLnRoaXNWYWx1ZS5v
ZmZzZXQoKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpKTsKKyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGJhc2VWUmVnID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgdGhpc1ZSZWcgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2Nv
ZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih0aGlzVlJlZywgcmVnVDEpOwpAQCAtNjE0LDUxICs1NzMsNDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlzLmFwcGVuZChnZW4pOwogCi0gICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOworICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcp
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVj
b2RlLmRzdC5vZmZzZXQoKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpKTsKKyAgICBpbnQgcmVzdWx0VlJl
ZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNbbV9nZXRCeUlkSW5kZXgrK107CiAgICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3Vs
dFZSZWcsIGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CisgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwg
cmVzdWx0VlJlZywgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKLSAgICBpbnQgcmVz
dWx0VlJlZyA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpKTsKKyAg
ICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1dpdGhUaGlzW21fZ2V0QnlJZFdpdGhUaGlzSW5kZXgr
K107CiAgICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwgcmVzdWx0VlJlZywgZ2Vu
LnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSwgaWRlbnQtPmltcGwoKSk7CisgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplLCByZXN1bHRWUmVnLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxLCBpZGVudC0+aW1w
bCgpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBiYXNlVlJlZyA9IGJ5dGVjb2RlLmJhc2Uu
b2Zmc2V0KCk7Ci0gICAgaW50IHZhbHVlVlJlZyA9IGJ5dGVjb2RlLnZhbHVlLm9mZnNldCgpOwot
ICAgIHVuc2lnbmVkIGRpcmVjdCA9IG1ldGFkYXRhLmZsYWdzICYgUHV0QnlJZElzRGlyZWN0Owor
ICAgIGludCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
aW50IHZhbHVlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgdW5z
aWduZWQgZGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUucHV0QnlJZEZsYWdzICYgUHV0
QnlJZElzRGlyZWN0OwogCiAgICAgLy8gSW4gb3JkZXIgdG8gYmUgYWJsZSB0byBwYXRjaCBib3Ro
IHRoZSBTdHJ1Y3R1cmUsIGFuZCB0aGUgb2JqZWN0IG9mZnNldCwgd2Ugc3RvcmUgb25lIHBvaW50
ZXIsCiAgICAgLy8gdG8ganVzdCBhZnRlciB0aGUgYXJndW1lbnRzIGhhdmUgYmVlbiBsb2FkZWQg
aW50byByZWdpc3RlcnMgJ2hvdFBhdGhCZWdpbicsIGFuZCB3ZSBnZW5lcmF0ZSBjb2RlCkBAIC02
ODEsMTIgKzYzNiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpKTsKKyAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlz
KTsKICAgICAKQEAgLTY5NywxMiArNjUxLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BJbkJ5SWQ+KCk7Ci0gICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7
Ci0gICAgaW50IGJhc2VWUmVnID0gYnl0ZWNvZGUuYmFzZS5vZmZzZXQoKTsKLSAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUucHJv
cGVydHkpKTsKKyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgaW50IGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlVlJlZywgcmVnVDApOwogCkBAIC03MTgsMTMgKzY3MSwxMiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2luX2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSW5CeUlkPigpOwotICAgIGludCByZXN1bHRWUmVnID0gYnl0ZWNvZGUuZHN0Lm9mZnNldCgp
OwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5wcm9wZXJ0eSkpOworICAgIGludCByZXN1bHRWUmVnID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9j
b2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwog
CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsr
XTsKIApAQCAtNzUxLDE0ICs3MDMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRSZXNvbHZlQ2xvc3VyZShp
bnQgZHN0LCBpbnQgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHUKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Jlc29s
dmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFJlc29sdmVT
Y29wZT4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUuZHN0Lm9mZnNldCgpOwotICAgIGludCBzY29w
ZSA9IGJ5dGVjb2RlLnNjb3BlLm9mZnNldCgpOwotICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBl
ID0gbWV0YWRhdGEucmVzb2x2ZVR5cGU7Ci0gICAgdW5zaWduZWQgZGVwdGggPSBtZXRhZGF0YS5s
b2NhbFNjb3BlRGVwdGg7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgaW50IHNjb3BlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
KyAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihj
b3BpZWRJbnN0cnVjdGlvbihjdXJyZW50SW5zdHJ1Y3Rpb24pWzRdLnUub3BlcmFuZCk7CisgICAg
dW5zaWduZWQgZGVwdGggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kOwogCiAgICAg
YXV0byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAgICAgICAg
c3dpdGNoIChyZXNvbHZlVHlwZSkgewpAQCAtNzgwLDcgKzczMCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE1vZHVsZVZhcjoKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtZXRh
ZGF0YS5sZXhpY2FsRW52aXJvbm1lbnQuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKSwgcmVn
VDApOwogICAgICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRHluYW1pYzoKQEAgLTc5Nyw3ICs3NDcsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CiAgICAgY2FzZSBVbnJlc29s
dmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgIEp1bXBMaXN0IHNr
aXBUb0VuZDsKLSAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5yZXNvbHZlVHlwZSwgcmVnVDApOwor
ICAgICAgICBsb2FkMzIoJmN1cnJlbnRJbnN0cnVjdGlvbls0XSwgcmVnVDApOwogCiAgICAgICAg
IEp1bXAgbm90R2xvYmFsUHJvcGVydHkgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW0zMihHbG9iYWxQcm9wZXJ0eSkpOwogICAgICAgICBlbWl0Q29kZShHbG9iYWxQcm9wZXJ0
eSk7CkBAIC04NTYsMTUgKzgwNiwxMyBAQCB2b2lkIEpJVDo6ZW1pdEdldENsb3N1cmVWYXIoaW50
IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCkKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
TGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlZhcmlhYmxlcygpICsgb3BlcmFuZCAqIHNpemVv
ZihSZWdpc3RlcikpLCByZWdUMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbVNjb3Bl
PigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
OwotICAgIGludCBkc3QgPSBieXRlY29kZS5kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNjb3BlID0g
Ynl0ZWNvZGUuc2NvcGUub2Zmc2V0KCk7Ci0gICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBt
ZXRhZGF0YS5nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7Ci0gICAgU3RydWN0dXJlKiogc3RydWN0
dXJlU2xvdCA9IG1ldGFkYXRhLnN0cnVjdHVyZS5zbG90KCk7Ci0gICAgdWludHB0cl90KiBvcGVy
YW5kU2xvdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4oJm1ldGFkYXRhLm9wZXJhbmQp
OworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGlu
dCBzY29wZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgUmVzb2x2ZVR5
cGUgcmVzb2x2ZVR5cGUgPSBHZXRQdXRJbmZvKGNvcGllZEluc3RydWN0aW9uKGN1cnJlbnRJbnN0
cnVjdGlvbilbNF0udS5vcGVyYW5kKS5yZXNvbHZlVHlwZSgpOworICAgIFN0cnVjdHVyZSoqIHN0
cnVjdHVyZVNsb3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5zdHJ1Y3R1cmUuc2xvdCgpOwor
ICAgIHVpbnRwdHJfdCogb3BlcmFuZFNsb3QgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCo+
KCZjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKTsKIAogICAgIGF1dG8gZW1pdENvZGUg
PSBbJl0gKFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBib29sIGluZGlyZWN0TG9hZEZvck9wZXJh
bmQpIHsKICAgICAgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewpAQCAtOTI0LDcgKzg3Miw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CiAgICAgY2FzZSBV
bnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgIEp1bXBM
aXN0IHNraXBUb0VuZDsKLSAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5nZXRQdXRJbmZvLCByZWdU
MCk7CisgICAgICAgIGxvYWQzMigmY3VycmVudEluc3RydWN0aW9uWzRdLCByZWdUMCk7CiAgICAg
ICAgIGFuZDMyKFRydXN0ZWRJbW0zMihHZXRQdXRJbmZvOjp0eXBlQml0cyksIHJlZ1QwKTsgLy8g
TG9hZCBSZXNvbHZlVHlwZSBpbnRvIFQwCiAKICAgICAgICAgSnVtcCBpc0dsb2JhbFByb3BlcnR5
ID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoR2xvYmFsUHJvcGVydHkpKTsK
QEAgLTk1NSwxNiArOTAzLDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Ci0gICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShtZXRhZGF0YSk7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEZyb21TY29wZT4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNv
ZGUuZHN0Lm9mZnNldCgpOwotICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEZyb21TY29wZSwgZHN0LCBjdXJyZW50
SW5zdHJ1Y3Rpb24pOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShvcGVyYXRpb25HZXRGcm9tU2NvcGUs
IGRzdCwgY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxW
YXJpYWJsZShKU1ZhbHVlKiBvcGVyYW5kLCBpbnQgdmFsdWUsIFdhdGNocG9pbnRTZXQqIHNldCkK
QEAgLTk5MCwxNiArOTM3LDE0IEBAIHZvaWQgSklUOjplbWl0UHV0Q2xvc3VyZVZhcihpbnQgc2Nv
cGUsIHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFdhdGNocG9pbnRTCiAgICAgc3RvcmVQ
dHIocmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlZh
cmlhYmxlcygpICsgb3BlcmFuZCAqIHNpemVvZihSZWdpc3RlcikpKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dFRvU2NvcGU+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7Ci0gICAgaW50IHNjb3BlID0gYnl0ZWNvZGUuc2NvcGUub2Zmc2V0KCk7
Ci0gICAgaW50IHZhbHVlID0gYnl0ZWNvZGUudmFsdWUub2Zmc2V0KCk7Ci0gICAgR2V0UHV0SW5m
byBnZXRQdXRJbmZvID0gY29waWVkR2V0UHV0SW5mbyhieXRlY29kZSk7CisgICAgaW50IHNjb3Bl
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyA9
IEdldFB1dEluZm8oY29waWVkSW5zdHJ1Y3Rpb24oY3VycmVudEluc3RydWN0aW9uKVs0XS51Lm9w
ZXJhbmQpOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gZ2V0UHV0SW5mby5yZXNvbHZl
VHlwZSgpOwotICAgIFN0cnVjdHVyZSoqIHN0cnVjdHVyZVNsb3QgPSBtZXRhZGF0YS5zdHJ1Y3R1
cmUuc2xvdCgpOwotICAgIHVpbnRwdHJfdCogb3BlcmFuZFNsb3QgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdCo+KCZtZXRhZGF0YS5vcGVyYW5kKTsKKyAgICBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1
cmVTbG90ID0gY3VycmVudEluc3RydWN0aW9uWzVdLnUuc3RydWN0dXJlLnNsb3QoKTsKKyAgICB1
aW50cHRyX3QqIG9wZXJhbmRTbG90ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPigmY3Vy
cmVudEluc3RydWN0aW9uWzZdLnUucG9pbnRlcik7CiAKICAgICBhdXRvIGVtaXRDb2RlID0gWyZd
IChSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSwgYm9vbCBpbmRpcmVjdExvYWRGb3JPcGVyYW5kKSB7
CiAgICAgICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKQEAgLTEwMzUsOSArOTgwLDkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdU
MCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGluZGlyZWN0TG9hZEZvck9wZXJh
bmQpCi0gICAgICAgICAgICAgICAgZW1pdFB1dEdsb2JhbFZhcmlhYmxlSW5kaXJlY3QoYml0d2lz
ZV9jYXN0PEpTVmFsdWUqKj4ob3BlcmFuZFNsb3QpLCB2YWx1ZSwgJm1ldGFkYXRhLndhdGNocG9p
bnRTZXQpOworICAgICAgICAgICAgICAgIGVtaXRQdXRHbG9iYWxWYXJpYWJsZUluZGlyZWN0KGJp
dHdpc2VfY2FzdDxKU1ZhbHVlKio+KG9wZXJhbmRTbG90KSwgdmFsdWUsIGJpdHdpc2VfY2FzdDxX
YXRjaHBvaW50U2V0Kio+KCZjdXJyZW50SW5zdHJ1Y3Rpb25bNV0pKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBlbWl0UHV0R2xvYmFsVmFyaWFibGUoYml0d2lzZV9jYXN0PEpT
VmFsdWUqPigqb3BlcmFuZFNsb3QpLCB2YWx1ZSwgbWV0YWRhdGEud2F0Y2hwb2ludFNldCk7Cisg
ICAgICAgICAgICAgICAgZW1pdFB1dEdsb2JhbFZhcmlhYmxlKGJpdHdpc2VfY2FzdDxKU1ZhbHVl
Kj4oKm9wZXJhbmRTbG90KSwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNocG9p
bnRTZXQpOwogICAgICAgICAgICAgZW1pdFdyaXRlQmFycmllcihjb25zdGFudFNjb3BlLCB2YWx1
ZSwgU2hvdWxkRmlsdGVyVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTEwNDUsNyArOTkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcjoK
ICAgICAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAgICAg
ICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSkpOwotICAgICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xv
dCwgdmFsdWUsIG1ldGFkYXRhLndhdGNocG9pbnRTZXQpOworICAgICAgICAgICAgZW1pdFB1dENs
b3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xvdCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1
XS51LndhdGNocG9pbnRTZXQpOwogICAgICAgICAgICAgZW1pdFdyaXRlQmFycmllcihzY29wZSwg
dmFsdWUsIFNob3VsZEZpbHRlclZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE1vZHVsZVZhcjoKQEAgLTEwNjMsNyArMTAwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNh
c2UgVW5yZXNvbHZlZFByb3BlcnR5OgogICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrczogewogICAgICAgICBKdW1wTGlzdCBza2lwVG9FbmQ7Ci0gICAgICAg
IGxvYWQzMigmbWV0YWRhdGEuZ2V0UHV0SW5mbywgcmVnVDApOworICAgICAgICBsb2FkMzIoJmN1
cnJlbnRJbnN0cnVjdGlvbls0XSwgcmVnVDApOwogICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIo
R2V0UHV0SW5mbzo6dHlwZUJpdHMpLCByZWdUMCk7IC8vIExvYWQgUmVzb2x2ZVR5cGUgaW50byBU
MAogCiAgICAgICAgIEp1bXAgaXNHbG9iYWxQcm9wZXJ0eSA9IGJyYW5jaDMyKEVxdWFsLCByZWdU
MCwgVHJ1c3RlZEltbTMyKEdsb2JhbFByb3BlcnR5KSk7CkBAIC0xMDk1LDEyICsxMDQwLDEyIEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19z
Y29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19z
Y29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7
Ci0gICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBjb3BpZWRHZXRQdXRJbmZvKGJ5dGVjb2Rl
KS5yZXNvbHZlVHlwZSgpOworICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
Y29waWVkSW5zdHJ1Y3Rpb24oY3VycmVudEluc3RydWN0aW9uKVs0XS51Lm9wZXJhbmQpOworICAg
IFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpOwogICAg
IGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKICAgICAgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90aHJvd19z
dHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CiAgICAgICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CkBAIC0xMTA4LDI1ICsxMDUzLDIzIEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVu
dEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEZyb21Bcmd1
bWVudHM+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLmRzdC5vZmZzZXQoKTsKLSAgICBpbnQg
YXJndW1lbnRzID0gYnl0ZWNvZGUuYXJndW1lbnRzLm9mZnNldCgpOwotICAgIGludCBpbmRleCA9
IGJ5dGVjb2RlLmluZGV4OworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOworICAgIGludCBhcmd1bWVudHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOworICAgIGludCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAg
ICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMsIHJlZ1QwKTsKICAgICBs
b2FkNjQoQWRkcmVzcyhyZWdUMCwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0KCkgKyBp
bmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgcmVnVDApOwotICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKKyAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1l
bnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb0FyZ3VtZW50cz4oKTsKLSAgICBpbnQg
YXJndW1lbnRzID0gYnl0ZWNvZGUuYXJndW1lbnRzLm9mZnNldCgpOwotICAgIGludCBpbmRleCA9
IGJ5dGVjb2RlLmluZGV4OwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLnZhbHVlLm9mZnNldCgp
OworICAgIGludCBhcmd1bWVudHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwor
ICAgIGludCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50
IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIodmFsdWUsIHJlZ1QxKTsKQEAgLTEyMzIsNyArMTE3NSw3IEBAIHZvaWQgSklUOjpl
bWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soQnlWYWxJbmZvKiBieVZhbEluZm8sIFJlZ2lzdGVySUQg
Y2VsbCwgUmVnaXN0CiAKIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5VmFsKEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9k
ZSBhcnJheU1vZGUpCiB7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5k
ZXgpLnB0cigpOworICAgIEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAmbV9jb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpW2J5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleF07CiAgICAgCiAg
ICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTEy
ODQsMTQgKzEyMjcsMTMgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWQKIAogdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQogewotICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2Nv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS5wdHIo
KTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFs
PigpOworICAgIEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAmbV9jb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpW2J5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleF07CiAKICAgICBKdW1wIGZh
c3REb25lQ2FzZTsKICAgICBKdW1wIHNsb3dEb25lQ2FzZTsKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAKLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbiA9IGVtaXRHZXRCeVZhbFdpdGhDYWNo
ZWRJZChieVZhbEluZm8sIGJ5dGVjb2RlLCBwcm9wZXJ0eU5hbWUsIGZhc3REb25lQ2FzZSwgc2xv
d0RvbmVDYXNlLCBzbG93Q2FzZXMpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1p
dEdldEJ5VmFsV2l0aENhY2hlZElkKGJ5VmFsSW5mbywgY3VycmVudEluc3RydWN0aW9uLCBwcm9w
ZXJ0eU5hbWUsIGZhc3REb25lQ2FzZSwgc2xvd0RvbmVDYXNlLCBzbG93Q2FzZXMpOwogCiAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCp0aGlzLCBtX2NvZGVCbG9jayk7CkBAIC0xMzE2LDExICsxMjU4
LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxOb1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5v
UHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uR2V0QnlWYWxHZW5lcmljKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKLSAg
ICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7Ci0gICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7CisgICAgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnlW
YWxJbmZvLT5ieXRlY29kZUluZGV4XTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMTMyOSwyNSArMTI2OSwyNSBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZAogCiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJ
VEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYmFkVHlwZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91Ymxl
OgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoY3VycmVudEluc3Ry
dWN0aW9uLCBiYWRUeXBlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3Vz
OgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwogICAgICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJp
ZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGN1cnJl
bnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CiAgICAgICAgIG5lZWRzTGlua0ZvcldyaXRlQmFycmll
ciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFR5cGVkQXJy
YXlUeXBlIHR5cGUgPSB0eXBlZEFycmF5VHlwZUZvckpJVEFycmF5TW9kZShhcnJheU1vZGUpOwog
ICAgICAgICBpZiAoaXNJbnQodHlwZSkpCi0gICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50
VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoY3VycmVudEluc3RydWN0aW9u
LCBiYWRUeXBlLCB0eXBlKTsKICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7Cisg
ICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoY3VycmVu
dEluc3RydWN0aW9uLCBiYWRUeXBlLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IApAQCAtMTM2Miw3ICsxMzAyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwo
QnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWQKICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhtX2NhbGxzLmxhc3QoKS5mcm9tLCBtX2NhbGxzLmxhc3QoKS5jYWxs
ZWUpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzRGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9u
LT5vcGNvZGVJRCgpID09IG9wX3B1dF9ieV92YWxfZGlyZWN0OworICAgIGJvb2wgaXNEaXJlY3Qg
PSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSkg
PT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CiAgICAgaWYgKCFpc0RpcmVjdCkgewogICAgICAgICBi
eVZhbEluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAg
ICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCkBAIC0x
Mzc3LDE3ICsxMzE3LDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZh
bEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgUHV0S2luZCBwdXRLaW5kLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgQVNTRVJUKChwdXRLaW5kID09
IERpcmVjdCAmJiBPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3QpIHx8IChwdXRL
aW5kID09IE5vdERpcmVjdCAmJiBPcDo6b3Bjb2RlSUQgPT0gb3BfcHV0X2J5X3ZhbCkpOwotICAg
IGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS5wdHIoKTsKLSAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKKyAgICBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uID0gJm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieVZh
bEluZm8tPmJ5dGVjb2RlSW5kZXhdOwogCiAgICAgSnVtcExpc3QgZG9uZUNhc2VzOwogICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1
dEJ5VmFsV2l0aENhY2hlZElkKGJ5VmFsSW5mbywgYnl0ZWNvZGUsIHB1dEtpbmQsIHByb3BlcnR5
TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMpOworICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
ID0gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5VmFsSW5mbywgY3VycmVudEluc3RydWN0aW9u
LCBwdXRLaW5kLCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKIAogICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcigqdGhpcywgbV9jb2RlQmxvY2spOwpAQCAtMTQxMSw3ICsxMzQ4LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENh
bGwoQ29kZUxvY2F0aW9uQ2FsbDxOb1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5vUHRy
VGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2lu
ZCA9PSBEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25Q
dXRCeVZhbEdlbmVyaWMpKTsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2Fk
KGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExp
c3QgSklUOjplbWl0RG91YmxlTG9hZChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsK
QEAgLTE0MzYsNyArMTM3Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJuIHNs
b3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBleHBl
Y3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChJbnN0cnVj
dGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBl
KQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBA
IC0xNDYzLDcgKzE0MDAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2Fk
KGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBz
bG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVn
VDA7CkBAIC0xNDkzLDcgKzE0MzAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3Rv
cmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIHJl
dHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RGlyZWN0QXJndW1l
bnRzR2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQor
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREaXJlY3RBcmd1bWVudHNHZXRCeVZhbChJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiB7CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwog
ICAgIApAQCAtMTUyMyw3ICsxNDYwLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREaXJlY3RB
cmd1bWVudHNHZXRCeVZhbChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAKICAgICBy
ZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdFNjb3BlZEFyZ3Vt
ZW50c0dldEJ5VmFsKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkK
K0pJVDo6SnVtcExpc3QgSklUOjplbWl0U2NvcGVkQXJndW1lbnRzR2V0QnlWYWwoSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogewogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsK
ICAgICAKQEAgLTE1NzQsNyArMTUxMSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0U2NvcGVk
QXJndW1lbnRzR2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wCiAgICAg
cmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5R2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBU
eXBlZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5
R2V0QnlWYWwoSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5
VHlwZSB0eXBlKQogewogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7CiAgICAgCkBAIC0xNjQxLDcg
KzE1NzgsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlHZXRCeVZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmCiAgICAgcmV0dXJuIHNsb3dDYXNlczsK
IH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlHZXRCeVZhbChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5
cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdldEJ5VmFsKEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsK
ICAgICBBU1NFUlQoaXNGbG9hdCh0eXBlKSk7CiAgICAgCkBAIC0xNjg2LDE0ICsxNjIzLDEyIEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5R2V0QnlWYWwoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wCiAgICAgcmV0dXJuIHNsb3dDYXNlczsgICAgCiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJy
YXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZh
bChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRh
ZGF0YS5hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gYXJyYXlQcm9m
aWxlRm9yPE9wUHV0QnlWYWxTaGFwZT4oY3VycmVudEluc3RydWN0aW9uKTsKICAgICBBU1NFUlQo
aXNJbnQodHlwZSkpOwogICAgIAotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLnZhbHVlLm9mZnNl
dCgpOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMTc2
MSwxNCArMTY5NiwxMiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93
Q2FzZXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKLSAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBBcnJheVByb2ZpbGUq
IHByb2ZpbGUgPSAmbWV0YWRhdGEuYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSA9IGFycmF5UHJvZmlsZUZvcjxPcFB1dEJ5VmFsU2hhcGU+KGN1cnJlbnRJbnN0cnVjdGlv
bik7CiAgICAgQVNTRVJUKGlzRmxvYXQodHlwZSkpOwogICAgIAotICAgIGludCB2YWx1ZSA9IGJ5
dGVjb2RlLnZhbHVlLm9mZnNldCgpOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFz
ZSA9IHJlZ1QwOwpAQCAtMTgzNCw4ICsxNzY3LDYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRG
bG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkK
ICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi10ZW1wbGF0ZSB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfdmFsPE9wUHV0QnlWYWw+KGNvbnN0IEluc3RydWN0aW9uKik7Ci0KIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlclNldC5jcHAKaW5kZXggYmMzNjFlODI4OTdlYjAzNGJiNzRmMjg0YTg4Y2FmNDg2
NGNjNDRhMi4uNjk5N2ZhYTJmNzc5ZjQ2ZGI2OWM0ZDdhODIyODVlMjE5YzQzZGY0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKQEAgLTIyMSwxNCArMjIxLDEy
IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lz
dGVycygpCiAjaWYgQ1BVKFg4NikKICNlbGlmIENQVShYODZfNjQpCiAjaWYgIU9TKFdJTkRPV1Mp
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKICAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxzZQotICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAgICAgQVNT
RVJUKEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwog
ICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
QEAgLTIzOCw3ICsyMzYsNiBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKQogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAjZWxpZiBDUFUo
QVJNX1RSQURJVElPTkFMKQogI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7CiAgICAgQVNTRVJU
KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAg
IEFTU0VSVChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCmluZGV4IGFkNzg0YjFhY2NlNDZi
NGNmNTU0YjliNzEyNzBlNGZjN2UxNjhjZTkuLjM3Yzk0MjdjNzQ1ODliNjI2YzlmZTNhOWMwMGU4
YjAzZTM4ZTNmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1Bh
dGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaApA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSklUU2xvd1BhdGhDYWxs
IHsKIHB1YmxpYzoKLSAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQorICAgIEpJVFNsb3dQ
YXRoQ2FsbChKSVQqIGppdCwgSW5zdHJ1Y3Rpb24qIHBjLCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQ
YXRoRnVuY3Rpb24pCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fc2xvd1BhdGhG
dW5jdGlvbihzbG93UGF0aEZ1bmN0aW9uKQogICAgICAgICAsIG1fcGMocGMpCkBAIC04NCw3ICs4
NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSklUKiBtX2ppdDsKICAgICBTbG93UGF0aEZ1
bmN0aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9wYzsK
KyAgICBJbnN0cnVjdGlvbiogbV9wYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDM1OWQ1ZWY4ZjY1NTMxMzQ0
Y2I0ZTZkOGI0ZGNmNjg0YjBjNjFjMWIuLmE5ODFmNGFlZjU2MWFjZWI5OTk5NmVlOTc3Mjk0Y2Q2
ZWI4YTVkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBA
IC00MSwxOCArNDEsMTMgQEAKIAogI2RlZmluZSBTVEFUSUNfQVNTRVJUKGNvbmQpIHN0YXRpY19h
c3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkKIAorbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBMTEludCB7CiAKLW5hbWVzcGFjZSBKU0MgewotCi1uYW1lc3BhY2UgTExJbnQgewot
Ci0KLXVpbnQ4X3QgRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3Ro
ICsgMV0gPSB7IH07Ci1PcGNvZGUgZ19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXSA9IHsgfTsKLU9w
Y29kZSBnX29wY29kZU1hcFdpZGVbbnVtT3Bjb2RlSURzXSA9IHsgfTsKK0luc3RydWN0aW9uIERh
dGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21heE9wY29kZUxlbmd0aCArIDFdID0geyB9Owor
T3Bjb2RlIERhdGE6OnNfb3Bjb2RlTWFwW251bU9wY29kZUlEc10gPSB7IH07CiAKICNpZiAhRU5B
QkxFKENfTE9PUCkKLWV4dGVybiAiQyIgdm9pZCBsbGludF9lbnRyeSh2b2lkKiwgdm9pZCopOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VudHJ5KHZvaWQqKTsKICNlbmRpZgogCiB2b2lkIGluaXRp
YWxpemUoKQpAQCAtNjEsMTYgKzU2LDE0IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgQ0xvb3A6
OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVOQUJMRShDX0xPT1ApCi0gICAgbGxpbnRfZW50
cnkoJmdfb3Bjb2RlTWFwLCAmZ19vcGNvZGVNYXBXaWRlKTsKKyAgICBsbGludF9lbnRyeSgmRGF0
YTo6c19vcGNvZGVNYXApOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7
ICsraSkgewotICAgICAgICBnX29wY29kZU1hcFtpXSA9IHRhZ0NvZGVQdHIoZ19vcGNvZGVNYXBb
aV0sIEJ5dGVjb2RlUHRyVGFnKTsKLSAgICAgICAgZ19vcGNvZGVNYXBXaWRlW2ldID0gdGFnQ29k
ZVB0cihnX29wY29kZU1hcFdpZGVbaV0sIEJ5dGVjb2RlUHRyVGFnKTsKLSAgICB9CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgRGF0YTo6c19vcGNv
ZGVNYXBbaV0gPSB0YWdDb2RlUHRyKERhdGE6OnNfb3Bjb2RlTWFwW2ldLCBCeXRlY29kZVB0clRh
Zyk7CiAKLSAgICBBU1NFUlQobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSA8
IFVJTlQ4X01BWCk7CisgICAgdm9pZCogaGFuZGxlciA9IERhdGE6OnNfb3Bjb2RlTWFwW2xsaW50
X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmVdOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQotICAgICAgICBEYXRhOjpzX2V4Y2VwdGlvbklu
c3RydWN0aW9uc1tpXSA9IGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7Cisg
ICAgICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGhhbmRs
ZXI7CiAjZW5kaWYgLy8gRU5BQkxFKENfTE9PUCkKIH0KIApAQCAtMTMxLDE0ICsxMjQsMTIgQEAg
dm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgU1RBVElDX0FTU0VSVChW
YWx1ZU51bGwgPT0gVGFnQml0VHlwZU90aGVyKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKENfTE9P
UCkKLSAgICBBU1NFUlQoQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNW
aXJ0dWFsUmVnaXN0ZXJzKCkgPT0gMSk7Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorI2lmIEVO
QUJMRShDX0xPT1ApIHx8IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKCFDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSk7CiAjZWxp
ZiAoQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpKSAgfHwgQ1BVKEFSTTY0KQotICAgIEFTU0VS
VChDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKSA9PSA0KTsKKyAgICBBU1NFUlQoQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgPT0gMyk7CiAjZWxpZiAoQ1BVKFg4Nl82NCkgJiYg
T1MoV0lORE9XUykpCi0gICAgQVNTRVJUKENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpID09IDQpOworICAgIEFTU0VSVChDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSA9PSAzKTsK
ICNlbmRpZgogCiAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KChyZWlu
dGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxKU0NlbGw+Kj4oMHg0MDAwKS0+c2xvdCgpKSkgLSAw
eDQwMDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBlMjVm
M2UyMDBhYTYxNGUyZDI0YzlhODNhNmY4NzE1NmNjMzgwYWU0Li45Y2E1NzE1MjdjMGNiMjQyNDBl
N2I2NzY5ZDdiYzdjOTRkOTA3NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oCkBAIC00MiwyNiArNDIsMjAgQEAgdHlwZWRlZiB2b2lkICgqTExJbnRDb2RlKSgpOwog
CiBuYW1lc3BhY2UgTExJbnQgewogCi1leHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIE9wY29k
ZSBnX29wY29kZU1hcFtudW1PcGNvZGVJRHNdOwotZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFU
RSBPcGNvZGUgZ19vcGNvZGVNYXBXaWRlW251bU9wY29kZUlEc107Ci0KIGNsYXNzIERhdGEgewot
CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcGVyZm9ybUFzc2VydGlvbnMoVk0mKTsKIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgdWludDhfdCBzX2V4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNv
ZGVMZW5ndGggKyAxXTsKKyAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24gc19leGNlcHRpb25JbnN0cnVj
dGlvbnNbbWF4T3Bjb2RlTGVuZ3RoICsgMV07CisgICAgc3RhdGljIE9wY29kZSBzX29wY29kZU1h
cFtudW1PcGNvZGVJRHNdOwogCiAgICAgZnJpZW5kIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAg
ZnJpZW5kIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKICAgICBmcmllbmQg
T3Bjb2RlKiBvcGNvZGVNYXAoKTsKLSAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVNYXBXaWRlKCk7
CiAgICAgZnJpZW5kIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOwotICAgIGZyaWVuZCBPcGNv
ZGUgZ2V0T3Bjb2RlV2lkZShPcGNvZGVJRCk7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4gZnJp
ZW5kIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldENvZGVQdHIoT3Bjb2RlSUQpOwotICAg
IHRlbXBsYXRlPFB0clRhZyB0YWc+IGZyaWVuZCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBn
ZXRXaWRlQ29kZVB0cihPcGNvZGVJRCk7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4gZnJpZW5k
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdldENvZGVSZWYoT3Bjb2RlSUQpOwogfTsKIApA
QCAtNjksMzggKzYzLDIzIEBAIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiBpbmxpbmUgSW5zdHJ1Y3Rp
b24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8SW5zdHJ1Y3Rpb24qPihEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyk7CisgICAgcmV0
dXJuIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwogfQogICAgIAogaW5saW5lIE9wY29k
ZSogb3Bjb2RlTWFwKCkKIHsKLSAgICByZXR1cm4gZ19vcGNvZGVNYXA7Ci19Ci0KLWlubGluZSBP
cGNvZGUqIG9wY29kZU1hcFdpZGUoKQotewotICAgIHJldHVybiBnX29wY29kZU1hcFdpZGU7Cisg
ICAgcmV0dXJuIERhdGE6OnNfb3Bjb2RlTWFwOwogfQogCiBpbmxpbmUgT3Bjb2RlIGdldE9wY29k
ZShPcGNvZGVJRCBpZCkKIHsKICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQotICAg
IHJldHVybiBnX29wY29kZU1hcFtpZF07CisgICAgcmV0dXJuIERhdGE6OnNfb3Bjb2RlTWFwW2lk
XTsKICNlbHNlCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZT4oaWQpOwogI2VuZGlmCiB9
CiAKLWlubGluZSBPcGNvZGUgZ2V0T3Bjb2RlV2lkZShPcGNvZGVJRCBpZCkKLXsKLSNpZiBFTkFC
TEUoQ09NUFVURURfR09UT19PUENPREVTKQotICAgIHJldHVybiBnX29wY29kZU1hcFdpZGVbaWRd
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaWQpOwotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0jZW5kaWYKLX0KLQogdGVtcGxhdGU8UHRyVGFnIHRhZz4KIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4gZ2V0Q29kZVB0cihPcGNvZGVJRCBvcGNvZGVJ
RCkKIHsKQEAgLTExMCwxNCArODksNiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjx0YWc+IGdldENvZGVQdHIoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB9CiAKIHRlbXBsYXRlPFB0
clRhZyB0YWc+Ci1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdp
ZGVDb2RlUHRyKE9wY29kZUlEIG9wY29kZUlEKQotewotICAgIHZvaWQqIGFkZHJlc3MgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlKG9wY29kZUlEKSk7Ci0gICAgYWRkcmVz
cyA9IHJldGFnQ29kZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKLSAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhhZGRyZXNzKTsKLX0KLQotdGVtcGxhdGU8UHRyVGFnIHRhZz4KIEFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2V0Q29kZVJlZihPcGNvZGVJRCBvcGNvZGVJRCkKIHsK
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz46OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihnZXRDb2RlUHRyPHRhZz4ob3Bjb2RlSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggODE4ZmI5
ODMyMmI5OGVlMmI0Nzc3Yzk5MWIwZTEzMDQ0NDYwOTgyMC4uNGZkOTA1MDM5Zjg3OWVhNDU4OGIx
ZGI1NGJiYWFlNTY2ODQ5ODFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTIwLDE0ICsyMCwxMyBAQAogICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJBcml0
aFByb2ZpbGUuaCIKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKLSNpbmNsdWRlICJCeXRlY29k
ZUluZGljZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKQEAgLTM1LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJEaXJlY3RFdmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkV2YWxFeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRh
LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkluZGlyZWN0RXZhbEV4ZWN1dGFibGUu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNTEsNyArNDksNiBAQAogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIkp1bXBUYWJs
ZS5oIgotI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNv
bmZpZy5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCmluZGV4IGU2ZjI0Y2RmZjQ5OTY0NzllODZmZTU5ZjM1ZjQ1YzkyNTBm
MmQxM2UuLmVlYWQyNGQ3MGY1OWM5MmE0NGZmYTlhMGJhYmVkYzc5Y2VhMTg5NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNTYsNyAr
NTYsNiBAQAogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgi
CiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCi0jaW5jbHVkZSAiTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpAQCAtOTQsOCArOTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBMTElOVF9TRVRfUENfRk9SX1NUVUJTKCkKIAotI2RlZmluZSBMTElO
VF9PUChfX3IpIChleGVjLT51bmNoZWNrZWRSKF9fci5vZmZzZXQoKSkpCi0jZGVmaW5lIExMSU5U
X09QX0MoX19yKSAoZXhlYy0+cihfX3Iub2Zmc2V0KCkpKQorI2RlZmluZSBMTElOVF9PUChpbmRl
eCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5lIExMSU5U
X09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQogCiAjZGVmaW5lIExM
SU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCiAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoZmlyc3QsIHNlY29uZCk7ICAgICAgICBcCkBAIC0xMjIsNDAgKzEyMSw0
MiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgTExJTlRfRU5E
X0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAot
I2RlZmluZSBKVU1QX09GRlNFVCh0YXJnZXQpIFwKLSAgICAoKHRhcmdldCkgPyAodGFyZ2V0KSA6
IGV4ZWMtPmNvZGVCbG9jaygpLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KHBjKSkKLQotI2RlZmluZSBK
VU1QX1RPKHRhcmdldCkgZG8geyBcCi0gICAgICAgIHBjID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArICh0
YXJnZXQpKTsgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotCi0jZGVmaW5lIExMSU5UX0JSQU5DSChj
b25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIExMSU5UX0JSQU5DSChv
cGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGJv
b2wgX19iX2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBKVU1QX1RPKEpVTVBfT0ZGU0VU
KGJ5dGVjb2RlLnRhcmdldCkpOyBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RI
KG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCiAgICAgICAgIGVsc2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg
ICBKVU1QX1RPKHBjLT5zaXplKCkpOyBcCisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RI
KG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX0VORF9J
TVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3
aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfUkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAg
IFwKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgTExJTlRfT1AoYnl0ZWNvZGUuZHN0KSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAg
XAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9XSVRIX1BDX0FESlVTVE1FTlQodmFs
dWUsIHBjQWRqdXN0bWVudCkgZG8geyBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVl
ID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAg
ICAgICBcCisgICAgICAgIHBjICs9IChwY0FkanVzdG1lbnQpOyAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
fSB3aGlsZSAoZmFsc2UpCiAKLSNkZWZpbmUgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHZhbHVlKSBk
byB7ICAgICAgICAgICAgICAgXAorI2RlZmluZSBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bjb2Rl
LCB2YWx1ZSkgZG8geyAgICAgICAgICAgICAgIFwKICAgICAgICAgSlNWYWx1ZSBfX3JwX3JldHVy
blZhbHVlID0gKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBMTElOVF9PUChieXRlY29kZS5kc3QpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICBMTElOVF9QUk9GSUxFX1ZBTFVFKF9fcnBfcmV0dXJuVmFs
dWUpOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5WYWx1ZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9QUk9GSUxFX1ZBTFVFKG9w
Y29kZSwgX19ycF9yZXR1cm5WYWx1ZSk7ICAgICAgICAgIFwKICAgICAgICAgTExJTlRfRU5EX0lN
UEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGls
ZSAoZmFsc2UpCiAKLSNkZWZpbmUgTExJTlRfUFJPRklMRV9WQUxVRSh2YWx1ZSkgZG8geyBcCi0g
ICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpLnByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorI2RlZmluZSBMTElOVF9QUk9GSUxFX1ZBTFVFKG9wY29k
ZSwgdmFsdWUpIGRvIHsgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51
LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
KTsgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJ
TlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCkBAIC0y
MjEsMjUgKzIyMiwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gdm9pZCBzbG93UGF0
aExvZ0YoY29uc3QgY2hhciosIGNvbnN0IFR5cGVzJi4uLikgeyB9CiAKICNlbmRpZiAvLyBMTElO
VF9UUkFDSU5HCiAKLWV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29w
ZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJh
Y2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVy
ZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgaWYgKCFPcHRpb25zOjp0cmFjZUxMSW50RXhlY3V0aW9u
KCkpCiAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7CiAKICAgICBMTElOVF9CRUdJTigpOwotICAg
IGRhdGFMb2dGKAotICAgICAgICAiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMl
dTogVHJhY2UoJWQpOiAlZFxuIiwKLSAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAotICAgICAg
ICBleGVjLT5jb2RlQmxvY2soKSwKLSAgICAgICAgZXhlYywKLSAgICAgICAgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChwYykpLAotICAgICAg
ICBwYy0+b3Bjb2RlSUQoKSwKLSAgICAgICAgZnJvbVdoZXJlLAotICAgICAgICBvcGVyYW5kKTsK
KyAgICBkYXRhTG9nRigiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJh
Y2UoJWQpOiAlZDogJWRcbiIsCisgICAgICAgICAgICAmVGhyZWFkOjpjdXJyZW50KCksCisgICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oZXhlYy0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0
KHBjKSksCisgICAgICAgICAgICBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpLAorICAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICAgb3BlcmFuZCwKKyAgICAg
ICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKLWV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCkKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3Zh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQg
b3BlcmFuZCkKIHsKICAgICBpZiAoIU9wdGlvbnM6OnRyYWNlTExJbnRFeGVjdXRpb24oKSkKICAg
ICAgICAgTExJTlRfRU5EX0lNUEwoKTsKQEAgLTI1NCwxNCArMjU1LDE1IEBAIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSW5zdHJ1Y3RpCiAgICAgfSB1OwogICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7CiAgICAgZGF0YUxvZ0YoCi0gICAgICAgICI8JXA+ICVwIC8gJXA6IGV4ZWN1dGluZyBi
YyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICAi
PCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6
ICUwOHg6JTA4eDogJXNcbiIsCiAgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAgICAgICAg
ZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgIGV4ZWMsCiAgICAgICAgIHN0YXRpY19jYXN0PGlu
dHB0cl90PihleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQocGMpKSwKLSAgICAgICAg
cGMtPm9wY29kZUlEKCksCisgICAgICAgIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51
Lm9wY29kZSksCiAgICAgICAgIGZyb21XaGVyZSwKLSAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwK
KyAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAogICAgICAg
ICB1LmJpdHMudGFnLAogICAgICAgICB1LmJpdHMucGF5bG9hZCwKICAgICAgICAgdG9DU3RyaW5n
KHZhbHVlKS5kYXRhKCkpOwpAQCAtMzIxLDE0ICszMjMsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0wodHJhY2UpCiAgICAgaWYgKCFPcHRpb25zOjp0cmFjZUxMSW50RXhlY3V0aW9uKCkpCiAgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7CiAKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IHBjLT5vcGNv
ZGVJRCgpOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlE
KHBjWzBdLnUub3Bjb2RlKTsKICAgICBkYXRhTG9nRigiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcg
YmMjJXp1LCAlcywgcGMgPSAlcFxuIiwKICAgICAgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwK
ICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICAgICAgZXhlYywKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVP
ZmZzZXQocGMpKSwKLSAgICAgICAgICAgIHBjLT5uYW1lKCksCi0gICAgICAgICAgICBwYyk7Cisg
ICAgICAgICAgICBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sIHBjKTsKICAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfZW50ZXIpIHsKICAgICAgICAgZGF0YUxvZ0YoIkZyYW1lIHdpbGwgZXZlbnR1YWxseSBy
ZXR1cm4gdG8gJXBcbiIsIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CiAgICAgICAgICpyZW1v
dmVDb2RlUHRyVGFnPHZvbGF0aWxlIGNoYXIqPihleGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOwpA
QCAtMzk4LDcgKzM5OSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNz
KENvZGVCbG9jayogY29kZUJsb2NrLCBFeGVjU3RhdGUqIGV4ZWMsIHVuCiAgICAgfQogfQogCi1z
dGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50
cnlLaW5kIGtpbmQpCitzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciAq
bmFtZSwgRW50cnlLaW5kIGtpbmQpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkg
ewogICAgICAgICBkYXRhTG9nKApAQCAtNDIxLDcgKzQyMiw3IEBAIHN0YXRpYyBTbG93UGF0aFJl
dHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiosIENv
ZGVCbG9jCiAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmppdENvZGUoKS0+YWRkcmVz
c0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOwogfQogI2Vs
c2UgLy8gRU5BQkxFKEpJVCkKLXN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiosIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBjaGFyKiwgRW50cnlLaW5kKQorc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9T
UihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IGNoYXIqLCBFbnRyeUtpbmQpCiB7CiAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNv
b24oKTsKICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOwpAQCAtNTY1LDMyICs1NjYsMjUg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbmV3X29iamVjdCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BOZXdPYmplY3Q+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShleGVjKTsKLSAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYywgbWV0YWRhdGEub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuc3RydWN0dXJlKCkp
KTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgcGNbM10udS5v
YmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCkpKTsKIH0KIAogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJheSkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BOZXdBcnJheT4oKTsKLSAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwotICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RB
cnJheU5lZ2F0aXZlSW5kZXhlZChleGVjLCAmbWV0YWRhdGEuYXJyYXlBbGxvY2F0aW9uUHJvZmls
ZSwgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoYnl0ZWNvZGUuYXJndikpLCBieXRl
Y29kZS5hcmdjKSk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRl
eGVkKGV4ZWMsIHBjWzRdLnUuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwgYml0d2lzZV9jYXN0PEpT
VmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKIH0KIAogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NpemUpCiB7CiAgICAgTExJTlRf
QkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTmV3QXJyYXlXaXRoU2l6ZT4o
KTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwotICAgIExM
SU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgJm1ldGFkYXRhLmFy
cmF5QWxsb2NhdGlvblByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgTExJTlRf
T1BfQyhieXRlY29kZS5sZW5ndGgpLmpzVmFsdWUoKSkpOworICAgIExMSU5UX1JFVFVSTihjb25z
dHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgcGNbM10udS5hcnJheUFsbG9jYXRpb25Qcm9m
aWxlLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcmVnZXhwKQogewog
ICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcE5ld1JlZ2V4
cD4oKTsKLSAgICBSZWdFeHAqIHJlZ0V4cCA9IGpzQ2FzdDxSZWdFeHAqPihMTElOVF9PUF9DKGJ5
dGVjb2RlLnJlZ2V4cCkuanNWYWx1ZSgpKTsKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGpzQ2FzdDxS
ZWdFeHAqPihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSk7CiAgICAgQVNTRVJUKHJlZ0V4cC0+aXNW
YWxpZCgpKTsKICAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOwogfQpA
QCAtNTk4LDkgKzU5Miw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcmVn
ZXhwKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlb2YpCiB7CiAgICAg
TExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5zdGFuY2VvZj4o
KTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQyhieXRlY29kZS52YWx1ZSkuanNWYWx1
ZSgpOwotICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUF9DKGJ5dGVjb2RlLnByb3RvdHlwZSku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CiAgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVl
LCBwcm90bykpKTsKIH0KIApAQCAtNjA4LDEwICs2MDEsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKIAot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbnN0YW5jZW9mQ3VzdG9tPigpOwotICAgIEpT
VmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKGJ5dGVjb2RlLnZhbHVlKS5qc1ZhbHVlKCk7Ci0gICAg
SlNWYWx1ZSBjb25zdHJ1Y3RvciA9IExMSU5UX09QX0MoYnl0ZWNvZGUuY29uc3RydWN0b3IpLmpz
VmFsdWUoKTsKLSAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBMTElOVF9PUF9DKGJ5dGVj
b2RlLmhhc0luc3RhbmNlVmFsdWUpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSA9IExMSU5UX09Q
X0MoNCkuanNWYWx1ZSgpOwogCiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpOwog
ICAgIEFTU0VSVChoYXNJbnN0YW5jZVZhbHVlICE9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSB8fCAhY29uc3RydWN0
b3IuZ2V0T2JqZWN0KCktPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSgpKTsKQEAgLTYyMywyNSArNjE1LDIzIEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mX2N1c3RvbSkKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF90cnlfZ2V0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcFRyeUdldEJ5SWQ+KCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5wcm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUF9DKGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKTsKKyAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwogCiAgICAgYmFzZVZhbHVlLmdldFByb3Bl
cnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90Lmdl
dFB1cmVSZXN1bHQoKTsKIAotICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChyZXN1bHQpOworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF90cnlfZ2V0X2J5X2lkLCByZXN1bHQpOwogfQogCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkKIHsKICAgICBM
TElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeUlkRGlyZWN0
PigpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
cHJvcGVydHkpOwotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQyhieXRlY29kZS5i
YXNlKS5qc1ZhbHVlKCk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJv
cGVydHkpOwogCiAgICAgYm9vbCBmb3VuZCA9IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgaWRlbnQsIHNsb3QpOwpAQCAtNjUwLDkgKzY0MCw4IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfZGlyZWN0KQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOwogCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgc2xvdC5pc0NhY2hl
YWJsZSgpKSB7Ci0gICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhl
Yyk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0g
bWV0YWRhdGEuc3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBwY1s0XS51LnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlE
KSB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGIg
PSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CkBAIC02NjgsOCArNjU3LDggQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAg
IGlmIChzbG90LmlzVmFsdWUoKSkgewogICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFy
aW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICAgICAgbWV0YWRhdGEuc3RydWN0dXJlID0g
MDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm9mZnNldCA9IDA7CisgICAgICAgICAgICBwY1s0XS51
LnBvaW50ZXIgPSBudWxscHRyOyAvLyBvbGQgc3RydWN0dXJlCisgICAgICAgICAgICBwY1s1XS51
LnBvaW50ZXIgPSBudWxscHRyOyAvLyBvZmZzZXQKIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVy
ZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpCiAgICAgICAgICAgICAgICAgJiYgIXN0
cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7CkBAIC02NzcsMTcgKzY2
NiwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkK
IAogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOwogCi0gICAgICAgICAgICAgICAgbWV0YWRhdGEuc3RydWN0dXJlID0gc3RydWN0dXJl
LT5pZCgpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm9mZnNldCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+
aWQoKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV9p
ZF9kaXJlY3QsIHJlc3VsdCk7CiB9CiAKIAotc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90
eXBlQ2FjaGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGNvbnN0IEluc3RydWN0aW9uKiBwYywg
T3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTQ2VsbCogYmFzZUNlbGwsIFByb3BlcnR5
U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCitzdGF0aWMgdm9pZCBzZXR1cEdl
dEJ5SWRQcm90b3R5cGVDYWNoZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSW5zdHJ1Y3Rpb24q
IHBjLCBKU0NlbGwqIGJhc2VDZWxsLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KQogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsK
QEAgLTcyMSw3ICs3MTAsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNo
ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgSW5zdHJ1Y3RpbwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBpZiAoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9w
ZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpCiAgICAgICAgICAgICBvZmZzZXQgPSBjb25kaXRpb24u
Y29uZGl0aW9uKCkub2Zmc2V0KCk7Ci0gICAgICAgIHdhdGNocG9pbnRzLmFkZChjb25kaXRpb24s
IG1ldGFkYXRhKS0+aW5zdGFsbCh2bSk7CisgICAgICAgIHdhdGNocG9pbnRzLmFkZChjb25kaXRp
b24sIHBjKS0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgQVNTRVJUKChvZmZzZXQgPT0gaW52
YWxpZE9mZnNldCkgPT0gc2xvdC5pc1Vuc2V0KCkpOwpAQCAtNzMxLDYyICs3MjAsNTEgQEAgc3Rh
dGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoRXhlY1N0YXRlKiBleGVjLCBWTSYg
dm0sIGNvbnN0IEluc3RydWN0aW8KICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKIAogICAgIGlmIChzbG90LmlzVW5zZXQoKSkgewotICAgICAgICBtZXRh
ZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OlVuc2V0OwotICAgICAgICBtZXRhZGF0YS5tb2RlTWV0
YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF91bnNldCk7CisgICAg
ICAgIHBjWzRdLnUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgpKTsKIAotICAgIG1ldGFkYXRhLm1v
ZGUgPSBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkOwotICAgIG1ldGFkYXRhLm1vZGVNZXRhZGF0YS5w
cm90b0xvYWRNb2RlLnN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+aWQoKTsKLSAgICBtZXRhZGF0YS5t
b2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXQgPSBvZmZzZXQ7Ci0gICAgbWV0
YWRhdGEubW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdCA9IHNsb3Quc2xvdEJh
c2UoKTsKKyAgICBwY1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUob3BfZ2V0X2J5X2lk
X3Byb3RvX2xvYWQpOworICAgIHBjWzRdLnUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7
CisgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0OwogICAgIC8vIFdlIGtub3cgdGhhdCB0aGlz
IHBvaW50ZXIgd2lsbCByZW1haW4gdmFsaWQgYmVjYXVzZSBpdCB3aWxsIGJlIGNsZWFyZWQgYnkg
ZWl0aGVyIGEgd2F0Y2hwb2ludCBmaXJlIG9yCiAgICAgLy8gZHVyaW5nIEdDIHdoZW4gd2UgY2xl
YXIgdGhlIExMSW50IGNhY2hlcy4KLSAgICBtZXRhZGF0YS5tb2RlTWV0YWRhdGEucHJvdG9Mb2Fk
TW9kZS5jYWNoZWRTbG90ID0gc2xvdC5zbG90QmFzZSgpOworICAgIHBjWzZdLnUucG9pbnRlciA9
IHNsb3Quc2xvdEJhc2UoKTsKIH0KIAogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Z2V0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShleGVjKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwot
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLnByb3BlcnR5KTsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoYnl0ZWNv
ZGUuYmFzZSkuanNWYWx1ZSgpOworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJs
b2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7
CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
OwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIExMSU5UX09QKGJ5dGVjb2RlLmRz
dCkgPSByZXN1bHQ7CisgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7CiAgICAgCiAgICAgaWYgKCFM
TElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCiAg
ICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworCiAgICAgICAgIHsKLSAgICAgICAgICAg
IFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgYXV0byBtb2RlID0gbWV0
YWRhdGEubW9kZTsKLSAgICAgICAgICAgIHN3aXRjaCAobW9kZSkgewotICAgICAgICAgICAgY2Fz
ZSBHZXRCeUlkTW9kZTo6RGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9
IG1ldGFkYXRhLm1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmU7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpVbnNldDoKLSAgICAg
ICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1vZGVNZXRhZGF0YS51bnNldE1v
ZGUuc3RydWN0dXJlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBH
ZXRCeUlkTW9kZTo6UHJvdG9Mb2FkOgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0g
bWV0YWRhdGEubW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvbGRT
dHJ1Y3R1cmVJRCA9IDA7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBv
bGRTdHJ1Y3R1cmVJRCA9IHBjWzRdLnUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAob2xk
U3RydWN0dXJlSUQpIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOwotICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKLQotICAgICAg
ICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQcm90byhhLCBiKSkg
ewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYS0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVBy
b3RvV2F0Y2hwb2ludCgpLmdldCgpID09IGItPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dh
dGNocG9pbnQoKS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNo
YXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFp
bCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAg
YXV0byBvcGNvZGUgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQocGNbMF0pOworICAgICAgICAg
ICAgICAgIGlmIChvcGNvZGUgPT0gb3BfZ2V0X2J5X2lkCisgICAgICAgICAgICAgICAgICAgIHx8
IG9wY29kZSA9PSBvcF9nZXRfYnlfaWRfdW5zZXQKKyAgICAgICAgICAgICAgICAgICAgfHwgb3Bj
b2RlID09IG9wX2dldF9ieV9pZF9wcm90b19sb2FkKSB7CisgICAgICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogYSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJ
RCk7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwo
KS0+c3RydWN0dXJlKHZtKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlOjpz
aG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkuZ2V0KCkg
PT0gYi0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNo
cG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBw
cm90byBvcHBvcnR1bml0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTc5NSwxMiArNzczLDEyIEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChzbG90
LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgICAg
ICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgICAg
ICBtZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7Ci0gICAgICAgICAgICBtZXRh
ZGF0YS5tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlID0gMDsKLSAgICAgICAgICAg
IG1ldGFkYXRhLm1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSAwOworICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZCk7
CisgICAgICAgICAgICBwY1s0XS51LnBvaW50ZXIgPSBudWxscHRyOyAvLyBvbGQgc3RydWN0dXJl
CisgICAgICAgICAgICBwY1s1XS51LnBvaW50ZXIgPSBudWxscHRyOyAvLyBvZmZzZXQKIAogICAg
ICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5p
bmcuCi0gICAgICAgICAgICBtZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7Cisg
ICAgICAgICAgICBwY1s3XS51Lm9wZXJhbmQgPSAwOwogICAgICAgICAKICAgICAgICAgICAgIGlm
IChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKQogICAgICAgICAgICAg
ICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewpAQCAt
ODA4LDUxICs3ODYsNjMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZCkKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKIAotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1v
ZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPmlkKCk7Ci0gICAg
ICAgICAgICAgICAgbWV0YWRhdGEubW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNl
dCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1
cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KFVOTElLRUxZKG1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIChzbG90LmlzVmFs
dWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFko
cGNbN10udS5vcGVyYW5kICYmIChzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7
CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpICE9IGJhc2VWYWx1ZSk7CiAKLSAg
ICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQotICAg
ICAgICAgICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGV4ZWMsIHZtLCBwYywgbWV0
YWRhdGEsIGJhc2VDZWxsLCBzbG90LCBpZGVudCk7CisgICAgICAgICAgICBpZiAoISgtLXBjWzdd
LnUub3BlcmFuZCkpCisgICAgICAgICAgICAgICAgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUo
ZXhlYywgdm0sIHBjLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCiAgICAgICAgICYmIGlzSlNBcnJheShi
YXNlVmFsdWUpCiAgICAgICAgICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkg
ewotICAgICAgICBtZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoOwotICAg
ICAgICBtZXRhZGF0YS5tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5v
YnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CisgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShvcF9nZXRfYXJyYXlfbGVuZ3Ro
KTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBjb2RlQmxvY2stPmdldE9y
QWRkQXJyYXlQcm9maWxlKGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpKTsKKyAgICAgICAg
YXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKSk7CisgICAgICAgIHBjWzRdLnUuYXJyYXlQcm9maWxlID0gYXJyYXlQcm9maWxlOwor
ICAgICAgICBBU1NFUlQoYXJyYXlQcm9maWxlRm9yPE9wR2V0QXJyYXlMZW5ndGhTaGFwZT4ocGMp
ID09IGFycmF5UHJvZmlsZSk7CiAKICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNh
Y2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgIG1ldGFkYXRhLmhpdENvdW50Rm9yTExJ
bnRDYWNoaW5nID0gMDsKKyAgICAgICAgcGNbN10udS5vcGVyYW5kID0gMDsKICAgICB9CiAKLSAg
ICBMTElOVF9QUk9GSUxFX1ZBTFVFKHJlc3VsdCk7CisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF9n
ZXRfYnlfaWQpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldCk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
KTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKIHsKICAg
ICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRCeUlkPigp
OwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5wcm9wZXJ0eSk7Cisg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKTsKICAgICAKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoYnl0
ZWNvZGUuYmFzZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOwotICAg
IGlmIChtZXRhZGF0YS5mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkKLSAgICAgICAgQ29tbW9uU2xv
d1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGV4ZWMsIGFzT2JqZWN0KGJhc2VWYWx1ZSks
IGlkZW50LCBMTElOVF9PUF9DKGJ5dGVjb2RlLnZhbHVlKS5qc1ZhbHVlKCksIHNsb3QpOworICAg
IGlmIChwY1s4XS51LnB1dEJ5SWRGbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkKKyAgICAgICAgQ29t
bW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGV4ZWMsIGFzT2JqZWN0KGJhc2VW
YWx1ZSksIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgZWxzZQot
ICAgICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKGJ5dGVj
b2RlLnZhbHVlKS5qc1ZhbHVlKCksIHNsb3QpOworICAgICAgICBiYXNlVmFsdWUucHV0SW5saW5l
KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NM
T1cKICAgICAgICAgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3QuaXNDYWNo
ZWFibGVQdXQoKSkgewogCisKICAgICAgICAgewotICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xk
U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5vbGRTdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IHBjWzRdLnUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBp
ZiAob2xkU3RydWN0dXJlSUQpIHsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEgPSB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOwogICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKQEAg
LTg2NywxMSArODU3LDEyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRo
ZSBvbGQgY2FjaGUuCi0gICAgICAgIG1ldGFkYXRhLm9sZFN0cnVjdHVyZSA9IDA7Ci0gICAgICAg
IG1ldGFkYXRhLm9mZnNldCA9IDA7Ci0gICAgICAgIG1ldGFkYXRhLm5ld1N0cnVjdHVyZSA9IDA7
Ci0gICAgICAgIG1ldGFkYXRhLnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7Ci0gICAgICAgIG1ldGFk
YXRhLmZsYWdzID0gc3RhdGljX2Nhc3Q8UHV0QnlJZEZsYWdzPihtZXRhZGF0YS5mbGFncyAmIFB1
dEJ5SWRQZXJzaXN0ZW50RmxhZ3NNYXNrKTsKKyAgICAgICAgcGNbNF0udS5wb2ludGVyID0gbnVs
bHB0cjsgLy8gb2xkIHN0cnVjdHVyZQorICAgICAgICBwY1s1XS51LnBvaW50ZXIgPSBudWxscHRy
OyAvLyBvZmZzZXQKKyAgICAgICAgcGNbNl0udS5wb2ludGVyID0gbnVsbHB0cjsgLy8gbmV3IHN0
cnVjdHVyZQorICAgICAgICBwY1s3XS51LnBvaW50ZXIgPSBudWxscHRyOyAvLyBzdHJ1Y3R1cmUg
Y2hhaW4KKyAgICAgICAgcGNbOF0udS5wdXRCeUlkRmxhZ3MgPQorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8UHV0QnlJZEZsYWdzPihwY1s4XS51LnB1dEJ5SWRGbGFncyAmIFB1dEJ5SWRQZXJzaXN0
ZW50RmxhZ3NNYXNrKTsKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNl
VmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwt
PnN0cnVjdHVyZSh2bSk7CkBAIC04OTIsMjUgKzg4MywyNSBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsLCBzYXdQb2x5UHJvdG8pOwog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVDaGFpbiAm
JiAhc2F3UG9seVByb3RvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bWV0YWRhdGEub2xkU3RydWN0dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlkKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubmV3U3RydWN0dXJlID0gc3Ry
dWN0dXJlLT5pZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobWV0YWRhdGEuZmxh
Z3MgJiBQdXRCeUlkSXNEaXJlY3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwY1s0XS51
LnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlkKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHBjWzhdLnUucHV0QnlJZEZsYWdzICYg
UHV0QnlJZElzRGlyZWN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYywgYXNPYmplY3Qo
YmFzZUNlbGwpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLnN0cnVjdHVyZUNoYWluLnNldCh2
bSwgY29kZUJsb2NrLCBjaGFpbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbN10u
dS5zdHJ1Y3R1cmVDaGFpbi5zZXQodm0sIGNvZGVCbG9jaywgY2hhaW4pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuZmxhZ3MgPSBz
dGF0aWNfY2FzdDxQdXRCeUlkRmxhZ3M+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLmZsYWdzIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzhdLnUucHV0QnlJZEZs
YWdzID0gc3RhdGljX2Nhc3Q8UHV0QnlJZEZsYWdzPigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwY1s4XS51LnB1dEJ5SWRGbGFncyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlLT5pbmZlcnJlZFR5cGVEZXNjcmlwdG9yRm9yKGlkZW50LmltcGwoKSkucHV0QnlJ
ZEZsYWdzKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmRpZENhY2hlUHJv
cGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgbWV0YWRhdGEub2xkU3RydWN0dXJlID0gc3RydWN0dXJlLT5pZCgpOwotICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Ci0gICAgICAgICAgICAg
ICAgbWV0YWRhdGEuZmxhZ3MgPSBzdGF0aWNfY2FzdDxQdXRCeUlkRmxhZ3M+KAotICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5mbGFncyB8CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1
Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgICAgIHBjWzhdLnUucHV0QnlJ
ZEZsYWdzID0gc3RhdGljX2Nhc3Q8UHV0QnlJZEZsYWdzPigKKyAgICAgICAgICAgICAgICAgICAg
cGNbOF0udS5wdXRCeUlkRmxhZ3MgfAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmlu
ZmVycmVkVHlwZURlc2NyaXB0b3JGb3IoaWRlbnQuaW1wbCgpKS5wdXRCeUlkRmxhZ3MoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTkyMiwyMSArOTEzLDE4IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZGVsX2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKLSAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoYnl0
ZWNvZGUuYmFzZSkuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBiYXNl
T2JqZWN0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJs
b2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLnByb3BlcnR5KSk7CisgICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVj
dCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOwogICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOwogICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oY291bGREZWxldGUpKTsKIH0KIAotc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBn
ZXRCeVZhbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgT3BHZXRCeVZhbCBieXRlY29kZSkKK3N0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0
KQogewotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQyhieXRlY29kZS5iYXNlKS5q
c1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKGJ5dGVjb2RlLnBy
b3BlcnR5KS5qc1ZhbHVlKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0Lmlz
U3RyaW5nKCkpKSB7CkBAIC05NTEsOCArOTM5LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBnZXRCeVZhbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgT3BHZXRCeVZhbCBieXRlY28K
ICAgICAKICAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKICAgICAgICAgdWludDMyX3Qg
aSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGV4ZWMpOwotICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9
ICZtZXRhZGF0YS5hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9m
aWxlID0gYXJyYXlQcm9maWxlRm9yPE9wR2V0QnlWYWxTaGFwZT4ocGMpOwogCiAgICAgICAgIGlm
IChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNl
VmFsdWUpLT5jYW5HZXRJbmRleChpKSkgewpAQCAtOTkzLDE4ICs5ODAsMTYgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgT3BH
ZXRCeVZhbCBieXRlY28KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
KQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdl
dEJ5VmFsPigpOwotICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChnZXRCeVZhbCh2bSwgZXhlYywg
Ynl0ZWNvZGUpKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0
QnlWYWwodm0sIGV4ZWMsIHBjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKICAgICAKLSAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wUHV0QnlWYWw+KCk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9D
KGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5U
X09QX0MoYnl0ZWNvZGUucHJvcGVydHkpLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
TExJTlRfT1BfQyhieXRlY29kZS52YWx1ZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjLT5jb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIo
KSkpIHsKQEAgLTEwMzIsMTAgKzEwMTcsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKICAgICAKLSAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCk7Ci0gICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBMTElOVF9PUF9DKGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKTsKLSAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoYnl0ZWNvZGUucHJvcGVydHkpLmpzVmFsdWUoKTsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQyhieXRlY29kZS52YWx1ZSkuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3Qo
YmFzZVZhbHVlKTsKICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWMtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKTsKQEAgLTEwNzIsMTIgKzEwNTYsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wRGVsQnlWYWw+KCk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElO
VF9PUF9DKGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFz
ZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogCi0g
ICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKGJ5dGVjb2RlLnByb3BlcnR5KS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
ICAgICAKICAgICBib29sIGNvdWxkRGVsZXRlOwogICAgIApAQCAtMTEwMSw2MiArMTA4NCw1OCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lkKQogewogICAgIExMSU5UX0JFR0lO
KCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dEdldHRlckJ5SWQ+KCk7Ci0gICAg
QVNTRVJUKExMSU5UX09QKGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKLSAg
ICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKGJ5dGVjb2RlLmJhc2UpLmpz
VmFsdWUoKSk7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsK
KyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7
CiAKLSAgICB1bnNpZ25lZCBvcHRpb25zID0gYnl0ZWNvZGUuYXR0cmlidXRlczsKKyAgICB1bnNp
Z25lZCBvcHRpb25zID0gcGNbM10udS5vcGVyYW5kOwogCi0gICAgSlNWYWx1ZSBnZXR0ZXIgPSBM
TElOVF9PUChieXRlY29kZS5hY2Nlc3NvcikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgZ2V0dGVy
ID0gTExJTlRfT1AoNCkuanNWYWx1ZSgpOwogICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSk7
CiAKLSAgICBiYXNlT2JqLT5wdXRHZXR0ZXIoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50
aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpLCBhc09iamVjdChnZXR0ZXIpLCBvcHRpb25zKTsKKyAg
ICBiYXNlT2JqLT5wdXRHZXR0ZXIoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKSwgYXNPYmplY3QoZ2V0dGVyKSwgb3B0aW9ucyk7CiAgICAgTExJTlRf
RU5EKCk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfc2V0dGVyX2J5
X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cFB1dFNldHRlckJ5SWQ+KCk7Ci0gICAgQVNTRVJUKExMSU5UX09QKGJ5dGVjb2RlLmJhc2UpLmpz
VmFsdWUoKS5pc09iamVjdCgpKTsKLSAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExM
SU5UX09QKGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKSk7CisgICAgQVNTRVJUKExMSU5UX09QKDEp
LmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0
KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CiAKLSAgICB1bnNpZ25lZCBvcHRpb25zID0gYnl0ZWNv
ZGUuYXR0cmlidXRlczsKKyAgICB1bnNpZ25lZCBvcHRpb25zID0gcGNbM10udS5vcGVyYW5kOwog
Ci0gICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9PUChieXRlY29kZS5hY2Nlc3NvcikuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgc2V0dGVyID0gTExJTlRfT1AoNCkuanNWYWx1ZSgpOwogICAgIEFT
U0VSVChzZXR0ZXIuaXNPYmplY3QoKSk7CiAKLSAgICBiYXNlT2JqLT5wdXRTZXR0ZXIoZXhlYywg
ZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpLCBhc09iamVj
dChzZXR0ZXIpLCBvcHRpb25zKTsKKyAgICBiYXNlT2JqLT5wdXRTZXR0ZXIoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgYXNPYmplY3Qoc2V0dGVy
KSwgb3B0aW9ucyk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKIHsKICAgICBMTElOVF9CRUdJTigp
OwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRHZXR0ZXJTZXR0ZXJCeUlkPigpOwot
ICAgIEFTU0VSVChMTElOVF9PUChieXRlY29kZS5iYXNlKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
Ci0gICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChMTElOVF9PUChieXRlY29kZS5i
YXNlKS5qc1ZhbHVlKCkpOworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmpl
Y3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1ZSBnZXR0ZXIgPSBMTElOVF9PUChieXRlY29kZS5nZXR0
ZXIpLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNldHRlciA9IExMSU5UX09QKGJ5dGVjb2RlLnNl
dHRlcikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgZ2V0dGVyID0gTExJTlRfT1AoNCkuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgc2V0dGVyID0gTExJTlRfT1AoNSkuanNWYWx1ZSgpOwogICAgIEFT
U0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNPYmplY3QoKSk7CiAgICAgR2V0dGVy
U2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGdldHRlciwgc2V0dGVyKTsKIAotICAgIENvbW1vblNsb3dQYXRoczo6
cHV0RGlyZWN0QWNjZXNzb3JXaXRoUmVpZnkodm0sIGV4ZWMsIGJhc2VPYmplY3QsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pZGVudGlmaWVyKGJ5dGVjb2RlLnByb3BlcnR5KSwgYWNjZXNzb3IsIGJ5dGVj
b2RlLmF0dHJpYnV0ZXMpOworICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0QWNjZXNzb3JX
aXRoUmVpZnkodm0sIGV4ZWMsIGJhc2VPYmplY3QsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCksIGFjY2Vzc29yLCBwY1szXS51Lm9wZXJhbmQpOwogICAgIExM
SU5UX0VORCgpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2dldHRl
cl9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wUHV0R2V0dGVyQnlWYWw+KCk7Ci0gICAgQVNTRVJUKExMSU5UX09QKGJ5dGVjb2RlLmJh
c2UpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKLSAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2Jq
ZWN0KExMSU5UX09QKGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKSk7Ci0gICAgSlNWYWx1ZSBzdWJz
Y3JpcHQgPSBMTElOVF9PUF9DKGJ5dGVjb2RlLnByb3BlcnR5KS5qc1ZhbHVlKCk7CisgICAgQVNT
RVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFz
ZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBzdWJz
Y3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKIAotICAgIHVuc2lnbmVkIG9wdGlvbnMg
PSBieXRlY29kZS5hdHRyaWJ1dGVzOworICAgIHVuc2lnbmVkIG9wdGlvbnMgPSBwY1szXS51Lm9w
ZXJhbmQ7CiAKLSAgICBKU1ZhbHVlIGdldHRlciA9IExMSU5UX09QKGJ5dGVjb2RlLmFjY2Vzc29y
KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBnZXR0ZXIgPSBMTElOVF9PUCg0KS5qc1ZhbHVlKCk7
CiAgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpKTsKIAogICAgIGF1dG8gcHJvcGVydHkgPSBz
dWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKQEAgLTExNjksMTQgKzExNDgsMTMgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfdmFsKQogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9zZXR0ZXJfYnlfdmFsKQogewogICAgIExMSU5UX0JF
R0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFNldHRlckJ5VmFsPigpOwot
ICAgIEFTU0VSVChMTElOVF9PUChieXRlY29kZS5iYXNlKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
Ci0gICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUChieXRlY29kZS5iYXNl
KS5qc1ZhbHVlKCkpOwotICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQyhieXRlY29k
ZS5wcm9wZXJ0eSkuanNWYWx1ZSgpOworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCku
aXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCk7CiAKLSAgICB1bnNpZ25lZCBvcHRpb25zID0gYnl0ZWNvZGUuYXR0cmlidXRlczsKKyAg
ICB1bnNpZ25lZCBvcHRpb25zID0gcGNbM10udS5vcGVyYW5kOwogCi0gICAgSlNWYWx1ZSBzZXR0
ZXIgPSBMTElOVF9PUChieXRlY29kZS5hY2Nlc3NvcikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
c2V0dGVyID0gTExJTlRfT1AoNCkuanNWYWx1ZSgpOwogICAgIEFTU0VSVChzZXR0ZXIuaXNPYmpl
Y3QoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhl
Yyk7CkBAIC0xMTg5LDE0NCArMTE2NywxMjcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9zZXR0ZXJfYnlfdmFsKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2p0
cnVlKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cEp0cnVlPigpOwotICAgIExMSU5UX0JSQU5DSChMTElOVF9PUF9DKGJ5dGVjb2RlLmNvbmRpdGlv
bikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVl
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfamZhbHNlKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0g
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEpmYWxzZT4oKTsKLSAgICBMTElOVF9CUkFOQ0go
IUxMSU5UX09QX0MoYnl0ZWNvZGUuY29uZGl0aW9uKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMp
KTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5qc1ZhbHVlKCku
dG9Cb29sZWFuKGV4ZWMpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2ps
ZXNzKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cEpsZXNzPigpOwotICAgIExMSU5UX0JSQU5DSChqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1Bf
QyhieXRlY29kZS5saHMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyhieXRlY29kZS5yaHMpLmpzVmFs
dWUoKSkpOworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwogfQogCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam5sZXNzKQogewogICAgIExMSU5UX0JFR0lO
KCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEpubGVzcz4oKTsKLSAgICBMTElOVF9C
UkFOQ0goIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKGJ5dGVjb2RlLmxocykuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKGJ5dGVjb2RlLnJocykuanNWYWx1ZSgpKSk7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2pncmVhdGVyKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEpncmVhdGVyPigpOwotICAgIExMSU5UX0JSQU5DSChqc0xlc3M8ZmFs
c2U+KGV4ZWMsIExMSU5UX09QX0MoYnl0ZWNvZGUucmhzKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
Ynl0ZWNvZGUubGhzKS5qc1ZhbHVlKCkpKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIs
IGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbmdy
ZWF0ZXIpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
PE9wSm5ncmVhdGVyPigpOwotICAgIExMSU5UX0JSQU5DSCghanNMZXNzPGZhbHNlPihleGVjLCBM
TElOVF9PUF9DKGJ5dGVjb2RlLnJocykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKGJ5dGVjb2RlLmxo
cykuanNWYWx1ZSgpKSk7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxm
YWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbGVzc2VxKQogewog
ICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEpsZXNzZXE+
KCk7Ci0gICAgTExJTlRfQlJBTkNIKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoYnl0
ZWNvZGUubGhzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoYnl0ZWNvZGUucmhzKS5qc1ZhbHVlKCkp
KTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7CiB9CiAKIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbmxlc3NlcSkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BKbmxlc3NlcT4oKTsKLSAgICBMTElO
VF9CUkFOQ0goIWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoYnl0ZWNvZGUubGhzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoYnl0ZWNvZGUucmhzKS5qc1ZhbHVlKCkpKTsKKyAgICBMTElO
VF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKIH0KIAogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2pncmVhdGVyZXEpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSmdyZWF0ZXJlcT4oKTsKLSAgICBMTElOVF9CUkFO
Q0goanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoYnl0ZWNvZGUucmhzKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoYnl0ZWNvZGUubGhzKS5qc1ZhbHVlKCkpKTsKKyAgICBMTElOVF9CUkFO
Q0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfam5ncmVhdGVyZXEpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSm5ncmVhdGVyZXE+KCk7Ci0gICAgTExJTlRfQlJBTkNI
KCFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQyhieXRlY29kZS5saHMpLmpzVmFsdWUoKSkpOworICAgIExMSU5UX0JSQU5D
SChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2plcSkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BKZXE+KCk7Ci0gICAgTExJTlRfQlJBTkNIKEpTVmFsdWU6OmVxdWFs
KGV4ZWMsIExMSU5UX09QX0MoYnl0ZWNvZGUubGhzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoYnl0
ZWNvZGUucmhzKS5qc1ZhbHVlKCkpKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamVxLCBKU1ZhbHVl
OjplcXVhbChleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2puZXEpCiB7CiAg
ICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSm5lcT4oKTsK
LSAgICBMTElOVF9CUkFOQ0goIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoYnl0ZWNv
ZGUubGhzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoYnl0ZWNvZGUucmhzKS5qc1ZhbHVlKCkpKTsK
KyAgICBMTElOVF9CUkFOQ0gob3Bfam5lcSwgIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfanN0cmljdGVxKQogewogICAgIExMSU5UX0JFR0lOKCk7
Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEpzdHJpY3RlcT4oKTsKLSAgICBMTElOVF9C
UkFOQ0goSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQyhieXRlY29kZS5saHMp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUoKSkpOworICAgIExM
SU5UX0JSQU5DSChvcF9qc3RyaWN0ZXEsIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwogfQogCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam5zdHJpY3RlcSkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BKbnN0cmljdGVxPigpOwotICAgIExM
SU5UX0JSQU5DSCghSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQyhieXRlY29k
ZS5saHMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUoKSkpOwor
ICAgIExMSU5UX0JSQU5DSChvcF9qbnN0cmljdGVxLCAhSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhl
YywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7CiB9
CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfaW1tKQogewogICAgIExM
SU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFN3aXRjaEltbT4oKTsK
LSAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoYnl0ZWNvZGUuc2NydXRpbmVlKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KTsKICAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOwogICAgIGRvdWJsZSB2YWx1ZSA9
IHNjcnV0aW5lZS5hc0RvdWJsZSgpOwogICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih2YWx1ZSk7Ci0gICAgaW50IGRlZmF1bHRPZmZzZXQgPSBKVU1QX09GRlNFVChi
eXRlY29kZS5kZWZhdWx0T2Zmc2V0KTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUu
b3BlcmFuZDsKICAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKICAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICAgICAgSlVNUF9UTyhjb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZShieXRlY29kZS50YWJsZUluZGV4KS5vZmZzZXRGb3JWYWx1ZShp
bnRWYWx1ZSwgZGVmYXVsdE9mZnNldCkpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZh
dWx0T2Zmc2V0KTsKICAgICB9IGVsc2UKLSAgICAgICAgSlVNUF9UTyhkZWZhdWx0T2Zmc2V0KTsK
KyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKICAgICBMTElOVF9FTkQoKTsKIH0KIAogTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9jaGFyKQogewogICAgIExMSU5UX0JF
R0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFN3aXRjaENoYXI+KCk7Ci0gICAg
SlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKGJ5dGVjb2RlLnNjcnV0aW5lZSkuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CiAg
ICAgQVNTRVJUKHNjcnV0aW5lZS5pc1N0cmluZygpKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0g
YXNTdHJpbmcoc2NydXRpbmVlKTsKICAgICBBU1NFUlQoc3RyaW5nLT5sZW5ndGgoKSA9PSAxKTsK
LSAgICBpbnQgZGVmYXVsdE9mZnNldCA9IEpVTVBfT0ZGU0VUKGJ5dGVjb2RlLmRlZmF1bHRPZmZz
ZXQpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOwogICAgIFN0cmlu
Z0ltcGwqIGltcGwgPSBzdHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKTsKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIEpVTVBfVE8oY29kZUJsb2NrLT5z
d2l0Y2hKdW1wVGFibGUoYnl0ZWNvZGUudGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoKCppbXBs
KVswXSwgZGVmYXVsdE9mZnNldCkpOworICAgIHBjICs9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoKCppbXBsKVswXSwgZGVmYXVsdE9m
ZnNldCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9zd2l0Y2hfc3RyaW5nKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcFN3aXRjaFN0cmluZz4oKTsKLSAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9
IExMSU5UX09QX0MoYnl0ZWNvZGUuc2NydXRpbmVlKS5qc1ZhbHVlKCk7Ci0gICAgaW50IGRlZmF1
bHRPZmZzZXQgPSBKVU1QX09GRlNFVChieXRlY29kZS5kZWZhdWx0T2Zmc2V0KTsKKyAgICBKU1Zh
bHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0
T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOwogICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkp
Ci0gICAgICAgIEpVTVBfVE8oZGVmYXVsdE9mZnNldCk7CisgICAgICAgIHBjICs9IGRlZmF1bHRP
ZmZzZXQ7CiAgICAgZWxzZSB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7Ci0gICAgICAgIEpVTVBfVE8oY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1w
VGFibGUoYnl0ZWNvZGUudGFibGVJbmRleCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRp
bmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KSk7CisgICAgICAgIHBjICs9
IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0
Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0
T2Zmc2V0KTsKICAgICB9CiAgICAgTExJTlRfRU5EKCk7CiB9CkBAIC0xMzM0LDUxICsxMjk1LDQ2
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKQogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogewogICAgIExMSU5UX0JFR0lOKCk7
Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcE5ld0Z1bmM+KCk7CiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBKU1Njb3BlKiBzY29wZSA9IGV4
ZWMtPnVuY2hlY2tlZFIoYnl0ZWNvZGUuc2NvcGUpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEpT
U2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVy
OjpzY29wZSgpOwogICAgIHNsb3dQYXRoTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKLSAg
ICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9u
RGVjbChieXRlY29kZS5mdW5jdGlvbkRlY2wpLCBzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3Bl
cmFuZCksIHNjb3BlKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2Z1bmMpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wTmV3R2VuZXJhdG9yRnVuYz4oKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVj
a2VkUihieXRlY29kZS5zY29wZSkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
CiAgICAgc2xvd1BhdGhMb2dGKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOwotICAgIExMSU5UX1JF
VFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKGJ5dGVjb2RlLmZ1bmN0aW9uRGVjbCksIHNjb3BlKSk7CisgICAgTExJTlRfUkVUVVJOKEpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNb
M10udS5vcGVyYW5kKSwgc2NvcGUpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX25ld19hc3luY19mdW5jKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcE5ld0FzeW5jRnVuYz4oKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVj
a2VkUihieXRlY29kZS5zY29wZSkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
CiAgICAgc2xvd1BhdGhMb2dGKCJDcmVhdGluZyBhc3luYyBmdW5jdGlvbiFcbiIpOwotICAgIExM
SU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlv
bkRlY2woYnl0ZWNvZGUuZnVuY3Rpb25EZWNsKSwgc2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4o
SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNd
LnUub3BlcmFuZCksIHNjb3BlKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jPigpOwogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKGJ5dGVjb2RlLnNjb3BlKS5SZWdpc3Rlcjo6c2NvcGUoKTsK
KyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5S
ZWdpc3Rlcjo6c2NvcGUoKTsKICAgICBzbG93UGF0aExvZ0YoIkNyZWF0aW5nIGFzeW5jIGdlbmVy
YXRvciBmdW5jdGlvbiFcbiIpOwotICAgIExMSU5UX1JFVFVSTihKU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2woYnl0ZWNvZGUuZnVuY3Rp
b25EZWNsKSwgc2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4oSlNBc3luY0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCks
IHNjb3BlKSk7CiB9CiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1
bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgCi0gICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcE5ld0Z1bmNFeHA+KCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKLSAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIoYnl0
ZWNvZGUuc2NvcGUpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGJ5dGVjb2RlLmZ1bmN0aW9uRGVj
bCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFu
ZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKICAgICAKICAgICBM
TElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwog
fQpAQCAtMTM4NywxMCArMTM0Myw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CiAKLSAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wTmV3R2VuZXJhdG9yRnVuY0V4cD4oKTsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIEpTU2NvcGUqIHNjb3BlID0g
ZXhlYy0+dW5jaGVja2VkUihieXRlY29kZS5zY29wZSkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIo
Ynl0ZWNvZGUuZnVuY3Rpb25EZWNsKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hl
Y2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9w
ZXJhbmQpOwogCiAgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKIH0KQEAgLTEzOTksMTAgKzEzNTQsOSBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKQogewogICAgIExMSU5U
X0JFR0lOKCk7CiAgICAgCi0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcE5ld0FzeW5jRnVu
Y0V4cD4oKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwot
ICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihieXRlY29kZS5zY29wZSkuUmVn
aXN0ZXI6OnNjb3BlKCk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29k
ZUJsb2NrLT5mdW5jdGlvbkV4cHIoYnl0ZWNvZGUuZnVuY3Rpb25EZWNsKTsKKyAgICBKU1Njb3Bl
KiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2Nv
cGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1
bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwogICAgIAogICAgIExMSU5UX1JFVFVSTihKU0Fz
eW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKIH0KQEAgLTE0MTEs
MTAgKzEzNjUsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2dl
bmVyYXRvcl9mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwogICAgICAgICAKLSAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jRXhwPigpOwogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAgSlNTY29wZSog
c2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKGJ5dGVjb2RlLnNjb3BlKS5SZWdpc3Rlcjo6c2NvcGUo
KTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0
aW9uRXhwcihieXRlY29kZS5mdW5jdGlvbkRlY2wpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhl
Yy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBj
WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIAogICAgIExMSU5UX1JFVFVSTihKU0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKIH0KQEAgLTE0MjIs
MTUgKzEzNzUsMTYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19n
ZW5lcmF0b3JfZnVuY19leHApCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2V0X2Z1
bmN0aW9uX25hbWUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wU2V0RnVuY3Rpb25OYW1lPigpOwotICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KExMSU5UX09QKGJ5dGVjb2RlLmZ1bmN0aW9uKS5SZWdpc3Rlcjo6dW5i
b3hlZENlbGwoKSk7Ci0gICAgSlNWYWx1ZSBuYW1lID0gTExJTlRfT1BfQyhieXRlY29kZS5uYW1l
KS5SZWdpc3Rlcjo6anNWYWx1ZSgpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KExMSU5UX09QKDEpLlJlZ2lzdGVyOjp1bmJveGVkQ2VsbCgpKTsKKyAgICBKU1Zh
bHVlIG5hbWUgPSBMTElOVF9PUF9DKDIpLlJlZ2lzdGVyOjpqc1ZhbHVlKCk7CiAgICAgZnVuYy0+
c2V0RnVuY3Rpb25OYW1lKGV4ZWMsIG5hbWUpOwogICAgIExMSU5UX0VORCgpOwogfQogCi1zdGF0
aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3N0YXRpYyBT
bG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJ
bnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHBjKTsKKwogICAgIHNsb3dQYXRoTG9nKCJQZXJmb3Jt
aW5nIGhvc3QgY2FsbC5cbiIpOwogICAgIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCk7CkBAIC0xNDgzLDcgKzE0MzcsNyBAQCBzdGF0aWMgU2xvd1BhdGhS
ZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBj
YWxsZWUsCiAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JF
cnJvcihleGVjLCBjYWxsZWUpKTsKIH0KIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRV
cENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQs
IEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IG51bGxwdHIpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
LCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSAwKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE1MTMsNyArMTQ2Nyw3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luCiAgICAgICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2VydElzTm90
UG9pc29uZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICAgICAgICAgIExMSU5U
X0NBTExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIGNhbGxlZUFzVmFsdWUsIGtp
bmQpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGhhbmRsZUhvc3RD
YWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKSk7CiAgICAgfQogICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNl
bGwpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpOwpAQCAt
MTU2NSw4ICsxNTE5LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW4KICAgICBMTElOVF9DQUxM
X1JFVFVSTihleGVjLCBleGVjQ2FsbGVlLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIEpT
RW50cnlQdHJUYWcpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBPcCYmIGJ5dGVjb2RlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdl
bmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgLy8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAtIFNldCB1
cCBhIGNhbGwgZnJhbWUuCkBAIC0xNTc0LDM0ICsxNTI3LDI4IEBAIGlubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBPcCYmIGJ5dGVjb2RlLCBDb2Rl
U3BlY2lhCiAgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNo
ZS4KICAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNh
bGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KICAgICAKLSAgICBKU1ZhbHVlIGNhbGxlZUFzVmFs
dWUgPSBMTElOVF9PUF9DKGJ5dGVjb2RlLmNhbGxlZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAgIAotICAgIEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgLSBieXRlY29kZS5hcmd2OworICAgIEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSA9IGV4ZWMgLSBwY1s0XS51Lm9wZXJhbmQ7CiAgICAgCi0gICAgZXhlY0NhbGxl
ZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNvZGUuYXJnYyk7CisgICAgZXhl
Y0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbM10udS5vcGVyYW5kKTsK
ICAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgPSBjYWxs
ZWVBc1ZhbHVlOwogICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwogICAgIAot
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7Ci0gICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmbWV0YWRhdGEuY2Fs
bExpbmtJbmZvKTsKKyAgICBBU1NFUlQocGNbNV0udS5jYWxsTGlua0luZm8pOworICAgIHJldHVy
biBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzVdLnUu
Y2FsbExpbmtJbmZvKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGwp
CiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLT5hczxPcENhbGw+KCksIENvZGVGb3JD
YWxsKSk7Ci19Ci0KLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90YWlsX2NhbGwpCi17
Ci0gICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLT5hczxPcFRhaWxDYWxsPigpLCBDb2RlRm9y
Q2FsbCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChl
eGVjLCBwYywgQ29kZUZvckNhbGwpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NvbnN0cnVjdCkKIHsKICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0NhbGwoZXhlYywgcGMtPmFzPE9wQ29u
c3RydWN0PigpLCBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0KSk7CiB9CiAK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzKQpA
QCAtMTYxMCwzNSArMTU1Nyw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zaXpl
X2ZyYW1lX2Zvcl92YXJhcmdzKQogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4K
ICAgICAKLSAgICB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90czsKLSAgICBKU1ZhbHVlIGFyZ3Vt
ZW50czsKLSAgICBpbnQgZmlyc3RWYXJBcmc7Ci0gICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkg
ewotICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDYWxsVmFyYXJncz4oKTsKLSAgICAgICAgbnVtVXNlZFN0YWNrU2xvdHMgPSAtYnl0
ZWNvZGUuZmlyc3RGcmVlLm9mZnNldCgpOwotICAgICAgICBhcmd1bWVudHMgPSBMTElOVF9PUF9D
KGJ5dGVjb2RlLmFyZ3VtZW50cykuanNWYWx1ZSgpOwotICAgICAgICBmaXJzdFZhckFyZyA9IGJ5
dGVjb2RlLmZpcnN0VmFyQXJnOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBvcF90
YWlsX2NhbGxfdmFyYXJnczogewotICAgICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVGFp
bENhbGxWYXJhcmdzPigpOwotICAgICAgICBudW1Vc2VkU3RhY2tTbG90cyA9IC1ieXRlY29kZS5m
aXJzdEZyZWUub2Zmc2V0KCk7Ci0gICAgICAgIGFyZ3VtZW50cyA9IExMSU5UX09QX0MoYnl0ZWNv
ZGUuYXJndW1lbnRzKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGZpcnN0VmFyQXJnID0gYnl0ZWNvZGUu
Zmlyc3RWYXJBcmc7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIG9wX2NvbnN0cnVj
dF92YXJhcmdzOiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDb25zdHJ1Y3RW
YXJhcmdzPigpOwotICAgICAgICBudW1Vc2VkU3RhY2tTbG90cyA9IC1ieXRlY29kZS5maXJzdEZy
ZWUub2Zmc2V0KCk7Ci0gICAgICAgIGFyZ3VtZW50cyA9IExMSU5UX09QX0MoYnl0ZWNvZGUuYXJn
dW1lbnRzKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGZpcnN0VmFyQXJnID0gYnl0ZWNvZGUuZmlyc3RW
YXJBcmc7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBz
aXplRnJhbWVGb3JWYXJhcmdzKGV4ZWMsIHZtLCBhcmd1bWVudHMsIG51bVVzZWRTdGFja1Nsb3Rz
LCBmaXJzdFZhckFyZyk7CisgICAgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMgPSAtcGNbNV0u
dS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVGcmFtZUZvclZhcmFyZ3MoZXhl
Yywgdm0sCisgICAgICAgIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpLCBudW1Vc2VkU3RhY2tTbG90
cywgcGNbNl0udS5vcGVyYW5kKTsKICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVj
LCBleGVjKTsKICAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBjYWxsZWVGcmFtZUZv
clZhcmFyZ3MoZXhlYywgbnVtVXNlZFN0YWNrU2xvdHMsIGxlbmd0aCArIDEpOwpAQCAtMTY1NCw4
ICsxNTc1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9y
X2ZvcndhcmRfYXJndW1lbnRzKQogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBjdXJyZW50IGZy
YW1lLgogCi0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRhaWxDYWxsRm9yd2FyZEFyZ3Vt
ZW50cz4oKTsKLSAgICB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cyA9IC1ieXRlY29kZS5maXJz
dEZyZWUub2Zmc2V0KCk7CisgICAgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMgPSAtcGNbNV0u
dS5vcGVyYW5kOwogCiAgICAgdW5zaWduZWQgYXJndW1lbnRzID0gc2l6ZUZyYW1lRm9yRm9yd2Fy
ZEFyZ3VtZW50cyhleGVjLCB2bSwgbnVtVXNlZFN0YWNrU2xvdHMpOwogICAgIExMSU5UX0NBTExf
Q0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIGV4ZWMpOwpAQCAtMTY3MywxMDMgKzE1OTMsODMgQEAgZW51
bSBjbGFzcyBTZXRBcmd1bWVudHNXaXRoIHsKICAgICBDdXJyZW50QXJndW1lbnRzCiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmFyYXJnc1Nl
dHVwKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQsIFNldEFyZ3VtZW50c1dpdGggc2V0KQoraW5saW5lIFNsb3dQYXRoUmV0
dXJuVHlwZSB2YXJhcmdzU2V0dXAoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgU2V0QXJndW1lbnRzV2l0aCBzZXQpCiB7CiAgICAg
TExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgLy8gVGhpcyBuZWVkcyB0bzoKICAgICAvLyAt
IEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KICAg
ICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5k
IHRoZSBuZXcgY2FsbCBmcmFtZS4KIAotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3A+KCk7
Ci0gICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQyhieXRlY29kZS5jYWxsZWUp
LmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKTsKIAogICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IHZtLm5ld0NhbGxGcmFtZVJl
dHVyblZhbHVlOwogCiAgICAgaWYgKHNldCA9PSBTZXRBcmd1bWVudHNXaXRoOjpPYmplY3QpIHsK
LSAgICAgICAgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlzKGV4ZWMsIGV4ZWNDYWxsZWUsIExM
SU5UX09QX0MoYnl0ZWNvZGUudGhpc1ZhbHVlKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoYnl0ZWNv
ZGUuYXJndW1lbnRzKS5qc1ZhbHVlKCksIGJ5dGVjb2RlLmZpcnN0VmFyQXJnLCB2bS52YXJhcmdz
TGVuZ3RoKTsKKyAgICAgICAgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlzKGV4ZWMsIGV4ZWND
YWxsZWUsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSwg
cGNbNl0udS5vcGVyYW5kLCB2bS52YXJhcmdzTGVuZ3RoKTsKICAgICAgICAgTExJTlRfQ0FMTF9D
SEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CiAgICAgfSBlbHNlCi0gICAgICAgIHNldHVwRm9y
d2FyZEFyZ3VtZW50c0ZyYW1lQW5kU2V0VGhpcyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9D
KGJ5dGVjb2RlLnRoaXNWYWx1ZSkuanNWYWx1ZSgpLCB2bS52YXJhcmdzTGVuZ3RoKTsKKyAgICAg
ICAgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKGV4ZWMsIGV4ZWNDYWxsZWUs
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCB2bS52YXJhcmdzTGVuZ3RoKTsKIAogICAgIGV4ZWND
YWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwogICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlYy0+c2V0Q3Vy
cmVudFZQQyhwYyk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgc2V0VXBD
YWxsKGV4ZWNDYWxsZWUsIGtpbmQsIGNhbGxlZUFzVmFsdWUpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVB
c1ZhbHVlKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX3ZhcmFy
Z3MpCiB7Ci0gICAgcmV0dXJuIHZhcmFyZ3NTZXR1cDxPcENhbGxWYXJhcmdzPihleGVjLCBwYywg
Q29kZUZvckNhbGwsIFNldEFyZ3VtZW50c1dpdGg6Ok9iamVjdCk7Ci19Ci0KLUxMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90YWlsX2NhbGxfdmFyYXJncykKLXsKLSAgICByZXR1cm4gdmFy
YXJnc1NldHVwPE9wVGFpbENhbGxWYXJhcmdzPihleGVjLCBwYywgQ29kZUZvckNhbGwsIFNldEFy
Z3VtZW50c1dpdGg6Ok9iamVjdCk7CisgICAgcmV0dXJuIHZhcmFyZ3NTZXR1cChleGVjLCBwYywg
Q29kZUZvckNhbGwsIFNldEFyZ3VtZW50c1dpdGg6Ok9iamVjdCk7CiB9CiAKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiB7Ci0gICAg
cmV0dXJuIHZhcmFyZ3NTZXR1cDxPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cz4oZXhlYywgcGMs
IENvZGVGb3JDYWxsLCBTZXRBcmd1bWVudHNXaXRoOjpDdXJyZW50QXJndW1lbnRzKTsKKyAgICBy
ZXR1cm4gdmFyYXJnc1NldHVwKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCwgU2V0QXJndW1lbnRzV2l0
aDo6Q3VycmVudEFyZ3VtZW50cyk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jb25zdHJ1Y3RfdmFyYXJncykKIHsKLSAgICByZXR1cm4gdmFyYXJnc1NldHVwPE9wQ29uc3Ry
dWN0VmFyYXJncz4oZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QsIFNldEFyZ3VtZW50c1dpdGg6
Ok9iamVjdCk7CisgICAgcmV0dXJuIHZhcmFyZ3NTZXR1cChleGVjLCBwYywgQ29kZUZvckNvbnN0
cnVjdCwgU2V0QXJndW1lbnRzV2l0aDo6T2JqZWN0KTsKIH0KIAotaW5saW5lIFNsb3dQYXRoUmV0
dXJuVHlwZSBjb21tb25DYWxsRXZhbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50KQor
ICAgIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbCkKIHsKICAgICBM
TElOVF9CRUdJTl9OT19TRVRfUEMoKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ2Fs
bEV2YWw+KCk7Ci0gICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoYnl0ZWNvZGUu
Y2FsbGVlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpOwogICAgIAotICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgLSBi
eXRlY29kZS5hcmd2OworICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgLSBwY1s0XS51
Lm9wZXJhbmQ7CiAgICAgCi0gICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoYnl0ZWNvZGUuYXJnYyk7CisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMocGNbM10udS5vcGVyYW5kKTsKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJG
cmFtZShleGVjKTsKICAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwotICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKHJldHVy
blBvaW50LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBD
KExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2so
MCk7CiAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyk7CiAgICAgCiAgICAgaWYgKCFpc0hvc3RG
dW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCi0gICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBzZXRVcENhbGwoZXhlY0NhbGxlZSwgQ29kZUZvckNhbGws
IGNhbGxlZUFzVmFsdWUpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpKTsK
ICAgICAKICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKICAg
ICBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRyVGFnKTsKIH0KLSAgICAKLUxMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwpCi17Ci0gICAgcmV0dXJuIGNvbW1v
bkNhbGxFdmFsKGV4ZWMsIHBjLCBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfY2FsbF9ldmFsX3dpZGUpCi17Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGV4ZWMs
IHBjLCBMTEludDo6Z2V0V2lkZUNvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpKTsKLX0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmNh
dCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BT
dHJjYXQ+KCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXkoZXhl
YywgJkxMSU5UX09QKGJ5dGVjb2RlLnNyYyksIGJ5dGVjb2RlLmNvdW50KSk7CisgICAgTExJTlRf
UkVUVVJOKGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXkoZXhlYywgJkxMSU5UX09QKDIpLCBwY1sz
XS51Lm9wZXJhbmQpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3By
aW1pdGl2ZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BUb1ByaW1pdGl2ZT4oKTsKLSAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQyhieXRlY29k
ZS5zcmMpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7CisgICAgTExJTlRfUkVUVVJOKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKIH0KIAogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93KQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAg
YXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRocm93PigpOwotICAgIExMSU5UX1RIUk9XKExMSU5U
X09QX0MoYnl0ZWNvZGUudmFsdWUpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfVEhST1coTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
aGFuZGxlX3RyYXBzKQpAQCAtMTc4NCw4ICsxNjg0LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2hhbmRsZV90cmFwcykKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWJ1ZykKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BEZWJ1Zz4oKTsKLSAgICB2bS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgYnl0ZWNvZGUuZGVi
dWdIb29rVHlwZSk7CisgICAgaW50IGRlYnVnSG9va1R5cGUgPSBwY1sxXS51Lm9wZXJhbmQ7Cisg
ICAgdm0uaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va1R5cGU+
KGRlYnVnSG9va1R5cGUpKTsKICAgICAKICAgICBMTElOVF9FTkQoKTsKIH0KQEAgLTE4MDEsMTcg
KzE3MDEsMTYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhbmRsZV9leGNlcHRp
b24pCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fc2NvcGUpCiB7CiAg
ICAgTExJTlRfQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0RnJvbVNj
b3BlPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7Ci0g
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihieXRlY29kZS52YXIpOwotICAgIEpTT2JqZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+
KExMSU5UX09QKGJ5dGVjb2RlLnNjb3BlKS5qc1ZhbHVlKCkpOworICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5k
KTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3QqPihMTElOVF9PUCgyKS5q
c1ZhbHVlKCkpOworICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhwY1s0XS51Lm9wZXJhbmQpOwog
CiAgICAgLy8gTW9kdWxlVmFyIGlzIGFsd2F5cyBjb252ZXJ0ZWQgdG8gQ2xvc3VyZVZhciBmb3Ig
Z2V0X2Zyb21fc2NvcGUuCi0gICAgQVNTRVJUKG1ldGFkYXRhLmdldFB1dEluZm8ucmVzb2x2ZVR5
cGUoKSAhPSBNb2R1bGVWYXIpOworICAgIEFTU0VSVChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkg
IT0gTW9kdWxlVmFyKTsKIAogICAgIExMSU5UX1JFVFVSTihzY29wZS0+Z2V0UHJvcGVydHlTbG90
KGV4ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNW
YWx1ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5n
ZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQorICAgICAgICAgICAg
aWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVu
ZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgICAgICB9CkBAIC0xODI0LDcgKzE3MjMsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fc2NvcGUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9yKGV4ZWMp
KTsKICAgICAgICAgfQogCi0gICAgICAgIENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9t
U2NvcGVHbG9iYWwoZXhlYywgdm0sIGJ5dGVjb2RlLCBzY29wZSwgc2xvdCwgaWRlbnQpOworICAg
ICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKGV4ZWMsIHZt
LCBwYywgc2NvcGUsIHNsb3QsIGlkZW50KTsKIAogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKQEAgLTE4MzYsMjEgKzE3
MzUsMjAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zY29wZSkKIHsK
ICAgICBMTElOVF9CRUdJTigpOwogCi0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dFRv
U2NvcGU+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLnZhcik7
Ci0gICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1AoYnl0ZWNv
ZGUuc2NvcGUpLmpzVmFsdWUoKSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoYnl0
ZWNvZGUudmFsdWUpLmpzVmFsdWUoKTsKLSAgICBpZiAobWV0YWRhdGEuZ2V0UHV0SW5mby5yZXNv
bHZlVHlwZSgpID09IExvY2FsQ2xvc3VyZVZhcikgeworICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNPYmpl
Y3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgR2V0UHV0SW5m
byBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhwY1s0XS51Lm9wZXJhbmQpOworICAgIGlmIChnZXRQ
dXRJbmZvLnJlc29sdmVUeXBlKCkgPT0gTG9jYWxDbG9zdXJlVmFyKSB7CiAgICAgICAgIEpTTGV4
aWNhbEVudmlyb25tZW50KiBlbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVu
dCo+KHNjb3BlKTsKLSAgICAgICAgZW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoU2NvcGVPZmZzZXQo
bWV0YWRhdGEub3BlcmFuZCkpLnNldCh2bSwgZW52aXJvbm1lbnQsIHZhbHVlKTsKKyAgICAgICAg
ZW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoU2NvcGVPZmZzZXQocGNbNl0udS5vcGVyYW5kKSkuc2V0
KHZtLCBlbnZpcm9ubWVudCwgdmFsdWUpOwogICAgICAgICAKICAgICAgICAgLy8gSGF2ZSB0byBk
byB0aGlzICphZnRlciogdGhlIHdyaXRlLCBiZWNhdXNlIGlmIHRoaXMgcHV0cyB0aGUgc2V0IGlu
dG8gSXNXYXRjaGVkLCB0aGVuIHdlIG5lZWQKICAgICAgICAgLy8gdG8gaGF2ZSBhbHJlYWR5IGNo
YW5nZWQgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZS4gT3RoZXJ3aXNlIHdlIG1pZ2h0IHdhdGNo
IGFuZCBjb25zdGFudC1mb2xkCiAgICAgICAgIC8vIHRvIHRoZSBVbmRlZmluZWQgdmFsdWUgZnJv
bSBiZWZvcmUgdGhlIGFzc2lnbm1lbnQuCi0gICAgICAgIGlmIChtZXRhZGF0YS53YXRjaHBvaW50
U2V0KQotICAgICAgICAgICAgbWV0YWRhdGEud2F0Y2hwb2ludFNldC0+dG91Y2godm0sICJFeGVj
dXRlZCBvcF9wdXRfc2NvcGU8TG9jYWxDbG9zdXJlVmFyPiIpOworICAgICAgICBpZiAoV2F0Y2hw
b2ludFNldCogc2V0ID0gcGNbNV0udS53YXRjaHBvaW50U2V0KQorICAgICAgICAgICAgc2V0LT50
b3VjaCh2bSwgIkV4ZWN1dGVkIG9wX3B1dF9zY29wZTxMb2NhbENsb3N1cmVWYXI+Iik7CiAgICAg
ICAgIExMSU5UX0VORCgpOwogICAgIH0KIApAQCAtMTg1OCw3ICsxNzU2LDcgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zY29wZSkKICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKICAgICBpZiAoaGFzUHJvcGVydHkKICAgICAgICAgJiYgc2NvcGUtPmlzR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50KCkKLSAgICAgICAgJiYgIWlzSW5pdGlhbGl6YXRpb24obWV0YWRh
dGEuZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpIHsKKyAgICAgICAgJiYgIWlzSW5p
dGlhbGl6YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpIHsKICAgICAgICAg
Ly8gV2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IHByb3ZlIHdlIG5lZWQgYSBURFogY2hlY2ssIHdl
IG11c3QgcGVyZm9ybSB0aGUgY2hlY2sgb24gdGhlIHNsb3cgcGF0aC4KICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3Qoc2NvcGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQp
OwogICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90
KHNjb3BlLCBleGVjLCBpZGVudCwgc2xvdCk7CkBAIC0xODY2LDEzICsxNzY0LDEzIEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgfQogCi0gICAgaWYgKG1ldGFkYXRh
LmdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYgIWhhc1Byb3Bl
cnR5KQorICAgIGlmIChnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5k
ICYmICFoYXNQcm9wZXJ0eSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVW5kZWZpbmVkVmFy
aWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2Nv
cGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNv
bnRleHQsIGlzSW5pdGlhbGl6YXRpb24obWV0YWRhdGEuZ2V0UHV0SW5mby5pbml0aWFsaXphdGlv
bk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBjb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxp
emF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0
aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAg
Ci0gICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoZXhlYywgY29k
ZUJsb2NrLCBieXRlY29kZSwgc2NvcGUsIHNsb3QsIGlkZW50KTsKKyAgICBDb21tb25TbG93UGF0
aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbChleGVjLCBjb2RlQmxvY2ssIHBjLCBzY29wZSwg
Z2V0UHV0SW5mbywgc2xvdCwgaWRlbnQpOwogCiAgICAgTExJTlRfRU5EKCk7CiB9CkBAIC0xODkx
LDggKzE3ODksNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19j
aGlja2VuX3Byb2xvZ3VlKQogewogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgCi0gICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcExvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZT4oKTsKLSAgICBKU1Nj
b3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIoYnl0ZWNvZGUuc2NvcGUpLlJlZ2lzdGVyOjpz
Y29wZSgpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9w
ZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOwogICAgIHZtLnNoYWRvd0NoaWNrZW4oKS5sb2codm0s
IGV4ZWMsIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6cHJvbG9ndWUoZXhlYy0+anNDYWxsZWUoKSwg
ZXhlYywgZXhlYy0+Y2FsbGVyRnJhbWUoKSwgc2NvcGUpKTsKICAgICAKICAgICBMTElOVF9FTkQo
KTsKQEAgLTE5MDIsOSArMTc5OSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9s
b2dfc2hhZG93X2NoaWNrZW5fdGFpbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwogCi0gICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcExvZ1NoYWRvd0NoaWNrZW5UYWlsPigpOwotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gTExJTlRfT1AoYnl0ZWNvZGUudGhpc1ZhbHVlKS5qc1ZhbHVlKCk7Ci0g
ICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKGJ5dGVjb2RlLnNjb3BlKS5SZWdp
c3Rlcjo6c2NvcGUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFs
dWUoKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVy
YW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleChleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZz
ZXQocGMpKTsKQEAgLTE5MjIsOSArMTgxOCw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wcm9maWxlX2NhdGNoKQogCiAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmVuc3VyZUNhdGNo
TGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXQoZXhlYy0+Ynl0ZWNvZGVPZmZzZXQo
KSk7CiAKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ2F0Y2g+KCk7Ci0gICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKLSAgICBtZXRhZGF0YS5idWZmZXIt
PmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgVmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzNdLnUucG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewogICAgICAgICBwcm9m
aWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVj
a2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKICAgICB9KTsKIApAQCAtMTk0OSwx
MyArMTg0NCw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdXBlcl9zYW1wbGVy
X2VuZCkKICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfb3V0X29mX2xpbmVfanVtcF90YXJnZXQpCi17Ci0gICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBwYyA9IGNvZGVCbG9jay0+b3V0T2ZMaW5l
SnVtcFRhcmdldChwYyk7Ci0gICAgTExJTlRfRU5EX0lNUEwoKTsKLX0KLQogZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZt
LCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2
bS0+dG9wQ2FsbEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAppbmRleCBkYzM1N2ExNjFjYTA4YmRjYzNjZjk1MDA3MThhMDM4ZTFmODhiMjE1Li45
ZmUxYWM1YjlkMDM5ZWQ3YzNhNGZiMDc0OWU5NjQ1YWRhZDI0YTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtMzYsMTIgKzM2LDEyIEBAIHN0
cnVjdCBQcm90b0NhbGxGcmFtZTsKIAogbmFtZXNwYWNlIExMSW50IHsKIAotZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBjb25zdCBJ
bnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKLWV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3Ry
dWN0aW9uKiwgaW50IGZyb21XaGVyZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpOworZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJ
bnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9u
KiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dy
aXRlX2JhcnJpZXJfc2xvdyhFeGVjU3RhdGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiAKICNk
ZWZpbmUgTExJTlRfU0xPV19QQVRIX0RFQ0wobmFtZSkgXAotICAgIGV4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0
aW9uKiBwYykKKyAgICBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF8jI25hbWUo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCiAKICNkZWZpbmUgTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKG5hbWUpIFwKICAgICBMTElOVF9TTE9XX1BBVEhfREVDTChuYW1lKSBX
VEZfSU5URVJOQUwKQEAgLTY5LDYgKzY5LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9pbnN0YW5jZW9mX2N1c3RvbSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfaWRfZGlyZWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X2J5X2lkKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9kZWxfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfdmFsKTsKQEAgLTEwOCwxNiArMTA5LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF90YWlsX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jb25zdHJ1Y3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zaXpl
X2ZyYW1lX2Zvcl92YXJhcmdzKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfc2l6ZV9mcmFtZV9mb3JfZm9yd2FyZF9hcmd1bWVudHMpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MpOwotTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90YWlsX2NhbGxfdmFyYXJncyk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF92YXJhcmdzKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF9ldmFsKTsKLUxMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF9ldmFsX3dpZGUpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hcmd1bWVudHMpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwpAQCAtMTMzLDcgKzEzMSw2IEBAIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3By
b2xvZ3VlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRv
d19jaGlja2VuX3RhaWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9z
dXBlcl9zYW1wbGVyX2JlZ2luKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfc3VwZXJfc2FtcGxlcl9lbmQpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9vdXRfb2ZfbGluZV9qdW1wX3RhcmdldCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJu
VHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1l
KikgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShDX0xPT1ApCiBleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDdiNjQzMDEyZjEwYTY0NzRmOTY2NWRiYTZkYWJjNjgw
MDg1OTZlZjYuLjY1MDdlYjhkZjA4YjgyNTUyNjkwNzJkZjkzYTljZDQwNDY0NDUzZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KQEAgLTIyNyw5ICsyMjcsNyBAQCBjb25zdCBDYWxsT3BDb2RlU2l6ZSA9IGNvbnN0ZXhwciBv
cF9jYWxsX2xlbmd0aAogY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSBjb25z
dGV4cHIgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwKIAogaWYgWDg2XzY0IG9yIFg4Nl82
NF9XSU4gb3IgQVJNNjQgb3IgQVJNNjRFCi0gICAgY29uc3QgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzID0gNAotZWxzaWYgQ19MT09QCi0gICAgY29uc3QgQ2FsbGVlU2F2ZVNwYWNl
QXNWaXJ0dWFsUmVnaXN0ZXJzID0gMQorICAgIGNvbnN0IENhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycyA9IDMKIGVsc2UKICAgICBjb25zdCBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMgPSAwCiBlbmQKQEAgLTI2OSwxNyArMjY3LDE0IEBAIGlmIEpTVkFMVUU2NAogICAg
ICMgICBUaGlzIHJlcXVpcmVzIGFuIGFkZCBiZWZvcmUgdGhlIGNhbGwsIGFuZCBhIHN1YiBhZnRl
ci4KICAgICBjb25zdCBQQyA9IHQ0ICMgV2hlbiBjaGFuZ2luZyB0aGlzLCBtYWtlIHN1cmUgTExJ
bnRQQyBpcyB1cCB0byBkYXRlIGluIExMSW50UENSYW5nZXMuaAogICAgIGlmIEFSTTY0IG9yIEFS
TTY0RQotICAgICAgICBjb25zdCBtZXRhZGF0YVRhYmxlID0gY3NyNgogICAgICAgICBjb25zdCBQ
QiA9IGNzcjcKICAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjgKICAgICAgICAgY29u
c3QgdGFnTWFzayA9IGNzcjkKICAgICBlbHNpZiBYODZfNjQKLSAgICAgICAgY29uc3QgbWV0YWRh
dGFUYWJsZSA9IGNzcjEKICAgICAgICAgY29uc3QgUEIgPSBjc3IyCiAgICAgICAgIGNvbnN0IHRh
Z1R5cGVOdW1iZXIgPSBjc3IzCiAgICAgICAgIGNvbnN0IHRhZ01hc2sgPSBjc3I0CiAgICAgZWxz
aWYgWDg2XzY0X1dJTgotICAgICAgICBjb25zdCBtZXRhZGF0YVRhYmxlID0gY3NyMwogICAgICAg
ICBjb25zdCBQQiA9IGNzcjQKICAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjUKICAg
ICAgICAgY29uc3QgdGFnTWFzayA9IGNzcjYKQEAgLTI4NywxNDAgKzI4Miw2NyBAQCBpZiBKU1ZB
TFVFNjQKICAgICAgICAgY29uc3QgUEIgPSBjc3IwCiAgICAgICAgIGNvbnN0IHRhZ1R5cGVOdW1i
ZXIgPSBjc3IxCiAgICAgICAgIGNvbnN0IHRhZ01hc2sgPSBjc3IyCi0gICAgICAgIGNvbnN0IG1l
dGFkYXRhVGFibGUgPSBjc3IzCiAgICAgZW5kCiAKLWVsc2UKLSAgICBjb25zdCBQQyA9IHQ0ICMg
V2hlbiBjaGFuZ2luZyB0aGlzLCBtYWtlIHN1cmUgTExJbnRQQyBpcyB1cCB0byBkYXRlIGluIExM
SW50UENSYW5nZXMuaAotICAgIGlmIENfTE9PUAotICAgICAgICBjb25zdCBtZXRhZGF0YVRhYmxl
ID0gY3NyMworICAgIG1hY3JvIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihvZmZzZXQsIGRlc3QpCisg
ICAgICAgIGxvYWRpcyBvZmZzZXQgKiBQdHJTaXplW1BCLCBQQywgUHRyU2l6ZV0sIGRlc3QKICAg
ICBlbmQKLWVuZAotCi1tYWNybyBkaXNwYXRjaChhZHZhbmNlKQotICAgIGFkZHAgYWR2YW5jZSwg
UEMKLSAgICBuZXh0SW5zdHJ1Y3Rpb24oKQotZW5kCi0KLW1hY3JvIGRpc3BhdGNoSW5kaXJlY3Qo
b2Zmc2V0KQotICAgIGRpc3BhdGNoKG9mZnNldCkKLWVuZAotCi1tYWNybyBkaXNwYXRjaE9wKHNp
emUsIG9wKQotICAgIG1hY3JvIGRpc3BhdGNoTmFycm93KCkKLSAgICAgICAgZGlzcGF0Y2goY29u
c3RleHByICVvcCVfbGVuZ3RoKQorICAgIAorICAgIG1hY3JvIGxvYWRwRnJvbUluc3RydWN0aW9u
KG9mZnNldCwgZGVzdCkKKyAgICAgICAgbG9hZHAgb2Zmc2V0ICogUHRyU2l6ZVtQQiwgUEMsIFB0
clNpemVdLCBkZXN0CiAgICAgZW5kCiAKLSAgICBtYWNybyBkaXNwYXRjaFdpZGUoKQotICAgICAg
ICBkaXNwYXRjaChjb25zdGV4cHIgJW9wJV9sZW5ndGggKiA0ICsgMSkKKyAgICBtYWNybyBsb2Fk
aXNGcm9tU3RydWN0KG9mZnNldCwgZGVzdCkKKyAgICAgICAgbG9hZGlzIG9mZnNldFtQQiwgUEMs
IFB0clNpemVdLCBkZXN0CiAgICAgZW5kCiAKLSAgICBzaXplKGRpc3BhdGNoTmFycm93LCBkaXNw
YXRjaFdpZGUsIG1hY3JvIChkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQpCi1lbmQKLQotbWFjcm8g
Z2V0dShzaXplLCBvcCwgZmllbGQsIGRzdCkKLSAgICBzaXplKGdldHVPcGVyYW5kTmFycm93LCBn
ZXR1T3BlcmFuZFdpZGUsIG1hY3JvIChnZXR1KQotICAgICAgICBnZXR1KG9wLCBmaWVsZCwgZHN0
KQotICAgIGVuZCkKLWVuZAotCi1tYWNybyBnZXQoc2l6ZSwgb3AsIGZpZWxkLCBkc3QpCi0gICAg
c2l6ZShnZXRPcGVyYW5kTmFycm93LCBnZXRPcGVyYW5kV2lkZSwgbWFjcm8gKGdldCkKLSAgICAg
ICAgZ2V0KG9wLCBmaWVsZCwgZHN0KQotICAgIGVuZCkKLWVuZAotCi1tYWNybyBuYXJyb3cobmFy
cm93Rm4sIHdpZGVGbiwgaykKLSAgICBrKG5hcnJvd0ZuKQotZW5kCi0KLW1hY3JvIHdpZGUobmFy
cm93Rm4sIHdpZGVGbiwgaykKLSAgICBrKHdpZGVGbikKLWVuZAotCi1tYWNybyBtZXRhZGF0YShz
aXplLCBvcGNvZGUsIGRzdCwgc2NyYXRjaCkKLSAgICBsb2FkcCBjb25zdGV4cHIgJW9wY29kZSU6
Om9wY29kZUlEICogNFttZXRhZGF0YVRhYmxlXSwgZHN0ICMgb2Zmc2V0ID0gbWV0YWRhdGFUYWJs
ZTx1bnNpZ25lZCo+W29wY29kZUlEXQotICAgIGdldHUoc2l6ZSwgb3Bjb2RlLCBtZXRhZGF0YUlE
LCBzY3JhdGNoKSAjIHNjcmF0Y2ggPSBieXRlY29kZS5tZXRhZGF0YUlECi0gICAgbXVsaSBzaXpl
b2YgJW9wY29kZSU6Ok1ldGFkYXRhLCBzY3JhdGNoICMgc2NyYXRjaCAqPSBzaXplb2YoT3A6Ok1l
dGFkYXRhKQotICAgIGFkZGkgc2NyYXRjaCwgZHN0ICMgb2Zmc2V0ICs9IHNjcmF0Y2gKLSAgICBh
ZGRwIG1ldGFkYXRhVGFibGUsIGRzdCAjIHJldHVybiAmbWV0YWRhdGFUYWJsZVtvZmZzZXRdCi1l
bmQKLQotbWFjcm8ganVtcEltcGwodGFyZ2V0KQotICAgIGJ0aXogdGFyZ2V0LCAub3V0T2ZMaW5l
SnVtcFRhcmdldAotICAgIGRpc3BhdGNoSW5kaXJlY3QodGFyZ2V0KQotLm91dE9mTGluZUp1bXBU
YXJnZXQ6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfb3V0X29mX2xpbmVfanVt
cF90YXJnZXQpCi0gICAgbmV4dEluc3RydWN0aW9uKCkKLWVuZAotCi1tYWNybyBjb21tb25PcChs
YWJlbCwgcHJvbG9ndWUsIGZuKQotXyVsYWJlbCU6Ci0gICAgcHJvbG9ndWUoKQotICAgIGZuKG5h
cnJvdykKLQotXyVsYWJlbCVfd2lkZToKLSAgICBwcm9sb2d1ZSgpCi0gICAgZm4od2lkZSkKLWVu
ZAorICAgIG1hY3JvIGxvYWRwRnJvbVN0cnVjdChvZmZzZXQsIGRlc3QpCisgICAgICAgIGxvYWRw
IG9mZnNldFtQQiwgUEMsIFB0clNpemVdLCBkZXN0CisgICAgZW5kCiAKLW1hY3JvIG9wKGwsIGZu
KQotICAgIGNvbW1vbk9wKGwsIG1hY3JvICgpIGVuZCwgbWFjcm8gKHVudXNlZCkKLSAgICAgICAg
Zm4oKQotICAgIGVuZCkKLWVuZAorICAgIG1hY3JvIHN0b3JlaXNUb0luc3RydWN0aW9uKHZhbHVl
LCBvZmZzZXQpCisgICAgICAgIHN0b3JlaSB2YWx1ZSwgb2Zmc2V0ICogUHRyU2l6ZVtQQiwgUEMs
IFB0clNpemVdCisgICAgZW5kCiAKLW1hY3JvIGxsaW50T3AobmFtZSwgb3AsIGZuKQotICAgIGNv
bW1vbk9wKGxsaW50XyVuYW1lJSwgdHJhY2VFeGVjdXRpb24sIG1hY3JvKHNpemUpCi0gICAgICAg
IG1hY3JvIGdldEltcGwoZmllbGQsIGRzdCkKLSAgICAgICAgICAgIGdldChzaXplLCBvcCwgZmll
bGQsIGRzdCkKLSAgICAgICAgZW5kCisgICAgbWFjcm8gc3RvcmVwVG9JbnN0cnVjdGlvbih2YWx1
ZSwgb2Zmc2V0KQorICAgICAgICBzdG9yZXAgdmFsdWUsIG9mZnNldCAqIFB0clNpemVbUEIsIFBD
LCBQdHJTaXplXQorICAgIGVuZAogCi0gICAgICAgIG1hY3JvIGRpc3BhdGNoSW1wbCgpCi0gICAg
ICAgICAgICBkaXNwYXRjaE9wKHNpemUsIG5hbWUpCi0gICAgICAgIGVuZAorICAgIG1hY3JvIHN0
b3JlaXNGcm9tU3RydWN0KHZhbHVlLCBvZmZzZXQpCisgICAgICAgIHN0b3JlaSB2YWx1ZSwgb2Zm
c2V0W1BCLCBQQywgUHRyU2l6ZV0KKyAgICBlbmQKIAotICAgICAgICBmbihzaXplLCBnZXRJbXBs
LCBkaXNwYXRjaEltcGwpCi0gICAgZW5kKQotZW5kCisgICAgbWFjcm8gc3RvcmVwRnJvbVN0cnVj
dCh2YWx1ZSwgb2Zmc2V0KQorICAgICAgICBzdG9yZXAgdmFsdWUsIG9mZnNldFtQQiwgUEMsIFB0
clNpemVdCisgICAgZW5kCiAKLW1hY3JvIGxsaW50T3BXaXRoUmV0dXJuKG5hbWUsIG9wLCBmbikK
LSAgICBsbGludE9wKG5hbWUsIG9wLCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgICAg
ICBtYWtlUmV0dXJuKGdldCwgZGlzcGF0Y2gsIG1hY3JvIChyZXR1cm4pCi0gICAgICAgICAgICBm
bihzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgICAgIGVuZCkKLSAgICBlbmQpCi1l
bmQKK2Vsc2UKKyAgICBjb25zdCBQQyA9IHQ0ICMgV2hlbiBjaGFuZ2luZyB0aGlzLCBtYWtlIHN1
cmUgTExJbnRQQyBpcyB1cCB0byBkYXRlIGluIExMSW50UENSYW5nZXMuaAorICAgIG1hY3JvIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbihvZmZzZXQsIGRlc3QpCisgICAgICAgIGxvYWRpcyBvZmZzZXQg
KiA0W1BDXSwgZGVzdAorICAgIGVuZAorICAgIAorICAgIG1hY3JvIGxvYWRwRnJvbUluc3RydWN0
aW9uKG9mZnNldCwgZGVzdCkKKyAgICAgICAgbG9hZHAgb2Zmc2V0ICogNFtQQ10sIGRlc3QKKyAg
ICBlbmQKIAotbWFjcm8gbGxpbnRPcFdpdGhNZXRhZGF0YShuYW1lLCBvcCwgZm4pCi0gICAgbGxp
bnRPcFdpdGhSZXR1cm4obmFtZSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCi0gICAgICAgIG1hY3JvIG1ldGEoZHN0LCBzY3JhdGNoKQotICAgICAgICAgICAgbWV0YWRh
dGEoc2l6ZSwgb3AsIGRzdCwgc2NyYXRjaCkKLSAgICAgICAgZW5kCi0gICAgICAgIGZuKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGEsIHJldHVybikKLSAgICBlbmQpCi1lbmQKKyAgICBtYWNybyBz
dG9yZWlzVG9JbnN0cnVjdGlvbih2YWx1ZSwgb2Zmc2V0KQorICAgICAgICBzdG9yZWkgdmFsdWUs
IG9mZnNldCAqIDRbUENdCisgICAgZW5kCiAKLW1hY3JvIGxsaW50T3BXaXRoSnVtcChuYW1lLCBv
cCwgaW1wbCkKLSAgICBsbGludE9wV2l0aE1ldGFkYXRhKG5hbWUsIG9wLCBtYWNybyhzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgICAgICBtYWNybyBqdW1wKGZpZWxk
KQotICAgICAgICAgICAgZ2V0KGZpZWxkLCB0MCkKLSAgICAgICAgICAgIGp1bXBJbXBsKHQwKQot
ICAgICAgICBlbmQKKyAgICBtYWNybyBsb2FkaXNGcm9tU3RydWN0KG9mZnNldCwgZGVzdCkKKyAg
ICAgICAgbG9hZGlzIG9mZnNldFtQQ10sIGRlc3QKKyAgICBlbmQKIAotICAgICAgICBpbXBsKHNp
emUsIGdldCwganVtcCwgZGlzcGF0Y2gpCi0gICAgZW5kKQotZW5kCisgICAgbWFjcm8gbG9hZHBG
cm9tU3RydWN0KG9mZnNldCwgZGVzdCkKKyAgICAgICAgbG9hZHAgb2Zmc2V0W1BDXSwgZGVzdAor
ICAgIGVuZAogCi1tYWNybyBsbGludE9wV2l0aFByb2ZpbGUobmFtZSwgb3AsIGZuKQotICAgIGxs
aW50T3BXaXRoTWV0YWRhdGEobmFtZSwgb3AsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCi0gICAgICAgIG1ha2VSZXR1cm5Qcm9maWxlZChvcCwgZ2V0LCBtZXRh
ZGF0YSwgZGlzcGF0Y2gsIG1hY3JvIChyZXR1cm5Qcm9maWxlZCkKLSAgICAgICAgICAgIGZuKHNp
emUsIGdldCwgZGlzcGF0Y2gsIHJldHVyblByb2ZpbGVkKQotICAgICAgICBlbmQpCi0gICAgZW5k
KQorICAgIG1hY3JvIHN0b3JlaXNUb1N0cnVjdCh2YWx1ZSwgb2Zmc2V0KQorICAgICAgICBzdG9y
ZWkgdmFsdWUsIG9mZnNldFtQQ10KKyAgICBlbmQKIGVuZAogCi0KIGlmIFg4Nl82NF9XSU4KICAg
ICBjb25zdCBleHRyYVRlbXBSZWcgPSB0MAogZWxzZQpAQCAtNDcyLDggKzM5NCw3IEBAIGNvbnN0
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBjb25zdGV4cHIgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZAogY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IGNvbnN0ZXhwciBJbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlCiAKICMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCi1j
b25zdCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleE5hcnJvdyA9IDE2Ci1jb25zdCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleFdpZGUgPSBjb25zdGV4cHIgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgKK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gY29uc3RleHByIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4CiAKICMgQ29kZSB0eXBlIGNvbnN0YW50cy4KIGNvbnN0IEds
b2JhbENvZGUgPSBjb25zdGV4cHIgR2xvYmFsQ29kZQpAQCAtNzA5LDEyICs2MzAsMTEgQEAgZW5k
CiBtYWNybyBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogICAgIHN1YnAgQ2FsbGVl
U2F2ZVNwYWNlU3RhY2tBbGlnbmVkLCBzcAogICAgIGlmIENfTE9PUAotICAgICAgICBzdG9yZXAg
bWV0YWRhdGFUYWJsZSwgLVB0clNpemVbY2ZyXQogICAgIGVsc2lmIEFSTSBvciBBUk12N19UUkFE
SVRJT05BTAogICAgIGVsc2lmIEFSTXY3CiAgICAgZWxzaWYgQVJNNjQgb3IgQVJNNjRFCiAgICAg
ICAgIGVtaXQgInN0cCB4MjcsIHgyOCwgW3gyOSwgIy0xNl0iCi0gICAgICAgIGVtaXQgInN0cCB4
MjUsIHgyNiwgW3gyOSwgIy0zMl0iCisgICAgICAgIGVtaXQgInN0cCB4enIsIHgyNiwgW3gyOSwg
Iy0zMl0iCiAgICAgZWxzaWYgTUlQUwogICAgIGVsc2lmIFg4NgogICAgIGVsc2lmIFg4Nl9XSU4K
QEAgLTcyMiwzMyArNjQyLDI4IEBAIG1hY3JvIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlMTElu
dCgpCiAgICAgICAgIHN0b3JlcCBjc3I0LCAtOFtjZnJdCiAgICAgICAgIHN0b3JlcCBjc3IzLCAt
MTZbY2ZyXQogICAgICAgICBzdG9yZXAgY3NyMiwgLTI0W2Nmcl0KLSAgICAgICAgc3RvcmVwIGNz
cjEsIC0zMltjZnJdCiAgICAgZWxzaWYgWDg2XzY0X1dJTgogICAgICAgICBzdG9yZXAgY3NyNiwg
LThbY2ZyXQogICAgICAgICBzdG9yZXAgY3NyNSwgLTE2W2Nmcl0KICAgICAgICAgc3RvcmVwIGNz
cjQsIC0yNFtjZnJdCi0gICAgICAgIHN0b3JlcCBjc3IzLCAtMzJbY2ZyXQogICAgIGVuZAogZW5k
CiAKIG1hY3JvIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKICAgICBpZiBDX0xPT1AK
LSAgICAgICAgbG9hZHAgLVB0clNpemVbY2ZyXSwgbWV0YWRhdGFUYWJsZQogICAgIGVsc2lmIEFS
TSBvciBBUk12N19UUkFESVRJT05BTAogICAgIGVsc2lmIEFSTXY3CiAgICAgZWxzaWYgQVJNNjQg
b3IgQVJNNjRFCi0gICAgICAgIGVtaXQgImxkcCB4MjUsIHgyNiwgW3gyOSwgIy0zMl0iCisgICAg
ICAgIGVtaXQgImxkcCB4enIsIHgyNiwgW3gyOSwgIy0zMl0iCiAgICAgICAgIGVtaXQgImxkcCB4
MjcsIHgyOCwgW3gyOSwgIy0xNl0iCiAgICAgZWxzaWYgTUlQUwogICAgIGVsc2lmIFg4NgogICAg
IGVsc2lmIFg4Nl9XSU4KICAgICBlbHNpZiBYODZfNjQKLSAgICAgICAgbG9hZHAgLTMyW2Nmcl0s
IGNzcjEKICAgICAgICAgbG9hZHAgLTI0W2Nmcl0sIGNzcjIKICAgICAgICAgbG9hZHAgLTE2W2Nm
cl0sIGNzcjMKICAgICAgICAgbG9hZHAgLThbY2ZyXSwgY3NyNAogICAgIGVsc2lmIFg4Nl82NF9X
SU4KLSAgICAgICAgbG9hZHAgLTMyW2Nmcl0sIGNzcjMKICAgICAgICAgbG9hZHAgLTI0W2Nmcl0s
IGNzcjQKICAgICAgICAgbG9hZHAgLTE2W2Nmcl0sIGNzcjUKICAgICAgICAgbG9hZHAgLThbY2Zy
XSwgY3NyNgpAQCAtOTA4LDE0ICs4MjMsMTQgQEAgbWFjcm8gdHJhY2VFeGVjdXRpb24oKQogICAg
IGVuZAogZW5kCiAKLW1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBvcCwgZGlzcGF0Y2gs
IGNhbGxlZSwgY2FsbFB0clRhZykKK21hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihjYWxsZWUsIGNh
bGxQdHJUYWcpCiAgICAgaWYgQ19MT09QCiAgICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gY2Fs
bGVlCiAgICAgZWxzZQogICAgICAgICBjYWxsIGNhbGxlZSwgY2FsbFB0clRhZwogICAgIGVuZAog
ICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KHNpemUsIG9wLCBkaXNwYXRjaCkKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCiBlbmQKIAogbWFj
cm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2Fs
bFB0clRhZykKQEAgLTk4Myw3ICs4OTgsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2Fs
bGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGptcCBjYWxsZWUsIGNh
bGxQdHJUYWcKIGVuZAogCi1tYWNybyBzbG93UGF0aEZvckNhbGwoc2l6ZSwgb3AsIGRpc3BhdGNo
LCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCittYWNybyBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgs
IHByZXBhcmVDYWxsKQogICAgIGNhbGxDYWxsU2xvd1BhdGgoCiAgICAgICAgIHNsb3dQYXRoLAog
ICAgICAgICAjIFRob3NlIGFyZSByMCBhbmQgcjEKQEAgLTk5MiwxNSArOTA3LDE1IEBAIG1hY3Jv
IHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVw
YXJlQ2FsbChjYWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9u
dFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wLCBkaXNw
YXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykKKyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5j
dGlvbihjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8g
YXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0
Y2gpCittYWNybyBhcnJheVByb2ZpbGUoY2VsbEFuZEluZGV4aW5nVHlwZSwgcHJvZmlsZSwgc2Ny
YXRjaCkKICAgICBjb25zdCBjZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQogICAgIGNvbnN0IGlu
ZGV4aW5nVHlwZSA9IGNlbGxBbmRJbmRleGluZ1R5cGUgCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW2NlbGxdLCBzY3JhdGNoCi0gICAgc3RvcmVpIHNjcmF0Y2gsIG9mZnNldCArIEFy
cmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW21ldGFkYXRhXQorICAgIHN0b3JlaSBz
Y3JhdGNoLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFtwcm9maWxlXQogICAg
IGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUK
IGVuZAogCkBAIC0xMDMwLDEwICs5NDUsOCBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBp
bG9ndWUoKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoc2l6
ZSwgaW5kZXgpCi0gICAgc2l6ZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleE5hcnJvdywgRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXhXaWRlLCBtYWNybyAoRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgpCi0gICAgICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LCBvayBlbmQpCi0gICAgZW5kKQorbWFjcm8gYXNzZXJ0Tm90Q29uc3Rh
bnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKIGVuZAogCiBtYWNybyBmdW5jdGlvbkZvckNhbGxDb2Rl
QmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIsIHNjcmF0Y2gpCkBAIC0xMTI0LDE3ICsxMDM3LDEx
IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JT
bG93UGF0aCwgdHJhY2VTbG93UGF0aCkKIAogICAgICMgU2V0IHVwIHRoZSBQQy4KICAgICBpZiBK
U1ZBTFVFNjQKLSAgICAgICAgIyBGSVhNRTogY2xlYW51cCBkb3VibGUgbG9hZAotICAgICAgICAj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5MzIKICAgICAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIFBCCi0gICAgICAgIGxvYWRwIFtQ
Ql0sIFBCCiAgICAgICAgIHVucG9pc29uKF9nX0NvZGVCbG9ja1BvaXNvbiwgUEIsIHQzKQogICAg
ICAgICBtb3ZlIDAsIFBDCiAgICAgZWxzZQotICAgICAgICAjIEZJWE1FOiBjbGVhbnVwIGRvdWJs
ZSBsb2FkCi0gICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MDkzMgogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEMK
LSAgICAgICAgbG9hZHAgW1BDXSwgUEMKICAgICBlbmQKIAogICAgICMgR2V0IG5ldyBzcCBpbiB0
MCBhbmQgY2hlY2sgc3RhY2sgaGVpZ2h0LgpAQCAtMTE4NiwxMiArMTA5Myw2IEBAIG1hY3JvIHBy
b2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJh
Y2VTbG93UGF0aCkKICAgICAgICAgbW92ZSB0MCwgc3AKICAgICBlbmQKIAotICAgIGlmIEpTVkFM
VUU2NCBvciBDX0xPT1AKLSAgICAgICAgIyBGSVhNRTogY2xlYW51cCBkb3VibGUgbG9hZAotICAg
ICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5MzMKLSAg
ICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX21ldGFkYXRhW3QxXSwgbWV0YWRhdGFUYWJsZQotICAg
ICAgICBsb2FkcCBNZXRhZGF0YVRhYmxlOjptX2J1ZmZlclttZXRhZGF0YVRhYmxlXSwgbWV0YWRh
dGFUYWJsZQotICAgIGVuZAogICAgIGlmIEpTVkFMVUU2NAogICAgICAgICBtb3ZlIFRhZ1R5cGVO
dW1iZXIsIHRhZ1R5cGVOdW1iZXIKICAgICAgICAgYWRkcSBUYWdCaXRUeXBlT3RoZXIsIHRhZ1R5
cGVOdW1iZXIsIHRhZ01hc2sKQEAgLTEzMzQsNDEgKzEyMzUsMzMgQEAgZWxzZQogICAgICAgICBl
bmQKIGVuZAogCi0jIFRoZSBQQyBiYXNlIGlzIGluIHQyLCBhcyB0aGlzIGlzIHdoYXQgX2xsaW50
X2VudHJ5IGxlYXZlcyBiZWhpbmQgdGhyb3VnaAotIyBpbml0UENSZWxhdGl2ZSh0MikKKyMgVGhl
IFBDIGJhc2UgaXMgaW4gdDEsIGFzIHRoaXMgaXMgd2hhdCBfbGxpbnRfZW50cnkgbGVhdmVzIGJl
aGluZCB0aHJvdWdoCisjIGluaXRQQ1JlbGF0aXZlKHQxKQogbWFjcm8gc2V0RW50cnlBZGRyZXNz
KGluZGV4LCBsYWJlbCkKLSAgICBzZXRFbnRyeUFkZHJlc3NDb21tb24oaW5kZXgsIGxhYmVsLCBh
MCkKLWVuZAotCi1tYWNybyBzZXRFbnRyeUFkZHJlc3NXaWRlKGluZGV4LCBsYWJlbCkKLSAgICAg
c2V0RW50cnlBZGRyZXNzQ29tbW9uKGluZGV4LCBsYWJlbCwgYTEpCi1lbmQKLQotbWFjcm8gc2V0
RW50cnlBZGRyZXNzQ29tbW9uKGluZGV4LCBsYWJlbCwgbWFwKQogICAgIGlmIFg4Nl82NCBvciBY
ODZfNjRfV0lOCi0gICAgICAgIGxlYXAgKGxhYmVsIC0gX3JlbGF0aXZlUENCYXNlKVt0Ml0sIHQz
CisgICAgICAgIGxlYXAgKGxhYmVsIC0gX3JlbGF0aXZlUENCYXNlKVt0MV0sIHQzCiAgICAgICAg
IG1vdmUgaW5kZXgsIHQ0Ci0gICAgICAgIHN0b3JlcCB0MywgW21hcCwgdDQsIDhdCisgICAgICAg
IHN0b3JlcCB0MywgW2EwLCB0NCwgOF0KICAgICBlbHNpZiBYODYgb3IgWDg2X1dJTgotICAgICAg
ICBsZWFwIChsYWJlbCAtIF9yZWxhdGl2ZVBDQmFzZSlbdDJdLCB0MworICAgICAgICBsZWFwIChs
YWJlbCAtIF9yZWxhdGl2ZVBDQmFzZSlbdDFdLCB0MwogICAgICAgICBtb3ZlIGluZGV4LCB0NAot
ICAgICAgICBzdG9yZXAgdDMsIFttYXAsIHQ0LCA0XQorICAgICAgICBzdG9yZXAgdDMsIFthMCwg
dDQsIDRdCiAgICAgZWxzaWYgQVJNNjQgb3IgQVJNNjRFCi0gICAgICAgIHBjcnRvYWRkciBsYWJl
bCwgdDIKKyAgICAgICAgcGNydG9hZGRyIGxhYmVsLCB0MQogICAgICAgICBtb3ZlIGluZGV4LCB0
NAotICAgICAgICBzdG9yZXAgdDIsIFthMCwgdDQsIFB0clNpemVdCisgICAgICAgIHN0b3JlcCB0
MSwgW2EwLCB0NCwgUHRyU2l6ZV0KICAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJB
RElUSU9OQUwKICAgICAgICAgbXZsYmwgKGxhYmVsIC0gX3JlbGF0aXZlUENCYXNlKSwgdDQKLSAg
ICAgICAgYWRkcCB0NCwgdDIsIHQ0CisgICAgICAgIGFkZHAgdDQsIHQxLCB0NAogICAgICAgICBt
b3ZlIGluZGV4LCB0MwotICAgICAgICBzdG9yZXAgdDQsIFttYXAsIHQzLCA0XQorICAgICAgICBz
dG9yZXAgdDQsIFthMCwgdDMsIDRdCiAgICAgZWxzaWYgTUlQUwogICAgICAgICBsYSBsYWJlbCwg
dDQKICAgICAgICAgbGEgX3JlbGF0aXZlUENCYXNlLCB0MwogICAgICAgICBzdWJwIHQzLCB0NAot
ICAgICAgICBhZGRwIHQ0LCB0MiwgdDQKKyAgICAgICAgYWRkcCB0NCwgdDEsIHQ0CiAgICAgICAg
IG1vdmUgaW5kZXgsIHQzCi0gICAgICAgIHN0b3JlcCB0NCwgW21hcCwgdDMsIDRdCisgICAgICAg
IHN0b3JlcCB0NCwgW2EwLCB0MywgNF0KICAgICBlbmQKIGVuZAogCkBAIC0xMzc5LDEwICsxMjcy
LDggQEAgX2xsaW50X2VudHJ5OgogICAgIHB1c2hDYWxsZWVTYXZlcygpCiAgICAgaWYgWDg2IG9y
IFg4Nl9XSU4KICAgICAgICAgbG9hZHAgMjBbc3BdLCBhMAotICAgICAgICBsb2FkcCAyNFtzcF0s
IGExCiAgICAgZW5kCi0KLSAgICBpbml0UENSZWxhdGl2ZSh0MikKKyAgICBpbml0UENSZWxhdGl2
ZSh0MSkKIAogICAgICMgSW5jbHVkZSBnZW5lcmF0ZWQgYnl0ZWNvZGUgaW5pdGlhbGl6YXRpb24g
ZmlsZS4KICAgICBpbmNsdWRlIEluaXRCeXRlY29kZXMKQEAgLTEzOTIsNjMgKzEyODMsNDcgQEAg
X2xsaW50X2VudHJ5OgogICAgIHJldAogZW5kCiAKLV9sbGludF9vcF93aWRlOgotICAgIG5leHRJ
bnN0cnVjdGlvbldpZGUoKQotCi1fbGxpbnRfb3Bfd2lkZV93aWRlOgotICAgIGNyYXNoKCkKLQot
X2xsaW50X29wX2VudGVyX3dpZGU6Ci0gICAgY3Jhc2goKQotCi1vcChsbGludF9wcm9ncmFtX3By
b2xvZ3VlLCBtYWNybyAoKQorX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAgcHJvbG9ndWUo
bm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkK
LWVuZCkKIAogCi1vcChsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSwgbWFjcm8gKCkKK19s
bGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNv
ZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9v
c3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQotZW5kKQogCiAKLW9w
KGxsaW50X2V2YWxfcHJvbG9ndWUsIG1hY3JvICgpCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAg
ICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBk
aXNwYXRjaCgwKQotZW5kKQogCiAKLW9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3Vl
LCBtYWNybyAoKQorX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgogICAgIHByb2xv
Z3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0
ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9s
b2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCiAg
ICAgZGlzcGF0Y2goMCkKLWVuZCkKICAgICAKIAotb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9wcm9sb2d1ZSwgbWFjcm8gKCkKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3By
b2xvZ3VlOgogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVy
LCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkK
ICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2goMCkKLWVuZCkKICAg
ICAKIAotb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCitf
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6CiAgICAgcHJvbG9ndWUoZnVuY3Rp
b25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJp
dHlDaGVja19mb3JfY2FsbCkKICAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2Fs
bEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdp
bjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKLWVuZCkK
IAogCi1vcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAo
KQorX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CiAgICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVj
aywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKICAgICBmdW5jdGlvbkFy
aXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9zbG93X3BhdGhfY29uc3RydWN0
X2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKICAgICBmdW5jdGlvbklu
aXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2goMCkKLWVuZCkKIAogCiAjIFZhbHVlLXJlcHJl
c2VudGF0aW9uLXNwZWNpZmljIGNvZGUuCkBAIC0xNDYwLDIyMSArMTMzNSwzNzQgQEAgZW5kCiAK
IAogIyBWYWx1ZS1yZXByZXNlbnRhdGlvbi1hZ25vc3RpYyBjb2RlLgotbWFjcm8gc2xvd1BhdGhP
cChvcCkKLSAgICBsbGludE9wKG9wXyVvcCUsIHVudXNlZCwgbWFjcm8gKHVudXNlZCwgdW51c2Vk
LCBkaXNwYXRjaCkKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wJSkKLSAgICAg
ICAgZGlzcGF0Y2goKQotICAgIGVuZCkKLWVuZAorX2xsaW50X29wX2NyZWF0ZV9kaXJlY3RfYXJn
dW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cykKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY3Jl
YXRlX2RpcmVjdF9hcmd1bWVudHNfbGVuZ3RoKQogCi1zbG93UGF0aE9wKGNyZWF0ZV9jbG9uZWRf
YXJndW1lbnRzKQotc2xvd1BhdGhPcChjcmVhdGVfZGlyZWN0X2FyZ3VtZW50cykKLXNsb3dQYXRo
T3AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCi1zbG93UGF0aE9wKGNyZWF0ZV9yZXN0KQot
c2xvd1BhdGhPcChjcmVhdGVfc2NvcGVkX2FyZ3VtZW50cykKLXNsb3dQYXRoT3AoY3JlYXRlX3Ro
aXMpCi1zbG93UGF0aE9wKGRlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKLXNsb3dQYXRoT3AoZGVm
aW5lX2RhdGFfcHJvcGVydHkpCi1zbG93UGF0aE9wKGVudW1lcmF0b3JfZ2VuZXJpY19wbmFtZSkK
LXNsb3dQYXRoT3AoZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUpCi1zbG93UGF0aE9wKGdldF9i
eV9pZF93aXRoX3RoaXMpCi1zbG93UGF0aE9wKGdldF9ieV92YWxfd2l0aF90aGlzKQotc2xvd1Bh
dGhPcChnZXRfZGlyZWN0X3BuYW1lKQotc2xvd1BhdGhPcChnZXRfZW51bWVyYWJsZV9sZW5ndGgp
Ci1zbG93UGF0aE9wKGdldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKQotc2xvd1BhdGhPcChncmVhdGVy
KQotc2xvd1BhdGhPcChncmVhdGVyZXEpCi1zbG93UGF0aE9wKGhhc19nZW5lcmljX3Byb3BlcnR5
KQotc2xvd1BhdGhPcChoYXNfaW5kZXhlZF9wcm9wZXJ0eSkKLXNsb3dQYXRoT3AoaGFzX3N0cnVj
dHVyZV9wcm9wZXJ0eSkKLXNsb3dQYXRoT3AoaW5fYnlfaWQpCi1zbG93UGF0aE9wKGluX2J5X3Zh
bCkKLXNsb3dQYXRoT3AoaXNfZnVuY3Rpb24pCi1zbG93UGF0aE9wKGlzX29iamVjdF9vcl9udWxs
KQotc2xvd1BhdGhPcChsZXNzKQotc2xvd1BhdGhPcChsZXNzZXEpCi1zbG93UGF0aE9wKG1vZCkK
LXNsb3dQYXRoT3AobmV3X2FycmF5X2J1ZmZlcikKLXNsb3dQYXRoT3AobmV3X2FycmF5X3dpdGhf
c3ByZWFkKQotc2xvd1BhdGhPcChwb3cpCi1zbG93UGF0aE9wKHB1c2hfd2l0aF9zY29wZSkKLXNs
b3dQYXRoT3AocHV0X2J5X2lkX3dpdGhfdGhpcykKLXNsb3dQYXRoT3AocHV0X2J5X3ZhbF93aXRo
X3RoaXMpCi1zbG93UGF0aE9wKHJlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9p
bl9ldmFsKQotc2xvd1BhdGhPcChzcHJlYWQpCi1zbG93UGF0aE9wKHN0cmNhdCkKLXNsb3dQYXRo
T3AodGhyb3dfc3RhdGljX2Vycm9yKQotc2xvd1BhdGhPcCh0b19pbmRleF9zdHJpbmcpCi1zbG93
UGF0aE9wKHR5cGVvZikKLXNsb3dQYXRoT3AodW5yZWFjaGFibGUpCi0KLW1hY3JvIGxsaW50U2xv
d1BhdGhPcChvcCkKLSAgICBsbGludE9wKG9wXyVvcCUsIHVudXNlZCwgbWFjcm8gKHVudXNlZCwg
dW51c2VkLCBkaXNwYXRjaCkKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
JW9wJSkKLSAgICAgICAgZGlzcGF0Y2goKQotICAgIGVuZCkKLWVuZAogCi1sbGludFNsb3dQYXRo
T3AoZGVsX2J5X2lkKQotbGxpbnRTbG93UGF0aE9wKGRlbF9ieV92YWwpCi1sbGludFNsb3dQYXRo
T3AoaW5zdGFuY2VvZikKLWxsaW50U2xvd1BhdGhPcChpbnN0YW5jZW9mX2N1c3RvbSkKLWxsaW50
U2xvd1BhdGhPcChuZXdfYXJyYXkpCi1sbGludFNsb3dQYXRoT3AobmV3X2FycmF5X3dpdGhfc2l6
ZSkKLWxsaW50U2xvd1BhdGhPcChuZXdfYXN5bmNfZnVuYykKLWxsaW50U2xvd1BhdGhPcChuZXdf
YXN5bmNfZnVuY19leHApCi1sbGludFNsb3dQYXRoT3AobmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5j
KQotbGxpbnRTbG93UGF0aE9wKG5ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHApCi1sbGludFNs
b3dQYXRoT3AobmV3X2Z1bmMpCi1sbGludFNsb3dQYXRoT3AobmV3X2Z1bmNfZXhwKQotbGxpbnRT
bG93UGF0aE9wKG5ld19nZW5lcmF0b3JfZnVuYykKLWxsaW50U2xvd1BhdGhPcChuZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwKQotbGxpbnRTbG93UGF0aE9wKG5ld19vYmplY3QpCi1sbGludFNsb3dQYXRo
T3AobmV3X3JlZ2V4cCkKLWxsaW50U2xvd1BhdGhPcChwdXRfZ2V0dGVyX2J5X2lkKQotbGxpbnRT
bG93UGF0aE9wKHB1dF9nZXR0ZXJfYnlfdmFsKQotbGxpbnRTbG93UGF0aE9wKHB1dF9nZXR0ZXJf
c2V0dGVyX2J5X2lkKQotbGxpbnRTbG93UGF0aE9wKHB1dF9zZXR0ZXJfYnlfaWQpCi1sbGludFNs
b3dQYXRoT3AocHV0X3NldHRlcl9ieV92YWwpCi1sbGludFNsb3dQYXRoT3Aoc2V0X2Z1bmN0aW9u
X25hbWUpCi1sbGludFNsb3dQYXRoT3Aoc3VwZXJfc2FtcGxlcl9iZWdpbikKLWxsaW50U2xvd1Bh
dGhPcChzdXBlcl9zYW1wbGVyX2VuZCkKLWxsaW50U2xvd1BhdGhPcCh0aHJvdykKLWxsaW50U2xv
d1BhdGhPcCh0cnlfZ2V0X2J5X2lkKQotCi1sbGludE9wKG9wX3N3aXRjaF9zdHJpbmcsIHVudXNl
ZCwgbWFjcm8gKHVudXNlZCwgdW51c2VkLCB1bnVzZWQpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfc3dpdGNoX3N0cmluZykKLSAgICBuZXh0SW5zdHJ1Y3Rpb24oKQotZW5kKQor
X2xsaW50X29wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cykKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHNfbGVuZ3RoKQor
CisKK19sbGludF9vcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMp
CisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzX2xlbmd0
aCkKKworCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9jcmVhdGVfdGhpc19sZW5ndGgpCisKKworX2xsaW50X29wX25ld19vYmplY3Q6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19vYmplY3QpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX25ld19vYmplY3RfbGVuZ3RoKQor
CisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmMpCisgICAgZGlzcGF0Y2goY29uc3RleHBy
IG9wX25ld19mdW5jX2xlbmd0aCkKKworCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX25ld19nZW5lcmF0
b3JfZnVuY19sZW5ndGgpCisKK19sbGludF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19hc3luY19nZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbmV3X2Fz
eW5jX2dlbmVyYXRvcl9mdW5jX2xlbmd0aCkKKworX2xsaW50X29wX25ld19hc3luY19nZW5lcmF0
b3JfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHApCisgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHBfbGVuZ3RoKQorCitfbGxp
bnRfb3BfbmV3X2FzeW5jX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hc3luY19mdW5jKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9uZXdfYXN5bmNfZnVuY19sZW5ndGgpCisKKworX2xsaW50X29wX25ld19hcnJheToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bmV3X2FycmF5KQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9uZXdfYXJyYXlfbGVuZ3RoKQor
CisKK19sbGludF9vcF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NwcmVhZCkKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkX2xlbmd0aCkKIAog
Ci1lcXVhbGl0eUNvbXBhcmlzb25PcChlcSwgT3BFcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKK19sbGludF9vcF9zcHJlYWQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3NwcmVh
ZCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3Bfc3ByZWFkX2xlbmd0aCkKIAogCi1lcXVhbGl0
eUNvbXBhcmlzb25PcChuZXEsIE9wTmVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKK19sbGludF9vcF9uZXdfYXJyYXlfd2l0
aF9zaXplOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXplKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9u
ZXdfYXJyYXlfd2l0aF9zaXplX2xlbmd0aCkKIAogCi1jb21wYXJlVW5zaWduZWRPcChiZWxvdywg
T3BCZWxvdywKK19sbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRp
c3BhdGNoKGNvbnN0ZXhwciBvcF9uZXdfYXJyYXlfYnVmZmVyX2xlbmd0aCkKKworCitfbGxpbnRf
b3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfbmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbmV3
X3JlZ2V4cF9sZW5ndGgpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2xlc3MpCisgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX2xlc3NfbGVuZ3RoKQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2xlc3NlcSkKKyAgICBkaXNwYXRj
aChjb25zdGV4cHIgb3BfbGVzc2VxX2xlbmd0aCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZ3JlYXRlcikK
KyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfZ3JlYXRlcl9sZW5ndGgpCisKKworX2xsaW50X29w
X2dyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9ncmVhdGVyZXFfbGVu
Z3RoKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxp
dHlDb21wYXJpc29uKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9lcSkKKworCitfbGxp
bnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbGl0eUNvbXBhcmlzb24o
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwg
cmVzdWx0IGVuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9uZXEpCisKKworX2xsaW50X29wX2JlbG93
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlVW5zaWduZWQoCiAgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWIgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQpCiAK
IAotY29tcGFyZVVuc2lnbmVkT3AoYmVsb3dlcSwgT3BCZWxvd2VxLAorX2xsaW50X29wX2JlbG93
ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmVVbnNpZ25lZCgKICAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpYmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5k
KQogCiAKLWxsaW50T3BXaXRoSnVtcChvcF9qbXAsIE9wSm1wLCBtYWNybyAoc2l6ZSwgZ2V0LCBq
dW1wLCBkaXNwYXRjaCkKLSAgICBqdW1wKHRhcmdldCkKLWVuZCkKK19sbGludF9vcF9tb2Q6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX21vZCkKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbW9kX2xlbmd0aCkKKworCitfbGxpbnRfb3BfcG93Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wb3cpCisg
ICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3Bvd19sZW5ndGgpCisKKworX2xsaW50X29wX3R5cGVv
ZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdHlw
ZW9mKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90eXBlb2ZfbGVuZ3RoKQorCisKK19sbGlu
dF9vcF9pc19vYmplY3Rfb3JfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNs
b3dQYXRoKF9zbG93X3BhdGhfaXNfb2JqZWN0X29yX251bGwpCisgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX2lzX29iamVjdF9vcl9udWxsX2xlbmd0aCkKKworX2xsaW50X29wX2lzX2Z1bmN0aW9u
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pc19m
dW5jdGlvbikKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaXNfZnVuY3Rpb25fbGVuZ3RoKQor
CisKK19sbGludF9vcF9pbl9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNs
b3dQYXRoKF9zbG93X3BhdGhfaW5fYnlfaWQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2lu
X2J5X2lkX2xlbmd0aCkKKworCitfbGxpbnRfb3BfaW5fYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9pbl9ieV92YWwpCisgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2luX2J5X3ZhbF9sZW5ndGgpCisKKworX2xsaW50X29wX3RyeV9nZXRf
YnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3RyeV9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RyeV9nZXRf
YnlfaWRfbGVuZ3RoKQorCisKK19sbGludF9vcF9kZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2RlbF9ieV9pZCkKKyAgICBk
aXNwYXRjaChjb25zdGV4cHIgb3BfZGVsX2J5X2lkX2xlbmd0aCkKKworCitfbGxpbnRfb3BfZGVs
X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfZGVsX2J5X3Zh
bF9sZW5ndGgpCisKKworX2xsaW50X29wX3B1dF9nZXR0ZXJfYnlfaWQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlf
aWQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3B1dF9nZXR0ZXJfYnlfaWRfbGVuZ3RoKQor
CisKK19sbGludF9vcF9wdXRfc2V0dGVyX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfc2V0dGVyX2J5X2lkKQorICAgIGRp
c3BhdGNoKGNvbnN0ZXhwciBvcF9wdXRfc2V0dGVyX2J5X2lkX2xlbmd0aCkKKworCitfbGxpbnRf
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQorICAg
IGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZF9sZW5ndGgpCisK
IAorX2xsaW50X29wX3B1dF9nZXR0ZXJfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2V0dGVyX2J5X3ZhbCkKKyAgICBk
aXNwYXRjaChjb25zdGV4cHIgb3BfcHV0X2dldHRlcl9ieV92YWxfbGVuZ3RoKQogCi1sbGludEp1
bXBUcnVlT3JGYWxzZU9wKAotICAgIGp0cnVlLCBPcEp0cnVlLAotICAgIG1hY3JvICh2YWx1ZSwg
dGFyZ2V0KSBidGlueiB2YWx1ZSwgMSwgdGFyZ2V0IGVuZCkKIAorX2xsaW50X29wX3B1dF9zZXR0
ZXJfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfc2V0dGVyX2J5X3ZhbCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3Bf
cHV0X3NldHRlcl9ieV92YWxfbGVuZ3RoKQogCi1sbGludEp1bXBUcnVlT3JGYWxzZU9wKAotICAg
IGpmYWxzZSwgT3BKZmFsc2UsCi0gICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUs
IDEsIHRhcmdldCBlbmQpCiAKK19sbGludF9vcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZGVmaW5lX2RhdGFf
cHJvcGVydHkpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5
X2xlbmd0aCkKIAotY29tcGFyZUp1bXBPcCgKLSAgICBqbGVzcywgT3BKbGVzcywKLSAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKLSAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCkKIAorX2xsaW50X29wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3Bl
cnR5KQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHlf
bGVuZ3RoKQogCi1jb21wYXJlSnVtcE9wKAotICAgIGpubGVzcywgT3BKbmxlc3MsCi0gICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
LSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQpCiAKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
anVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFs
dWUsIDEsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfanRydWUpCiAKLWNv
bXBhcmVKdW1wT3AoCi0gICAgamdyZWF0ZXIsIE9wSmdyZWF0ZXIsCi0gICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCi0gICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCiAKK19s
bGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxz
ZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIDEsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfamZhbHNlKQogCi1jb21wYXJlSnVtcE9wKAot
ICAgIGpuZ3JlYXRlciwgT3BKbmdyZWF0ZXIsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKLSAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCiAKK19sbGludF9v
cF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZUp1bXAoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qbGVzcykKIAotY29tcGFyZUp1
bXBPcCgKLSAgICBqbGVzc2VxLCBPcEpsZXNzZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKLSAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQogCitfbGxpbnRf
b3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlSnVtcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2pubGVzcykKIAot
Y29tcGFyZUp1bXBPcCgKLSAgICBqbmxlc3NlcSwgT3BKbmxlc3NlcSwKLSAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKLSAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQog
CitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmVK
dW1wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3Qg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfamdyZWF0
ZXIpCiAKLWNvbXBhcmVKdW1wT3AoCi0gICAgamdyZWF0ZXJlcSwgT3BKZ3JlYXRlcmVxLAotICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCkKIAorX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY29tcGFyZUp1bXAoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
aWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X3Nsb3dfcGF0aF9qbmdyZWF0ZXIpCiAKLWNvbXBhcmVKdW1wT3AoCi0gICAgam5ncmVhdGVy
ZXEsIE9wSm5ncmVhdGVyZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCkKIAorX2xsaW50X29wX2psZXNzZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmVKdW1wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2psZXNzZXEpCiAKLWVxdWFsaXR5SnVtcE9w
KAotICAgIGplcSwgT3BKZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZXEg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCiAKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZUp1bXAoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBfbGxpbnRfc2xvd19wYXRoX2pubGVzc2VxKQogCi1lcXVhbGl0eUp1bXBPcCgKLSAgICBq
bmVxLCBPcEpuZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbmVxIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kKQogCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZUp1bXAoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9zbG93X3BhdGhfamdyZWF0ZXJlcSkKIAotY29tcGFyZVVuc2lnbmVkSnVtcE9w
KAotICAgIGpiZWxvdywgT3BKYmVsb3csCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpYiBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCkKIAorX2xsaW50X29wX2puZ3JlYXRlcmVxOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlSnVtcCgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfam5ncmVhdGVyZXEpCiAKLWNvbXBhcmVVbnNp
Z25lZEp1bXBPcCgKLSAgICBqYmVsb3dlcSwgT3BKYmVsb3dlcSwKLSAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmliZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCiAKK19sbGludF9v
cF9qZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsaXR5SnVtcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9zbG93X3BhdGhfamVxKQogCi1wcmVPcChpbmMsIE9wSW5jLAotICAg
IG1hY3JvICh2YWx1ZSwgc2xvdykgYmFkZGlvIDEsIHZhbHVlLCBzbG93IGVuZCkKIAorX2xsaW50
X29wX2puZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsaXR5SnVtcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbmVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2puZXEpCiAKLXByZU9wKGRlYywgT3BEZWMs
Ci0gICAgbWFjcm8gKHZhbHVlLCBzbG93KSBic3ViaW8gMSwgdmFsdWUsIHNsb3cgZW5kKQogCitf
bGxpbnRfb3BfamJlbG93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlVW5zaWdu
ZWRKdW1wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmliIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kKQogCi1sbGludE9wKG9wX2xvb3BfaGludCwgT3BMb29wSGludCwgbWFj
cm8gKHVudXNlZCwgdW51c2VkLCBkaXNwYXRjaCkKKworX2xsaW50X29wX2piZWxvd2VxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlVW5zaWduZWRKdW1wKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmliZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCisK
KworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckxvb3AoKQotICAgIGRpc3BhdGNoKCkKLWVuZCkKKyAgICBkaXNwYXRjaChj
b25zdGV4cHIgb3BfbG9vcF9oaW50X2xlbmd0aCkKIAogCi1sbGludE9wKG9wX2NoZWNrX3RyYXBz
LCBPcENoZWNrVHJhcHMsIG1hY3JvICh1bnVzZWQsIHVudXNlZCwgZGlzcGF0Y2gpCitfbGxpbnRf
b3BfY2hlY2tfdHJhcHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW3QxXSwgdDEKICAg
ICB1bnBvaXNvbihfZ19Db2RlQmxvY2tQb2lzb24sIHQxLCB0MikKICAgICBsb2FkYiBWTTo6bV90
cmFwcytWTVRyYXBzOjptX25lZWRUcmFwSGFuZGxpbmdbdDFdLCB0MAogICAgIGJ0cG56IHQwLCAu
aGFuZGxlVHJhcHMKIC5hZnRlckhhbmRsaW5nVHJhcHM6Ci0gICAgZGlzcGF0Y2goKQorICAgIGRp
c3BhdGNoKGNvbnN0ZXhwciBvcF9jaGVja190cmFwc19sZW5ndGgpCiAuaGFuZGxlVHJhcHM6CiAg
ICAgY2FsbFRyYXBIYW5kbGVyKC50aHJvd0hhbmRsZXIpCiAgICAgam1wIC5hZnRlckhhbmRsaW5n
VHJhcHMKIC50aHJvd0hhbmRsZXI6CiAgICAgam1wIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0
aF90cmFtcG9saW5lCi1lbmQpCiAKIAogIyBSZXR1cm5zIHRoZSBwYWNrZXQgcG9pbnRlciBpbiB0
MC4KQEAgLTE2OTAsMzQgKzE3MTgsNjQgQEAgbWFjcm8gYWNxdWlyZVNoYWRvd0NoaWNrZW5QYWNr
ZXQoc2xvdykKIGVuZAogCiAKLWxsaW50T3Aob3Bfbm9wLCBPcE5vcCwgbWFjcm8gKHVudXNlZCwg
dW51c2VkLCBkaXNwYXRjaCkKLSAgICBkaXNwYXRjaCgpCi1lbmQpCitfbGxpbnRfb3Bfbm9wOgor
ICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9ub3BfbGVuZ3RoKQogCiAKLSMgd2UgY2FuJ3QgdXNl
IGNhbGxPcCBiZWNhdXNlIHdlIGNhbid0IHBhc3MgYGNhbGxgIGFzIHRoZSBvcGNvZGUgbmFtZSwg
c2luY2UgaXQncyBhbiBpbnN0cnVjdGlvbiBuYW1lCi1jb21tb25DYWxsT3Aob3BfY2FsbCwgX2xs
aW50X3Nsb3dfcGF0aF9jYWxsLCBPcENhbGwsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgbWFjcm8g
KGdldHUsIG1ldGFkYXRhKQotICAgIGFycmF5UHJvZmlsZUZvckNhbGwoT3BDYWxsLCBnZXR1KQot
ZW5kKQorX2xsaW50X29wX3N1cGVyX3NhbXBsZXJfYmVnaW46CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfc3VwZXJfc2FtcGxlcl9iZWdpbikKKyAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3Bfc3VwZXJfc2FtcGxlcl9iZWdpbl9sZW5ndGgpCiAKIAotbWFjcm8gY2FsbE9wKG5hbWUs
IG9wLCBwcmVwYXJlQ2FsbCwgZm4pCi0gICAgY29tbW9uQ2FsbE9wKG9wXyVuYW1lJSwgX2xsaW50
X3Nsb3dfcGF0aF8lbmFtZSUsIG9wLCBwcmVwYXJlQ2FsbCwgZm4pCi1lbmQKK19sbGludF9vcF9z
dXBlcl9zYW1wbGVyX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfc3VwZXJfc2FtcGxlcl9lbmQpCisgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX3N1cGVyX3NhbXBsZXJfZW5kX2xlbmd0aCkKIAogCi1jYWxsT3AodGFpbF9jYWxsLCBP
cFRhaWxDYWxsLCBwcmVwYXJlRm9yVGFpbENhbGwsIG1hY3JvIChnZXR1LCBtZXRhZGF0YSkKLSAg
ICBhcnJheVByb2ZpbGVGb3JDYWxsKE9wVGFpbENhbGwsIGdldHUpCi0gICAgY2hlY2tTd2l0Y2hU
b0pJVEZvckVwaWxvZ3VlKCkKLSAgICAjIHJlbG9hZCBtZXRhZGF0YSBzaW5jZSBjaGVja1N3aXRj
aFRvSklURm9yRXBpbG9ndWUoKSBtaWdodCBoYXZlIHRyYXNoZWQgdDUKLSAgICBtZXRhZGF0YSh0
NSwgdDApCi1lbmQpCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfc3dpdGNoX3N0cmluZykKKyAg
ICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkK
KyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbmV3X2Z1bmNfZXhwX2xlbmd0aCkKKworX2xsaW50
X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHBfbGVuZ3RoKQogCitf
bGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCisgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX25ld19hc3luY19mdW5jX2V4cF9sZW5ndGgpCiAKLWNhbGxPcChj
b25zdHJ1Y3QsIE9wQ29uc3RydWN0LCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIG1hY3JvIChnZXR1
LCBtZXRhZGF0YSkgZW5kKQogCitfbGxpbnRfb3Bfc2V0X2Z1bmN0aW9uX25hbWU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3NldF9mdW5j
dGlvbl9uYW1lKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9zZXRfZnVuY3Rpb25fbmFtZV9s
ZW5ndGgpCiAKLW1hY3JvIGRvQ2FsbFZhcmFyZ3Moc2l6ZSwgb3AsIGRpc3BhdGNoLCBmcmFtZVNs
b3dQYXRoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYXJyYXlQcm9maWxlRm9yQ2FsbCgpCisgICAgZG9DYWxsKF9sbGlu
dF9zbG93X3BhdGhfY2FsbCwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQorCitfbGxpbnRfb3BfdGFp
bF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBhcnJheVByb2ZpbGVGb3JDYWxsKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGRvQ2FsbChfbGxpbnRfc2xv
d19wYXRoX2NhbGwsIHByZXBhcmVGb3JUYWlsQ2FsbCkKKworX2xsaW50X29wX2NvbnN0cnVjdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9zbG93X3BhdGhfY29uc3Ry
dWN0LCBwcmVwYXJlRm9yUmVndWxhckNhbGwpCisKK21hY3JvIGRvQ2FsbFZhcmFyZ3MoZnJhbWVT
bG93UGF0aCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGNhbGxTbG93UGF0aChmcmFtZVNs
b3dQYXRoKQogICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0
aF90cmFtcG9saW5lKQogICAgICMgY2FsbGVlRnJhbWUgaW4gcjEKQEAgLTE3MzIsMTM0ICsxNzkw
LDIyOCBAQCBtYWNybyBkb0NhbGxWYXJhcmdzKHNpemUsIG9wLCBkaXNwYXRjaCwgZnJhbWVTbG93
UGF0aCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgICAgICAgICAgc3VicCByMSwgQ2FsbGVy
RnJhbWVBbmRQQ1NpemUsIHNwCiAgICAgICAgIGVuZAogICAgIGVuZAotICAgIHNsb3dQYXRoRm9y
Q2FsbChzaXplLCBvcCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBzbG93
UGF0aEZvckNhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogZW5kCiAKK19sbGludF9vcF9jYWxs
X3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbFZhcmFyZ3MoX2xsaW50
X3Nsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJhcmdzLCBfbGxpbnRfc2xvd19wYXRoX2NhbGxf
dmFyYXJncywgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCi1sbGludE9wKG9wX2NhbGxfdmFyYXJn
cywgT3BDYWxsVmFyYXJncywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAgZG9DYWxs
VmFyYXJncyhzaXplLCBPcENhbGxWYXJhcmdzLCBkaXNwYXRjaCwgX2xsaW50X3Nsb3dfcGF0aF9z
aXplX2ZyYW1lX2Zvcl92YXJhcmdzLCBfbGxpbnRfc2xvd19wYXRoX2NhbGxfdmFyYXJncywgcHJl
cGFyZUZvclJlZ3VsYXJDYWxsKQotZW5kKQotCi1sbGludE9wKG9wX3RhaWxfY2FsbF92YXJhcmdz
LCBPcFRhaWxDYWxsVmFyYXJncywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCitfbGxpbnRf
b3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dp
dGNoVG9KSVRGb3JFcGlsb2d1ZSgpCiAgICAgIyBXZSBsaWUgYW5kIHBlcmZvcm0gdGhlIHRhaWwg
Y2FsbCBpbnN0ZWFkIG9mIHByZXBhcmluZyBpdCBzaW5jZSB3ZSBjYW4ndAogICAgICMgcHJlcGFy
ZSB0aGUgZnJhbWUgZm9yIGEgY2FsbCBvcGNvZGUKLSAgICBkb0NhbGxWYXJhcmdzKHNpemUsIE9w
VGFpbENhbGxWYXJhcmdzLCBkaXNwYXRjaCwgX2xsaW50X3Nsb3dfcGF0aF9zaXplX2ZyYW1lX2Zv
cl92YXJhcmdzLCBfbGxpbnRfc2xvd19wYXRoX3RhaWxfY2FsbF92YXJhcmdzLCBwcmVwYXJlRm9y
VGFpbENhbGwpCi1lbmQpCisgICAgZG9DYWxsVmFyYXJncyhfbGxpbnRfc2xvd19wYXRoX3NpemVf
ZnJhbWVfZm9yX3ZhcmFyZ3MsIF9sbGludF9zbG93X3BhdGhfY2FsbF92YXJhcmdzLCBwcmVwYXJl
Rm9yVGFpbENhbGwpCiAKIAotbGxpbnRPcChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMs
IE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkK
K19sbGludF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCiAgICAgIyBXZSBsaWUgYW5k
IHBlcmZvcm0gdGhlIHRhaWwgY2FsbCBpbnN0ZWFkIG9mIHByZXBhcmluZyBpdCBzaW5jZSB3ZSBj
YW4ndAogICAgICMgcHJlcGFyZSB0aGUgZnJhbWUgZm9yIGEgY2FsbCBvcGNvZGUKLSAgICBkb0Nh
bGxWYXJhcmdzKHNpemUsIE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzLCBkaXNwYXRjaCwgX2xs
aW50X3Nsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl9mb3J3YXJkX2FyZ3VtZW50cywgX2xsaW50X3Ns
b3dfcGF0aF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsIHByZXBhcmVGb3JUYWlsQ2FsbCkK
LWVuZCkKKyAgICBkb0NhbGxWYXJhcmdzKF9sbGludF9zbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3Jf
Zm9yd2FyZF9hcmd1bWVudHMsIF9sbGludF9zbG93X3BhdGhfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzLCBwcmVwYXJlRm9yVGFpbENhbGwpCiAKIAotbGxpbnRPcChvcF9jb25zdHJ1Y3RfdmFy
YXJncywgT3BDb25zdHJ1Y3RWYXJhcmdzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAg
ICBkb0NhbGxWYXJhcmdzKHNpemUsIE9wQ29uc3RydWN0VmFyYXJncywgZGlzcGF0Y2gsIF9sbGlu
dF9zbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncywgX2xsaW50X3Nsb3dfcGF0aF9jb25z
dHJ1Y3RfdmFyYXJncywgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQotZW5kKQorX2xsaW50X29wX2Nv
bnN0cnVjdF92YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGxWYXJhcmdz
KF9sbGludF9zbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJncywgX2xsaW50X3Nsb3dfcGF0
aF9jb25zdHJ1Y3RfdmFyYXJncywgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQogCiAKLSMgRXZhbCBp
cyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgotIwotIyAxKSBXZSBmaW5kIHRoYXQgd2Un
cmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQotIyAgICBleGVjdXRp
b24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBzbG93X3BhdGgsIGFuZCBpdAotIyAg
ICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1
cm4gdmFsdWUKLSMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KLSMKLSMgMikgV2UgZmluZCB0
aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90Ci0j
ICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIHNsb3dfcGF0aCByZXR1cm5zIHRoZSBQQyBvZiB0
aGUgdGhpbmcgdG8KLSMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCi0jCi0jIFRoaXMgYWxsb3dz
IHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgot
IyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2Vk
IGludG8gdHdvCi0jIHJlZ2lzdGVycyAoQyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0byB0d28g
cmVnaXN0ZXJzLCBlYXNpbHkpOgotIwotIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlz
IG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAotIyAgIGJ5IHRoZSBzbG93X3BhdGgs
IGJ1dCB0aGUgY29udmVudGlvbiBpcyB0aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90Ci0jICAg
dG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxl
ZSBzYXZlLgotIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRl
ciBzbyB3ZSBzdGljayB3aXRoIGl0LgotIwotIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgc2xvd19w
YXRoIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCi0jICAgdGhlIHJldHVy
biB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMK
LSMgICB0byBjYWxsLgotIwotIyAtIEVpdGhlcjoKLSMgICAtIFRoZSBKUyByZXR1cm4gdmFsdWUg
KHR3byByZWdpc3RlcnMpLCBvcgotIwotIyAgIC0gVGhlIFBDIHRvIGNhbGwuCi0jCi0jIEl0IHR1
cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUg
Y2ZyCi0jIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5r
IHRoYXQganVzdAotIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVk
LgotCiBfbGxpbnRfb3BfY2FsbF9ldmFsOgotICAgIHNsb3dQYXRoRm9yQ2FsbCgKLSAgICAgICAg
bmFycm93LAotICAgICAgICBPcENhbGxFdmFsLAotICAgICAgICBtYWNybyAoKSBkaXNwYXRjaE9w
KG5hcnJvdywgb3BfY2FsbF9ldmFsKSBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfY2Fs
bF9ldmFsLAotICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwpCi0KLV9sbGludF9vcF9jYWxs
X2V2YWxfd2lkZToKLSAgICBzbG93UGF0aEZvckNhbGwoCi0gICAgICAgIHdpZGUsCi0gICAgICAg
IE9wQ2FsbEV2YWwsCi0gICAgICAgIG1hY3JvICgpIGRpc3BhdGNoT3Aod2lkZSwgb3BfY2FsbF9l
dmFsKSBlbmQsCi0gICAgICAgIF9sbGludF9zbG93X3BhdGhfY2FsbF9ldmFsX3dpZGUsCi0gICAg
ICAgIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCkKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgCisg
ICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGluIG9uZSBvZiB0d28gbW9kZXM6CisgICAgIworICAgICMg
MSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJlYWxseSBpbnZva2luZyBldmFsKCkgaW4gd2hpY2ggY2Fz
ZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlvbiBpcyBwZXJmb21lZCBlbnRpcmVseSBpbnNpZGUgdGhl
IHNsb3dfcGF0aCwgYW5kIGl0CisgICAgIyAgICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9u
IHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1cm4gdmFsdWUKKyAgICAjICAgIHRoYXQgdGhlIGV2
YWwgcmV0dXJuZWQuCisgICAgIworICAgICMgMikgV2UgZmluZCB0aGF0IHdlJ3JlIGludm9raW5n
IHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90CisgICAgIyAgICB0aGUgcmVhbCBl
dmFsLiBUaGVuIHRoZSBzbG93X3BhdGggcmV0dXJucyB0aGUgUEMgb2YgdGhlIHRoaW5nIHRvCisg
ICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4KKyAgICAjCisgICAgIyBUaGlzIGFsbG93cyB1
cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3b3VsZCByZXF1aXJlIGEgdG90YWwgb2YKKyAg
ICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRlIHRoYXQgY2Fubm90IGJlIGVhc2lseSBwYWNr
ZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAoQyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0
byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAgICMKKyAgICAjIC0gVGhlIGNhbGwgZnJhbWUg
cmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgIyAg
IGJ5IHRoZSBzbG93X3BhdGgsIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0aGF0IGl0IHJldHVybnMg
aXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xlYXIgaWYgdGhhdCdzIG5lY2Vzc2FyeSwg
c2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAgICAjICAgQnV0IHRoYXQncyBvdXIgc3R5
bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdlIHN0aWNrIHdpdGggaXQuCisgICAgIwor
ICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIHNsb3dfcGF0aCBzdWNjZXNzZnVsbHkgZXhlY3V0
ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0dXJuIHZhbHVlLCBvciBkaWQgbm90
IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1cworICAgICMgICB0byBjYWxsLgor
ICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRoZSBKUyByZXR1cm4gdmFsdWUgKHR3
byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBUaGUgUEMgdG8gY2FsbC4KKyAgICAj
CisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRvIGp1c3QgYWx3YXlzIGhhdmUgdGhp
cyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8gY2FsbCwgYW5kIHRoYXQgUEMgbWF5
IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0
aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNsb3dQYXRoRm9yQ2FsbChfbGxpbnRf
c2xvd19wYXRoX2NhbGxfZXZhbCwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsKQorCiAKIF9sbGludF9n
ZW5lcmljX3JldHVybl9wb2ludDoKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChuYXJyb3csIE9wQ2Fs
bEV2YWwsIG1hY3JvICgpCi0gICAgICAgIGRpc3BhdGNoT3AobmFycm93LCBvcF9jYWxsX2V2YWwp
Ci0gICAgZW5kKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3Bfc3RyY2F0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9zdHJj
YXQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3N0cmNhdF9sZW5ndGgpCisKIAotX2xsaW50
X2dlbmVyaWNfcmV0dXJuX3BvaW50X3dpZGU6Ci0gICAgZGlzcGF0Y2hBZnRlckNhbGwod2lkZSwg
T3BDYWxsRXZhbCwgbWFjcm8oKQotICAgICAgICBkaXNwYXRjaE9wKHdpZGUsIG9wX2NhbGxfZXZh
bCkKLSAgICBlbmQpCitfbGxpbnRfb3BfcHVzaF93aXRoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX3B1c2hfd2l0aF9zY29wZV9sZW5ndGgpCiAKLWxsaW50T3Ao
b3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlLCBPcElkZW50aXR5V2l0aFByb2ZpbGUsIG1hY3JvICh1
bnVzZWQsIHVudXNlZCwgZGlzcGF0Y2gpCi0gICAgZGlzcGF0Y2goKQotZW5kKQogCitfbGxpbnRf
b3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNw
YXRjaChjb25zdGV4cHIgb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlX2xlbmd0aCkKIAotbGxpbnRP
cChvcF95aWVsZCwgT3BZaWVsZCwgbWFjcm8gKHVudXNlZCwgdW51c2VkLCB1bnVzZWQpCisKK19s
bGludF9vcF91bnJlYWNoYWJsZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfdW5yZWFjaGFibGUpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3Vu
cmVhY2hhYmxlX2xlbmd0aCkKKworCitfbGxpbnRfb3BfeWllbGQ6CiAgICAgbm90U3VwcG9ydGVk
KCkKLWVuZCkKIAogCi1sbGludE9wKG9wX2RlYnVnLCBPcERlYnVnLCBtYWNybyAodW51c2VkLCB1
bnVzZWQsIGRpc3BhdGNoKQorX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnRfbGVuZ3RoKQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdGhyb3cpCisg
ICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3Rocm93X2xlbmd0aCkKKworCitfbGxpbnRfb3BfdGhy
b3dfc3RhdGljX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgo
X3Nsb3dfcGF0aF90aHJvd19zdGF0aWNfZXJyb3IpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9w
X3Rocm93X3N0YXRpY19lcnJvcl9sZW5ndGgpCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkaSBD
b2RlQmxvY2s6Om1fZGVidWdnZXJSZXF1ZXN0c1t0MF0sIHQwCiAgICAgYnRpeiB0MCwgLm9wRGVi
dWdEb25lCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVidWcpCiAub3BEZWJ1
Z0RvbmU6ICAgICAgICAgICAgICAgICAgICAKLSAgICBkaXNwYXRjaCgpCi1lbmQpCisgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX2RlYnVnX2xlbmd0aCkKIAogCi1vcChsbGludF9uYXRpdmVfY2Fs
bF90cmFtcG9saW5lLCBtYWNybyAoKQorX2xsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmU6CiAg
ICAgbmF0aXZlQ2FsbFRyYW1wb2xpbmUoTmF0aXZlRXhlY3V0YWJsZTo6bV9mdW5jdGlvbikKLWVu
ZCkKIAogCi1vcChsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICgpCitf
bGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lOgogICAgIG5hdGl2ZUNhbGxUcmFtcG9s
aW5lKE5hdGl2ZUV4ZWN1dGFibGU6Om1fY29uc3RydWN0b3IpCi1lbmQpCiAKIAotb3AobGxpbnRf
aW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCBtYWNybyAoKQorX2xsaW50X2ludGVy
bmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGluZToKICAgICBpbnRlcm5hbEZ1bmN0aW9uQ2FsbFRy
YW1wb2xpbmUoSW50ZXJuYWxGdW5jdGlvbjo6bV9mdW5jdGlvbkZvckNhbGwpCi1lbmQpCiAKIAot
b3AobGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICgp
CitfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmU6CiAgICAgaW50
ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKEludGVybmFsRnVuY3Rpb246Om1fZnVuY3Rpb25G
b3JDb25zdHJ1Y3QpCi1lbmQpCiAKIAorX2xsaW50X29wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZ2V0X2Vu
dW1lcmFibGVfbGVuZ3RoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfZW51bWVyYWJs
ZV9sZW5ndGhfbGVuZ3RoKQorCitfbGxpbnRfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2hhc19pbmRleGVk
X3Byb3BlcnR5KQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0
eV9sZW5ndGgpCisKK19sbGludF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9oYXNfc3RydWN0dXJlX3By
b3BlcnR5KQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5
X2xlbmd0aCkKKworX2xsaW50X29wX2hhc19nZW5lcmljX3Byb3BlcnR5OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9oYXNfZ2VuZXJpY19wcm9wZXJ0
eSkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaGFzX2dlbmVyaWNfcHJvcGVydHlfbGVuZ3Ro
KQorCitfbGxpbnRfb3BfZ2V0X2RpcmVjdF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZ2V0X2RpcmVjdF9wbmFtZSkKKyAgICBkaXNwYXRj
aChjb25zdGV4cHIgb3BfZ2V0X2RpcmVjdF9wbmFtZV9sZW5ndGgpCisKK19sbGludF9vcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpCisgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yX2xlbmd0aCkKKworX2xsaW50X29wX2Vu
dW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
U2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXh0X3N0cnVjdHVyZV9lbnVtZXJhdG9yX3BuYW1lKQorICAg
IGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZV9sZW5ndGgp
CisKK19sbGludF9vcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25leHRfZ2VuZXJpY19lbnVtZXJhdG9y
X3BuYW1lKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5h
bWVfbGVuZ3RoKQorCitfbGxpbnRfb3BfdG9faW5kZXhfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX2luZGV4X3N0cmluZ19sZW5ndGgpCisKK19sbGludF9v
cF9jcmVhdGVfcmVzdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfY3JlYXRlX3Jlc3QpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NyZWF0ZV9y
ZXN0X2xlbmd0aCkKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2luc3RhbmNlb2YpCisgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX2luc3RhbmNlb2ZfbGVuZ3RoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpc19sZW5ndGgpCisKK19sbGludF9vcF9nZXRfYnlfdmFsX3dpdGhf
dGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
Z2V0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9ieV92
YWxfd2l0aF90aGlzX2xlbmd0aCkKKworX2xsaW50X29wX3B1dF9ieV9pZF93aXRoX3RoaXM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3B1dF9ieV9p
ZF93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3B1dF9ieV9pZF93aXRoX3Ro
aXNfbGVuZ3RoKQorCitfbGxpbnRfb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90
aGlzKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpc19sZW5n
dGgpCisKK19sbGludF9vcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5f
ZXZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
cmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwpCisgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9l
dmFsX2xlbmd0aCkKKwogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4g
dGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hv
dWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0
CiAjIGFzIG11Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggY2ViZmU4YjFiZThhYTEwOTk4ZTdkYTE0MWYxMDhhMTg0
MmNmOWI1MS4uZmJmNTA3NTIyNTJjMTk3Y2YyYWUyMmViYzQzY2Y5NGI0NDdiNjQzYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cApAQCAtMTA4LDIwICsxMDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzo6TExJbnQ7CiAKICNk
ZWZpbmUgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgbGFiZWw6IFVTRV9MQUJFTChs
YWJlbCk7CiAKLSNpZiBFTkFCTEUoTEFCRUxfVFJBQ0lORykKLSNkZWZpbmUgVFJBQ0VfTEFCRUwo
cHJlZml4LCBsYWJlbCkgZGF0YUxvZygjcHJlZml4LCAiOiAiLCAjbGFiZWwsICJcbiIpCi0jZWxz
ZQotI2RlZmluZSBUUkFDRV9MQUJFTChwcmVmaXgsIGxhYmVsKSBkbyB7IH0gd2hpbGUgKGZhbHNl
KTsKLSNlbmRpZgotCi0KICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQotI2RlZmlu
ZSBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGxhYmVsKSBsYWJlbDogVFJBQ0VfTEFCRUwoIk9GRkxJ
TkVfQVNNX0dMVUVfTEFCRUwiLCBsYWJlbCk7IFVTRV9MQUJFTChsYWJlbCk7CisjZGVmaW5lIE9G
RkxJTkVfQVNNX0dMVUVfTEFCRUwobGFiZWwpICBsYWJlbDogVVNFX0xBQkVMKGxhYmVsKTsKICNl
bHNlCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwobGFiZWwpICBjYXNlIGxhYmVsOiBs
YWJlbDogVVNFX0xBQkVMKGxhYmVsKTsKICNlbmRpZgogCi0jZGVmaW5lIE9GRkxJTkVfQVNNX0xP
Q0FMX0xBQkVMKGxhYmVsKSBsYWJlbDogVFJBQ0VfTEFCRUwoIk9GRkxJTkVfQVNNX0xPQ0FMX0xB
QkVMIiwgI2xhYmVsKTsgVVNFX0xBQkVMKGxhYmVsKTsKKyNkZWZpbmUgT0ZGTElORV9BU01fTE9D
QUxfTEFCRUwobGFiZWwpIGxhYmVsOiBVU0VfTEFCRUwobGFiZWwpOwogCiAKIC8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpAQCAtMjMyLDEwICsyMjUsOSBAQCBzdHJ1Y3QgQ0xvb3BSZWdpc3RlciB7CiAg
ICAgICAgIGludHB0cl90KiBpcDsKICAgICAgICAgaW50OF90KiBpOHA7CiAgICAgICAgIHZvaWQq
IHZwOwotICAgICAgICBjb25zdCB2b2lkKiBjdnA7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lOwogICAgICAgICBFeGVjU3RhdGUqIGV4ZWNTdGF0ZTsKLSAgICAgICAgY29uc3Qgdm9pZCog
aW5zdHJ1Y3Rpb247CisgICAgICAgIHZvaWQqIGluc3RydWN0aW9uOwogICAgICAgICBWTSogdm07
CiAgICAgICAgIEpTQ2VsbCogY2VsbDsKICAgICAgICAgUHJvdG9DYWxsRnJhbWUqIHByb3RvQ2Fs
bEZyYW1lOwpAQCAtMjUwLDcgKzI0Miw3IEBAIHN0cnVjdCBDTG9vcFJlZ2lzdGVyIHsKICAgICB9
OwogCiAgICAgb3BlcmF0b3IgRXhlY1N0YXRlKigpIHsgcmV0dXJuIGV4ZWNTdGF0ZTsgfQotICAg
IG9wZXJhdG9yIGNvbnN0IEluc3RydWN0aW9uKigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgSW5zdHJ1Y3Rpb24qPihpbnN0cnVjdGlvbik7IH0KKyAgICBvcGVyYXRvciBJbnN0cnVj
dGlvbiooKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uKj4oaW5zdHJ1Y3Rp
b24pOyB9CiAgICAgb3BlcmF0b3IgVk0qKCkgeyByZXR1cm4gdm07IH0KICAgICBvcGVyYXRvciBQ
cm90b0NhbGxGcmFtZSooKSB7IHJldHVybiBwcm90b0NhbGxGcmFtZTsgfQogICAgIG9wZXJhdG9y
IFJlZ2lzdGVyKigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPih2cCk7IH0K
QEAgLTI3OCwzOCArMjcwLDI2IEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50
cnlPcGNvZGVJRCwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MsIFZNKiB2bSwKICAgICAvLyBpcyBv
bmx5IGNhbGxlZCBvbmNlIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFZNIGJlZm9y
ZSB0aHJlYWRzCiAgICAgLy8gYXJlIGF0IHBsYXkuCiAgICAgaWYgKFVOTElLRUxZKGlzSW5pdGlh
bGl6YXRpb25QYXNzKSkgewotICAgICAgICBPcGNvZGUqIG9wY29kZU1hcCA9IExMSW50OjpvcGNv
ZGVNYXAoKTsKLSAgICAgICAgT3Bjb2RlKiBvcGNvZGVNYXBXaWRlID0gTExJbnQ6Om9wY29kZU1h
cFdpZGUoKTsKLQogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgICAgIE9w
Y29kZSogb3Bjb2RlTWFwID0gTExJbnQ6Om9wY29kZU1hcCgpOwogICAgICAgICAjZGVmaW5lIE9Q
Q09ERV9FTlRSWShfX29wY29kZSwgbGVuZ3RoKSBcCi0gICAgICAgICAgICBvcGNvZGVNYXBbX19v
cGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmJl9fb3Bjb2RlKTsgXAotICAgICAgICAgICAg
b3Bjb2RlTWFwV2lkZVtfX29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCYmX19vcGNvZGUj
I193aWRlKTsKKyAgICAgICAgICAgIG9wY29kZU1hcFtfX29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCYmX19vcGNvZGUpOworICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VO
VFJZKQorICAgICAgICAjdW5kZWYgT1BDT0RFX0VOVFJZCiAKICAgICAgICAgI2RlZmluZSBMTElO
VF9PUENPREVfRU5UUlkoX19vcGNvZGUsIGxlbmd0aCkgXAogICAgICAgICAgICAgb3Bjb2RlTWFw
W19fb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJiZfX29wY29kZSk7Ci0jZWxzZQotICAg
ICAgICAvLyBGSVhNRTogdGhpcyBtYXBwaW5nIGlzIHVubmVjZXNzYXJpbHkgZXhwZW5zaXZlIGlu
IHRoZSBhYnNlbmNlIG9mIENPTVBVVEVEX0dPVE8KLSAgICAgICAgLy8gICBuYXJyb3cgb3Bjb2Rl
cyBkb24ndCBuZWVkIGFueSBtYXBwaW5nIGFuZCB3aWRlIG9wY29kZXMganVzdCBuZWVkIHRvIGFk
ZCBudW1PcGNvZGVJRHMKLSAgICAgICAgI2RlZmluZSBPUENPREVfRU5UUlkoX19vcGNvZGUsIGxl
bmd0aCkgXAotICAgICAgICAgICAgb3Bjb2RlTWFwW19fb3Bjb2RlXSA9IF9fb3Bjb2RlOyBcCi0g
ICAgICAgICAgICBvcGNvZGVNYXBXaWRlW19fb3Bjb2RlXSA9IHN0YXRpY19jYXN0PE9wY29kZUlE
PihfX29wY29kZSMjX3dpZGUpOwogCi0gICAgICAgICNkZWZpbmUgTExJTlRfT1BDT0RFX0VOVFJZ
KF9fb3Bjb2RlLCBsZW5ndGgpIFwKLSAgICAgICAgICAgIG9wY29kZU1hcFtfX29wY29kZV0gPSBf
X29wY29kZTsKLSNlbmRpZgotICAgICAgICBGT1JfRUFDSF9CWVRFQ09ERV9JRChPUENPREVfRU5U
UlkpCi0gICAgICAgIEZPUl9FQUNIX0NMT09QX0JZVEVDT0RFX0hFTFBFUl9JRChMTElOVF9PUENP
REVfRU5UUlkpCiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX05BVElWRV9IRUxQRVIoTExJTlRfT1BD
T0RFX0VOVFJZKQotICAgICAgICAjdW5kZWYgT1BDT0RFX0VOVFJZCiAgICAgICAgICN1bmRlZiBM
TElOVF9PUENPREVfRU5UUlkKLQorI2VuZGlmCiAgICAgICAgIC8vIE5vdGU6IHdlIGNhbiBvbmx5
IHNldCB0aGUgZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zIGFmdGVyIHdlIGhhdmUKICAgICAgICAgLy8g
aW5pdGlhbGl6ZWQgdGhlIG9wY29kZU1hcCBhYm92ZS4gVGhpcyBpcyBiZWNhdXNlIGdldENvZGVQ
dHIoKQogICAgICAgICAvLyBjYW4gZGVwZW5kIG9uIHRoZSBvcGNvZGVNYXAuCi0gICAgICAgIHVp
bnQ4X3QqIGV4Y2VwdGlvbkluc3RydWN0aW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KExMSW50OjpleGNlcHRpb25JbnN0cnVjdGlvbnMoKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBl
eGNlcHRpb25JbnN0cnVjdGlvbnMgPSBMTEludDo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQotICAg
ICAgICAgICAgZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldID0gbGxpbnRfdGhyb3dfZnJvbV9zbG93
X3BhdGhfdHJhbXBvbGluZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51
LnBvaW50ZXIgPQorICAgICAgICAgICAgICAgIExMSW50OjpnZXRDb2RlUHRyKGxsaW50X3Rocm93
X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOwogCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgfQpAQCAtMzUyLDcgKzMzMiw2IEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2Rl
SUQgZW50cnlPcGNvZGVJRCwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MsIFZNKiB2bSwKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIENMb29wUmVnaXN0ZXIgcGNCYXNlLCB0YWdUeXBlTnVtYmVyLCB0
YWdNYXNrOwogI2VuZGlmCi0gICAgQ0xvb3BSZWdpc3RlciBtZXRhZGF0YVRhYmxlOwogICAgIENM
b29wRG91YmxlUmVnaXN0ZXIgZDAsIGQxOwogCiAgICAgc3RydWN0IFN0YWNrUG9pbnRlclNjb3Bl
IHsKQEAgLTQxOCw5ICszOTcsOSBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9wY29kZUlEIGVu
dHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0sCiAjZW5kaWYKIAog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0jZGVmaW5lIEZFVENIX09QQ09ERSgpICpwYy5pOHAKKyNk
ZWZpbmUgRkVUQ0hfT1BDT0RFKCkgcGMub3Bjb2RlCiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQot
I2RlZmluZSBGRVRDSF9PUENPREUoKSAqYml0d2lzZV9jYXN0PE9wY29kZUlEKj4ocGNCYXNlLmk4
cCArIHBjLmkpCisjZGVmaW5lIEZFVENIX09QQ09ERSgpICpiaXR3aXNlX2Nhc3Q8T3Bjb2RlKj4o
cGNCYXNlLmk4cCArIHBjLmkgKiA4KQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNkZWZp
bmUgTkVYVF9JTlNUUlVDVElPTigpIFwKQEAgLTQ1Niw3ICs0MzUsNyBAQCBKU1ZhbHVlIENMb29w
OjpleGVjdXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNz
LCBWTSogdm0sCiAKICAgICAvLyBEaXNwYXRjaCB0byB0aGUgY3VycmVudCBQQydzIGJ5dGVjb2Rl
OgogICAgIGRpc3BhdGNoT3Bjb2RlOgotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG9wY29kZSkpCisgICAgc3dpdGNoIChvcGNvZGUpCiAKICNlbmRpZiAvLyAhRU5BQkxFKENPTVBV
VEVEX0dPVE9fT1BDT0RFUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBhNDgyODFhYjcyNTYzM2Vj
ZGZlOWE3YmFlMmY2ODk3MDFlYTMyODlkLi5lYTk3MWI0NjM3NTU3YTE3YWJkMWY2YTMwNTNiYzY4
YTA5MWFlZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjMsNzAgKzIzLDI5IEBACiAKIAogIyBV
dGlsaXRpZXMKLW1hY3JvIG5leHRJbnN0cnVjdGlvbigpCi0gICAgbG9hZGIgW1BDXSwgdDAKLSAg
ICBsZWFwIF9nX29wY29kZU1hcCwgdDEKLSAgICBsb2FkcCBbdDEsIHQwLCA0XSwgdDIKLSAgICBq
bXAgdDIsIEJ5dGVjb2RlUHRyVGFnCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAg
YWR2YW5jZSAqIDQsIFBDCisgICAgam1wIFtQQ10KIGVuZAogCi1tYWNybyBuZXh0SW5zdHJ1Y3Rp
b25XaWRlKCkKLSAgICBsb2FkaSAxW1BDXSwgdDAKLSAgICBsZWFwIF9nX29wY29kZU1hcFdpZGUs
IHQxCi0gICAgbG9hZHAgW3QxLCB0MCwgNF0sIHQyCi0gICAgam1wIHQyLCBCeXRlY29kZVB0clRh
ZworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkg
MiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBbUENdCiBlbmQKIAot
bWFjcm8gZ2V0dU9wZXJhbmROYXJyb3cob3AsIGZpZWxkLCBkc3QpCi0gICAgbG9hZGIgY29uc3Rl
eHByICVvcCVfJWZpZWxkJV9pbmRleFtQQ10sIGRzdAorbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNP
ZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zm
c2V0KHQwKQogZW5kCiAKLW1hY3JvIGdldE9wZXJhbmROYXJyb3cob3AsIGZpZWxkLCBkc3QpCi0g
ICAgbG9hZGJzcCBjb25zdGV4cHIgJW9wJV8lZmllbGQlX2luZGV4W1BDXSwgZHN0Ci1lbmQKLQot
bWFjcm8gZ2V0dU9wZXJhbmRXaWRlKG9wLCBmaWVsZCwgZHN0KQotICAgIGxvYWRpIGNvbnN0ZXhw
ciAlb3AlXyVmaWVsZCVfaW5kZXggKiA0ICsgMVtQQ10sIGRzdAotZW5kCi0KLW1hY3JvIGdldE9w
ZXJhbmRXaWRlKG9wLCBmaWVsZCwgZHN0KQotICAgIGxvYWRpcyBjb25zdGV4cHIgJW9wJV8lZmll
bGQlX2luZGV4ICogNCArIDFbUENdLCBkc3QKLWVuZAotCi1tYWNybyBtYWtlUmV0dXJuKGdldCwg
ZGlzcGF0Y2gsIGZuKQotICAgIGZuKG1hY3JvKHRhZywgcGF5bG9hZCkKLSAgICAgICAgbW92ZSB0
YWcsIHQ1Ci0gICAgICAgIG1vdmUgcGF5bG9hZCwgdDMKLSAgICAgICAgZ2V0KGRzdCwgdDIpCi0g
ICAgICAgIHN0b3JlaSB0NSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCi0gICAgICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5k
KQotZW5kCi0KLW1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcCwgZ2V0LCBtZXRhZGF0YSwgZGlz
cGF0Y2gsIGZuKQotICAgIGZuKG1hY3JvICh0YWcsIHBheWxvYWQpCi0gICAgICAgIG1vdmUgdGFn
LCB0MQotICAgICAgICBtb3ZlIHBheWxvYWQsIHQwCi0KLSAgICAgICAgbWV0YWRhdGEodDUsIHQy
KQotICAgICAgICB2YWx1ZVByb2ZpbGUob3AsIHQ1LCB0MSwgdDApCi0gICAgICAgIGdldChkc3Qs
IHQyKQotICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQotICAgICAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KLSAgICAgICAgZGlzcGF0Y2goKQot
ICAgIGVuZCkKLWVuZAotCi0KLW1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wLCBkaXNw
YXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCi0gICAgZ2V0KHNpemUsIG9wLCBkc3QsIHQzKQorICAgIGxv
YWRpIDRbUENdLCB0MwogICAgIHN0b3JlaSByMSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAg
c3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgbWV0YWRhdGEoc2l6ZSwg
b3AsIHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUob3AsIHQyLCByMSwgcjApCi0gICAgZGlzcGF0
Y2goKQorICAgIHZhbHVlUHJvZmlsZShyMSwgcjAsIDQgKiAoQ2FsbE9wQ29kZVNpemUgLSAxKSwg
dDMpCisgICAgZGlzcGF0Y2goQ2FsbE9wQ29kZVNpemUpCiBlbmQKIAogbWFjcm8gY0NhbGwyKGZ1
bmN0aW9uKQpAQCAtNDQzLDc3ICs0MDIsNzMgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxv
b3AoKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gbG9hZFZhcmlhYmxlKGdldCwgb3BlcmFu
ZCwgaW5kZXgsIHRhZywgcGF5bG9hZCkKLSAgICBnZXQob3BlcmFuZCwgaW5kZXgpCittYWNybyBs
b2FkVmFyaWFibGUob3BlcmFuZCwgaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24ob3BlcmFuZCwgaW5kZXgpCiAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdLCB0YWcKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXls
b2FkCiBlbmQKIAogIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCBy
ZWdpc3RlcnMuIEluZGV4IGlzIG5vdAogIyBjaGFuZ2VkLgotbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzaXplLCBpbmRleCwgdGFnLCBwYXlsb2FkKQotICAgIHNpemUoRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXhOYXJyb3csIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4V2lkZSwgbWFj
cm8gKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KQotICAgICAgICBiaWd0ZXEgaW5kZXgsIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKLSAgICAgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKLSAgICAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XSwgcGF5bG9hZAotICAgICAgICBqbXAgLmRvbmUKLSAgICAuY29uc3RhbnQ6Ci0g
ICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCi0gICAgICAgIGxvYWRwIENvZGVC
bG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwg
cGF5bG9hZAotICAgICAgICBzdWJwIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBpbmRleAot
ICAgICAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKLSAgICAgICAg
bG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKLSAgICAuZG9u
ZToKLSAgICBlbmQpCi1lbmQKLQotbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzaXpl
LCBpbmRleCwgdGFnKQotICAgIHNpemUoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhOYXJyb3cs
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4V2lkZSwgbWFjcm8gKEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4KQotICAgICAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LCAuY29uc3RhbnQKLSAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0
YWcKLSAgICAgICAgam1wIC5kb25lCi0gICAgLmNvbnN0YW50OgotICAgICAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdGFnCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lz
dGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKLSAgICAgICAgc3VicCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgaW5kZXgKLSAgICAgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZywg
aW5kZXgsIDhdLCB0YWcKLSAgICAuZG9uZToKLSAgICBlbmQpCittYWNybyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0
IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0
byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBU
YWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZVRhZyhpbmRleCwgdGFnKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSwgdGFnCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVy
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9m
IGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAo
dmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdP
ZmZzZXRbdGFnLCBpbmRleCwgOF0sIHRhZworLmRvbmU6CiBlbmQKIAogIyBJbmRleCBhbmQgcGF5
bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCi1t
YWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzaXplLCBpbmRleCwgdGFnLCBwYXlsb2Fk
KQotICAgIHNpemUoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhOYXJyb3csIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4V2lkZSwgbWFjcm8gKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KQot
ICAgICAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3Rh
bnQKLSAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKLSAgICAgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAotICAgICAgICBqbXAg
LmRvbmUKLSAgICAuY29uc3RhbnQ6Ci0gICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcK
LSAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3RhZ10sIHRhZwotICAgICAgICBzdWJwIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LCBpbmRleAotICAgICAgICBsc2hpZnRpIDMsIGluZGV4Ci0gICAgICAgIGFkZHAgaW5kZXgs
IHRhZwotICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKLSAgICAgICAg
bG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZwotICAgIC5kb25lOgotICAgIGVuZCkKLWVuZAotCi1t
YWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShzaXplLCBpbmRleCwg
dGFnQ2hlY2ssIHBheWxvYWQpCi0gICAgc2l6ZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleE5h
cnJvdywgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhXaWRlLCBtYWNybyAoRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgpCi0gICAgICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIC5jb25zdGFudAotICAgICAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0pCi0gICAgICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxv
YWQKLSAgICAgICAgam1wIC5kb25lCi0gICAgLmNvbnN0YW50OgotICAgICAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgcGF5bG9hZAotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRS
ZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKLSAgICAgICAg
c3VicCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgaW5kZXgKLSAgICAgICAgdGFnQ2hlY2so
VGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSkKLSAgICAgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKLSAgICAuZG9uZToKLSAgICBlbmQpCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJp
Z3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3Rh
bnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBp
cyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUg
ZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAg
bHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25l
OgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGlu
ZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zm
c2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CiBlbmQKIAogIyBJbmRleCBhbmQgcGF5bG9hZCBt
dXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKQEAg
LTUyMSwyNSArNDc2LDIzIEBAIGVuZAogIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFy
aWFibGUgcmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90CiAjIGJlIGZhc3RlciB0aGFu
IGRvaW5nIGxvYWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhl
CiAjIHRhZy4KLW1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIGluZGV4
LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKLSAgICAgICAgc2l6ZSwKICAgICAgICAg
aW5kZXgsCiAgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0
ZWRUYWcsIHNsb3cgZW5kLAogICAgICAgICBwYXlsb2FkKQogZW5kCiAKLW1hY3JvIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHNpemUsIGluZGV4LCBwYXlsb2FkKQorbWFj
cm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxvYWQp
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCi0gICAgICAgIHNp
emUsCiAgICAgICAgIGluZGV4LAogICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCiAgICAg
ICAgIHBheWxvYWQpCiBlbmQKIAotbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUsIGdl
dCwgY2VsbE9wZXJhbmQpCi0gICAgZ2V0KGNlbGxPcGVyYW5kLCB0MSkKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgQ2VsbFRhZywgdDIsIC53cml0ZUJhcnJpZXJE
b25lKQorbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kKGNlbGxPcGVyYW5kKQorICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbihjZWxsT3BlcmFuZCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDEsIENlbGxUYWcsIHQyLCAud3JpdGVCYXJyaWVyRG9uZSkKICAgICBza2lw
SWZJc1JlbWVtYmVyZWRPckluRWRlbigKICAgICAgICAgdDIsIAogICAgICAgICBtYWNybygpCkBA
IC01NTUsMTggKzUwOCwxOCBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6ZSwgZ2V0
LCBjZWxsT3BlcmFuZCkKIC53cml0ZUJhcnJpZXJEb25lOgogZW5kCiAKLW1hY3JvIHdyaXRlQmFy
cmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBjZWxsT3BlcmFuZCwgdmFsdWVPcGVyYW5kKQotICAg
IGdldCh2YWx1ZU9wZXJhbmQsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcoc2l6
ZSwgdDEsIHQwKQorbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhjZWxsT3BlcmFuZCwgdmFs
dWVPcGVyYW5kKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbih2YWx1ZU9wZXJhbmQsIHQxKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcodDEsIHQwKQogICAgIGJpbmVxIHQwLCBDZWxs
VGFnLCAud3JpdGVCYXJyaWVyRG9uZQogCi0gICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUs
IGdldCwgY2VsbE9wZXJhbmQpCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kKGNlbGxPcGVyYW5k
KQogLndyaXRlQmFycmllckRvbmU6CiBlbmQKIAotbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWwo
c2l6ZSwgZ2V0LCB2YWx1ZU9wZXJhbmQsIGxvYWRIZWxwZXIpCi0gICAgZ2V0KHZhbHVlT3BlcmFu
ZCwgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzaXplLCB0MSwgdDApCittYWNy
byB3cml0ZUJhcnJpZXJPbkdsb2JhbCh2YWx1ZU9wZXJhbmQsIGxvYWRIZWxwZXIpCisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKHZhbHVlT3BlcmFuZCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVRhZyh0MSwgdDApCiAgICAgYmluZXEgdDAsIENlbGxUYWcsIC53cml0ZUJhcnJpZXJE
b25lCiAKICAgICBsb2FkSGVscGVyKHQzKQpAQCAtNTg2LDE2ICs1MzksMTYgQEAgbWFjcm8gd3Jp
dGVCYXJyaWVyT25HbG9iYWwoc2l6ZSwgZ2V0LCB2YWx1ZU9wZXJhbmQsIGxvYWRIZWxwZXIpCiAu
d3JpdGVCYXJyaWVyRG9uZToKIGVuZAogCi1tYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVj
dChzaXplLCBnZXQsIHZhbHVlT3BlcmFuZCkKLSAgICB3cml0ZUJhcnJpZXJPbkdsb2JhbChzaXpl
LCBnZXQsIHZhbHVlT3BlcmFuZCwKK21hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0KHZh
bHVlT3BlcmFuZCkKKyAgICB3cml0ZUJhcnJpZXJPbkdsb2JhbCh2YWx1ZU9wZXJhbmQsCiAgICAg
ICAgIG1hY3JvKHJlZ2lzdGVyVG9TdG9yZUdsb2JhbCkKICAgICAgICAgICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCByZWdpc3RlclRvU3RvcmVHbG9iYWwKICAgICAgICAgICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxPYmplY3RbcmVnaXN0ZXJUb1N0b3JlR2xvYmFsXSwgcmVnaXN0ZXJUb1N0
b3JlR2xvYmFsCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyB3cml0ZUJhcnJpZXJPbkdsb2Jh
bExleGljYWxFbnZpcm9ubWVudChzaXplLCBnZXQsIHZhbHVlT3BlcmFuZCkKLSAgICB3cml0ZUJh
cnJpZXJPbkdsb2JhbChzaXplLCBnZXQsIHZhbHVlT3BlcmFuZCwKK21hY3JvIHdyaXRlQmFycmll
ck9uR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHZhbHVlT3BlcmFuZCkKKyAgICB3cml0ZUJhcnJp
ZXJPbkdsb2JhbCh2YWx1ZU9wZXJhbmQsCiAgICAgICAgIG1hY3JvKHJlZ2lzdGVyVG9TdG9yZUds
b2JhbCkKICAgICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCByZWdpc3RlclRvU3RvcmVH
bG9iYWwKICAgICAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbcmVnaXN0
ZXJUb1N0b3JlR2xvYmFsXSwgcmVnaXN0ZXJUb1N0b3JlR2xvYmFsCkBAIC02MDMsOSArNTU2LDEw
IEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHNpemUsIGdl
dCwgdmFsdWVPcGVyYW5kKQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxl
KG9wLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQotICAgIHN0b3JlaSB0YWcsICVvcCU6Ok1ldGFk
YXRhOjpwcm9maWxlLm1fYnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KLSAgICBzdG9yZWkg
cGF5bG9hZCwgJW9wJTo6TWV0YWRhdGE6OnByb2ZpbGUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNl
dFttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQsIG9wZXJhbmQsIHNj
cmF0Y2gpCisgICAgbG9hZHAgb3BlcmFuZFtQQ10sIHNjcmF0Y2gKKyAgICBzdG9yZWkgdGFnLCBW
YWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtzY3JhdGNoXQorICAgIHN0b3JlaSBw
YXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbc2NyYXRjaF0K
IGVuZAogCiAKQEAgLTY1Miw4ICs2MDYsNiBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9u
ZUxhYmVsLCBzbG93UGF0aCkKICAgICAvLyBNb3ZlIGZyYW1lIHVwIHQxIHNsb3RzCiAgICAgbmVn
aSB0MQogICAgIG1vdmUgY2ZyLCB0MwotICAgIHN1YnAgQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFs
UmVnaXN0ZXJzICogU2xvdFNpemUsIHQzCi0gICAgYWRkaSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMsIHQyCiAgICAgbW92ZSB0MSwgdDAKICAgICBsc2hpZnRwIDMsIHQwCiAgICAg
YWRkcCB0MCwgY2ZyCkBAIC02NzksMTAgKzYzMSw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVj
ayhkb25lTGFiZWwsIHNsb3dQYXRoKQogLmNvbnRpbnVlOgogICAgICMgUmVsb2FkIENvZGVCbG9j
ayBhbmQgUEMsIHNpbmNlIHRoZSBzbG93X3BhdGggY2xvYmJlcmVkIGl0LgogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQotICAgICMgRklYTUU6IGNsZWFudXAgZG91YmxlIGxvYWQKLSAgICAj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5MzIKICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEMKLSAgICBsb2FkcCBbUENdLCBQQwog
ICAgIGptcCBkb25lTGFiZWwKIGVuZAogCkBAIC03MDMsNDg2ICs2NTIsNjExIEBAIF9sbGludF9v
cF9lbnRlcjoKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MiwgMHhkZWFkMDBlMSkK
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIgICAgICAgICAgICAgICAgLy8gdDI8Q29kZUJs
b2NrPiA9IGNmci5Db2RlQmxvY2sKICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0s
IHQyICAgICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCi0gICAgc3Vi
aSBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMsIHQyCi0gICAgbW92ZSBjZnIsIHQz
Ci0gICAgc3VicCBDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgKiBTbG90U2l6ZSwg
dDMKICAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKICAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAK
ICAgICBtb3ZlIDAsIHQxCiAgICAgbmVnaSB0MgogLm9wRW50ZXJMb29wOgotICAgIHN0b3JlaSB0
MCwgVGFnT2Zmc2V0W3QzLCB0MiwgOF0KLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbdDMs
IHQyLCA4XQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgYWRkaSAxLCB0MgogICAgIGJ0aW56
IHQyLCAub3BFbnRlckxvb3AKIC5vcEVudGVyRG9uZToKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9lbnRlcikKLSAgICBkaXNwYXRjaE9wKG5hcnJvdywgb3BfZW50ZXIpCisgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2VudGVyX2xlbmd0aCkKIAogCi1sbGludE9wV2l0aFByb2ZpbGUob3Bf
Z2V0X2FyZ3VtZW50LCBPcEdldEFyZ3VtZW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQotICAgIGdldChpbmRleCwgdDIpCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBB
cmd1bWVudENvdW50W2Nmcl0sIHQwCiAgICAgYmlsdGVxIHQwLCB0MiwgLm9wR2V0QXJndW1lbnRP
dXRPZkJvdW5kcwogICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIs
IHQyLCA4XSwgdDAKICAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdLCB0MwotICAgIHJldHVybiAodDAsIHQzKQorICAgIHN0b3JlaSB0MCwgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgdmFsdWVQcm9maWxlKHQwLCB0MywgMTIsIHQxKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9nZXRfYXJndW1lbnRfbGVuZ3RoKQogCiAub3BHZXRBcmd1bWVudE91dE9mQm91bmRz
OgotICAgIHJldHVybiAoVW5kZWZpbmVkVGFnLCAwKQotZW5kKQorICAgIHN0b3JlaSBVbmRlZmlu
ZWRUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgdmFsdWVQcm9maWxlKFVuZGVmaW5lZFRhZywgMCwgMTIsIHQxKQor
ICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfYXJndW1lbnRfbGVuZ3RoKQogCiAKLWxsaW50
T3BXaXRoUmV0dXJuKG9wX2FyZ3VtZW50X2NvdW50LCBPcEFyZ3VtZW50Q291bnQsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCitfbGxpbnRfb3BfYXJndW1lbnRfY291bnQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MikKICAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAogICAgIHN1Ymkg
MSwgdDAKLSAgICByZXR1cm4oSW50MzJUYWcsIHQwKQotZW5kKQorICAgIG1vdmUgSW50MzJUYWcs
IHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfYXJn
dW1lbnRfY291bnRfbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9zY29wZSwg
T3BHZXRTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKK19sbGludF9v
cF9nZXRfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIENhbGxlZSArIFBh
eWxvYWRPZmZzZXRbY2ZyXSwgdDAKICAgICBsb2FkaSBKU0NhbGxlZTo6bV9zY29wZVt0MF0sIHQw
Ci0gICAgcmV0dXJuIChDZWxsVGFnLCB0MCkKLWVuZCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMSwgdDEpCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9nZXRfc2NvcGVfbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfdG9f
dGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQotICAgIGdldChzcmNEc3QsIHQwKQorX2xsaW50X29wX3RvX3RoaXM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAogICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgQ2VsbFRhZywgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVj
dFR5cGUsIC5vcFRvVGhpc1Nsb3cKLSAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgbG9hZHAgT3BU
b1RoaXM6Ok1ldGFkYXRhOjpjYWNoZWRTdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRwRnJvbUlu
c3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQy
LCAub3BUb1RoaXNTbG93Ci0gICAgZGlzcGF0Y2goKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBv
cF90b190aGlzX2xlbmd0aCkKIAogLm9wVG9UaGlzU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF90b190aGlzKQotICAgIGRpc3BhdGNoKCkKLWVuZCkKKyAgICBkaXNwYXRjaChjb25z
dGV4cHIgb3BfdG9fdGhpc19sZW5ndGgpCiAKIAotbGxpbnRPcChvcF9jaGVja190ZHosIE9wQ2hl
Y2tUZHosIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGdldCh0YXJnZXQsIHQwKQot
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcoc2l6ZSwgdDAsIHQxKQorX2xsaW50X29wX2No
ZWNrX3RkejoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDEsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcodDAsIHQxKQogICAgIGJpbmVx
IHQxLCBFbXB0eVZhbHVlVGFnLCAub3BOb3RURFoKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF90aHJvd190ZHpfZXJyb3IpCiAKIC5vcE5vdFREWjoKLSAgICBkaXNwYXRjaCgpCi1lbmQpCisg
ICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NoZWNrX3Rkel9sZW5ndGgpCiAKIAotbGxpbnRPcFdp
dGhSZXR1cm4ob3BfbW92LCBPcE1vdiwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVy
bikKLSAgICBnZXQoc3JjLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQx
LCB0MiwgdDMpCi0gICAgcmV0dXJuKHQyLCB0MykKLWVuZCkKK19sbGludF9vcF9tb3Y6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBzdG9yZWkgdDIs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9tb3ZfbGVuZ3RoKQogCiAKLWxsaW50
T3BXaXRoUmV0dXJuKG9wX25vdCwgT3BOb3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBy
ZXR1cm4pCi0gICAgZ2V0KG9wZXJhbmQsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDAsIHQyLCB0MykKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDAsIHQyLCB0MykKICAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90
U2xvdwogICAgIHhvcmkgMSwgdDMKLSAgICByZXR1cm4odDIsIHQzKQorICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX25vdF9sZW5ndGgpCiAKIC5vcE5vdFNs
b3c6CiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbm90KQotICAgIGRpc3BhdGNoKCkKLWVu
ZCkKLQotCi1tYWNybyBlcXVhbGl0eUNvbXBhcmlzb25PcChuYW1lLCBvcCwgaW50ZWdlckNvbXBh
cmlzb24pCi0gICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICAgICAgZ2V0KHJocywgdDIpCi0gICAgICAgIGdl
dChsaHMsIHQwKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0Mywg
dDEpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNpemUsIHQwLCB0MiwgdDAp
Ci0gICAgICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93Ci0gICAgICAgIGJpZXEgdDIsIENlbGxU
YWcsIC5vcEVxU2xvdwotICAgICAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93Ci0gICAg
ICAgIGludGVnZXJDb21wYXJpc29uKHQwLCB0MSwgdDApCi0gICAgICAgIHJldHVybihCb29sZWFu
VGFnLCB0MCkKLQotICAgIC5vcEVxU2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfJW5hbWUlKQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kKQotZW5kCi0KLQotbWFjcm8g
ZXF1YWxpdHlKdW1wT3AobmFtZSwgb3AsIGludGVnZXJDb21wYXJpc29uKQotICAgIGxsaW50T3BX
aXRoSnVtcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkK
LSAgICAgICAgZ2V0KHJocywgdDIpCi0gICAgICAgIGdldChsaHMsIHQwKQotICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MywgdDEpCi0gICAgICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnKHNpemUsIHQwLCB0MiwgdDApCi0gICAgICAgIGJpbmVxIHQyLCB0Mywg
LnNsb3cKLSAgICAgICAgYmllcSB0MiwgQ2VsbFRhZywgLnNsb3cKLSAgICAgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5zbG93Ci0gICAgICAgIGludGVnZXJDb21wYXJpc29uKHQwLCB0MSwgLmp1bXBU
YXJnZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKLQotICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBq
dW1wKHRhcmdldCkKLQotICAgIC5zbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF8lbmFtZSUpCi0gICAgICAgIG5leHRJbnN0cnVjdGlvbigpCi0gICAgZW5kKQotZW5k
Ci0KLQotbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbk9wKG5hbWUsIG9wLCBmbikKLSAgICBsbGlu
dE9wV2l0aFJldHVybihuYW1lLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVy
bikKLSAgICAgICAgZ2V0KG9wZXJhbmQsIHQwKQotICAgICAgICBhc3NlcnROb3RDb25zdGFudChz
aXplLCB0MCkKLSAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQotICAgICAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAotICAgICAgICBiaW5lcSB0MSwg
Q2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCi0gICAgICAgIGJ0Ym56IEpTQ2VsbDo6bV9mbGFn
c1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcEVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQKLSAgICAgICAgbW92ZSAwLCB0MQotICAgICAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRp
YXRlCi0gICAgLm9wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICAgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEKLSAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAot
ICAgICAgICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDFdLCB0MCwgdDEKLSAgICAg
ICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQotICAgIC5vcEVxTnVsbEltbWVkaWF0ZToKLSAg
ICAgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKLSAgICAgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFn
LCB0MQotICAgICAgICBvcmkgdDIsIHQxCi0gICAgLm9wRXFOdWxsTm90SW1tZWRpYXRlOgotICAg
ICAgICBmbih0MSkKLSAgICAgICAgcmV0dXJuKEJvb2xlYW5UYWcsIHQxKQotICAgIGVuZCkKLWVu
ZAotCi1lcXVhbE51bGxDb21wYXJpc29uT3Aob3BfZXFfbnVsbCwgT3BFcU51bGwsIG1hY3JvICh2
YWx1ZSkgZW5kKQotCi1lcXVhbE51bGxDb21wYXJpc29uT3Aob3BfbmVxX251bGwsIE9wTmVxTnVs
bCwKLSAgICBtYWNybyAodmFsdWUpIHhvcmkgMSwgdmFsdWUgZW5kKQotCi0KLW1hY3JvIHN0cmlj
dEVxT3AobmFtZSwgb3AsIGVxdWFsaXR5T3BlcmF0aW9uKQotICAgIGxsaW50T3BXaXRoUmV0dXJu
KG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAg
ICAgIGdldChyaHMsIHQyKQotICAgICAgICBnZXQobGhzLCB0MCkKLSAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDMsIHQxKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyhzaXplLCB0MCwgdDIsIHQwKQotICAgICAgICBiaW5lcSB0MiwgdDMsIC5zbG93
Ci0gICAgICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdwotICAgICAgICBiaW5lcSB0MiwgQ2Vs
bFRhZywgLm5vdFN0cmluZ09yU3ltYm9sCi0gICAgICAgIGJiYWVxIEpTQ2VsbDo6bV90eXBlW3Qw
XSwgT2JqZWN0VHlwZSwgLm5vdFN0cmluZ09yU3ltYm9sCi0gICAgICAgIGJiYiBKU0NlbGw6Om1f
dHlwZVt0MV0sIE9iamVjdFR5cGUsIC5zbG93Ci0gICAgLm5vdFN0cmluZ09yU3ltYm9sOgotICAg
ICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQotICAgICAgICByZXR1cm4oQm9vbGVh
blRhZywgdDApCi0KLSAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
JW5hbWUlKQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kKQotZW5kCi0KLQotbWFjcm8gc3Ry
aWN0RXF1YWxpdHlKdW1wT3AobmFtZSwgb3AsIGVxdWFsaXR5T3BlcmF0aW9uKQotICAgIGxsaW50
T3BXaXRoSnVtcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRj
aCkKLSAgICAgICAgZ2V0KHJocywgdDIpCi0gICAgICAgIGdldChsaHMsIHQwKQotICAgICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MywgdDEpCi0gICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHNpemUsIHQwLCB0MiwgdDApCi0gICAgICAgIGJpbmVxIHQyLCB0
MywgLnNsb3cKLSAgICAgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0gICAgICAgIGJpbmVx
IHQyLCBDZWxsVGFnLCAubm90U3RyaW5nT3JTeW1ib2wKLSAgICAgICAgYmJhZXEgSlNDZWxsOjpt
X3R5cGVbdDBdLCBPYmplY3RUeXBlLCAubm90U3RyaW5nT3JTeW1ib2wKLSAgICAgICAgYmJiIEpT
Q2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLnNsb3cKLSAgICAubm90U3RyaW5nT3JTeW1i
b2w6Ci0gICAgICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgLmp1bXBUYXJnZXQpCi0gICAg
ICAgIGRpc3BhdGNoKCkKLQotICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBqdW1wKHRhcmdldCkK
LQotICAgIC5zbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lbmFt
ZSUpCi0gICAgICAgIG5leHRJbnN0cnVjdGlvbigpCi0gICAgZW5kKQotZW5kCi0KLQotc3RyaWN0
RXFPcChzdHJpY3RlcSwgT3BTdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3Vs
dCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKLQotCi1zdHJpY3RFcU9wKG5zdHJpY3Rl
cSwgT3BOc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxl
ZnQsIHJpZ2h0LCByZXN1bHQgZW5kKQotCi0KLXN0cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3Rl
cSwgT3BKc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX25vdF9sZW5n
dGgpCisKKworbWFjcm8gZXF1YWxpdHlDb21wYXJpc29uKGludGVnZXJDb21wYXJpc29uLCBzbG93
UGF0aCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVx
IHQyLCBDZWxsVGFnLCAub3BFcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlckNvbXBhcmlzb24odDAsIHQxLCB0MCkK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9w
X2VxX2xlbmd0aCkKIAotCi1zdHJpY3RFcXVhbGl0eUp1bXBPcChqbnN0cmljdGVxLCBPcEpuc3Ry
aWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbmVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kKQotCi0KLW1hY3JvIHByZU9wKG5hbWUsIG9wLCBvcGVyYXRpb24pCi0gICAg
bGxpbnRPcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICAg
ICAgZ2V0KHNyY0RzdCwgdDApCi0gICAgICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
SW50MzJUYWcsIC5zbG93Ci0gICAgICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCi0gICAgICAgIG9wZXJhdGlvbih0MSwgLnNsb3cpCi0gICAgICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgICAgICBkaXNwYXRjaCgpCi0KLSAgICAuc2xvdzoK
LSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW5hbWUlKQotICAgICAgICBkaXNwYXRj
aCgpCi0gICAgZW5kKQorLm9wRXFTbG93OgorICAgIGNhbGxTbG93UGF0aChzbG93UGF0aCkKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfZXFfbGVuZ3RoKQogZW5kCiAKIAotbGxpbnRPcFdpdGhQ
cm9maWxlKG9wX3RvX251bWJlciwgT3BUb051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIHJldHVybikKLSAgICBnZXQob3BlcmFuZCwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MCwgdDIsIHQzKQorbWFjcm8gZXF1YWxpdHlKdW1wKGludGVnZXJDb21wYXJp
c29uLCBzbG93UGF0aCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93CisgICAg
YmllcSB0MiwgQ2VsbFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAg
ICBpbnRlZ2VyQ29tcGFyaXNvbih0MCwgdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9qZXFfbGVuZ3RoKQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5j
aCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxTbG93UGF0aChzbG93UGF0aCkKKyAgICBkaXNw
YXRjaCgwKQorZW5kCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCAub3BFcU51bGxNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAg
bW92ZSAwLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQ6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwg
dDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Z2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3Rb
dDFdLCB0MCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1l
ZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRU
YWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfZXFfbnVsbF9s
ZW5ndGgpCisKKworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9w
TmVxTnVsbEltbWVkaWF0ZQorICAgIGJ0Ym56IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIC5vcE5lcU51bGxNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAgbW92
ZSAxLCB0MQorICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxsTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0
MQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGNwbmVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3Rb
dDFdLCB0MCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbElt
bWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZp
bmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbmVx
X251bGxfbGVuZ3RoKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93
UGF0aCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAuc2xvdworICAgIGJpYiB0Miwg
TG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nT3JTeW1i
b2wKKyAgICBiYmFlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5ub3RTdHJpbmdP
clN5bWJvbAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5zbG93Cisu
bm90U3RyaW5nT3JTeW1ib2w6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVy
YXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQorICAgIGRpc3Bh
dGNoKDQpCitlbmQKKworCittYWNybyBzdHJpY3RFcXVhbGl0eUp1bXAoZXF1YWxpdHlPcGVyYXRp
b24sIHNsb3dQYXRoKQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBi
aWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmlu
Z09yU3ltYm9sCisgICAgYmJhZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAubm90
U3RyaW5nT3JTeW1ib2wKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAu
c2xvdworLm5vdFN0cmluZ09yU3ltYm9sOgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwg
Lmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2pzdHJpY3RlcV9sZW5ndGgp
CisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworCitfbGxp
bnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3Jv
IChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfc2xv
d19wYXRoX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCisKKworX2xsaW50
X29wX2pzdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXF1YWxpdHlK
dW1wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmllcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qc3RyaWN0ZXEpCisKKwor
X2xsaW50X29wX2puc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVx
dWFsaXR5SnVtcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbmVxIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2puc3RyaWN0
ZXEpCisKKworX2xsaW50X29wX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9w
SW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFk
ZGlvIDEsIHQxLCAub3BJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2luY19sZW5ndGgpCisKKy5vcEluY1Ns
b3c6CisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfaW5jKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9pbmNfbGVuZ3RoKQorCisKK19sbGludF9vcF9kZWM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgSW50MzJUYWcsIC5vcERlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wRGVjU2xvdworICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9kZWNfbGVu
Z3RoKQorCisub3BEZWNTbG93OgorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2RlYykKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfZGVjX2xlbmd0aCkKKworCitfbGxpbnRfb3BfdG9fbnVt
YmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCiAgICAg
YmllcSB0MiwgSW50MzJUYWcsIC5vcFRvTnVtYmVySXNJbnQKICAgICBiaWFlcSB0MiwgTG93ZXN0
VGFnLCAub3BUb051bWJlclNsb3cKIC5vcFRvTnVtYmVySXNJbnQ6Ci0gICAgcmV0dXJuKHQyLCB0
MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDMsIDEyLCB0
MSkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfdG9fbnVtYmVyX2xlbmd0aCkKIAogLm9wVG9O
dW1iZXJTbG93OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX251bWJlcikKLSAgICBk
aXNwYXRjaCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX251bWJlcl9sZW5n
dGgpCiAKIAotbGxpbnRPcFdpdGhSZXR1cm4ob3BfdG9fc3RyaW5nLCBPcFRvU3RyaW5nLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGdldChvcGVyYW5kLCB0MCkKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MiwgdDMpCitfbGxpbnRfb3BfdG9f
c3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCiAg
ICAgYmluZXEgdDIsIENlbGxUYWcsIC5vcFRvU3RyaW5nU2xvdwogICAgIGJibmVxIEpTQ2VsbDo6
bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLm9wVG9TdHJpbmdTbG93CiAub3BUb1N0cmluZ0lzU3Ry
aW5nOgotICAgIHJldHVybih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaChjb25zdGV4cHIgb3BfdG9fc3RyaW5nX2xlbmd0aCkKIAogLm9wVG9TdHJpbmdTbG93Ogog
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX3N0cmluZykKLSAgICBkaXNwYXRjaCgpCi1l
bmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX3N0cmluZ19sZW5ndGgpCiAKIAotbGxp
bnRPcFdpdGhQcm9maWxlKG9wX3RvX29iamVjdCwgT3BUb09iamVjdCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBnZXQob3BlcmFuZCwgdDApCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDIsIHQzKQorX2xsaW50X29wX3RvX29iamVjdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQogICAgIGJpbmVxIHQy
LCBDZWxsVGFnLCAub3BUb09iamVjdFNsb3cKICAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDNdLCBP
YmplY3RUeXBlLCAub3BUb09iamVjdFNsb3cKLSAgICByZXR1cm4odDIsIHQzKQorICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgMTYsIHQxKQorICAgIGRpc3Bh
dGNoKGNvbnN0ZXhwciBvcF90b19vYmplY3RfbGVuZ3RoKQogCiAub3BUb09iamVjdFNsb3c6CiAg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fb2JqZWN0KQotICAgIGRpc3BhdGNoKCkKLWVu
ZCkKLQotCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF90b19vYmplY3RfbGVuZ3RoKQogCi0gICAgbWFjcm8gYXJpdGhQcm9maWxlKHR5cGUp
Ci0gICAgICAgIG9yaSB0eXBlLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6OmFyaXRoUHJvZmlsZVt0NV0K
LSAgICBlbmQKIAotICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICBnZXQob3BlcmFuZCwgdDApCi0g
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEsIHQyKQorX2xsaW50X29wX25l
Z2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKICAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5v
cE5lZ2F0ZVNyY05vdEludAogICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cK
ICAgICBuZWdpIHQyCi0gICAgYXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKLSAgICByZXR1
cm4gKEludDMyVGFnLCB0MikKKyAgICBvcmkgQXJpdGhQcm9maWxlSW50LCB0MAorICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpc1RvSW5zdHJ1Y3Rp
b24odDAsIDMpCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX25lZ2F0ZV9sZW5ndGgpCiAub3BOZWdhdGVTcmNOb3RJbnQ6
CiAgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAw
MDAsIHQxCi0gICAgYXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKLSAgICByZXR1cm4o
dDEsIHQyKQorICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQwCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpc1RvSW5zdHJ1Y3Rpb24odDAsIDMp
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaChjb25z
dGV4cHIgb3BfbmVnYXRlX2xlbmd0aCkKIAogLm9wTmVnYXRlU2xvdzoKICAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9uZWdhdGUpCi0gICAgZGlzcGF0Y2goKQotZW5kKQorICAgIGRpc3BhdGNo
KGNvbnN0ZXhwciBvcF9uZWdhdGVfbGVuZ3RoKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dQYXRoKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5l
cSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwg
dDUpCisgICAgb3JpIEFyaXRoUHJvZmlsZUludEludCwgdDUKKyAgICBzdG9yZWlzVG9JbnN0cnVj
dGlvbih0NSwgNCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5k
U3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDFOb3RJ
bnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNl
Y29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAu
c2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmlu
ZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig0LCB0NSkK
KyAgICBvcmkgQXJpdGhQcm9maWxlTnVtYmVySW50LCB0NQorICAgIHN0b3JlaXNUb0luc3RydWN0
aW9uKHQ1LCA0KQorICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5v
cDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oNCwgdDUpCisgICAgb3JpIEFyaXRoUHJvZmlsZU51bWJlck51bWJlciwgdDUK
KyAgICBzdG9yZWlzVG9JbnN0cnVjdGlvbih0NSwgNCkKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlv
bihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1
KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGlu
dCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbig0LCB0NSkKKyAgICBvcmkgQXJpdGhQcm9maWxlSW50TnVtYmVyLCB0NQorICAgIHN0b3Jl
aXNUb0luc3RydWN0aW9uKHQ1LCA0KQorICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0
MywgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5zbG93OgorICAgIGNhbGxTbG93UGF0aChz
bG93UGF0aCkKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJP
cGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpCisgICAgYmluYXJ5T3BDdXN0b21T
dG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgp
CisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAg
ICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAg
ICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBl
bmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpCitlbmQKIAorX2xsaW50X29w
X2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX3Ns
b3dfcGF0aF9hZGQpCiAKLW1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUobmFtZSwgb3AsIGludGVn
ZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uKQotICAgIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCi0gICAgICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAg
b3JpIHR5cGUsICVvcCU6Ok1ldGFkYXRhOjphcml0aFByb2ZpbGVbdDVdCi0gICAgICAgIGVuZAog
Ci0gICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAgZ2V0KHJocywgdDIpCi0gICAgICAg
IGdldChsaHMsIHQwKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0
MywgdDEpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNpemUsIHQwLCB0Miwg
dDApCi0gICAgICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAotICAgICAgICBiaW5l
cSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKLSAgICAgICAgYXJpdGhQcm9maWxlKEFyaXRoUHJv
ZmlsZUludEludCkKLSAgICAgICAgZ2V0KGRzdCwgdDIpCi0gICAgICAgIGludGVnZXJPcGVyYXRp
b25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCi0gICAgICAgIGRpc3BhdGNoKCkKLQot
ICAgIC5vcDFOb3RJbnQ6Ci0gICAgICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5v
dCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KLSAgICAgICAg
YmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93Ci0gICAgICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3Ax
Tm90SW50T3AyRG91YmxlCi0gICAgICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKLSAgICAg
ICAgYXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlckludCkKLSAgICAgICAgY2kyZCB0MSwg
ZnQxCi0gICAgICAgIGptcCAub3AxTm90SW50UmVhZHkKLSAgICAub3AxTm90SW50T3AyRG91Ymxl
OgotICAgICAgICBmaWkyZCB0MSwgdDMsIGZ0MQotICAgICAgICBhcml0aFByb2ZpbGUoQXJpdGhQ
cm9maWxlTnVtYmVyTnVtYmVyKQotICAgIC5vcDFOb3RJbnRSZWFkeToKLSAgICAgICAgZ2V0KGRz
dCwgdDEpCi0gICAgICAgIGZpaTJkIHQwLCB0MiwgZnQwCi0gICAgICAgIGRvdWJsZU9wZXJhdGlv
bihmdDEsIGZ0MCkKLSAgICAgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCi0gICAgICAgIGRp
c3BhdGNoKCkKLQotICAgIC5vcDJOb3RJbnQ6Ci0gICAgICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBk
ZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90Lgot
ICAgICAgICBnZXQoZHN0LCB0MikKLSAgICAgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93Ci0g
ICAgICAgIGFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnROdW1iZXIpCi0gICAgICAgIGNpMmQg
dDAsIGZ0MAotICAgICAgICBmaWkyZCB0MSwgdDMsIGZ0MQotICAgICAgICBkb3VibGVPcGVyYXRp
b24oZnQxLCBmdDApCi0gICAgICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQotICAgICAgICBk
aXNwYXRjaCgpCi0KLSAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
JW5hbWUlKQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kKQotZW5kCi0KLW1hY3JvIGJpbmFy
eU9wKG5hbWUsIG9wLCBpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24pCi0gICAgYmlu
YXJ5T3BDdXN0b21TdG9yZShuYW1lLCBvcCwKK19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCiAgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRh
ZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2lu
Y2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisg
ICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnog
c2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdworICAgICAgICAg
ICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkg
c2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9z
bG93X3BhdGhfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBs
ZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBs
ZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9zbG93X3BhdGhfc3ViKQorCisKK19sbGludF9vcF9k
aXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAg
ICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAg
ICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAg
ICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAog
ICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KICAg
ICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQg
ZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CiAgICAgICAgIGVuZCwKLSAgICAg
ICAgZG91YmxlT3BlcmF0aW9uKQotZW5kCi0KLWJpbmFyeU9wKGFkZCwgT3BBZGQsCi0gICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAotICAg
IG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQpCi0KLQotYmluYXJ5T3BD
dXN0b21TdG9yZShtdWwsIE9wTXVsLAotICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQs
IHNsb3csIGluZGV4KQotICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcgICAjIFdlIGtu
b3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBh
IGNvbnN0YW50LgotICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCi0gICAgICAgIGJtdWxpbyBs
ZWZ0LCBzY3JhdGNoLCBzbG93Ci0gICAgICAgIGJ0aW56IHNjcmF0Y2gsIC5kb25lCi0gICAgICAg
IGJpbHQgbGVmdCwgMCwgc2xvdwotICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93Ci0gICAgLmRv
bmU6Ci0gICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCi0g
ICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCi0gICAg
ZW5kLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQpCi0KLQot
YmluYXJ5T3Aoc3ViLCBPcFN1YiwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJp
byBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxl
ZnQsIHJpZ2h0IGVuZCkKLQotCi1iaW5hcnlPcEN1c3RvbVN0b3JlKGRpdiwgT3BEaXYsCi0gICAg
bWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCi0gICAgICAgIGNpMmQg
bGVmdCwgZnQwCi0gICAgICAgIGNpMmQgcmlnaHQsIGZ0MQotICAgICAgICBkaXZkIGZ0MCwgZnQx
Ci0gICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKLSAgICAgICAgc3RvcmVpIGludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KLSAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXls
b2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCi0gICAgICAgIGptcCAuZG9uZQotICAgIC5ub3RJbnQ6
Ci0gICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4XQotICAgIC5kb25lOgotICAgIGVu
ZCwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kKQotCi0KLWxs
aW50T3BXaXRoUmV0dXJuKG9wX3Vuc2lnbmVkLCBPcFVuc2lnbmVkLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGdldChvcGVyYW5kLCB0MSkKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MSwgSW50MzJUYWcsIHQyLCAub3BVbnNpZ25lZFNs
b3cpCi0gICAgYmlsdCB0MiwgMCwgLm9wVW5zaWduZWRTbG93Ci0gICAgcmV0dXJuIChJbnQzMlRh
ZywgdDIpCi0ub3BVbnNpZ25lZFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdW5z
aWduZWQpCi0gICAgZGlzcGF0Y2goKQotZW5kKQorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfc2xvd19wYXRoX2RpdikKKworCittYWNy
byBiaXRPcFByb2ZpbGVkKG9wZXJhdGlvbiwgc2xvd1BhdGgsIGFkdmFuY2UpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQw
KQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcs
IC5zbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgb3BlcmF0aW9uKHQxLCB0MCkKKyAgICBz
dG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDAsIChhZHZhbmNlIC0gMSkg
KiA0LCB0MikKKyAgICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsU2xvd1Bh
dGgoc2xvd1BhdGgpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCittYWNybyBiaXRPcChv
cGVyYXRpb24sIHNsb3dQYXRoLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0Mywg
SW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDApCisgICAgc3RvcmVpIHQzLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBkaXNwYXRjaChhZHZhbmNlKQogCisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xvd1Bh
dGgpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAogCi1tYWNybyBjb21tb25CaXRPcChvcEtp
bmQsIG5hbWUsIG9wLCBvcGVyYXRpb24pCi0gICAgb3BLaW5kKG9wXyVuYW1lJSwgb3AsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgICAgIGdldChyaHMsIHQyKQotICAg
ICAgICBnZXQobGhzLCB0MCkKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MiwgdDMsIHQxKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzaXplLCB0MCwg
dDIsIHQwKQotICAgICAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93Ci0gICAgICAgIGJpbmVx
IHQyLCBJbnQzMlRhZywgLnNsb3cKLSAgICAgICAgb3BlcmF0aW9uKHQxLCB0MCkKLSAgICAgICAg
cmV0dXJuICh0MywgdDApCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBsc2hpZnRpIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9sc2hpZnQsCisgICAgICAgIGNvbnN0ZXhwciBv
cF9sc2hpZnRfbGVuZ3RoKQogCi0gICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xv
d19wYXRoXyVuYW1lJSkKLSAgICAgICAgZGlzcGF0Y2goKQotICAgIGVuZCkKLWVuZAogCi1tYWNy
byBiaXRPcChuYW1lLCBvcCwgb3BlcmF0aW9uKQotICAgIGNvbW1vbkJpdE9wKGxsaW50T3BXaXRo
UmV0dXJuLCBuYW1lLCBvcCwgb3BlcmF0aW9uKQotZW5kCitfbGxpbnRfb3BfcnNoaWZ0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9yc2hpZnQsCisg
ICAgICAgIGNvbnN0ZXhwciBvcF9yc2hpZnRfbGVuZ3RoKQogCi1tYWNybyBiaXRPcFByb2ZpbGVk
KG5hbWUsIG9wLCBvcGVyYXRpb24pCi0gICAgY29tbW9uQml0T3AobGxpbnRPcFdpdGhQcm9maWxl
LCBuYW1lLCBvcCwgb3BlcmF0aW9uKQotZW5kCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSB1
cnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9zbG93X3BhdGhfdXJzaGlmdCwKKyAg
ICAgICAgY29uc3RleHByIG9wX3Vyc2hpZnRfbGVuZ3RoKQogCiAKLWJpdE9wKGxzaGlmdCwgT3BM
c2hpZnQsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCkK
K19sbGludF9vcF91bnNpZ25lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wVW5zaWduZWRTbG93KQorICAgIGJpbHQgdDIsIDAs
IC5vcFVuc2lnbmVkU2xvdworICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX3Vuc2lnbmVkX2xlbmd0aCkKKy5vcFVuc2lnbmVkU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF91bnNpZ25lZCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIg
b3BfdW5zaWduZWRfbGVuZ3RoKQogCiAKLWJpdE9wKHJzaGlmdCwgT3BSc2hpZnQsCi0gICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCkKK19sbGludF9vcF9iaXRh
bmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wUHJvZmlsZWQoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCkgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9zbG93X3Bh
dGhfYml0YW5kLAorICAgICAgICBjb25zdGV4cHIgb3BfYml0YW5kX2xlbmd0aCkKIAogCi1iaXRP
cCh1cnNoaWZ0LCBPcFVyc2hpZnQsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSB1cnNoaWZ0aSBs
ZWZ0LCByaWdodCBlbmQpCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSB4b3JpIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXR4b3IsCisgICAgICAgIGNvbnN0ZXhwciBvcF9i
aXR4b3JfbGVuZ3RoKQogCi1iaXRPcChiaXR4b3IsIE9wQml0eG9yLAotICAgIG1hY3JvIChsZWZ0
LCByaWdodCkgeG9yaSBsZWZ0LCByaWdodCBlbmQpCiAKLWJpdE9wUHJvZmlsZWQoYml0YW5kLCBP
cEJpdGFuZCwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFuZGkgbGVmdCwgcmlnaHQgZW5kKQor
X2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcFByb2ZpbGVk
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9zbG93X3BhdGhfYml0b3IsCisgICAgICAgIGNvbnN0ZXhwciBvcF9iaXRvcl9sZW5ndGgp
CiAKLWJpdE9wUHJvZmlsZWQoYml0b3IsIE9wQml0b3IsCi0gICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCkgb3JpIGxlZnQsIHJpZ2h0IGVuZCkKIAorX2xsaW50X29wX292ZXJyaWRlc19oYXNfaW5z
dGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQogCi1sbGludE9wKG9wX292ZXJyaWRlc19oYXNf
aW5zdGFuY2UsIE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoKQotICAgIGdldChkc3QsIHQzKQorICAgIGxvYWRpc0Zyb21TdHJ1Y3QoT3BPdmVycmlkZXNI
YXNJbnN0YW5jZTo6bV9kc3QsIHQzKQogICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KIAogICAgICMgRmlyc3QgY2hlY2sgaWYgaGFzSW5zdGFuY2VWYWx1ZSBpcyB0
aGUgb25lIG9uIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdCi0gICAgZ2V0
KGhhc0luc3RhbmNlVmFsdWUsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MiwgLm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdENl
bGwpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEsIHQyKQorICAgIGxv
YWRpc0Zyb21TdHJ1Y3QoT3BPdmVycmlkZXNIYXNJbnN0YW5jZTo6bV9oYXNJbnN0YW5jZVZhbHVl
LCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIs
IC5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3RDZWxsKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDAsIHQxLCB0MikKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wT3ZlcnJpZGVz
aGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwKIAogICAgICMgV2UgZG9uJ3QgbmVlZCBoYXNJbnN0YW5j
ZVZhbHVlJ3MgdGFnIHJlZ2lzdGVyIGFueW1vcmUuCkBAIC0xMTkyLDgzICsxMjY2LDExMCBAQCBs
bGludE9wKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UsIE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2Us
IG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGJpbmVxIHQxLCB0MiwgLm9wT3ZlcnJpZGVzaGFz
SW5zdGFuY2VWYWx1ZU5vdERlZmF1bHQKIAogICAgICMgV2Uga25vdyB0aGUgY29uc3RydWN0b3Ig
aXMgYSBjZWxsLgotICAgIGdldChjb25zdHJ1Y3RvciwgdDApCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoc2l6ZSwgdDAsIHQxKQorICAgIGxvYWRpc0Zyb21TdHJ1
Y3QoT3BPdmVycmlkZXNIYXNJbnN0YW5jZTo6bV9jb25zdHJ1Y3RvciwgdDApCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDAsIHQxKQogICAgIHRieiBKU0NlbGw6
Om1fZmxhZ3NbdDFdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCB0MAogICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkKKyAgICBkaXNw
YXRjaChjb25zdGV4cHIgb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZV9sZW5ndGgpCiAKIC5vcE92
ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3RDZWxsOgogLm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VW
YWx1ZU5vdERlZmF1bHQ6CiAgICAgc3RvcmVpIDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
LSAgICBkaXNwYXRjaCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2VfbGVuZ3RoKQogCitfbGxpbnRfb3BfaW5zdGFuY2VvZl9jdXN0b206Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lu
c3RhbmNlb2ZfY3VzdG9tKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pbnN0YW5jZW9mX2N1
c3RvbV9sZW5ndGgpCiAKLWxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2VtcHR5LCBPcElzRW1wdHks
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgZ2V0KG9wZXJhbmQsIHQx
KQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKKworX2xsaW50
X29wX2lzX2VtcHR5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0Miwg
dDMpCiAgICAgY2llcSB0MiwgRW1wdHlWYWx1ZVRhZywgdDMKLSAgICByZXR1cm4oQm9vbGVhblRh
ZywgdDMpCi1lbmQpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KGNvbnN0ZXhwciBvcF9pc19lbXB0eV9sZW5ndGgpCiAKIAotbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
aXNfdW5kZWZpbmVkLCBPcElzVW5kZWZpbmVkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQotICAgIGdldChvcGVyYW5kLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MiwgdDMpCitfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcElzVW5kZWZp
bmVkQ2VsbAogICAgIGNpZXEgdDIsIFVuZGVmaW5lZFRhZywgdDMKLSAgICByZXR1cm4oQm9vbGVh
blRhZywgdDMpCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX2lzX3VuZGVmaW5lZF9sZW5ndGgpCiAub3BJc1VuZGVmaW5l
ZENlbGw6CiAgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QzXSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgLm9wSXNVbmRlZmluZWRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCi0gICAgcmV0dXJuKEJv
b2xlYW5UYWcsIDApCisgICAgbW92ZSAwLCB0MQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc191bmRlZmluZWRfbGVu
Z3RoKQogLm9wSXNVbmRlZmluZWRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgogICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQz
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0M10sIHQzCiAgICAgY3BlcSBT
dHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDMsIHQxCi0gICAgcmV0dXJuKEJvb2xlYW5U
YWcsIHQxKQotZW5kKQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc191bmRlZmluZWRfbGVuZ3RoKQogCiAKLWxsaW50
T3BXaXRoUmV0dXJuKG9wX2lzX2Jvb2xlYW4sIE9wSXNCb29sZWFuLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGdldChvcGVyYW5kLCB0MSkKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlVGFnKHNpemUsIHQxLCB0MCkKK19sbGludF9vcF9pc19ib29sZWFuOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnKHQxLCB0MCkKICAgICBjaWVxIHQwLCBC
b29sZWFuVGFnLCB0MAotICAgIHJldHVybihCb29sZWFuVGFnLCB0MCkKLWVuZCkKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2lzX2Jvb2xl
YW5fbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX251bWJlciwgT3BJc051bWJl
ciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBnZXQob3BlcmFuZCwg
dDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyhzaXplLCB0MSwgdDApCitfbGxpbnRf
b3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnKHQxLCB0
MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgYWRk
aSAxLCB0MAogICAgIGNpYiB0MCwgTG93ZXN0VGFnICsgMSwgdDEKLSAgICByZXR1cm4oQm9vbGVh
blRhZywgdDEpCi1lbmQpCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2lzX251bWJlcl9sZW5ndGgpCiAKIAotbGxpbnRP
cFdpdGhSZXR1cm4ob3BfaXNfY2VsbF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgZ2V0KG9wZXJhbmQsIHQxKQotICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwLCB0MykKK19sbGludF9vcF9pc19j
ZWxsX3dpdGhfdHlwZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQx
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDAs
IHQzKQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICBi
aW5lcSB0MCwgQ2VsbFRhZywgLm5vdENlbGxDYXNlCi0gICAgZ2V0KHR5cGUsIHQwKQorICAgIGxv
YWRpIDEyW1BDXSwgdDAKICAgICBjYmVxIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDAsIHQxCi0gICAg
cmV0dXJuKEJvb2xlYW5UYWcsIHQxKQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc19jZWxsX3dpdGhfdHlwZV9sZW5n
dGgpCiAubm90Q2VsbENhc2U6Ci0gICAgcmV0dXJuKEJvb2xlYW5UYWcsIDApCi1lbmQpCisgICAg
c3RvcmVwIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfaXNfY2VsbF93aXRoX3R5cGVfbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRoUmV0dXJuKG9w
X2lzX29iamVjdCwgT3BJc09iamVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVy
bikKLSAgICBnZXQob3BlcmFuZCwgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MSwgdDAsIHQzKQorX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KICAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm9wSXNPYmplY3ROb3RDZWxs
CiAgICAgY2JhZXEgSlNDZWxsOjptX3R5cGVbdDNdLCBPYmplY3RUeXBlLCB0MQotICAgIHJldHVy
bihCb29sZWFuVGFnLCB0MSkKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaXNfb2JqZWN0X2xlbmd0aCkKIC5vcElzT2Jq
ZWN0Tm90Q2VsbDoKLSAgICByZXR1cm4oQm9vbGVhblRhZywgMCkKLWVuZCkKKyAgICBzdG9yZXAg
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9p
c19vYmplY3RfbGVuZ3RoKQogCiAKIG1hY3JvIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRL
bm93bk5vdElubGluZShwcm9wZXJ0eU9mZnNldCwgb2JqZWN0QW5kU3RvcmFnZSwgdGFnLCBwYXls
b2FkKQpAQCAtMTMxMiw5MiArMTQxMywxMjAgQEAgZW5kCiAjIGNvbnZlcnQgb3Bjb2RlIGludG8g
YSBnZXRfYnlfaWRfcHJvdG9fbG9hZC9nZXRfYnlfaWRfdW5zZXQsIHJlc3BlY3RpdmVseSwgYWZ0
ZXIgYW4KICMgZXhlY3V0aW9uIGNvdW50ZXIgaGl0cyB6ZXJvLgogCi1sbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCi0gICAgbWV0YWRhdGEodDUsIHQwKQotICAg
IGdldChiYXNlLCB0MCkKLSAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjpzdHJ1
Y3R1cmVbdDVdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQw
LCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZERpcmVjdFNsb3cpCi0gICAgbG9hZGkgT3BHZXRCeUlk
RGlyZWN0OjpNZXRhZGF0YTo6b2Zmc2V0W3Q1XSwgdDIKK19sbGludF9vcF9nZXRfYnlfaWRfZGly
ZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxU
YWcsIHQzLCAub3BHZXRCeUlkRGlyZWN0U2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCiAgICAg
YmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93
CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0NSwgdDAsIHQxKQotICAgIHJldHVybih0MCwg
dDEpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB2YWx1
ZVByb2ZpbGUodDAsIHQxLCAyNCwgdDIpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9i
eV9pZF9kaXJlY3RfbGVuZ3RoKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKICAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWRfZGlyZWN0KQotICAgIGRpc3BhdGNoKCkK
LWVuZCkKLQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfYnlfaWRfZGlyZWN0X2xlbmd0
aCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCi0gICAgbWV0YWRhdGEodDUs
IHQwKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1vZGVbdDVdLCB0MQotICAgIGdl
dChiYXNlLCB0MCkKIAotLm9wR2V0QnlJZFByb3RvTG9hZDoKLSAgICBiYm5lcSB0MSwgY29uc3Rl
eHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRBcnJheUxlbmd0aAotICAgIGxv
YWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVj
dHVyZVt0NV0sIHQxCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAs
IENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKLSAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFk
YXRhOjptb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDVdLCB0MgorX2xs
aW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0
MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xv
dwotICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1vZGVNZXRhZGF0YS5wcm90b0xvYWRN
b2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQo
dDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIHQwLCB0MSkK
LSAgICByZXR1cm4odDAsIHQxKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwg
VGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQwLCB0MSwgMzIsIHQyKQorICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9nZXRfYnlfaWRfbGVuZ3RoKQogCi0ub3BHZXRCeUlkQXJyYXlMZW5ndGg6Ci0g
ICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5
SWRVbnNldAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxs
VGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9w
X2dldF9ieV9pZF9sZW5ndGgpCisKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90b19sb2FkOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQz
LCAub3BHZXRCeUlkUHJvdG9TbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBiaW5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFByb3RvU2xvdworICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDYsIHQzKQorICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDIsIHQzLCB0MCwgdDEpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICB2YWx1ZVByb2ZpbGUodDAsIHQxLCAzMiwgdDIpCisgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX2dldF9ieV9pZF9wcm90b19sb2FkX2xlbmd0aCkKKworLm9wR2V0QnlJZFByb3Rv
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9ieV9pZF9wcm90b19sb2FkX2xlbmd0aCkKKworCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX3Vuc2V0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkVW5zZXRTbG93KQorICAgIGJp
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkVW5zZXRTbG93Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIFVuZGVmaW5lZFRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB2
YWx1ZVByb2ZpbGUoVW5kZWZpbmVkVGFnLCAwLCAzMiwgdDIpCisgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX2dldF9ieV9pZF91bnNldF9sZW5ndGgpCisKKy5vcEdldEJ5SWRVbnNldFNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNo
KGNvbnN0ZXhwciBvcF9nZXRfYnlfaWRfdW5zZXRfbGVuZ3RoKQorCisKK19sbGludF9vcF9nZXRf
YXJyYXlfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkcCAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQzLCAub3BHZXRBcnJheUxlbmd0aFNsb3cpCiAgICAgbW92ZSB0MywgdDIK
LSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bW9kZU1ldGFkYXRhLmFycmF5
TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCi0gICAgYnRpeiB0MiwgSXNBcnJh
eSwgLm9wR2V0QnlJZFNsb3cKLSAgICBidGl6IHQyLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0
QnlJZFNsb3cKKyAgICBhcnJheVByb2ZpbGUodDIsIHQxLCB0MCkKKyAgICBidGl6IHQyLCBJc0Fy
cmF5LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKKyAgICBidGl6IHQyLCBJbmRleGluZ1NoYXBlTWFz
aywgLm9wR2V0QXJyYXlMZW5ndGhTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAgbG9hZHAg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAot
ICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZCwgdDUsIEludDMyVGFnLCB0MCkKLSAgICByZXR1cm4oSW50MzJUYWcsIHQwKQotCi0ub3BHZXRC
eUlkVW5zZXQ6Ci0gICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6VW5zZXQsIC5v
cEdldEJ5SWREZWZhdWx0Ci0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bW9kZU1ldGFk
YXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVbdDVdLCB0MQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCi0gICAgYmlu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZCwgdDUsIFVuZGVmaW5lZFRhZywgMCkKLSAgICByZXR1cm4oVW5k
ZWZpbmVkVGFnLCAwKQorICAgIGJpbHQgdDAsIDAsIC5vcEdldEFycmF5TGVuZ3RoU2xvdworICAg
IHZhbHVlUHJvZmlsZShJbnQzMlRhZywgdDAsIDMyLCB0MikKKyAgICBzdG9yZXAgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZXAgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfYXJyYXlfbGVuZ3RoX2xlbmd0
aCkKIAotLm9wR2V0QnlJZERlZmF1bHQ6Ci0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZVt0NV0sIHQxCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xv
dykKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bW9kZU1ldGFkYXRhLmRlZmF1bHRN
b2RlLmNhY2hlZE9mZnNldFt0NV0sIHQyCi0gICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQx
KQotICAgIHJldHVybih0MCwgdDEpCi0KLS5vcEdldEJ5SWRTbG93OgorLm9wR2V0QXJyYXlMZW5n
dGhTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAg
ICBkaXNwYXRjaCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9hcnJheV9s
ZW5ndGhfbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1
dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAg
IHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBiYXNlLCB2YWx1ZSkKLSAgICBtZXRh
ZGF0YSh0NSwgdDMpCi0gICAgZ2V0KGJhc2UsIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCitfbGxpbnRf
b3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICB3cml0ZUJhcnJpZXJPbk9w
ZXJhbmRzKDEsIDMpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgotICAgIGJpbmVxIHQyLCBPcFB1dEJ5SWQ6Ok1l
dGFkYXRhOjpvbGRTdHJ1Y3R1cmVbdDVdLCAub3BQdXRCeUlkU2xvdworICAgIGJpbmVxIHQyLCAx
NltQQ10sIC5vcFB1dEJ5SWRTbG93CiAKICAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6Ci0g
ICAgIyB0NSAtPiBtZXRhZGF0YQogICAgICMgdDIgLT4gY3VycmVudFN0cnVjdHVyZUlECiAgICAg
IyB0MCAtPiBvYmplY3QgYmFzZQogICAgICMgV2Ugd2lsbCBsb3NlIGN1cnJlbnRTdHJ1Y3R1cmVJ
RCBpbiB0aGUgc2hlbmFuaWdhbnMgYmVsb3cuCiAKLSAgICBnZXQodmFsdWUsIHQxKQotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKLSAgICBsb2FkaSBPcFB1dEJ5
SWQ6Ok1ldGFkYXRhOjpmbGFnc1t0NV0sIHQxCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSAzMltQQ10sIHQxCiAK
ICAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6CiAgICAgIyB0MCAtPiBvYmplY3QgYmFzZQpA
QCAtMTQ3MiwxNiArMTYwMSwxNiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwg
T3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGJpbmVx
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCAub3BQdXRCeUlkU2xvdwogCiAub3BQdXRC
eUlkRG9uZUNoZWNraW5nVHlwZXM6Ci0gICAgbG9hZGkgT3BQdXRCeUlkOjpNZXRhZGF0YTo6bmV3
U3RydWN0dXJlW3Q1XSwgdDEKKyAgICBsb2FkaSAyNFtQQ10sIHQxCiAKICAgICBidGl6IHQxLCAu
b3BQdXRCeUlkTm90VHJhbnNpdGlvbgogCiAgICAgIyBUaGlzIGlzIHRoZSB0cmFuc2l0aW9uIGNh
c2UuIHQxIGhvbGRzIHRoZSBuZXcgU3RydWN0dXJlKi4gSWYgd2UgaGF2ZSBhIGNoYWluLCB3ZSBu
ZWVkIHRvCiAgICAgIyBjaGVjayBpdC4gdDAgaXMgdGhlIGJhc2UuIFdlIG1heSBjbG9iYmVyIHQx
IHRvIHVzZSBpdCBhcyBzY3JhdGNoLgotICAgIGxvYWRwIE9wUHV0QnlJZDo6TWV0YWRhdGE6OnN0
cnVjdHVyZUNoYWluW3Q1XSwgdDMKKyAgICBsb2FkcCAyOFtQQ10sIHQzCiAgICAgYnRweiB0Mywg
Lm9wUHV0QnlJZFRyYW5zaXRpb25EaXJlY3QKIAotICAgIGxvYWRpIE9wUHV0QnlJZDo6TWV0YWRh
dGE6Om9sZFN0cnVjdHVyZVt0NV0sIHQyICMgTmVlZCBvbGQgc3RydWN0dXJlIGFnYWluLgorICAg
IGxvYWRpIDE2W1BDXSwgdDIgIyBOZWVkIG9sZCBzdHJ1Y3R1cmUgYWdhaW4uCiAgICAgbG9hZHAg
U3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QzXSwgdDMKICAgICBhc3NlcnQobWFjcm8gKG9rKSBi
dHBueiB0Mywgb2sgZW5kKQogCkBAIC0xNDk1LDM5ICsxNjI0LDM5IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0CiAgICAgYnRwbnogdDIsIC5vcFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Mb29wCiAK
IC5vcFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Eb25lOgotICAgIGxvYWRpIE9wUHV0QnlJZDo6TWV0
YWRhdGE6Om5ld1N0cnVjdHVyZVt0NV0sIHQxCisgICAgbG9hZGkgMjRbUENdLCB0MQogCiAub3BQ
dXRCeUlkVHJhbnNpdGlvbkRpcmVjdDoKICAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0KLSAgICBnZXQodmFsdWUsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQyLCB0MykKLSAgICBsb2FkaSBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRb
dDVdLCB0MQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQxLCB0MiwgdDMpCisgICAgbG9hZGkgMjBbUENdLCB0MQogICAgIHN0b3JlUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQotICAgIHdyaXRlQmFycmllck9uT3BlcmFuZChz
aXplLCBnZXQsIGJhc2UpCi0gICAgZGlzcGF0Y2goKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFu
ZCgxKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wdXRfYnlfaWRfbGVuZ3RoKQogCiAub3BQ
dXRCeUlkTm90VHJhbnNpdGlvbjoKICAgICAjIFRoZSBvbmx5IHRoaW5nIGxpdmUgcmlnaHQgbm93
IGlzIHQwLCB3aGljaCBob2xkcyB0aGUgYmFzZS4KLSAgICBnZXQodmFsdWUsIHQxKQotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKLSAgICBsb2FkaSBPcFB1dEJ5
SWQ6Ok1ldGFkYXRhOjpvZmZzZXRbdDVdLCB0MQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkgMjBbUENdLCB0MQog
ICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQotICAgIGRp
c3BhdGNoKCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHV0X2J5X2lkX2xlbmd0aCkKIAog
Lm9wUHV0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5
X2lkKQotICAgIGRpc3BhdGNoKCkKLWVuZCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHV0
X2J5X2lkX2xlbmd0aCkKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQot
ICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICBnZXQoYmFzZSwgdDIpCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cp
CitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcs
IHQwLCAub3BHZXRCeVZhbFNsb3cpCiAgICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUo
T3BHZXRCeVZhbDo6TWV0YWRhdGE6OmFycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLSAgICBnZXQo
cHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQz
LCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCAxNltQQ10sIHQzCisg
ICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDEpCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFs
U2xvdykKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MwogICAgIGFuZGkg
SW5kZXhpbmdTaGFwZU1hc2ssIHQyCiAgICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlW
YWxJc0NvbnRpZ3VvdXMKQEAgLTE1NDYsNyArMTY3NSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CiAgICAgIyBGSVhNRTog
VGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgogICAgIGZkMmlpIGZ0MCwgdDEsIHQy
Ci0gICAgZ2V0KGRzdCwgdDApCisgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgam1wIC5vcEdldEJ5
VmFsTm90RW1wdHkKIAogLm9wR2V0QnlWYWxOb3REb3VibGU6CkBAIC0xNTU3LDI2NiArMTY4Niwy
NjggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQogCiAub3BHZXRCeVZhbERvbmU6
Ci0gICAgZ2V0KGRzdCwgdDApCisgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgYmllcSB0MiwgRW1w
dHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CiAub3BHZXRCeVZhbE5vdEVtcHR5OgogICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0MiwgdDEp
Ci0gICAgZGlzcGF0Y2goKQorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIDIwLCB0MCkKKyAgICBk
aXNwYXRjaChjb25zdGV4cHIgb3BfZ2V0X2J5X3ZhbF9sZW5ndGgpCiAKIC5vcEdldEJ5VmFsU2xv
dzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQotICAgIGRp
c3BhdGNoKCkKLWVuZCkKLQotCi1tYWNybyBwdXRCeVZhbE9wKG5hbWUsIG9wKQotICAgIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCi0gICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9y
ZUNhbGxiYWNrKQotICAgICAgICAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIC5vdXRPZkJvdW5k
cwotICAgICAgICAuc3RvcmVSZXN1bHQ6Ci0gICAgICAgICAgICBnZXQodmFsdWUsIHQyKQotICAg
ICAgICAgICAgc3RvcmVDYWxsYmFjayh0MiwgdDEsIHQwLCB0MykKLSAgICAgICAgICAgIGRpc3Bh
dGNoKCkKLQotICAgICAgICAub3V0T2ZCb3VuZHM6Ci0gICAgICAgICAgICBiaWFlcSB0MywgLXNp
emVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVu
Z3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRPZkJvdW5kcwotICAgICAgICAgICAgc3RvcmViIDEsICVv
cCU6Ok1ldGFkYXRhOjphcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KLSAgICAgICAg
ICAgIGFkZGkgMSwgdDMsIHQyCi0gICAgICAgICAgICBzdG9yZWkgdDIsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0KLSAg
ICAgICAgICAgIGptcCAuc3RvcmVSZXN1bHQKLSAgICAgICAgZW5kCisgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX2dldF9ieV92YWxfbGVuZ3RoKQorCisKK21hY3JvIGNvbnRpZ3VvdXNQdXRCeVZh
bChzdG9yZUNhbGxiYWNrKQorICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3V0T2ZCb3VuZHMK
Ky5zdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgc3RvcmVDYWxsYmFjayh0
MiwgdDEsIHQwLCB0MykKKyAgICBkaXNwYXRjaCg1KQogCi0gICAgICAgIHdyaXRlQmFycmllck9u
T3BlcmFuZHMoc2l6ZSwgZ2V0LCBiYXNlLCB2YWx1ZSkKLSAgICAgICAgbWV0YWRhdGEodDUsIHQw
KQotICAgICAgICBnZXQoYmFzZSwgdDApCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgICAgICBt
b3ZlIHQxLCB0MgotICAgICAgICBhcnJheVByb2ZpbGUoJW9wJTo6TWV0YWRhdGE6OmFycmF5UHJv
ZmlsZSwgdDIsIHQ1LCB0MCkKLSAgICAgICAgZ2V0KHByb3BlcnR5LCB0MCkKLSAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIEludDMyVGFnLCB0MywgLm9wUHV0
QnlWYWxTbG93KQotICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MAot
ICAgICAgICBidGlueiB0MiwgQ29weU9uV3JpdGUsIC5vcFB1dEJ5VmFsU2xvdwotICAgICAgICBh
bmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgICAgICBiaW5lcSB0MiwgSW50MzJTaGFwZSwg
Lm9wUHV0QnlWYWxOb3RJbnQzMgotICAgICAgICBjb250aWd1b3VzUHV0QnlWYWwoCi0gICAgICAg
ICAgICBtYWNybyAob3BlcmFuZCwgc2NyYXRjaCwgYmFzZSwgaW5kZXgpCi0gICAgICAgICAgICAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgb3BlcmFuZCwgSW50MzJUYWcs
IHNjcmF0Y2gsIC5vcFB1dEJ5VmFsU2xvdykKLSAgICAgICAgICAgICAgICBzdG9yZWkgSW50MzJU
YWcsIFRhZ09mZnNldFtiYXNlLCBpbmRleCwgOF0KLSAgICAgICAgICAgICAgICBzdG9yZWkgc2Ny
YXRjaCwgUGF5bG9hZE9mZnNldFtiYXNlLCBpbmRleCwgOF0KLSAgICAgICAgICAgIGVuZCkKLQot
ICAgIC5vcFB1dEJ5VmFsTm90SW50MzI6Ci0gICAgICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwg
Lm9wUHV0QnlWYWxOb3REb3VibGUKLSAgICAgICAgY29udGlndW91c1B1dEJ5VmFsKAotICAgICAg
ICAgICAgbWFjcm8gKG9wZXJhbmQsIHNjcmF0Y2gsIGJhc2UsIGluZGV4KQotICAgICAgICAgICAg
ICAgIGNvbnN0IHRhZyA9IHNjcmF0Y2gKLSAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0g
b3BlcmFuZAotICAgICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHNpemUs
IG9wZXJhbmQsIHRhZywgcGF5bG9hZCkKLSAgICAgICAgICAgICAgICBiaW5lcSB0YWcsIEludDMy
VGFnLCAubm90SW50Ci0gICAgICAgICAgICAgICAgY2kyZCBwYXlsb2FkLCBmdDAKLSAgICAgICAg
ICAgICAgICBqbXAgLnJlYWR5Ci0gICAgICAgICAgICAubm90SW50OgotICAgICAgICAgICAgICAg
IGZpaTJkIHBheWxvYWQsIHRhZywgZnQwCi0gICAgICAgICAgICAgICAgYmRuZXF1biBmdDAsIGZ0
MCwgLm9wUHV0QnlWYWxTbG93Ci0gICAgICAgICAgICAucmVhZHk6Ci0gICAgICAgICAgICAgICAg
c3RvcmVkIGZ0MCwgW2Jhc2UsIGluZGV4LCA4XQotICAgICAgICAgICAgZW5kKQotCi0gICAgLm9w
UHV0QnlWYWxOb3REb3VibGU6Ci0gICAgICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5v
cFB1dEJ5VmFsTm90Q29udGlndW91cwotICAgICAgICBjb250aWd1b3VzUHV0QnlWYWwoCi0gICAg
ICAgICAgICBtYWNybyAob3BlcmFuZCwgc2NyYXRjaCwgYmFzZSwgaW5kZXgpCi0gICAgICAgICAg
ICAgICAgY29uc3QgdGFnID0gc2NyYXRjaAotICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQg
PSBvcGVyYW5kCi0gICAgICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc2l6
ZSwgb3BlcmFuZCwgdGFnLCBwYXlsb2FkKQotICAgICAgICAgICAgICAgIHN0b3JlaSB0YWcsIFRh
Z09mZnNldFtiYXNlLCBpbmRleCwgOF0KLSAgICAgICAgICAgICAgICBzdG9yZWkgcGF5bG9hZCwg
UGF5bG9hZE9mZnNldFtiYXNlLCBpbmRleCwgOF0KLSAgICAgICAgICAgIGVuZCkKLQotICAgIC5v
cFB1dEJ5VmFsTm90Q29udGlndW91czoKLSAgICAgICAgYmluZXEgdDIsIEFycmF5U3RvcmFnZVNo
YXBlLCAub3BQdXRCeVZhbFNsb3cKLSAgICAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1
dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsg
VGFnT2Zmc2V0W3QwLCB0MywgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsQXJyYXlTdG9y
YWdlRW1wdHkKLSAgICAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0OgotICAgICAg
ICBnZXQodmFsdWUsIHQyKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhzaXpl
LCB0MiwgdDEsIHQyKQotICAgICAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBUYWdPZmZzZXRbdDAsIHQzLCA4XQotICAgICAgICBzdG9yZWkgdDIsIEFycmF5U3RvcmFnZTo6
bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MywgOF0KLSAgICAgICAgZGlzcGF0Y2goKQot
Ci0gICAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eToKLSAgICAgICAgc3RvcmViIDEsICVv
cCU6Ok1ldGFkYXRhOjphcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KLSAgICAgICAg
YWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCi0gICAgICAgIGJp
YiB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAotICAg
ICAgICBhZGRpIDEsIHQzLCB0MQotICAgICAgICBzdG9yZWkgdDEsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0KLSAgICAg
ICAgam1wIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKLQotICAgIC5vcFB1dEJ5
VmFsT3V0T2ZCb3VuZHM6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3AlOjpNZXRhZGF0YTo6YXJyYXlQ
cm9maWxlLm1fb3V0T2ZCb3VuZHNbdDVdCi0gICAgLm9wUHV0QnlWYWxTbG93OgotICAgICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lbmFtZSUpCi0gICAgICAgIGRpc3BhdGNoKCkK
LSAgICBlbmQpCi1lbmQKLQotCi1wdXRCeVZhbE9wKHB1dF9ieV92YWwsIE9wUHV0QnlWYWwpCi0K
LXB1dEJ5VmFsT3AocHV0X2J5X3ZhbF9kaXJlY3QsIE9wUHV0QnlWYWxEaXJlY3QpCi0KLQotbWFj
cm8gbGxpbnRKdW1wVHJ1ZU9yRmFsc2VPcChuYW1lLCBvcCwgY29uZGl0aW9uT3ApCi0gICAgbGxp
bnRPcFdpdGhKdW1wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3Bh
dGNoKQotICAgICAgICBnZXQoY29uZGl0aW9uLCB0MSkKLSAgICAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQoc2l6ZSwgdDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKLSAgICAgICAg
Y29uZGl0aW9uT3AodDAsIC50YXJnZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKLQotICAgIC50YXJn
ZXQ6Ci0gICAgICAgIGp1bXAodGFyZ2V0KQotCi0gICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKLSAgICAgICAgbmV4dEluc3RydWN0aW9uKCkK
LSAgICBlbmQpCi1lbmQKLQotCi1tYWNybyBlcXVhbE51bGxKdW1wT3AobmFtZSwgb3AsIGNlbGxI
YW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQotICAgIGxsaW50T3BXaXRoSnVtcChvcF8lbmFtZSUs
IG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKLSAgICAgICAgZ2V0KHZhbHVl
LCB0MCkKLSAgICAgICAgYXNzZXJ0Tm90Q29uc3RhbnQoc2l6ZSwgdDApCi0gICAgICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKLSAgICAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKLSAg
ICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKLSAgICAgICAgY2VsbEhh
bmRsZXIodDIsIEpTQ2VsbDo6bV9mbGFnc1t0MF0sIC50YXJnZXQpCi0gICAgICAgIGRpc3BhdGNo
KCkKLQotICAgIC50YXJnZXQ6Ci0gICAgICAgIGp1bXAodGFyZ2V0KQotCi0gICAgLmltbWVkaWF0
ZToKLSAgICAgICAgb3JpIDEsIHQxCi0gICAgICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJn
ZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQpCi1lbmQKLQotZXF1YWxOdWxsSnVtcE9w
KGplcV9udWxsLCBPcEplcU51bGwsCi0gICAgbWFjcm8gKHN0cnVjdHVyZSwgdmFsdWUsIHRhcmdl
dCkKLSAgICAgICAgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm9wSmVxTnVs
bE5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKLSAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQwCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAotICAg
ICAgICBicGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3Rbc3RydWN0dXJlXSwgdDAsIHRhcmdl
dAotICAgIC5vcEplcU51bGxOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgotICAgIGVuZCwKLSAg
ICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkK
Ky5vdXRPZkJvdW5kczoKKyAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRP
ZkJvdW5kcworICAgIGxvYWRwIDE2W1BDXSwgdDIKKyAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxl
OjptX21heVN0b3JlVG9Ib2xlW3QyXQorICAgIGFkZGkgMSwgdDMsIHQyCisgICAgc3RvcmVpIHQy
LCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJs
aWNMZW5ndGhbdDBdCisgICAgam1wIC5zdG9yZVJlc3VsdAorZW5kCisKK21hY3JvIHB1dEJ5VmFs
KHNsb3dQYXRoKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJh
bmRzKDEsIDMpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbW92ZSB0MSwg
dDIKKyAgICBsb2FkcCAxNltQQ10sIHQzCisgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAs
IEludDMyVGFnLCB0MywgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1
dHRlcmZseVt0MV0sIHQwCisgICAgYnRpbnogdDIsIENvcHlPbldyaXRlLCAub3BQdXRCeVZhbFNs
b3cKKyAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgIGJpbmVxIHQyLCBJbnQzMlNo
YXBlLCAub3BQdXRCeVZhbE5vdEludDMyCisgICAgY29udGlndW91c1B1dEJ5VmFsKAorICAgICAg
ICBtYWNybyAob3BlcmFuZCwgc2NyYXRjaCwgYmFzZSwgaW5kZXgpCisgICAgICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChvcGVyYW5kLCBJbnQzMlRhZywgc2NyYXRjaCwgLm9w
UHV0QnlWYWxTbG93KQorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbYmFz
ZSwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFti
YXNlLCBpbmRleCwgOF0KKyAgICAgICAgZW5kKQorCisub3BQdXRCeVZhbE5vdEludDMyOgorICAg
IGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wUHV0QnlWYWxOb3REb3VibGUKKyAgICBjb250aWd1
b3VzUHV0QnlWYWwoCisgICAgICAgIG1hY3JvIChvcGVyYW5kLCBzY3JhdGNoLCBiYXNlLCBpbmRl
eCkKKyAgICAgICAgICAgIGNvbnN0IHRhZyA9IHNjcmF0Y2gKKyAgICAgICAgICAgIGNvbnN0IHBh
eWxvYWQgPSBvcGVyYW5kCisgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhv
cGVyYW5kLCB0YWcsIHBheWxvYWQpCisgICAgICAgICAgICBiaW5lcSB0YWcsIEludDMyVGFnLCAu
bm90SW50CisgICAgICAgICAgICBjaTJkIHBheWxvYWQsIGZ0MAorICAgICAgICAgICAgam1wIC5y
ZWFkeQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgZmlpMmQgcGF5bG9hZCwgdGFnLCBm
dDAKKyAgICAgICAgICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgICAg
ICAucmVhZHk6CisgICAgICAgICAgICBzdG9yZWQgZnQwLCBbYmFzZSwgaW5kZXgsIDhdCisgICAg
ICAgIGVuZCkKKworLm9wUHV0QnlWYWxOb3REb3VibGU6CisgICAgYmluZXEgdDIsIENvbnRpZ3Vv
dXNTaGFwZSwgLm9wUHV0QnlWYWxOb3RDb250aWd1b3VzCisgICAgY29udGlndW91c1B1dEJ5VmFs
KAorICAgICAgICBtYWNybyAob3BlcmFuZCwgc2NyYXRjaCwgYmFzZSwgaW5kZXgpCisgICAgICAg
ICAgICBjb25zdCB0YWcgPSBzY3JhdGNoCisgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gb3Bl
cmFuZAorICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcob3BlcmFuZCwgdGFn
LCBwYXlsb2FkKQorICAgICAgICAgICAgc3RvcmVpIHRhZywgVGFnT2Zmc2V0W2Jhc2UsIGluZGV4
LCA4XQorICAgICAgICAgICAgc3RvcmVpIHBheWxvYWQsIFBheWxvYWRPZmZzZXRbYmFzZSwgaW5k
ZXgsIDhdCisgICAgICAgIGVuZCkKKworLm9wUHV0QnlWYWxOb3RDb250aWd1b3VzOgorICAgIGJp
bmVxIHQyLCBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDMs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rv
ckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKKyAgICBiaWVxIEFycmF5U3RvcmFn
ZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQzLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0
QnlWYWxBcnJheVN0b3JhZ2VFbXB0eQorLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3Vs
dDoKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDIsIHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdP
ZmZzZXRbdDAsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciAr
IFBheWxvYWRPZmZzZXRbdDAsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcFB1dEJ5VmFs
QXJyYXlTdG9yYWdlRW1wdHk6CisgICAgbG9hZHAgMTZbUENdLCB0MQorICAgIHN0b3JlYiAxLCBB
cnJheVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hvbGVbdDFdCisgICAgYWRkaSAxLCBBcnJheVN0b3Jh
Z2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQ
dXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MywgdDEKKyAgICBz
dG9yZWkgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnB1YmxpY0xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9y
ZVJlc3VsdAorCisub3BQdXRCeVZhbE91dE9mQm91bmRzOgorICAgIGxvYWRwRnJvbUluc3RydWN0
aW9uKDQsIHQwKQorICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0T2ZCb3VuZHNbdDBd
Cisub3BQdXRCeVZhbFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQorICAgIGRpc3Bh
dGNoKDUpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgcHV0QnlWYWwoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfYnlfdmFsKQorCitfbGxpbnRfb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6Cisg
ICAgcHV0QnlWYWwoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKKworX2xsaW50
X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10p
CisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFu
VGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0
Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCisKK21hY3JvIGVx
dWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBi
aW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIodDIsIEpTQ2VsbDo6bV9mbGFnc1t0MF0sIC50
YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4
W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVy
KHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvIChz
dHJ1Y3R1cmUsIHZhbHVlLCB0YXJnZXQpIAorICAgICAgICAgICAgYnRieiB2YWx1ZSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgLm9wSmVxTnVsbE5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKKyAg
ICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgICAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgICAgICAgICBicGVxIFN0cnVjdHVy
ZTo6bV9nbG9iYWxPYmplY3Rbc3RydWN0dXJlXSwgdDAsIHRhcmdldAorLm9wSmVxTnVsbE5vdE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQ6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVl
LCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCiAgICAgCiAKLWVxdWFs
TnVsbEp1bXBPcChqbmVxX251bGwsIE9wSm5lcU51bGwsCi0gICAgbWFjcm8gKHN0cnVjdHVyZSwg
dmFsdWUsIHRhcmdldCkKLSAgICAgICAgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgdGFyZ2V0Ci0gICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAotICAgICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKLSAgICAgICAgYnBuZXEgU3RydWN0
dXJlOjptX2dsb2JhbE9iamVjdFtzdHJ1Y3R1cmVdLCB0MCwgdGFyZ2V0Ci0gICAgZW5kLAotICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkK
K19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVs
bCgKKyAgICAgICAgbWFjcm8gKHN0cnVjdHVyZSwgdmFsdWUsIHRhcmdldCkgCisgICAgICAgICAg
ICBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgCisgICAgICAgICAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgICAgICAgICAgYnBuZXEgU3RydWN0dXJlOjptX2ds
b2JhbE9iamVjdFtzdHJ1Y3R1cmVdLCB0MCwgdGFyZ2V0CisgICAgICAgIGVuZCwKKyAgICAgICAg
bWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQog
CiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCi0gICAgZ2V0KHZhbHVlLCB0MCkK
LSAgICBnZXQoc3BlY2lhbFBvaW50ZXIsIHQxKQorX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEK
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QyXSwgdDIKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxU
YWcsIC5vcEpuZXFQdHJCcmFuY2gKICAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9zcGVjaWFs
UG9pbnRlcnNbdDIsIHQxLCA0XSwgdDEKICAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKIC5vcEpuZXFQdHJCcmFuY2g6Ci0gICAgbWV0
YWRhdGEodDUsIHQyKQotICAgIHN0b3JlYiAxLCBPcEpuZXFQdHI6Ok1ldGFkYXRhOjpoYXNKdW1w
ZWRbdDVdCi0gICAgZ2V0KHRhcmdldCwgdDApCi0gICAganVtcEltcGwodDApCisgICAgc3RvcmVp
IDEsIDE2W1BDXQorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKIC5vcEpuZXFQdHJGYWxsVGhy
b3VnaDoKLSAgICBkaXNwYXRjaCgpCi1lbmQpCi0KLQotbWFjcm8gY29tcGFyZVVuc2lnbmVkSnVt
cE9wKG5hbWUsIG9wLCBpbnRlZ2VyQ29tcGFyZSkKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5h
bWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCi0gICAgICAgIGdldChs
aHMsIHQyKQotICAgICAgICBnZXQocmhzLCB0MykKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MiwgdDAsIHQxKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
ZyhzaXplLCB0MywgdDIsIHQzKQotICAgICAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1w
VGFyZ2V0KQotICAgICAgICBkaXNwYXRjaCgpCi0KLSAgICAuanVtcFRhcmdldDoKLSAgICAgICAg
anVtcCh0YXJnZXQpCi0gICAgZW5kKQotZW5kCi0KLQotbWFjcm8gY29tcGFyZVVuc2lnbmVkT3Ao
bmFtZSwgb3AsIGludGVnZXJDb21wYXJlQW5kU2V0KQotICAgIGxsaW50T3BXaXRoUmV0dXJuKG9w
XyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgICAg
IGdldChyaHMsIHQyKQotICAgICAgICBnZXQobGhzLCB0MCkKLSAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MiwgdDMsIHQxKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyhzaXplLCB0MCwgdDIsIHQwKQotICAgICAgICBpbnRlZ2VyQ29tcGFyZUFuZFNldCh0
MCwgdDEsIHQwKQotICAgICAgICByZXR1cm4oQm9vbGVhblRhZywgdDApCi0gICAgZW5kKQotZW5k
Ci0KLQotbWFjcm8gY29tcGFyZUp1bXBPcChuYW1lLCBvcCwgaW50ZWdlckNvbXBhcmUsIGRvdWJs
ZUNvbXBhcmUpCi0gICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXpl
LCBnZXQsIGp1bXAsIGRpc3BhdGNoKQotICAgICAgICBnZXQobGhzLCB0MikKLSAgICAgICAgZ2V0
KHJocywgdDMpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwLCB0
MSkKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoc2l6ZSwgdDMsIHQyLCB0MykK
LSAgICAgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50Ci0gICAgICAgIGJpbmVxIHQy
LCBJbnQzMlRhZywgLm9wMk5vdEludAotICAgICAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5q
dW1wVGFyZ2V0KQotICAgICAgICBkaXNwYXRjaCgpCi0KLSAgICAub3AxTm90SW50OgotICAgICAg
ICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKLSAgICAgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5v
cDFOb3RJbnRPcDJEb3VibGUKLSAgICAgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdwotICAg
ICAgICBjaTJkIHQzLCBmdDEKLSAgICAgICAgam1wIC5vcDFOb3RJbnRSZWFkeQotICAgIC5vcDFO
b3RJbnRPcDJEb3VibGU6Ci0gICAgICAgIGZpaTJkIHQzLCB0MiwgZnQxCi0gICAgLm9wMU5vdElu
dFJlYWR5OgotICAgICAgICBmaWkyZCB0MSwgdDAsIGZ0MAotICAgICAgICBkb3VibGVDb21wYXJl
KGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQotCi0gICAgLm9wMk5v
dEludDoKLSAgICAgICAgY2kyZCB0MSwgZnQwCi0gICAgICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAu
c2xvdwotICAgICAgICBmaWkyZCB0MywgdDIsIGZ0MQotICAgICAgICBkb3VibGVDb21wYXJlKGZ0
MCwgZnQxLCAuanVtcFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQotCi0gICAgLmp1bXBUYXJn
ZXQ6Ci0gICAgICAgIGp1bXAodGFyZ2V0KQotCi0gICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKLSAgICAgICAgbmV4dEluc3RydWN0aW9uKCkK
LSAgICBlbmQpCi1lbmQKLQotCi1sbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0
Y2hJbW0sIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQotICAgIGdldChzY3J1dGlu
ZWUsIHQyKQotICAgIGdldCh0YWJsZUluZGV4LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2puZXFfcHRy
X2xlbmd0aCkKKworCittYWNybyBjb21wYXJlVW5zaWduZWRKdW1wKGludGVnZXJDb21wYXJlKQor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0
MywgdDIsIHQzKQorICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAg
ZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQor
ZW5kCisKKworbWFjcm8gY29tcGFyZVVuc2lnbmVkKGludGVnZXJDb21wYXJlQW5kU2V0KQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBpbnRlZ2VyQ29tcGFyZUFuZFNldCh0MCwgdDEsIHQwKQorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0
KQorZW5kCisKKworbWFjcm8gY29tcGFyZUp1bXAoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBh
cmUsIHNsb3dQYXRoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5v
dEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21w
YXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoK
KyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9w
MU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJk
IHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgor
ICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQw
LCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNw
YXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93
ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShm
dDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xv
d1BhdGgpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQogICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0s
IHQyCiAgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxk
IGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKQEAgLTE4MjgsMjMgKzE5NTksMjMgQEAgbGxpbnRP
cFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0sIE9wU3dpdGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBq
dW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MwogICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQog
ICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCi0gICAgZGlzcGF0Y2hJbmRpcmVj
dCh0MSkKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCiAKIC5vcFN3aXRjaEltbU5v
dEludDoKICAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBz
bG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgotICAg
IGp1bXAoZGVmYXVsdE9mZnNldCkKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKIAogLm9wU3dp
dGNoSW1tU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zd2l0Y2hfaW1t
KQotICAgIG5leHRJbnN0cnVjdGlvbigpCi1lbmQpCisgICAgZGlzcGF0Y2goMCkKIAogCi1sbGlu
dE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdl
dCwganVtcCwgZGlzcGF0Y2gpCi0gICAgZ2V0KHNjcnV0aW5lZSwgdDIpCi0gICAgZ2V0KHRhYmxl
SW5kZXgsIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0MCkK
K19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQxLCB0MCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKICAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgogICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBU
YWJsZSwgdDMKQEAgLTE4NjcsODAgKzE5OTgsNzYgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRj
aF9jaGFyLCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQog
ICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0Ml0sIHQyCiAgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCiAgICAgYnRpeiB0MSwgLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgZGlzcGF0Y2hJbmRpcmVjdCh0MSkKKyAgICBkaXNw
YXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCiAKIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKLSAg
ICBqdW1wKGRlZmF1bHRPZmZzZXQpCisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCiAKIC5vcFN3
aXRjaE9uUm9wZToKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zd2l0Y2hfY2hh
cikKLSAgICBuZXh0SW5zdHJ1Y3Rpb24oKQotZW5kKQorICAgIGRpc3BhdGNoKDApCiAKIAotbWFj
cm8gYXJyYXlQcm9maWxlRm9yQ2FsbChvcCwgZ2V0dSkKLSAgICBnZXR1KGFyZ3YsIHQzKQorbWFj
cm8gYXJyYXlQcm9maWxlRm9yQ2FsbCgpCisgICAgbG9hZGkgMTZbUENdLCB0MwogICAgIG5lZ2kg
dDMKICAgICBiaW5lcSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MywgOF0s
IENlbGxUYWcsIC5kb25lCiAgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XSwgdDAKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBd
LCB0MAotICAgIHN0b3JlcCB0MCwgJW9wJTo6TWV0YWRhdGE6OmFycmF5UHJvZmlsZS5tX2xhc3RT
ZWVuU3RydWN0dXJlSURbdDVdCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oQ2FsbE9wQ29kZVNp
emUgLSAyLCB0MSkKKyAgICBzdG9yZXAgdDAsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVj
dHVyZUlEW3QxXQogLmRvbmU6CiBlbmQKIAotbWFjcm8gY29tbW9uQ2FsbE9wKG5hbWUsIHNsb3dQ
YXRoLCBvcCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQotICAgIGxsaW50T3BXaXRoTWV0YWRhdGEo
bmFtZSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQot
ICAgICAgICBtZXRhZGF0YSh0NSwgdDApCi0KLSAgICAgICAgcHJvbG9ndWUobWFjcm8gKGZpZWxk
LCBkc3QpCi0gICAgICAgICAgICBnZXR1KHNpemUsIG9wLCBmaWVsZCwgZHN0KQotICAgICAgICBl
bmQsIG1ldGFkYXRhKQotCi0gICAgICAgIGdldChjYWxsZWUsIHQwKQotICAgICAgICBsb2FkcCAl
b3AlOjpNZXRhZGF0YTo6Y2FsbExpbmtJbmZvLmNhbGxlZVt0NV0sIHQyCi0gICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNs
b3cpCi0gICAgICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0KGFyZ3Ys
IHQzKQotICAgICAgICBsc2hpZnRpIDMsIHQzCi0gICAgICAgIG5lZ2kgdDMKLSAgICAgICAgYWRk
cCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCi0gICAgICAgIHN0
b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICAgICAgZ2V0KGFyZ2MsIHQy
KQotICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQotICAg
ICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAg
ICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQotICAgICAgICBtb3ZlIHQz
LCBzcAotICAgICAgICBwcmVwYXJlQ2FsbCglb3AlOjpNZXRhZGF0YTo6Y2FsbExpbmtJbmZvLm1h
Y2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAg
Y2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wLCBkaXNwYXRjaCwgJW9wJTo6TWV0YWRhdGE6OmNh
bGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCittYWNybyBk
b0NhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwg
dDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5v
cENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxNltQ
Q10sIHQzCisgICAgbHNoaWZ0aSAzLCB0MworICAgIG5lZ2kgdDMKKyAgICBhZGRwIGNmciwgdDMg
ICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBzdG9yZWkgdDIsIENhbGxl
ZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIHN0b3JlaSBQ
QywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVu
dENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsg
VGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIHNwCisgICAgcHJlcGFyZUNhbGwoTExJbnRDYWxs
TGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRh
ZykKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2Rl
VGFyZ2V0W3QxXSwgSlNFbnRyeVB0clRhZykKIAotICAgIC5vcENhbGxTbG93OgotICAgICAgICBz
bG93UGF0aEZvckNhbGwoc2l6ZSwgb3AsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwp
Ci0gICAgZW5kKQorLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKHNsb3dQYXRoLCBw
cmVwYXJlQ2FsbCkKIGVuZAogCi1sbGludE9wKG9wX3JldCwgT3BSZXQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoKQorX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKLSAgICBnZXQodmFsdWUsIHQyKQotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0MCkKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCiAgICAgZG9SZXR1cm4o
KQotZW5kKQogCiAKLWxsaW50T3BXaXRoUmV0dXJuKG9wX3RvX3ByaW1pdGl2ZSwgT3BUb1ByaW1p
dGl2ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBnZXQoc3JjLCB0
MikKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MSwgdDApCitfbGxpbnRf
b3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MSwgdDApCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KICAgICBi
YmFlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nh
c2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06Ci0gICAgcmV0dXJuKHQxLCB0MCkKKyAgICBzdG9yZWkg
dDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b19wcmltaXRpdmVfbGVuZ3Ro
KQogCiAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X3RvX3ByaW1pdGl2ZSkKLSAgICBkaXNwYXRjaCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX3RvX3ByaW1pdGl2ZV9sZW5ndGgpCiAKIAotY29tbW9uT3Aob3BfY2F0Y2gsIG1hY3Jv
KCkgZW5kLCBtYWNybyAoc2l6ZSkKK19sbGludF9vcF9jYXRjaDoKICAgICAjIFRoaXMgaXMgd2hl
cmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhl
CiAgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50
X29wX2NhdGNoKSwgYW5kIGZyb20KICAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1w
b2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCkBAIC0xOTU0LDE1ICsyMDgxLDYg
QEAgY29tbW9uT3Aob3BfY2F0Y2gsIG1hY3JvKCkgZW5kLCBtYWNybyAoc2l6ZSkKICAgICBzdG9y
ZXAgMCwgVk06OmNhbGxGcmFtZUZvckNhdGNoW3QzXQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJB
ZnRlckNhbGwoKQogCi0gICAgaWYgQ19MT09QCi0gICAgICAgICMgcmVzdG9yZSBtZXRhZGF0YVRh
YmxlIHNpbmNlIHdlIGRvbid0IHJlc3RvcmUgY2FsbGVlIHNhdmVzIGZvciBDTG9vcCBkdXJpbmcg
dW53aW5kaW5nCi0gICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQotICAgICAgICAjIEZJ
WE1FOiBjbGVhbnVwIGRvdWJsZSBsb2FkCi0gICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDkzMwotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fbWV0
YWRhdGFbdDFdLCBtZXRhZGF0YVRhYmxlCi0gICAgICAgIGxvYWRwIE1ldGFkYXRhVGFibGU6Om1f
YnVmZmVyW21ldGFkYXRhVGFibGVdLCBtZXRhZGF0YVRhYmxlCi0gICAgZW5kCi0KICAgICBsb2Fk
aSBWTTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKIAogICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9h
bmRfbm90aWZ5X3Byb2ZpbGVyKQpAQCAtMTk3NiwxMyArMjA5NCwxMyBAQCBjb21tb25PcChvcF9j
YXRjaCwgbWFjcm8oKSBlbmQsIG1hY3JvIChzaXplKQogCiAgICAgbG9hZGkgVk06Om1fZXhjZXB0
aW9uW3QzXSwgdDAKICAgICBzdG9yZWkgMCwgVk06Om1fZXhjZXB0aW9uW3QzXQotICAgIGdldChz
aXplLCBPcENhdGNoLCBleGNlcHRpb24sIHQyKQorICAgIGxvYWRpIDRbUENdLCB0MgogICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQogICAgIHN0b3JlaSBDZWxsVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KIAogICAgIGxvYWRpIEV4Y2VwdGlvbjo6bV92YWx1ZSArIFRh
Z09mZnNldFt0MF0sIHQxCiAgICAgbG9hZGkgRXhjZXB0aW9uOjptX3ZhbHVlICsgUGF5bG9hZE9m
ZnNldFt0MF0sIHQwCi0gICAgZ2V0KHNpemUsIE9wQ2F0Y2gsIHRocm93blZhbHVlLCB0MikKKyAg
ICBsb2FkaSA4W1BDXSwgdDIKICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogCkBAIC0xOTkwLDIwICsy
MTA4LDE5IEBAIGNvbW1vbk9wKG9wX2NhdGNoLCBtYWNybygpIGVuZCwgbWFjcm8gKHNpemUpCiAK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQogCi0gICAg
ZGlzcGF0Y2hPcChzaXplLCBvcF9jYXRjaCkKLWVuZCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIg
b3BfY2F0Y2hfbGVuZ3RoKQogCi1sbGludE9wKG9wX2VuZCwgT3BFbmQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoKQorX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKLSAgICBnZXQodmFsdWUsIHQwKQotICAgIGFz
c2VydE5vdENvbnN0YW50KHNpemUsIHQwKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2Vy
dE5vdENvbnN0YW50KHQwKQogICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGRvUmV0dXJuKCkKLWVu
ZCkKIAogCi1vcChsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBtYWNybygp
CitfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZToKICAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKQogCiAgICAgIyBXaGVuIHRocm93
aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRTbG93UGF0
aHMpLCBzbwpAQCAtMjAxNCwxMyArMjEzMSwxMSBAQCBvcChsbGludF90aHJvd19mcm9tX3Nsb3df
cGF0aF90cmFtcG9saW5lLCBtYWNybygpCiAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJPZmZz
ZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QxXSwgdDEKICAgICBjb3B5Q2FsbGVlU2F2
ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHQxLCB0MikKICAgICBqbXAgVk06OnRh
cmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQotZW5kKQogCiAKLW9wKGxsaW50X3Rocm93X2R1cmlu
Z19jYWxsX3RyYW1wb2xpbmUsIG1hY3JvKCkKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFt
cG9saW5lOgogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKICAgICBqbXAg
X2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUKLWVuZCkKIAogCiBtYWNybyBu
YXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikKQEAgLTIxNDcs
NiArMjI2MiwxMyBAQCBlbmQKIGVuZAogCiAKK21hY3JvIGdldENvbnN0YW50U2NvcGUoZHN0KQor
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bihkc3QsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KK2VuZAorCiBtYWNybyB2YXJJ
bmplY3Rpb25DaGVjayhzbG93UGF0aCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKQEAgLTIxNTQsMTIzICsy
Mjc2LDEzNiBAQCBtYWNybyB2YXJJbmplY3Rpb25DaGVjayhzbG93UGF0aCkKICAgICBiYmVxIFdh
dGNocG9pbnRTZXQ6Om1fc3RhdGVbdDBdLCBJc0ludmFsaWRhdGVkLCBzbG93UGF0aAogZW5kCiAK
K21hY3JvIHJlc29sdmVTY29wZSgpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQyKQogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jl
c29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdGEsIHJldHVybikKLQotICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAg
ICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6OmNvbnN0YW50U2NvcGVbdDVdLCAgdDAK
LSAgICAgICAgcmV0dXJuKENlbGxUYWcsIHQwKQotICAgIGVuZAorICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigyLCB0MCkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJ0aXogdDIsIC5yZXNvbHZlU2NvcGVMb29wRW5kCiAKLSAgICBtYWNybyByZXNvbHZlU2Nv
cGUoKQotICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6OmxvY2FsU2NvcGVE
ZXB0aFt0NV0sIHQyCi0gICAgICAgIGdldChzY29wZSwgdDApCi0gICAgICAgIGxvYWRwIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgICAgIGJ0aXogdDIsIC5yZXNvbHZlU2NvcGVM
b29wRW5kCisucmVzb2x2ZVNjb3BlTG9vcDoKKyAgICBsb2FkcCBKU1Njb3BlOjptX25leHRbdDBd
LCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLnJlc29sdmVTY29wZUxvb3AKIAot
ICAgIC5yZXNvbHZlU2NvcGVMb29wOgotICAgICAgICBsb2FkcCBKU1Njb3BlOjptX25leHRbdDBd
LCB0MAotICAgICAgICBzdWJpIDEsIHQyCi0gICAgICAgIGJ0aW56IHQyLCAucmVzb2x2ZVNjb3Bl
TG9vcAorLnJlc29sdmVTY29wZUxvb3BFbmQ6CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KK2VuZAogCi0gICAgLnJlc29sdmVTY29w
ZUxvb3BFbmQ6Ci0gICAgICAgIHJldHVybihDZWxsVGFnLCB0MCkKLSAgICBlbmQKIAotICAgIG1l
dGFkYXRhKHQ1LCB0MCkKLSAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6OnJlc29s
dmVUeXBlW3Q1XSwgdDAKK19sbGludF9vcF9yZXNvbHZlX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDApCiAKICNyR2xvYmFsUHJvcGVy
dHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZhcgotICAgIGdldENv
bnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUoMSkKKyAgICBkaXNwYXRjaCg3KQog
CiAuckdsb2JhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyLCAuckdsb2JhbExleGljYWxW
YXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRDb25zdGFudFNjb3BlKDEpCisgICAg
ZGlzcGF0Y2goNykKIAogLnJHbG9iYWxMZXhpY2FsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxM
ZXhpY2FsVmFyLCAuckNsb3N1cmVWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRD
b25zdGFudFNjb3BlKDEpCisgICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgogICAgIGJp
bmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29sdmVTY29wZSgpCisgICAg
ZGlzcGF0Y2goNykKIAogLnJNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBnZXRDb25zdGFudFNjb3Bl
KCkKKyAgICBnZXRDb25zdGFudFNjb3BlKDEpCisgICAgZGlzcGF0Y2goNykKIAogLnJHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdldENvbnN0YW50U2Nv
cGUoKQorICAgIGdldENvbnN0YW50U2NvcGUoMSkKKyAgICBkaXNwYXRjaCg3KQogCiAuckdsb2Jh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCi0gICAgZ2V0Q29uc3RhbnRTY29w
ZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSgxKQorICAgIGRpc3BhdGNoKDcpCiAKIC5yR2xvYmFs
TGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdldENvbnN0
YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUoMSkKKyAgICBkaXNwYXRjaCg3KQogCiAu
ckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBDbG9zdXJl
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJEeW5hbWljCiAgICAgdmFySW5qZWN0aW9uQ2hl
Y2soLnJEeW5hbWljKQogICAgIHJlc29sdmVTY29wZSgpCisgICAgZGlzcGF0Y2goNykKIAogLnJE
eW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpCi0gICAg
ZGlzcGF0Y2goKQotZW5kKQorICAgIGRpc3BhdGNoKDcpCiAKIAotbWFjcm8gbG9hZFdpdGhTdHJ1
Y3R1cmVDaGVjayhvcCwgZ2V0LCBvcGVyYW5kLCBzbG93UGF0aCkKLSAgICBnZXQoc2NvcGUsIHQw
KQorbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5kLCBzbG93UGF0aCkKKyAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkcCAlb3AlOjpNZXRhZGF0YTo6c3RydWN0dXJlW3Q1
XSwgdDEKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig1LCB0MSkKICAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDBdLCB0MSwgc2xvd1BhdGgKIGVuZAogCittYWNybyBnZXRQcm9wZXJ0
eSgpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDYsIHQzKQorICAgIGxvYWRQcm9wZXJ0eUF0
VmFyaWFibGVPZmZzZXQodDMsIHQwLCB0MSwgdDIpCisgICAgdmFsdWVQcm9maWxlKHQxLCB0Miwg
MjgsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKKyAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorZW5kCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9w
R2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVy
bikKLSAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCi0gICAgICAgIGxvYWRpcyBPcEdldEZyb21TY29w
ZTo6TWV0YWRhdGE6Om9wZXJhbmRbdDVdLCB0MwotICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9t
U2NvcGUsIHQ1LCB0MSwgdDIpCi0gICAgICAgIHJldHVybih0MSwgdDIpCi0gICAgZW5kCi0KLSAg
ICBtYWNybyBnZXRHbG9iYWxWYXIodGR6Q2hlY2tJZk5lY2Vzc2FyeSkKLSAgICAgICAgbG9hZHAg
T3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjpvcGVyYW5kW3Q1XSwgdDAKLSAgICAgICAgbG9hZHAg
VGFnT2Zmc2V0W3QwXSwgdDEKLSAgICAgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0MF0sIHQyCi0g
ICAgICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDEpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdl
dEZyb21TY29wZSwgdDUsIHQxLCB0MikKLSAgICAgICAgcmV0dXJuKHQxLCB0MikKLSAgICBlbmQK
K21hY3JvIGdldEdsb2JhbFZhcih0ZHpDaGVja0lmTmVjZXNzYXJ5KQorICAgIGxvYWRwRnJvbUlu
c3RydWN0aW9uKDYsIHQwKQorICAgIGxvYWRwIFRhZ09mZnNldFt0MF0sIHQxCisgICAgbG9hZHAg
UGF5bG9hZE9mZnNldFt0MF0sIHQyCisgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKKyAgICB2
YWx1ZVByb2ZpbGUodDEsIHQyLCAyOCwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQwKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCitlbmQKIAotICAgIG1hY3JvIGdldENsb3N1cmVW
YXIoKQotICAgICAgICBsb2FkaXMgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjpvcGVyYW5kW3Q1
XSwgdDMKLSAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgVGFn
T2Zmc2V0W3QwLCB0MywgOF0sIHQxCi0gICAgICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50
X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAsIHQzLCA4XSwgdDIKLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCB0NSwgdDEsIHQyKQotICAgICAgICByZXR1cm4odDEsIHQy
KQotICAgIGVuZAorbWFjcm8gZ2V0Q2xvc3VyZVZhcigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDYsIHQzKQorICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFRh
Z09mZnNldFt0MCwgdDMsIDhdLCB0MQorICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3Zh
cmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAsIHQzLCA4XSwgdDIKKyAgICB2YWx1ZVByb2ZpbGUo
dDEsIHQyLCAyOCwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCitlbmQKIAotICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICBsb2FkaSBP
cEdldEZyb21TY29wZTo6TWV0YWRhdGE6OmdldFB1dEluZm9bdDVdLCB0MAorX2xsaW50X29wX2dl
dF9mcm9tX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oNCwgdDApCiAgICAgYW5kaSBSZXNvbHZlVHlwZU1hc2ssIHQwCiAKICNnR2xvYmFsUHJv
cGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAuZ0dsb2JhbFZhcgotICAgIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgc2NvcGUsIC5nRHluYW1p
YykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKDIsIC5nRHluYW1pYykKICAgICBnZXRQcm9w
ZXJ0eSgpCisgICAgZGlzcGF0Y2goOCkKIAogLmdHbG9iYWxWYXI6CiAgICAgYmluZXEgdDAsIEds
b2JhbFZhciwgLmdHbG9iYWxMZXhpY2FsVmFyCiAgICAgZ2V0R2xvYmFsVmFyKG1hY3JvKHQpIGVu
ZCkKKyAgICBkaXNwYXRjaCg4KQogCiAuZ0dsb2JhbExleGljYWxWYXI6CiAgICAgYmluZXEgdDAs
IEdsb2JhbExleGljYWxWYXIsIC5nQ2xvc3VyZVZhcgpAQCAtMjI3OCwyMSArMjQxMywyNSBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgICAgICBtYWNybyh0YWcpCiAgICAgICAgICAgICBi
aWVxIHRhZywgRW1wdHlWYWx1ZVRhZywgLmdEeW5hbWljCiAgICAgICAgIGVuZCkKKyAgICBkaXNw
YXRjaCg4KQogCiAuZ0Nsb3N1cmVWYXI6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5nR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9hZFZhcmlhYmxlKGdldCwg
c2NvcGUsIHQyLCB0MSwgdDApCisgICAgbG9hZFZhcmlhYmxlKDIsIHQyLCB0MSwgdDApCiAgICAg
Z2V0Q2xvc3VyZVZhcigpCisgICAgZGlzcGF0Y2goOCkKIAogLmdHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcywgLmdHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCBzY29wZSwgLmdEeW5hbWlj
KQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soMiwgLmdEeW5hbWljKQogICAgIGdldFByb3Bl
cnR5KCkKKyAgICBkaXNwYXRjaCg4KQogCiAuZ0dsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5nR2xv
YmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVj
ayguZ0R5bmFtaWMpCiAgICAgZ2V0R2xvYmFsVmFyKG1hY3JvKHQpIGVuZCkKKyAgICBkaXNwYXRj
aCg4KQogCiAuZ0dsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJp
bmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLmdDbG9zdXJl
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwpAQCAtMjMwMSwxNjcgKzI0NDAsMTc1IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjCiAgICAgICAgIG1hY3JvKHRhZykKICAgICAgICAgICAgIGJpZXEg
dGFnLCBFbXB0eVZhbHVlVGFnLCAuZ0R5bmFtaWMKICAgICAgICAgZW5kKQorICAgIGRpc3BhdGNo
KDgpCiAKIC5nQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAs
IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuZ0R5bmFtaWMKICAgICB2YXJJbmpl
Y3Rpb25DaGVjayguZ0R5bmFtaWMpCi0gICAgbG9hZFZhcmlhYmxlKGdldCwgc2NvcGUsIHQyLCB0
MSwgdDApCisgICAgbG9hZFZhcmlhYmxlKDIsIHQyLCB0MSwgdDApCiAgICAgZ2V0Q2xvc3VyZVZh
cigpCisgICAgZGlzcGF0Y2goOCkKIAogLmdEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKQotICAgIGRpc3BhdGNoKCkKLWVuZCkKKyAgICBk
aXNwYXRjaCg4KQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1
dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQot
ICAgIG1hY3JvIHB1dFByb3BlcnR5KCkKLSAgICAgICAgZ2V0KHZhbHVlLCB0MSkKLSAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDIsIHQzKQotICAgICAgICBsb2FkaXMg
T3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6b3BlcmFuZFt0NV0sIHQxCi0gICAgICAgIHN0b3JlUHJv
cGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQotICAgIGVuZAorbWFjcm8gcHV0
UHJvcGVydHkoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDYs
IHQxKQorICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIsIHQzKQor
ZW5kCiAKLSAgICBtYWNybyBwdXRHbG9iYWxWYXJpYWJsZSgpCi0gICAgICAgIGdldCh2YWx1ZSwg
dDApCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxLCB0MikKLSAg
ICAgICAgbG9hZHAgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6d2F0Y2hwb2ludFNldFt0NV0sIHQz
Ci0gICAgICAgIG5vdGlmeVdyaXRlKHQzLCAucER5bmFtaWMpCi0gICAgICAgIGxvYWRwIE9wUHV0
VG9TY29wZTo6TWV0YWRhdGE6Om9wZXJhbmRbdDVdLCB0MAotICAgICAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFt0MF0KLSAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwXQotICAgIGVu
ZAorbWFjcm8gcHV0R2xvYmFsVmFyaWFibGUoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigz
LCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNSwgdDMpCisgICAgbm90aWZ5V3JpdGUodDMsIC5wRHluYW1pYykKKyAg
ICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MCkKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0
MF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDBdCitlbmQKIAotICAgIG1hY3JvIHB1
dENsb3N1cmVWYXIoKQotICAgICAgICBnZXQodmFsdWUsIHQxKQotICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCi0gICAgICAgIGxvYWRpcyBPcFB1dFRvU2Nv
cGU6Ok1ldGFkYXRhOjpvcGVyYW5kW3Q1XSwgdDEKLSAgICAgICAgc3RvcmVpIHQyLCBKU0xleGlj
YWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQxLCA4XQotICAgICAgICBz
dG9yZWkgdDMsIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRb
dDAsIHQxLCA4XQotICAgIGVuZAorbWFjcm8gcHV0Q2xvc3VyZVZhcigpCisgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0
MykKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDEpCisgICAgc3RvcmVpIHQyLCBKU0xl
eGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0
b3JlaSB0MywgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0
MCwgdDEsIDhdCitlbmQKIAotICAgIG1hY3JvIHB1dExvY2FsQ2xvc3VyZVZhcigpCi0gICAgICAg
IGdldCh2YWx1ZSwgdDEpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEs
IHQyLCB0MykKLSAgICAgICAgbG9hZHAgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6d2F0Y2hwb2lu
dFNldFt0NV0sIHQxCi0gICAgICAgIGJ0cHogdDEsIC5ub1ZhcmlhYmxlV2F0Y2hwb2ludFNldAot
ICAgICAgICBub3RpZnlXcml0ZSh0MSwgLnBEeW5hbWljKQotICAgIC5ub1ZhcmlhYmxlV2F0Y2hw
b2ludFNldDoKLSAgICAgICAgbG9hZGlzIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om9wZXJhbmRb
dDVdLCB0MQotICAgICAgICBzdG9yZWkgdDIsIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxl
cyArIFRhZ09mZnNldFt0MCwgdDEsIDhdCi0gICAgICAgIHN0b3JlaSB0MywgSlNMZXhpY2FsRW52
aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCi0gICAgZW5kCitt
YWNybyBwdXRMb2NhbENsb3N1cmVWYXIoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oNSwgdDUpCisgICAgYnRweiB0NSwgLm5vVmFyaWFibGVXYXRjaHBvaW50U2V0
CisgICAgbm90aWZ5V3JpdGUodDUsIC5wRHluYW1pYykKKy5ub1ZhcmlhYmxlV2F0Y2hwb2ludFNl
dDoKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDEpCisgICAgc3RvcmVpIHQyLCBKU0xl
eGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0
b3JlaSB0MywgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0
MCwgdDEsIDhdCitlbmQKIAogCi0gICAgbWV0YWRhdGEodDUsIHQwKQotICAgIGxvYWRpIE9wUHV0
VG9TY29wZTo6TWV0YWRhdGE6OmdldFB1dEluZm9bdDVdLCB0MAorX2xsaW50X29wX3B1dF90b19z
Y29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDQs
IHQwKQogICAgIGFuZGkgUmVzb2x2ZVR5cGVNYXNrLCB0MAogCiAjcExvY2FsQ2xvc3VyZVZhcjoK
ICAgICBiaW5lcSB0MCwgTG9jYWxDbG9zdXJlVmFyLCAucEdsb2JhbFByb3BlcnR5Ci0gICAgbG9h
ZFZhcmlhYmxlKGdldCwgc2NvcGUsIHQyLCB0MSwgdDApCisgICAgd3JpdGVCYXJyaWVyT25PcGVy
YW5kcygxLCAzKQorICAgIGxvYWRWYXJpYWJsZSgxLCB0MiwgdDEsIHQwKQogICAgIHB1dExvY2Fs
Q2xvc3VyZVZhcigpCi0gICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIHNjb3Bl
LCB2YWx1ZSkKLSAgICBkaXNwYXRjaCgpCisgICAgZGlzcGF0Y2goNykKIAogLnBHbG9iYWxQcm9w
ZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5wR2xvYmFsVmFyCi0gICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgc2NvcGUsIC5wRHluYW1pYykK
KyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCisgICAgbG9hZFdpdGhTdHJ1Y3R1cmVD
aGVjaygxLCAucER5bmFtaWMpCiAgICAgcHV0UHJvcGVydHkoKQotICAgIHdyaXRlQmFycmllck9u
T3BlcmFuZHMoc2l6ZSwgZ2V0LCBzY29wZSwgdmFsdWUpCi0gICAgZGlzcGF0Y2goKQorICAgIGRp
c3BhdGNoKDcpCiAKIC5wR2xvYmFsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXIsIC5wR2xv
YmFsTGV4aWNhbFZhcgorICAgIHdyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0KDMpCiAgICAgcHV0
R2xvYmFsVmFyaWFibGUoKQotICAgIHdyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0KHNpemUsIGdl
dCwgdmFsdWUpCi0gICAgZGlzcGF0Y2goKQorICAgIGRpc3BhdGNoKDcpCiAKIC5wR2xvYmFsTGV4
aWNhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhciwgLnBDbG9zdXJlVmFyCisg
ICAgd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoMykKICAgICBwdXRHbG9i
YWxWYXJpYWJsZSgpCi0gICAgd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQo
c2l6ZSwgZ2V0LCB2YWx1ZSkKLSAgICBkaXNwYXRjaCgpCisgICAgZGlzcGF0Y2goNykKIAogLnBD
bG9zdXJlVmFyOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAucEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrcwotICAgIGxvYWRWYXJpYWJsZShnZXQsIHNjb3BlLCB0MiwgdDEs
IHQwKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKKyAgICBsb2FkVmFyaWFibGUo
MSwgdDIsIHQxLCB0MCkKICAgICBwdXRDbG9zdXJlVmFyKCkKLSAgICB3cml0ZUJhcnJpZXJPbk9w
ZXJhbmRzKHNpemUsIGdldCwgc2NvcGUsIHZhbHVlKQotICAgIGRpc3BhdGNoKCkKKyAgICBkaXNw
YXRjaCg3KQogCiAucEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBi
aW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0
VG9TY29wZSwgZ2V0LCBzY29wZSwgLnBEeW5hbWljKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFu
ZHMoMSwgMykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKDEsIC5wRHluYW1pYykKICAgICBw
dXRQcm9wZXJ0eSgpCi0gICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIHNjb3Bl
LCB2YWx1ZSkKLSAgICBkaXNwYXRjaCgpCisgICAgZGlzcGF0Y2goNykKIAogLnBHbG9iYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzLCAucEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisg
ICAgd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3QoMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygu
cER5bmFtaWMpCiAgICAgcHV0R2xvYmFsVmFyaWFibGUoKQotICAgIHdyaXRlQmFycmllck9uR2xv
YmFsT2JqZWN0KHNpemUsIGdldCwgdmFsdWUpCi0gICAgZGlzcGF0Y2goKQorICAgIGRpc3BhdGNo
KDcpCiAKIC5wR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmlu
ZXEgdDAsIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQoMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgcHV0
R2xvYmFsVmFyaWFibGUoKQotICAgIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KHNpemUsIGdldCwgdmFsdWUpCi0gICAgZGlzcGF0Y2goKQorICAgIGRpc3BhdGNoKDcpCiAK
IC5wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIENsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucE1vZHVsZVZhcgorICAgIHdyaXRlQmFycmll
ck9uT3BlcmFuZHMoMSwgMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCi0gICAg
bG9hZFZhcmlhYmxlKGdldCwgc2NvcGUsIHQyLCB0MSwgdDApCisgICAgbG9hZFZhcmlhYmxlKDEs
IHQyLCB0MSwgdDApCiAgICAgcHV0Q2xvc3VyZVZhcigpCi0gICAgd3JpdGVCYXJyaWVyT25PcGVy
YW5kcyhzaXplLCBnZXQsIHNjb3BlLCB2YWx1ZSkKLSAgICBkaXNwYXRjaCgpCisgICAgZGlzcGF0
Y2goNykKIAogLnBNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnBEeW5hbWlj
CiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlf
cHJvcGVydHlfd3JpdGVfZXJyb3IpCi0gICAgZGlzcGF0Y2goKQorICAgIGRpc3BhdGNoKDcpCiAK
IC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfdG9fc2Nv
cGUpCi0gICAgZGlzcGF0Y2goKQotZW5kKQorICAgIGRpc3BhdGNoKDcpCiAKIAotbGxpbnRPcFdp
dGhQcm9maWxlKG9wX2dldF9mcm9tX2FyZ3VtZW50cywgT3BHZXRGcm9tQXJndW1lbnRzLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGdldChhcmd1bWVudHMsIHQwKQor
X2xsaW50X29wX2dldF9mcm9tX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCi0gICAgZ2V0KGluZGV4LCB0MSkKKyAgICBsb2FkaSAxMltQQ10sIHQxCiAg
ICAgbG9hZGkgRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UgKyBUYWdPZmZzZXRbdDAsIHQxLCA4XSwg
dDIKICAgICBsb2FkaSBEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSArIFBheWxvYWRPZmZzZXRbdDAs
IHQxLCA4XSwgdDMKLSAgICByZXR1cm4odDIsIHQzKQotZW5kKQorICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigxLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCAxNiwgdDApCisgICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1KQogCiAKLWxsaW50T3Aob3BfcHV0X3RvX2Fy
Z3VtZW50cywgT3BQdXRUb0FyZ3VtZW50cywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0g
ICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIGFyZ3VtZW50cywgdmFsdWUpCi0g
ICAgZ2V0KGFyZ3VtZW50cywgdDApCitfbGxpbnRfb3BfcHV0X3RvX2FyZ3VtZW50czoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQorICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAotICAgIGdldCh2YWx1ZSwgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MSwgdDIsIHQzKQotICAgIGdldChpbmRleCwgdDEpCisgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykK
KyAgICBsb2FkaSA4W1BDXSwgdDEKICAgICBzdG9yZWkgdDIsIERpcmVjdEFyZ3VtZW50c19zdG9y
YWdlICsgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KICAgICBzdG9yZWkgdDMsIERpcmVjdEFyZ3VtZW50
c19zdG9yYWdlICsgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCi0gICAgZGlzcGF0Y2goKQotZW5k
KQorICAgIGRpc3BhdGNoKDQpCiAKIAotbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3BhcmVudF9z
Y29wZSwgT3BHZXRQYXJlbnRTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVy
bikKLSAgICBnZXQoc2NvcGUsIHQwKQorX2xsaW50X29wX2dldF9wYXJlbnRfc2NvcGU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBs
b2FkcCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGxvYWRwIEpTU2NvcGU6Om1f
bmV4dFt0MF0sIHQwCi0gICAgcmV0dXJuKENlbGxUYWcsIHQwKQotZW5kKQorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goMykKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfdHlwZSwgT3BQcm9m
aWxlVHlwZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCitf
bGxpbnRfb3BfcHJvZmlsZV90eXBlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29uZWRWTVt0MV0s
IHQxCiAgICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCB0MSwgdDIpCkBAIC0yNDY5LDEy
ICsyNjE2LDExIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV90eXBlLCBPcFByb2Zp
bGVUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwKICAgICBsb2FkcCBWTTo6bV90eXBl
UHJvZmlsZXJMb2dbdDFdLCB0MQogCiAgICAgIyB0MCBpcyBob2xkaW5nIHRoZSBwYXlsb2FkLCB0
NSBpcyBob2xkaW5nIHRoZSB0YWcuCi0gICAgZ2V0KHRhcmdldCwgdDIpCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDUsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MikKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0NSwgdDApCiAKICAgICBi
aWVxIHQ1LCBFbXB0eVZhbHVlVGFnLCAub3BQcm9maWxlVHlwZURvbmUKIAotICAgIG1ldGFkYXRh
KHQzLCB0MikKICAgICAjIHQyIGlzIGhvbGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQg
bG9nIGVudHJ5LgogICAgIGxvYWRwIFR5cGVQcm9maWxlckxvZzo6bV9jdXJyZW50TG9nRW50cnlQ
dHJbdDFdLCB0MgogCkBAIC0yNDgzLDcgKzI2MjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X3Byb2ZpbGVfdHlwZSwgT3BQcm9maWxlVHlwZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
CiAgICAgc3RvcmVpIHQwLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5Ojp2YWx1ZSArIFBheWxv
YWRPZmZzZXRbdDJdCiAKICAgICAjIFN0b3JlIHRoZSBUeXBlTG9jYXRpb24gb250byB0aGUgbG9n
IGVudHJ5LgotICAgIGxvYWRwIE9wUHJvZmlsZVR5cGU6Ok1ldGFkYXRhOjp0eXBlTG9jYXRpb25b
dDNdLCB0MworICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQzKQogICAgIHN0b3JlcCB0Mywg
VHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6bG9jYXRpb25bdDJdCiAKICAgICBiaWVxIHQ1LCBD
ZWxsVGFnLCAub3BQcm9maWxlVHlwZUlzQ2VsbApAQCAtMjUwMyw2NyArMjY0OSw2OSBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfdHlwZSwgT3BQcm9maWxlVHlwZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcHJvZmlsZV90
eXBlX2NsZWFyX2xvZykKIAogLm9wUHJvZmlsZVR5cGVEb25lOgotICAgIGRpc3BhdGNoKCkKLWVu
ZCkKKyAgICBkaXNwYXRjaCg2KQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV9j
b250cm9sX2Zsb3csIE9wUHJvZmlsZUNvbnRyb2xGbG93LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtZXRhZGF0YSh0NSwgdDApCi0gICAgbG9hZHAg
T3BQcm9maWxlQ29udHJvbEZsb3c6Ok1ldGFkYXRhOjpiYXNpY0Jsb2NrTG9jYXRpb25bdDVdLCB0
MAorX2xsaW50X29wX3Byb2ZpbGVfY29udHJvbF9mbG93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBsb2FkaSBCYXNpY0Jsb2NrTG9j
YXRpb246Om1fZXhlY3V0aW9uQ291bnRbdDBdLCB0MQotICAgIGJhZGRpbyAxLCB0MSwgLmRvbmUK
KyAgICBhZGRpIDEsIHQxCisgICAgYmllcSB0MSwgMCwgLmRvbmUgIyBXZSBvdmVyZmxvd2VkLgog
ICAgIHN0b3JlaSB0MSwgQmFzaWNCbG9ja0xvY2F0aW9uOjptX2V4ZWN1dGlvbkNvdW50W3QwXQog
LmRvbmU6Ci0gICAgZGlzcGF0Y2goKQotZW5kKQorICAgIGRpc3BhdGNoKDIpCiAKIAotbGxpbnRP
cFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCitfbGxpbnRfb3BfZ2V0X3Jlc3RfbGVuZ3RoOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRD
b3VudFtjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKLSAgICBnZXQobnVtUGFyYW1ldGVyc1RvU2tp
cCwgdDEpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQxKQogICAgIGJpbHRlcSB0MCwg
dDEsIC5zdG9yZVplcm8KICAgICBzdWJpIHQxLCB0MAogICAgIGptcCAuZmluaXNoCiAuc3RvcmVa
ZXJvOgogICAgIG1vdmUgMCwgdDAKIC5maW5pc2g6Ci0gICAgcmV0dXJuKEludDMyVGFnLCB0MCkK
LWVuZCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQogCiAKLWxsaW50T3Aob3BfbG9nX3NoYWRvd19j
aGlja2VuX3Byb2xvZ3VlLCBPcExvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZSwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gpCitfbGxpbnRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBhY3F1aXJlU2hhZG93Q2hpY2tlblBhY2tldCgub3BM
b2dTaGFkb3dDaGlja2VuUHJvbG9ndWVTbG93KQogICAgIHN0b3JlcCBjZnIsIFNoYWRvd0NoaWNr
ZW46OlBhY2tldDo6ZnJhbWVbdDBdCiAgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDEKICAg
ICBzdG9yZXAgdDEsIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6Y2FsbGVyRnJhbWVbdDBdCiAgICAg
bG9hZHAgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQogICAgIHN0b3JlcCB0MSwgU2hh
ZG93Q2hpY2tlbjo6UGFja2V0OjpjYWxsZWVbdDBdCi0gICAgZ2V0KHNjb3BlLCB0MSkKKyAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XSwgdDEKICAgICBzdG9yZXAgdDEsIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6c2NvcGVb
dDBdCi0gICAgZGlzcGF0Y2goKQorICAgIGRpc3BhdGNoKDIpCiAub3BMb2dTaGFkb3dDaGlja2Vu
UHJvbG9ndWVTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xvZ19zaGFk
b3dfY2hpY2tlbl9wcm9sb2d1ZSkKLSAgICBkaXNwYXRjaCgpCi1lbmQpCisgICAgZGlzcGF0Y2go
MikKIAogCi1sbGludE9wKG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsLCBPcExvZ1NoYWRvd0No
aWNrZW5UYWlsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKK19sbGludF9vcF9sb2dfc2hh
ZG93X2NoaWNrZW5fdGFpbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgYWNxdWlyZVNoYWRv
d0NoaWNrZW5QYWNrZXQoLm9wTG9nU2hhZG93Q2hpY2tlblRhaWxTbG93KQogICAgIHN0b3JlcCBj
ZnIsIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6ZnJhbWVbdDBdCiAgICAgc3RvcmVwIFNoYWRvd0No
aWNrZW5UYWlsTWFya2VyLCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmNhbGxlZVt0MF0KLSAgICBs
b2FkVmFyaWFibGUoZ2V0LCB0aGlzVmFsdWUsIHQzLCB0MiwgdDEpCisgICAgbG9hZFZhcmlhYmxl
KDEsIHQzLCB0MiwgdDEpCiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXQgKyBTaGFkb3dDaGlja2Vu
OjpQYWNrZXQ6OnRoaXNWYWx1ZVt0MF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXQgKyBT
aGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRoaXNWYWx1ZVt0MF0KLSAgICBnZXQoc2NvcGUsIHQxKQor
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MSkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdLCB0MQogICAgIHN0b3JlcCB0MSwgU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojpz
Y29wZVt0MF0KICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBzdG9yZXAgdDEsIFNo
YWRvd0NoaWNrZW46OlBhY2tldDo6Y29kZUJsb2NrW3QwXQogICAgIHN0b3JlaSBQQywgU2hhZG93
Q2hpY2tlbjo6UGFja2V0OjpjYWxsU2l0ZUluZGV4W3QwXQotICAgIGRpc3BhdGNoKCkKKyAgICBk
aXNwYXRjaCgzKQogLm9wTG9nU2hhZG93Q2hpY2tlblRhaWxTbG93OgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKQotICAgIGRpc3BhdGNo
KCkKLWVuZCkKKyAgICBkaXNwYXRjaCgzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAwMDAzMzIyMzM5ZDM1YjA5
NWJiZjdlZWUxNjY1YTkxMmIyN2NhMDBmLi5hN2FkMmMxNTAxMGRmOWQ2YjBmOTI4MGI5MTY3YmQ0
MWE0MTgzOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMSw0ICsxLDMgQEAKLQogIyBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMjQsNzQgKzIzLDMzIEBACiAKIAogIyBVdGlsaXRpZXMuCi0KLW1hY3JvIG5leHRJbnN0
cnVjdGlvbigpCi0gICAgbG9hZGIgW1BCLCBQQywgMV0sIHQwCi0gICAgbGVhcCBfZ19vcGNvZGVN
YXAsIHQxCi0gICAgbG9hZHAgW3QxLCB0MCwgUHRyU2l6ZV0sIHQyCi0gICAgam1wIHQyLCBCeXRl
Y29kZVB0clRhZworbWFjcm8ganVtcFRvSW5zdHJ1Y3Rpb24oKQorICAgIGptcCBbUEIsIFBDLCBQ
dHJTaXplXSwgQnl0ZWNvZGVQdHJUYWcKIGVuZAogCi1tYWNybyBuZXh0SW5zdHJ1Y3Rpb25XaWRl
KCkKLSAgICBsb2FkaSAxW1BCLCBQQywgMV0sIHQwCi0gICAgbGVhcCBfZ19vcGNvZGVNYXBXaWRl
LCB0MQotICAgIGxvYWRwIFt0MSwgdDAsIFB0clNpemVdLCB0MgotICAgIGptcCB0MiwgQnl0ZWNv
ZGVQdHJUYWcKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlLCBQQwor
ICAgIGp1bXBUb0luc3RydWN0aW9uKCkKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZE5hcnJvdyhv
cCwgZmllbGQsIGRzdCkKLSAgICBsb2FkYiBjb25zdGV4cHIgJW9wJV8lZmllbGQlX2luZGV4W1BC
LCBQQywgMV0sIGRzdAorbWFjcm8gZGlzcGF0Y2hJbnQoYWR2YW5jZSkKKyAgICBhZGRpIGFkdmFu
Y2UsIFBDCisgICAganVtcFRvSW5zdHJ1Y3Rpb24oKQogZW5kCiAKLW1hY3JvIGdldE9wZXJhbmRO
YXJyb3cob3AsIGZpZWxkLCBkc3QpCi0gICAgbG9hZGJzcCBjb25zdGV4cHIgJW9wJV8lZmllbGQl
X2luZGV4W1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZGlzcGF0Y2hJbnRJbmRpcmVjdChvZmZzZXQp
CisgICAgZGlzcGF0Y2hJbnQob2Zmc2V0ICogUHRyU2l6ZVtQQiwgUEMsIFB0clNpemVdKQogZW5k
CiAKLW1hY3JvIGdldHVPcGVyYW5kV2lkZShvcCwgZmllbGQsIGRzdCkKLSAgICBsb2FkaSBjb25z
dGV4cHIgJW9wJV8lZmllbGQlX2luZGV4ICogNCArIDFbUEIsIFBDLCAxXSwgZHN0Ci1lbmQKLQot
bWFjcm8gZ2V0T3BlcmFuZFdpZGUob3AsIGZpZWxkLCBkc3QpCi0gICAgbG9hZGlzIGNvbnN0ZXhw
ciAlb3AlXyVmaWVsZCVfaW5kZXggKiA0ICsgMVtQQiwgUEMsIDFdLCBkc3QKLWVuZAotCi1tYWNy
byBtYWtlUmV0dXJuKGdldCwgZGlzcGF0Y2gsIGZuKQotICAgIGZuKG1hY3JvICh2YWx1ZSkKLSAg
ICAgICAgbW92ZSB2YWx1ZSwgdDIKLSAgICAgICAgZ2V0KGRzdCwgdDEpCi0gICAgICAgIHN0b3Jl
cSB0MiwgW2NmciwgdDEsIDhdCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQpCi1lbmQKLQot
bWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wLCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4p
Ci0gICAgZm4obWFjcm8gKHZhbHVlKQotICAgICAgICBtb3ZlIHZhbHVlLCB0MwotICAgICAgICBt
ZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcCwgdDEsIHQzKQotICAgICAg
ICBnZXQoZHN0LCB0MSkKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KLSAgICAgICAg
ZGlzcGF0Y2goKQotICAgIGVuZCkKLWVuZAotCi1tYWNybyB2YWx1ZVByb2ZpbGUob3AsIG1ldGFk
YXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEgdmFsdWUsICVvcCU6Ok1ldGFkYXRhOjpwcm9maWxlLm1f
YnVja2V0c1ttZXRhZGF0YV0KLWVuZAotCi1tYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBv
cCwgZGlzcGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAgICAgbG9hZGkgQXJndW1l
bnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQ
QgotICAgICMgRklYTUU6IGNsZWFudXAgZG91YmxlIGxvYWQKLSAgICAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5MzIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
aW5zdHJ1Y3Rpb25zW1BCXSwgUEIKLSAgICBsb2FkcCBbUEJdLCBQQgogICAgIHVucG9pc29uKF9n
X0NvZGVCbG9ja1BvaXNvbiwgUEIsIHQxKQotICAgIGdldChzaXplLCBvcCwgZHN0LCB0MSkKKyAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwg
OF0KLSAgICBtZXRhZGF0YShzaXplLCBvcCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcCwg
dDIsIHIwKQotICAgIGRpc3BhdGNoKCkKKyAgICB2YWx1ZVByb2ZpbGUocjAsIChDYWxsT3BDb2Rl
U2l6ZSAtIDEpLCB0MykKKyAgICBkaXNwYXRjaChDYWxsT3BDb2RlU2l6ZSkKIGVuZAogCiBtYWNy
byBjQ2FsbDIoZnVuY3Rpb24pCkBAIC0yNDgsNyArMjA2LDcgQEAgbWFjcm8gZG9WTUVudHJ5KG1h
a2VDYWxsKQogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoZXh0cmFUZW1wUmVnLCAw
eGJhZDBkYzAyKQogCi0gICAgbWFrZUNhbGwoZW50cnksIHQzLCB0NCkKKyAgICBtYWtlQ2FsbChl
bnRyeSwgdDMpCiAKICAgICAjIFdlIG1heSBoYXZlIGp1c3QgbWFkZSBhIGNhbGwgaW50byBhIEpT
IGZ1bmN0aW9uLCBzbyB3ZSBjYW4ndCByZWx5IG9uIHNwCiAgICAgIyBmb3IgYW55dGhpbmcgYnV0
IHRoZSBmYWN0IHRoYXQgb3VyIG93biBsb2NhbHMgKGllIHRoZSBWTUVudHJ5UmVjb3JkKSBhcmUK
QEAgLTI5MCw3ICsyNDgsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiBlbmQKIAogCi1t
YWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXAsIHVudXNlZCkKK21hY3JvIG1ha2VK
YXZhU2NyaXB0Q2FsbChlbnRyeSwgdGVtcCkKICAgICBhZGRwIDE2LCBzcAogICAgIGlmIENfTE9P
UAogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5CkBAIC0zMDAsNyArMjU4LDggQEAg
bWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCB0ZW1wLCB1bnVzZWQpCiAgICAgc3VicCAx
Niwgc3AKIGVuZAogCi1tYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgdGVtcCwgdW51
c2VkKQorCittYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgdGVtcCkKICAgICBtb3Zl
IGVudHJ5LCB0ZW1wCiAgICAgc3RvcmVwIGNmciwgW3NwXQogICAgIG1vdmUgc3AsIGEwCkBAIC0z
MTcsNyArMjc2LDcgQEAgbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHRlbXAsIHVu
dXNlZCkKICAgICBlbmQKIGVuZAogCi1vcChoYW5kbGVVbmNhdWdodEV4Y2VwdGlvbiwgbWFjcm8g
KCkKK19oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoKICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDMK
ICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rl
ck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0MwpAQCAtMzM4LDE2ICsy
OTcsMTYgQEAgb3AoaGFuZGxlVW5jYXVnaHRFeGNlcHRpb24sIG1hY3JvICgpCiAgICAgcG9wQ2Fs
bGVlU2F2ZXMoKQogICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAotZW5kKQogCiAKIG1h
Y3JvIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKLSAgICBhZGRwIFBCLCBQQworICAgIGxlYXAgW1BC
LCBQQywgUHRyU2l6ZV0sIFBDCiBlbmQKIAogbWFjcm8gcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgp
CiAgICAgbW92ZSByMCwgUEMKICAgICBzdWJwIFBCLCBQQworICAgIHJzaGlmdHAgY29uc3RleHBy
IChnZXRMU0JTZXQoc2l6ZW9mKHZvaWQqKSkpLCBQQwogZW5kCiAKIG1hY3JvIGNhbGxTbG93UGF0
aChzbG93UGF0aCkKQEAgLTQzMCwzOSArMzg5LDM3IEBAIG1hY3JvIGxvYWRDYWdlZChiYXNlUHRy
LCBtYXNrLCBzb3VyY2UsIGRlc3QsIHNjcmF0Y2gpCiAgICAgdW5jYWdlKGJhc2VQdHIsIG1hc2ss
IGRlc3QsIHNjcmF0Y2gpCiBlbmQKIAotbWFjcm8gbG9hZFZhcmlhYmxlKGdldCwgZmllbGQsIHZh
bHVlKQotICAgIGdldChmaWVsZCwgdmFsdWUpCittYWNybyBsb2FkVmFyaWFibGUob3BlcmFuZCwg
dmFsdWUpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHZhbHVlKQogICAgIGxv
YWRxIFtjZnIsIHZhbHVlLCA4XSwgdmFsdWUKIGVuZAogCiAjIEluZGV4IGFuZCB2YWx1ZSBtdXN0
IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCi1tYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIGluZGV4LCB2YWx1ZSkKLSAgICBzaXplKEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4TmFycm93LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleFdp
ZGUsIG1hY3JvIChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkKLSAgICAgICAgYnBndGVxIGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Ci0gICAgICAgIGxvYWRx
IFtjZnIsIGluZGV4LCA4XSwgdmFsdWUKLSAgICAgICAgam1wIC5kb25lCi0gICAgLmNvbnN0YW50
OgotICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdmFsdWUKLSAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3ZhbHVlXSwg
dmFsdWUKLSAgICAgICAgc3VicCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgaW5kZXgKLSAg
ICAgICAgbG9hZHEgW3ZhbHVlLCBpbmRleCwgOF0sIHZhbHVlCi0gICAgLmRvbmU6Ci0gICAgZW5k
KQorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdmFsdWUpCisgICAgYnBndGVx
IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZHEg
W2NmciwgaW5kZXgsIDhdLCB2YWx1ZQorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB2YWx1ZQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFu
dFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt2YWx1ZV0sIHZhbHVlCisgICAgc3VicCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgaW5kZXgKKyAgICBsb2FkcSBbdmFsdWUsIGluZGV4
LCA4XSwgdmFsdWUKKy5kb25lOgogZW5kCiAKLW1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVJ
bnQzMihzaXplLCBpbmRleCwgdmFsdWUsIHNsb3cpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCBpbmRleCwgdmFsdWUpCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIo
aW5kZXgsIHZhbHVlLCBzbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHZh
bHVlKQogICAgIGJxYiB2YWx1ZSwgdGFnVHlwZU51bWJlciwgc2xvdwogZW5kCiAKLW1hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIGluZGV4LCB2YWx1ZSwgc2xvdykKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIGluZGV4LCB2YWx1ZSkKK21hY3JvIGxvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsKGluZGV4LCB2YWx1ZSwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKGluZGV4LCB2YWx1ZSkKICAgICBidHFueiB2YWx1ZSwgdGFnTWFzaywgc2xvdwog
ZW5kCiAKLW1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBj
ZWxsT3BlcmFuZCwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKLSAgICBnZXQoY2VsbE9wZXJhbmQsIHQx
KQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQxLCB0MiwgLndyaXRlQmFy
cmllckRvbmUpCittYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoY2VsbE9wZXJhbmQpCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKGNlbGxPcGVyYW5kLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbCh0MSwgdDIsIC53cml0ZUJhcnJpZXJEb25lKQogICAgIHNraXBJZklzUmVt
ZW1iZXJlZE9ySW5FZGVuKAogICAgICAgICB0MiwKICAgICAgICAgbWFjcm8oKQpAQCAtNDcxLDI3
ICs0MjgsMjIgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kV2l0aFJlbG9hZChzaXplLCBn
ZXQsIGNlbGxPcGVyYW5kLCByZWxvYWRBZnRlclNsb3dQYXQKICAgICAgICAgICAgIG1vdmUgY2Zy
LCBhMAogICAgICAgICAgICAgY0NhbGwyVm9pZChfbGxpbnRfd3JpdGVfYmFycmllcl9zbG93KQog
ICAgICAgICAgICAgcG9wIFBDLCBQQgotICAgICAgICAgICAgcmVsb2FkQWZ0ZXJTbG93UGF0aCgp
CiAgICAgICAgIGVuZCkKIC53cml0ZUJhcnJpZXJEb25lOgogZW5kCiAKLW1hY3JvIHdyaXRlQmFy
cmllck9uT3BlcmFuZChzaXplLCBnZXQsIGNlbGxPcGVyYW5kKQotICAgIHdyaXRlQmFycmllck9u
T3BlcmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBjZWxsT3BlcmFuZCwgbWFjcm8gKCkgZW5kKQot
ZW5kCi0KLW1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBjZWxsT3BlcmFu
ZCwgdmFsdWVPcGVyYW5kKQotICAgIGdldCh2YWx1ZU9wZXJhbmQsIHQxKQotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQxLCB0MCwgLndyaXRlQmFycmllckRvbmUpCittYWNy
byB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKGNlbGxPcGVyYW5kLCB2YWx1ZU9wZXJhbmQpCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKHZhbHVlT3BlcmFuZCwgdDEpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZUNlbGwodDEsIHQwLCAud3JpdGVCYXJyaWVyRG9uZSkKICAgICBidHB6IHQwLCAu
d3JpdGVCYXJyaWVyRG9uZQogCi0gICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUsIGdldCwg
Y2VsbE9wZXJhbmQpCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kKGNlbGxPcGVyYW5kKQogLndy
aXRlQmFycmllckRvbmU6CiBlbmQKIAotbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWwoc2l6ZSwg
Z2V0LCB2YWx1ZU9wZXJhbmQsIGxvYWRIZWxwZXIpCi0gICAgZ2V0KHZhbHVlT3BlcmFuZCwgdDEp
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDEsIHQwLCAud3JpdGVCYXJy
aWVyRG9uZSkKK21hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsKHZhbHVlT3BlcmFuZCwgbG9hZEhl
bHBlcikKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24odmFsdWVPcGVyYW5kLCB0MSkKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MSwgdDAsIC53cml0ZUJhcnJpZXJEb25lKQogICAg
IGJ0cHogdDAsIC53cml0ZUJhcnJpZXJEb25lCiAKICAgICBsb2FkSGVscGVyKHQzKQpAQCAtNTAz
LDIwICs0NTUsMjEgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWwoc2l6ZSwgZ2V0LCB2YWx1
ZU9wZXJhbmQsIGxvYWRIZWxwZXIpCiAgICAgICAgICAgICBtb3ZlIHQzLCBhMQogICAgICAgICAg
ICAgY0NhbGwyVm9pZChfbGxpbnRfd3JpdGVfYmFycmllcl9zbG93KQogICAgICAgICAgICAgcG9w
IFBDLCBQQgotICAgICAgICBlbmQpCisgICAgICAgIGVuZAorICAgICkKIC53cml0ZUJhcnJpZXJE
b25lOgogZW5kCiAKLW1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0KHNpemUsIGdldCwg
dmFsdWVPcGVyYW5kKQotICAgIHdyaXRlQmFycmllck9uR2xvYmFsKHNpemUsIGdldCwgdmFsdWVP
cGVyYW5kLAorbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3QodmFsdWVPcGVyYW5kKQor
ICAgIHdyaXRlQmFycmllck9uR2xvYmFsKHZhbHVlT3BlcmFuZCwKICAgICAgICAgbWFjcm8ocmVn
aXN0ZXJUb1N0b3JlR2xvYmFsKQogICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHJl
Z2lzdGVyVG9TdG9yZUdsb2JhbAogICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2Jh
bE9iamVjdFtyZWdpc3RlclRvU3RvcmVHbG9iYWxdLCByZWdpc3RlclRvU3RvcmVHbG9iYWwKICAg
ICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmly
b25tZW50KHNpemUsIGdldCwgdmFsdWVPcGVyYW5kKQotICAgIHdyaXRlQmFycmllck9uR2xvYmFs
KHNpemUsIGdldCwgdmFsdWVPcGVyYW5kLAorbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQodmFsdWVPcGVyYW5kKQorICAgIHdyaXRlQmFycmllck9uR2xvYmFsKHZh
bHVlT3BlcmFuZCwKICAgICAgICAgbWFjcm8ocmVnaXN0ZXJUb1N0b3JlR2xvYmFsKQogICAgICAg
ICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHJlZ2lzdGVyVG9TdG9yZUdsb2JhbAogICAgICAg
ICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFtyZWdpc3RlclRvU3RvcmVHbG9i
YWxdLCByZWdpc3RlclRvU3RvcmVHbG9iYWwKQEAgLTUyNCw2ICs0NzcsMTEgQEAgbWFjcm8gd3Jp
dGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2YWx1ZU9wZXJh
bmQpCiAgICAgICAgIGVuZCkKIGVuZAogCittYWNybyB2YWx1ZVByb2ZpbGUodmFsdWUsIG9wZXJh
bmQsIHNjcmF0Y2gpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgc2NyYXRjaCkK
KyAgICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCitlbmQK
KwogbWFjcm8gc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhl
blN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHNjcmF0Y2gKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29uZWRWTVtzY3JhdGNoXSwgc2Ny
YXRjaApAQCAtNjIxLDEwICs1NzksNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxh
YmVsLCBzbG93UGF0aCkKIC5jb250aW51ZToKICAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIHJl
c2V0IFBDLCBzaW5jZSB0aGUgc2xvd19wYXRoIGNsb2JiZXJlZCB0aGVtLgogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQotICAgICMgRklYTUU6IGNsZWFudXAgZG91YmxlIGxvYWQKLSAgICAj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5MzIKICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIKLSAgICBsb2FkcCBbUEJdLCBQQgog
ICAgIHVucG9pc29uKF9nX0NvZGVCbG9ja1BvaXNvbiwgUEIsIHQyKQogICAgIG1vdmUgMCwgUEMK
ICAgICBqbXAgZG9uZUxhYmVsCkBAIC02MzksNiArNTk0LDcgQEAgbWFjcm8gYnJhbmNoSWZFeGNl
cHRpb24obGFiZWwpCiAubm9FeGNlcHRpb246CiBlbmQKIAorCiAjIEluc3RydWN0aW9uIGltcGxl
bWVudGF0aW9ucwogX2xsaW50X29wX2VudGVyOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKQEAgLTY1
OCw1NjIgKzYxNCw3MDAgQEAgX2xsaW50X29wX2VudGVyOgogICAgIGJ0cW56IHQyLCAub3BFbnRl
ckxvb3AKIC5vcEVudGVyRG9uZToKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9lbnRlcikK
LSAgICBkaXNwYXRjaE9wKG5hcnJvdywgb3BfZW50ZXIpCisgICAgZGlzcGF0Y2goY29uc3RleHBy
IG9wX2VudGVyX2xlbmd0aCkKIAogCi1sbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2FyZ3VtZW50
LCBPcEdldEFyZ3VtZW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAg
IGdldChpbmRleCwgdDIpCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDIsIHQyKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50
W2Nmcl0sIHQwCiAgICAgYmlsdGVxIHQwLCB0MiwgLm9wR2V0QXJndW1lbnRPdXRPZkJvdW5kcwog
ICAgIGxvYWRxIFRoaXNBcmd1bWVudE9mZnNldFtjZnIsIHQyLCA4XSwgdDAKLSAgICByZXR1cm4o
dDApCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICB2YWx1ZVByb2ZpbGUodDAsIDMs
IHQyKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfYXJndW1lbnRfbGVuZ3RoKQogCiAu
b3BHZXRBcmd1bWVudE91dE9mQm91bmRzOgotICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKLWVu
ZCkKKyAgICBzdG9yZXEgVmFsdWVVbmRlZmluZWQsIFtjZnIsIHQxLCA4XQorICAgIHZhbHVlUHJv
ZmlsZShWYWx1ZVVuZGVmaW5lZCwgMywgdDIpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dl
dF9hcmd1bWVudF9sZW5ndGgpCiAKIAotbGxpbnRPcFdpdGhSZXR1cm4ob3BfYXJndW1lbnRfY291
bnQsIE9wQXJndW1lbnRDb3VudCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
K19sbGludF9vcF9hcmd1bWVudF9jb3VudDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1
bWVudENvdW50W2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAgIG9ycSBUYWdUeXBlTnVtYmVy
LCB0MAotICAgIHJldHVybih0MCkKLWVuZCkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQor
ICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9hcmd1bWVudF9jb3VudF9sZW5ndGgpCiAKIAotbGxp
bnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Njb3BlLCBPcEdldFNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgcmV0dXJuKQorX2xsaW50X29wX2dldF9zY29wZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQwCiAgICAgbG9hZHAgSlNDYWxsZWU6Om1f
c2NvcGVbdDBdLCB0MAotICAgIHJldHVybih0MCkKLWVuZCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaChj
b25zdGV4cHIgb3BfZ2V0X3Njb3BlX2xlbmd0aCkKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9w
X3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKLSAgICBnZXQoc3JjRHN0LCB0MCkKK19sbGludF9vcF90b190aGlzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCiAgICAgbG9h
ZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BUb1RoaXNTbG93
CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhp
c1Nsb3cKICAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MiwgdDMpCi0gICAg
bWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRwIE9wVG9UaGlzOjpNZXRhZGF0YTo6Y2FjaGVkU3Ry
dWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0MikKICAgICBicG5l
cSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKLSAgICBkaXNwYXRjaCgpCisgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX3RvX3RoaXNfbGVuZ3RoKQogCiAub3BUb1RoaXNTbG93OgogICAgIGNhbGxTbG93
UGF0aChfc2xvd19wYXRoX3RvX3RoaXMpCi0gICAgZGlzcGF0Y2goKQotZW5kKQorICAgIGRpc3Bh
dGNoKGNvbnN0ZXhwciBvcF90b190aGlzX2xlbmd0aCkKIAogCi1sbGludE9wKG9wX2NoZWNrX3Rk
eiwgT3BDaGVja1RkeiwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAgZ2V0KHRhcmdl
dCwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCitfbGxpbnRf
b3BfY2hlY2tfdGR6OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDApCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEpCiAgICAgYnFu
ZXEgdDEsIFZhbHVlRW1wdHksIC5vcE5vdFREWgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X3Rocm93X3Rkel9lcnJvcikKIAogLm9wTm90VERaOgotICAgIGRpc3BhdGNoKCkKLWVuZCkKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY2hlY2tfdGR6X2xlbmd0aCkKIAogCi1sbGludE9wV2l0
aFJldHVybihvcF9tb3YsIE9wTW92LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJu
KQotICAgIGdldChzcmMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEs
IHQyKQotICAgIHJldHVybih0MikKLWVuZCkKK19sbGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MSkKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDApCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIpCisg
ICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbW92
X2xlbmd0aCkKIAogCi1sbGludE9wV2l0aFJldHVybihvcF9ub3QsIE9wTm90LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGdldChvcGVyYW5kLCB0MCkKLSAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MikKK19sbGludF9vcF9ub3Q6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKKyAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwg
dDIpCiAgICAgeG9ycSBWYWx1ZUZhbHNlLCB0MgogICAgIGJ0cW56IHQyLCB+MSwgLm9wTm90U2xv
dwogICAgIHhvcnEgVmFsdWVUcnVlLCB0MgotICAgIHJldHVybih0MikKKyAgICBzdG9yZXEgdDIs
IFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9ub3RfbGVuZ3RoKQogCiAu
b3BOb3RTbG93OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25vdCkKLSAgICBkaXNwYXRj
aCgpCi1lbmQpCi0KLQotbWFjcm8gZXF1YWxpdHlDb21wYXJpc29uT3AobmFtZSwgb3AsIGludGVn
ZXJDb21wYXJpc29uKQotICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wXyVuYW1lJSwgb3AsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgICAgIGdldChyaHMsIHQwKQotICAg
ICAgICBnZXQobGhzLCB0MikKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNp
emUsIHQwLCB0MSwgLnNsb3cpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihz
aXplLCB0MiwgdDAsIC5zbG93KQotICAgICAgICBpbnRlZ2VyQ29tcGFyaXNvbih0MCwgdDEsIHQw
KQotICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKLSAgICAgICAgcmV0dXJuKHQwKQotCi0gICAg
LnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVuYW1lJSkKLSAgICAgICAg
ZGlzcGF0Y2goKQotICAgIGVuZCkKLWVuZAotCi0KLW1hY3JvIGVxdWFsTnVsbENvbXBhcmlzb25P
cChuYW1lLCBvcCwgZm4pCi0gICAgbGxpbnRPcFdpdGhSZXR1cm4obmFtZSwgb3AsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgICAgIGdldChvcGVyYW5kLCB0MCkKLSAg
ICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAotICAgICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmltbWVkaWF0ZQotICAgICAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAotICAgICAgICBtb3ZlIDAsIHQw
Ci0gICAgICAgIGptcCAuZG9uZQotICAgIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgotICAgICAg
ICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDMpCi0gICAgICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MAotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKLSAgICAgICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QyXSwg
dDAsIHQwCi0gICAgICAgIGptcCAuZG9uZQotICAgIC5pbW1lZGlhdGU6Ci0gICAgICAgIGFuZHEg
flRhZ0JpdFVuZGVmaW5lZCwgdDAKLSAgICAgICAgY3FlcSB0MCwgVmFsdWVOdWxsLCB0MAotICAg
IC5kb25lOgotICAgICAgICBmbih0MCkKLSAgICAgICAgcmV0dXJuKHQwKQotICAgIGVuZCkKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3Bfbm90X2xlbmd0aCkKKworCittYWNybyBlcXVhbGl0eUNv
bXBhcmlzb24oaW50ZWdlckNvbXBhcmlzb24sIHNsb3dQYXRoKQorICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigzLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQz
Mih0MCwgdDEsIC5zbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MiwgdDAs
IC5zbG93KQorICAgIGludGVnZXJDb21wYXJpc29uKHQwLCB0MSwgdDApCisgICAgb3JxIFZhbHVl
RmFsc2UsIHQwCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpCisgICAgZGlzcGF0Y2goNCkKIGVu
ZAogCi1lcXVhbE51bGxDb21wYXJpc29uT3Aob3BfZXFfbnVsbCwgT3BFcU51bGwsCi0gICAgbWFj
cm8gKHZhbHVlKSBvcnEgVmFsdWVGYWxzZSwgdmFsdWUgZW5kKQogCittYWNybyBlcXVhbGl0eUp1
bXAoaW50ZWdlckNvbXBhcmlzb24sIHNsb3dQYXRoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MikKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDMpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUludDMyKHQyLCB0MCwgLnNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZUludDMyKHQzLCB0MSwgLnNsb3cpCisgICAgaW50ZWdlckNvbXBhcmlzb24odDAsIHQxLCAu
anVtcFRhcmdldCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfamVxX2xlbmd0aCkKIAotZXF1
YWxOdWxsQ29tcGFyaXNvbk9wKG9wX25lcV9udWxsLCBPcE5lcU51bGwsCi0gICAgbWFjcm8gKHZh
bHVlKSB4b3JxIFZhbHVlVHJ1ZSwgdmFsdWUgZW5kKQorLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0
Y2hJbnRJbmRpcmVjdCgzKQogCisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpCisg
ICAgZGlzcGF0Y2goMCkKK2VuZAogCi1tYWNybyBzdHJpY3RFcU9wKG5hbWUsIG9wLCBlcXVhbGl0
eU9wZXJhdGlvbikKLSAgICBsbGludE9wV2l0aFJldHVybihvcF8lbmFtZSUsIG9wLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgICAgICBnZXQocmhzLCB0MCkKLSAgICAg
ICAgZ2V0KGxocywgdDIpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAs
IHQxKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkKLSAgICAg
ICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgotICAgICAgICBidHF6IHQyLCB0YWdN
YXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0MCwgdGFnVHlwZU51bWJlciwgLmxlZnRPSwotICAg
ICAgICBidHFueiB0MCwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAgICAubGVmdE9LOgotICAgICAg
ICBicWFlcSB0MSwgdGFnVHlwZU51bWJlciwgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIHRh
Z1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAgIGVxdWFsaXR5T3BlcmF0
aW9uKHQwLCB0MSwgdDApCi0gICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgICAgICByZXR1
cm4odDApCiAKLSAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW5h
bWUlKQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kKQorbWFjcm8gZXF1YWxOdWxsQ29tcGFy
aXNvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQorICAgIGxvYWRxIFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBidHFueiB0MCwgdGFnTWFzaywgLmltbWVkaWF0ZQorICAgIGJ0Ym56
IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRl
c0FzVW5kZWZpbmVkCisgICAgbW92ZSAwLCB0MAorICAgIGptcCAuZG9uZQorLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQ6CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEsIHQz
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0
Ml0sIHQwLCB0MAorICAgIGptcCAuZG9uZQorLmltbWVkaWF0ZToKKyAgICBhbmRxIH5UYWdCaXRV
bmRlZmluZWQsIHQwCisgICAgY3FlcSB0MCwgVmFsdWVOdWxsLCB0MAorLmRvbmU6CiBlbmQKIAor
X2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbENv
bXBhcmlzb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBvcnEgVmFs
dWVGYWxzZSwgdDAKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9lcV9udWxsX2xlbmd0aCkKIAotc3RyaWN0RXFPcChzdHJpY3RlcSwgT3BTdHJp
Y3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCByaWdodCwg
cmVzdWx0IGVuZCkKIAorX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBlcXVhbE51bGxDb21wYXJpc29uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDEpCisgICAgeG9ycSBWYWx1ZVRydWUsIHQwCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0K
KyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbmVxX251bGxfbGVuZ3RoKQorCisKK21hY3JvIHN0
cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93UGF0aCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMywgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQyKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIs
IHQwKQorICAgIG1vdmUgdDAsIHQyCisgICAgb3JxIHQxLCB0MgorICAgIGJ0cXogdDIsIHRhZ01h
c2ssIC5zbG93CisgICAgYnFhZXEgdDAsIHRhZ1R5cGVOdW1iZXIsIC5sZWZ0T0sKKyAgICBidHFu
eiB0MCwgdGFnVHlwZU51bWJlciwgLnNsb3cKKy5sZWZ0T0s6CisgICAgYnFhZXEgdDEsIHRhZ1R5
cGVOdW1iZXIsIC5yaWdodE9LCisgICAgYnRxbnogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Cisu
cmlnaHRPSzoKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICBzdG9yZXEg
dDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCiAKLXN0cmljdEVxT3AobnN0cmljdGVx
LCBPcE5zdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FuZXEgbGVm
dCwgcmlnaHQsIHJlc3VsdCBlbmQpCisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgp
CisgICAgZGlzcGF0Y2goNCkKK2VuZAogCiAKLW1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG5h
bWUsIG9wLCBlcXVhbGl0eU9wZXJhdGlvbikKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5hbWUl
LCBvcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCi0gICAgICAgIGdldChsaHMs
IHQyKQotICAgICAgICBnZXQocmhzLCB0MykKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MiwgdDApCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDMs
IHQxKQotICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEsIHQyCi0gICAgICAgIGJ0
cXogdDIsIHRhZ01hc2ssIC5zbG93Ci0gICAgICAgIGJxYWVxIHQwLCB0YWdUeXBlTnVtYmVyLCAu
bGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwotICAgIC5sZWZ0
T0s6Ci0gICAgICAgIGJxYWVxIHQxLCB0YWdUeXBlTnVtYmVyLCAucmlnaHRPSwotICAgICAgICBi
dHFueiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAgZXF1
YWxpdHlPcGVyYXRpb24odDAsIHQxLCAuanVtcFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQor
bWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wKGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93UGF0aCkKKyAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDMsIHQxKQorICAgIG1vdmUgdDAsIHQyCisgICAgb3JxIHQxLCB0Mgor
ICAgIGJ0cXogdDIsIHRhZ01hc2ssIC5zbG93CisgICAgYnFhZXEgdDAsIHRhZ1R5cGVOdW1iZXIs
IC5sZWZ0T0sKKyAgICBidHFueiB0MCwgdGFnVHlwZU51bWJlciwgLnNsb3cKKy5sZWZ0T0s6Cisg
ICAgYnFhZXEgdDEsIHRhZ1R5cGVOdW1iZXIsIC5yaWdodE9LCisgICAgYnRxbnogdDEsIHRhZ1R5
cGVOdW1iZXIsIC5zbG93CisucmlnaHRPSzoKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEs
IC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9qc3RyaWN0ZXFfbGVuZ3Ro
KQogCi0gICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAgIGp1bXAodGFyZ2V0KQorLmp1bXBUYXJnZXQ6
CisgICAgZGlzcGF0Y2hJbnRJbmRpcmVjdCgzKQogCi0gICAgLnNsb3c6Ci0gICAgICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKLSAgICAgICAgbmV4dEluc3RydWN0aW9u
KCkKLSAgICBlbmQpCisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpCisgICAgZGlz
cGF0Y2goMCkKIGVuZAogCiAKLXN0cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3RlcSwgT3BKc3Ry
aWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJxZXEgbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQpCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIHN0cmljdEVxKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FlcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9zdHJpY3RlcSkKKwor
CitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RF
cSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxbmVxIGxlZnQsIHJpZ2h0
LCByZXN1bHQgZW5kLAorICAgICAgICBfc2xvd19wYXRoX25zdHJpY3RlcSkKKworCitfbGxpbnRf
b3BfanN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcXVhbGl0eUp1
bXAoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBicWVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2pzdHJpY3RlcSkKKwogCitf
bGxpbnRfb3Bfam5zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXF1
YWxpdHlKdW1wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfam5zdHJpY3Rl
cSkKIAotc3RyaWN0RXF1YWxpdHlKdW1wT3Aoam5zdHJpY3RlcSwgT3BKbnN0cmljdGVxLAotICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBicW5lcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCkKIAorbWFjcm8gcHJlT3AoYXJpdGhtZXRpY09wZXJhdGlvbiwgc2xvd1BhdGgpCisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKKyAgICBsb2Fk
cSBbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAg
IGFyaXRobWV0aWNPcGVyYXRpb24odDEsIC5zbG93KQorICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0
MQorICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKIAotbWFjcm8g
cHJlT3AobmFtZSwgb3AsIGFyaXRobWV0aWNPcGVyYXRpb24pCi0gICAgbGxpbnRPcChvcF8lbmFt
ZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICAgICAgZ2V0KHNyY0RzdCwg
dDApCi0gICAgICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDEKLSAgICAgICAgYnFiIHQxLCB0YWdU
eXBlTnVtYmVyLCAuc2xvdwotICAgICAgICBhcml0aG1ldGljT3BlcmF0aW9uKHQxLCAuc2xvdykK
LSAgICAgICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgICAgIHN0b3JlcSB0MSwgW2Nmciwg
dDAsIDhdCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfJW5hbWUlKQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kKQorLnNs
b3c6CisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQorICAgIGRpc3BhdGNoKDIpCiBlbmQKIAot
bGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJlciwgT3BUb051bWJlciwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBnZXQob3BlcmFuZCwgdDApCi0gICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDIpCitfbGxpbnRfb3BfaW5jOgorICAgIHByZU9w
KAorICAgICAgICBtYWNybyAodmFsdWUsIHNsb3cpIGJhZGRpbyAxLCB2YWx1ZSwgc2xvdyBlbmQs
CisgICAgICAgIF9zbG93X3BhdGhfaW5jKQorCisKK19sbGludF9vcF9kZWM6CisgICAgcHJlT3Ao
CisgICAgICAgIG1hY3JvICh2YWx1ZSwgc2xvdykgYnN1YmlvIDEsIHZhbHVlLCBzbG93IGVuZCwK
KyAgICAgICAgX3Nsb3dfcGF0aF9kZWMpCisKKworX2xsaW50X29wX3RvX251bWJlcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQorICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQw
LCB0MikKICAgICBicWFlcSB0MiwgdGFnVHlwZU51bWJlciwgLm9wVG9OdW1iZXJJc0ltbWVkaWF0
ZQogICAgIGJ0cXogdDIsIHRhZ1R5cGVOdW1iZXIsIC5vcFRvTnVtYmVyU2xvdwogLm9wVG9OdW1i
ZXJJc0ltbWVkaWF0ZToKLSAgICByZXR1cm4odDIpCisgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwg
OF0KKyAgICB2YWx1ZVByb2ZpbGUodDIsIDMsIHQwKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBv
cF90b19udW1iZXJfbGVuZ3RoKQogCiAub3BUb051bWJlclNsb3c6CiAgICAgY2FsbFNsb3dQYXRo
KF9zbG93X3BhdGhfdG9fbnVtYmVyKQotICAgIGRpc3BhdGNoKCkKLWVuZCkKKyAgICBkaXNwYXRj
aChjb25zdGV4cHIgb3BfdG9fbnVtYmVyX2xlbmd0aCkKIAogCi1sbGludE9wV2l0aFJldHVybihv
cF90b19zdHJpbmcsIE9wVG9TdHJpbmcsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCi0gICAgZ2V0KG9wZXJhbmQsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgdDEsIHQwKQorX2xsaW50X29wX3RvX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQxKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MikKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCkKICAgICBidHFueiB0
MCwgdGFnTWFzaywgLm9wVG9TdHJpbmdTbG93CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBd
LCBTdHJpbmdUeXBlLCAub3BUb1N0cmluZ1Nsb3cKIC5vcFRvU3RyaW5nSXNTdHJpbmc6Ci0gICAg
cmV0dXJuKHQwKQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX3RvX3N0cmluZ19sZW5ndGgpCiAKIC5vcFRvU3RyaW5nU2xvdzoKICAgICBjYWxs
U2xvd1BhdGgoX3Nsb3dfcGF0aF90b19zdHJpbmcpCi0gICAgZGlzcGF0Y2goKQotZW5kKQorICAg
IGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b19zdHJpbmdfbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRo
UHJvZmlsZShvcF90b19vYmplY3QsIE9wVG9PYmplY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCByZXR1cm4pCi0gICAgZ2V0KG9wZXJhbmQsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDAsIHQyKQorX2xsaW50X29wX3RvX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MikKICAg
ICBidHFueiB0MiwgdGFnTWFzaywgLm9wVG9PYmplY3RTbG93CiAgICAgYmJiIEpTQ2VsbDo6bV90
eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wVG9PYmplY3RTbG93Ci0gICAgcmV0dXJuKHQyKQorICAg
IHN0b3JlcSB0MiwgW2NmciwgdDEsIDhdCisgICAgdmFsdWVQcm9maWxlKHQyLCA0LCB0MCkKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfdG9fb2JqZWN0X2xlbmd0aCkKIAogLm9wVG9PYmplY3RT
bG93OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX29iamVjdCkKLSAgICBkaXNwYXRj
aCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX29iamVjdF9sZW5ndGgpCiAK
IAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBnZXQob3BlcmFuZCwgdDApCi0g
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCi0gICAgbWV0YWRhdGEodDEs
IHQyKQotICAgIGxvYWRpcyBPcE5lZ2F0ZTo6TWV0YWRhdGE6OmFyaXRoUHJvZmlsZVt0MV0sIHQy
CitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQzKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigzLCB0MikKICAgICBicWIgdDMsIHRhZ1R5cGVOdW1iZXIsIC5vcE5lZ2F0ZU5vdEludAogICAg
IGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKICAgICBuZWdpIHQzCi0gICAgb3Jx
IHRhZ1R5cGVOdW1iZXIsIHQzCiAgICAgb3JpIEFyaXRoUHJvZmlsZUludCwgdDIKLSAgICBzdG9y
ZWkgdDIsIE9wTmVnYXRlOjpNZXRhZGF0YTo6YXJpdGhQcm9maWxlW3QxXQotICAgIHJldHVybih0
MykKKyAgICBvcnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICBzdG9yZWlzVG9JbnN0cnVjdGlvbih0
MiwgMykKKyAgICBzdG9yZXEgdDMsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9uZWdhdGVfbGVuZ3RoKQogLm9wTmVnYXRlTm90SW50OgogICAgIGJ0cXogdDMsIHRhZ1R5
cGVOdW1iZXIsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JxIDB4ODAwMDAwMDAwMDAwMDAwMCwgdDMK
ICAgICBvcmkgQXJpdGhQcm9maWxlTnVtYmVyLCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6
Ok1ldGFkYXRhOjphcml0aFByb2ZpbGVbdDFdCi0gICAgcmV0dXJuKHQzKQorICAgIHN0b3JlcSB0
MywgW2NmciwgdDEsIDhdCisgICAgc3RvcmVpc1RvSW5zdHJ1Y3Rpb24odDIsIDMpCisgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX25lZ2F0ZV9sZW5ndGgpCiAKIC5vcE5lZ2F0ZVNsb3c6CiAgICAg
Y2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbmVnYXRlKQotICAgIGRpc3BhdGNoKCkKLWVuZCkKLQot
Ci1tYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG5hbWUsIG9wLCBpbnRlZ2VyT3BlcmF0aW9uQW5k
U3RvcmUsIGRvdWJsZU9wZXJhdGlvbikKLSAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVuYW1l
JSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAg
ICAgICBtZXRhZGF0YSh0NSwgdDApCi0KLSAgICAgICAgbWFjcm8gcHJvZmlsZSh0eXBlKQotICAg
ICAgICAgICAgb3JpIHR5cGUsICVvcCU6Ok1ldGFkYXRhOjphcml0aFByb2ZpbGVbdDVdCi0gICAg
ICAgIGVuZAorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9uZWdhdGVfbGVuZ3RoKQorCisKK21h
Y3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVP
cGVyYXRpb24sIHNsb3dQYXRoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKKyAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCisgICAgYnFiIHQw
LCB0YWdUeXBlTnVtYmVyLCAub3AxTm90SW50CisgICAgYnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAu
b3AyTm90SW50CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQorICAgIGludGVnZXJP
cGVyYXRpb25BbmRTdG9yZSh0MSwgdDAsIC5zbG93LCB0MikKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oNCwgdDEpCisgICAgb3JpIEFyaXRoUHJvZmlsZUludEludCwgdDEKKyAgICBzdG9yZWlz
VG9JbnN0cnVjdGlvbih0MSwgNCkKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAg
ICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3Bl
cmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBidHF6IHQwLCB0YWdUeXBlTnVtYmVyLCAuc2xv
dworICAgIGJxYWVxIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AxTm90SW50T3AySW50CisgICAgYnRx
eiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKKyAgICBhZGRxIHRhZ1R5cGVOdW1iZXIsIHQxCisg
ICAgZnEyZCB0MSwgZnQxCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDQsIHQyKQorICAgIG9y
aSBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIsIHQyCisgICAgc3RvcmVpc1RvSW5zdHJ1Y3Rpb24o
dDIsIDQpCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkludDoKKyAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDIpCisgICAgb3JpIEFyaXRoUHJvZmlsZU51bWJlcklu
dCwgdDIKKyAgICBzdG9yZWlzVG9JbnN0cnVjdGlvbih0MiwgNCkKKyAgICBjaTJkIHQxLCBmdDEK
Ky5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCisgICAg
YWRkcSB0YWdUeXBlTnVtYmVyLCB0MAorICAgIGZxMmQgdDAsIGZ0MAorICAgIGRvdWJsZU9wZXJh
dGlvbihmdDEsIGZ0MCkKKyAgICBmZDJxIGZ0MCwgdDAKKyAgICBzdWJxIHRhZ1R5cGVOdW1iZXIs
IHQwCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3Ay
Tm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNl
Y29uZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIp
CisgICAgYnRxeiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oNCwgdDMpCisgICAgb3JpIEFyaXRoUHJvZmlsZUludE51bWJlciwgdDMKKyAgICBzdG9y
ZWlzVG9JbnN0cnVjdGlvbih0MywgNCkKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBhZGRxIHRhZ1R5
cGVOdW1iZXIsIHQxCisgICAgZnEyZCB0MSwgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwg
ZnQwKQorICAgIGZkMnEgZnQwLCB0MAorICAgIHN1YnEgdGFnVHlwZU51bWJlciwgdDAKKyAgICBz
dG9yZXEgdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDUpCiAKLSAgICAgICAgZ2V0KHJo
cywgdDApCi0gICAgICAgIGdldChsaHMsIHQyKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQwLCB0MSkKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MiwgdDApCi0gICAgICAgIGJxYiB0MCwgdGFnVHlwZU51bWJlciwgLm9wMU5vdEludAotICAgICAg
ICBicWIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcDJOb3RJbnQKLSAgICAgICAgZ2V0KGRzdCwgdDIp
Ci0gICAgICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MSwgdDAsIC5zbG93LCB0MikKLQot
ICAgICAgICBwcm9maWxlKEFyaXRoUHJvZmlsZUludEludCkKLSAgICAgICAgZGlzcGF0Y2goKQot
Ci0gICAgLm9wMU5vdEludDoKLSAgICAgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkg
bm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgotICAgICAg
ICBidHF6IHQwLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwotICAgICAgICBicWFlcSB0MSwgdGFnVHlw
ZU51bWJlciwgLm9wMU5vdEludE9wMkludAotICAgICAgICBidHF6IHQxLCB0YWdUeXBlTnVtYmVy
LCAuc2xvdwotICAgICAgICBhZGRxIHRhZ1R5cGVOdW1iZXIsIHQxCi0gICAgICAgIGZxMmQgdDEs
IGZ0MQotICAgICAgICBwcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlck51bWJlcikKLSAgICAgICAg
am1wIC5vcDFOb3RJbnRSZWFkeQotICAgIC5vcDFOb3RJbnRPcDJJbnQ6Ci0gICAgICAgIHByb2Zp
bGUoQXJpdGhQcm9maWxlTnVtYmVySW50KQotICAgICAgICBjaTJkIHQxLCBmdDEKLSAgICAub3Ax
Tm90SW50UmVhZHk6Ci0gICAgICAgIGdldChkc3QsIHQyKQotICAgICAgICBhZGRxIHRhZ1R5cGVO
dW1iZXIsIHQwCi0gICAgICAgIGZxMmQgdDAsIGZ0MAotICAgICAgICBkb3VibGVPcGVyYXRpb24o
ZnQxLCBmdDApCi0gICAgICAgIGZkMnEgZnQwLCB0MAotICAgICAgICBzdWJxIHRhZ1R5cGVOdW1i
ZXIsIHQwCi0gICAgICAgIHN0b3JlcSB0MCwgW2NmciwgdDIsIDhdCi0gICAgICAgIGRpc3BhdGNo
KCkKLQotICAgIC5vcDJOb3RJbnQ6Ci0gICAgICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0
ZWx5IGFuIGludCwgdGhlIHNlY29uZCBpcyBkZWZpbml0ZWx5IG5vdC4KLSAgICAgICAgZ2V0KGRz
dCwgdDIpCi0gICAgICAgIGJ0cXogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIHBy
b2ZpbGUoQXJpdGhQcm9maWxlSW50TnVtYmVyKQotICAgICAgICBjaTJkIHQwLCBmdDAKLSAgICAg
ICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQotICAgICAgICBmcTJkIHQxLCBmdDEKLSAgICAgICAg
ZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQotICAgICAgICBmZDJxIGZ0MCwgdDAKLSAgICAgICAg
c3VicSB0YWdUeXBlTnVtYmVyLCB0MAotICAgICAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQot
ICAgICAgICBkaXNwYXRjaCgpCi0KLSAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfJW5hbWUlKQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kKQotZW5kCi0KLWlm
IFg4Nl82NCBvciBYODZfNjRfV0lOCi0gICAgYmluYXJ5T3BDdXN0b21TdG9yZShkaXYsIE9wRGl2
LAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQotICAgICAgICAgICAg
IyBBc3N1bWUgdDMgaXMgc2NyYXRjaGFibGUuCi0gICAgICAgICAgICBidGl6IGxlZnQsIHNsb3cK
LSAgICAgICAgICAgIGJpbmVxIGxlZnQsIC0xLCAubm90TmVnMlR3b1RoZTMxRGl2QnlOZWcxCi0g
ICAgICAgICAgICBiaWVxIHJpZ2h0LCAtMjE0NzQ4MzY0OCwgLnNsb3cKLSAgICAgICAgLm5vdE5l
ZzJUd29UaGUzMURpdkJ5TmVnMToKLSAgICAgICAgICAgIGJ0aW56IHJpZ2h0LCAuaW50T0sKLSAg
ICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdwotICAgICAgICAuaW50T0s6Ci0gICAgICAgICAg
ICBtb3ZlIGxlZnQsIHQzCi0gICAgICAgICAgICBtb3ZlIHJpZ2h0LCB0MAotICAgICAgICAgICAg
Y2RxaQotICAgICAgICAgICAgaWRpdmkgdDMKLSAgICAgICAgICAgIGJ0aW56IHQxLCBzbG93Ci0g
ICAgICAgICAgICBvcnEgdGFnVHlwZU51bWJlciwgdDAKLSAgICAgICAgICAgIHN0b3JlcSB0MCwg
W2NmciwgaW5kZXgsIDhdCi0gICAgICAgIGVuZCwKLSAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCkKLWVsc2UKLSAgICBzbG93UGF0aE9wKGRpdikKKy5zbG93
OgorICAgIGNhbGxTbG93UGF0aChzbG93UGF0aCkKKyAgICBkaXNwYXRjaCg1KQogZW5kCiAKLQot
YmluYXJ5T3BDdXN0b21TdG9yZShtdWwsIE9wTXVsLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdywgaW5kZXgpCi0gICAgICAgICMgQXNzdW1lIHQzIGlzIHNjcmF0Y2hhYmxlLgotICAgICAg
ICBtb3ZlIHJpZ2h0LCB0MwotICAgICAgICBibXVsaW8gbGVmdCwgdDMsIHNsb3cKLSAgICAgICAg
YnRpbnogdDMsIC5kb25lCi0gICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdwotICAgICAgICBiaWx0
IHJpZ2h0LCAwLCBzbG93Ci0gICAgLmRvbmU6Ci0gICAgICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0
MwotICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIGluZGV4LCA4XQotICAgIGVuZCwKLSAgICBtYWNy
byAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kKQotCi0KLW1hY3JvIGJpbmFyeU9w
KG5hbWUsIG9wLCBpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24pCi0gICAgYmluYXJ5
T3BDdXN0b21TdG9yZShuYW1lLCBvcCwKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24s
IGRvdWJsZU9wZXJhdGlvbiwgc2xvd1BhdGgpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKICAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKICAgICAgICAgICAgIGludGVn
ZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCiAgICAgICAgICAgICBvcnEgdGFnVHlwZU51
bWJlciwgcmlnaHQKICAgICAgICAgICAgIHN0b3JlcSByaWdodCwgW2NmciwgaW5kZXgsIDhdCiAg
ICAgICAgIGVuZCwKLSAgICAgICAgZG91YmxlT3BlcmF0aW9uKQorICAgICAgICBkb3VibGVPcGVy
YXRpb24sIHNsb3dQYXRoKQogZW5kCiAKLWJpbmFyeU9wKGFkZCwgT3BBZGQsCi0gICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAotICAgIG1h
Y3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQpCitfbGxpbnRfb3BfYWRkOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfc2xvd19wYXRo
X2FkZCkKIAogCi1iaW5hcnlPcChzdWIsIE9wU3ViLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKLSAgICBtYWNybyAobGVmdCwgcmln
aHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kKQorX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgICMgQXNzdW1lIHQzIGlzIHNjcmF0Y2hhYmxl
LgorICAgICAgICAgICAgbW92ZSByaWdodCwgdDMKKyAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCB0
Mywgc2xvdworICAgICAgICAgICAgYnRpbnogdDMsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxl
ZnQsIDAsIHNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgLmRv
bmU6CisgICAgICAgICAgICBvcnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICAgICAgICAgIHN0b3Jl
cSB0MywgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9tdWwpCiAK
IAotbGxpbnRPcFdpdGhSZXR1cm4ob3BfdW5zaWduZWQsIE9wVW5zaWduZWQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgZ2V0KG9wZXJhbmQsIHQxKQotICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyKQotICAgIGJpbHQgdDIsIDAsIC5vcFVuc2ln
bmVkU2xvdwotICAgIHJldHVybih0MikKLS5vcFVuc2lnbmVkU2xvdzoKLSAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF91bnNpZ25lZCkKLSAgICBkaXNwYXRjaCgpCi1lbmQpCitfbGxpbnRfb3Bf
c3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfc2xv
d19wYXRoX3N1YikKIAogCi1tYWNybyBjb21tb25CaXRPcChvcEtpbmQsIG5hbWUsIG9wLCBvcGVy
YXRpb24pCi0gICAgb3BLaW5kKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCByZXR1cm4pCi0gICAgICAgIGdldChyaHMsIHQwKQotICAgICAgICBnZXQobGhzLCB0MikK
LSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCi0gICAgICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQotICAgICAgICBicWIgdDAsIHRhZ1R5
cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGJxYiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAg
ICAgICAgb3BlcmF0aW9uKHQxLCB0MCkKLSAgICAgICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQwCi0g
ICAgICAgIHJldHVybih0MCkKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGlmIFg4Nl82NCBvciBYODZfNjRfV0lOCisgICAgICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUo
CisgICAgICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAg
ICAgICAgICMgQXNzdW1lIHQzIGlzIHNjcmF0Y2hhYmxlLgorICAgICAgICAgICAgICAgIGJ0aXog
bGVmdCwgc2xvdworICAgICAgICAgICAgICAgIGJpbmVxIGxlZnQsIC0xLCAubm90TmVnMlR3b1Ro
ZTMxRGl2QnlOZWcxCisgICAgICAgICAgICAgICAgYmllcSByaWdodCwgLTIxNDc0ODM2NDgsIC5z
bG93CisgICAgICAgICAgICAubm90TmVnMlR3b1RoZTMxRGl2QnlOZWcxOgorICAgICAgICAgICAg
ICAgIGJ0aW56IHJpZ2h0LCAuaW50T0sKKyAgICAgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNs
b3cKKyAgICAgICAgICAgIC5pbnRPSzoKKyAgICAgICAgICAgICAgICBtb3ZlIGxlZnQsIHQzCisg
ICAgICAgICAgICAgICAgbW92ZSByaWdodCwgdDAKKyAgICAgICAgICAgICAgICBjZHFpCisgICAg
ICAgICAgICAgICAgaWRpdmkgdDMKKyAgICAgICAgICAgICAgICBidGlueiB0MSwgc2xvdworICAg
ICAgICAgICAgICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MAorICAgICAgICAgICAgICAgIHN0b3Jl
cSB0MCwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBlbmQsCisgICAgICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICAgICAgX3Nsb3df
cGF0aF9kaXYpCisgICAgZWxzZQorICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9kaXYp
CisgICAgICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9kaXZfbGVuZ3RoKQorICAgIGVuZAogCi0g
ICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVuYW1lJSkKLSAgICAg
ICAgZGlzcGF0Y2goKQotICAgIGVuZCkKLWVuZAogCi1tYWNybyBiaXRPcChuYW1lLCBvcCwgb3Bl
cmF0aW9uKQotICAgIGNvbW1vbkJpdE9wKGxsaW50T3BXaXRoUmV0dXJuLCBuYW1lLCBvcCwgb3Bl
cmF0aW9uKQotZW5kCittYWNybyBiaXRPcFByb2ZpbGVkKG9wZXJhdGlvbiwgc2xvd1BhdGgsIGFk
dmFuY2UpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQwKQorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigyLCB0MikKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDApCisgICAgYnFiIHQwLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgIGJxYiB0MSwg
dGFnVHlwZU51bWJlciwgLnNsb3cKKyAgICBvcGVyYXRpb24odDEsIHQwKQorICAgIG9ycSB0YWdU
eXBlTnVtYmVyLCB0MAorICAgIHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCisgICAgdmFsdWVQcm9m
aWxlKHQwLCBhZHZhbmNlIC0gMSwgdDIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6
CisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQK
KworbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkKKyAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oMywgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQyKQor
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKKyAgICBicWIg
dDAsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CisgICAgYnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xv
dworICAgIG9wZXJhdGlvbih0MSwgdDApCisgICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQwCisgICAg
c3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaChhZHZhbmNlKQogCi1tYWNybyBi
aXRPcFByb2ZpbGVkKG5hbWUsIG9wLCBvcGVyYXRpb24pCi0gICAgY29tbW9uQml0T3AobGxpbnRP
cFdpdGhQcm9maWxlLCBuYW1lLCBvcCwgb3BlcmF0aW9uKQorLnNsb3c6CisgICAgY2FsbFNsb3dQ
YXRoKHNsb3dQYXRoKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCiBlbmQKIAotYml0T3AobHNoaWZ0
LCBPcExzaGlmdCwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQpIGxzaGlmdGkgbGVmdCwgcmlnaHQg
ZW5kKQorX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3Ao
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9zbG93X3BhdGhfbHNoaWZ0LAorICAgICAgICBjb25zdGV4cHIgb3BfbHNoaWZ0X2xl
bmd0aCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBi
aXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9yc2hpZnQsCisgICAgICAgIGNvbnN0ZXhwciBvcF9yc2hp
ZnRfbGVuZ3RoKQogCiAKLWJpdE9wKHJzaGlmdCwgT3BSc2hpZnQsCi0gICAgbWFjcm8gKGxlZnQs
IHJpZ2h0KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCkKK19sbGludF9vcF91cnNoaWZ0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
KSB1cnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9zbG93X3BhdGhfdXJzaGlmdCwK
KyAgICAgICAgY29uc3RleHByIG9wX3Vyc2hpZnRfbGVuZ3RoKQogCiAKLWJpdE9wKHVyc2hpZnQs
IE9wVXJzaGlmdCwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQpIHVyc2hpZnRpIGxlZnQsIHJpZ2h0
IGVuZCkKK19sbGludF9vcF91bnNpZ25lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MikKKyAgICBiaWx0IHQyLCAwLCAu
b3BVbnNpZ25lZFNsb3cKKyAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KGNvbnN0ZXhwciBvcF91bnNpZ25lZF9sZW5ndGgpCisub3BVbnNpZ25lZFNsb3c6CisgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfdW5zaWduZWQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9w
X3Vuc2lnbmVkX2xlbmd0aCkKIAogCi1iaXRPcChiaXR4b3IsIE9wQml0eG9yLAotICAgIG1hY3Jv
IChsZWZ0LCByaWdodCkgeG9yaSBsZWZ0LCByaWdodCBlbmQpCitfbGxpbnRfb3BfYml0YW5kOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcFByb2ZpbGVkKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfc2xvd19wYXRoX2Jp
dGFuZCwKKyAgICAgICAgY29uc3RleHByIG9wX2JpdGFuZF9sZW5ndGgpCiAKIAotYml0T3BQcm9m
aWxlZChiaXRhbmQsIE9wQml0YW5kLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYW5kaSBsZWZ0
LCByaWdodCBlbmQpCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSB4b3JpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX3Nsb3dfcGF0aF9iaXR4b3IsCisgICAgICAgIGNvbnN0ZXhwciBvcF9iaXR4
b3JfbGVuZ3RoKQogCiAKLWJpdE9wUHJvZmlsZWQoYml0b3IsIE9wQml0b3IsCi0gICAgbWFjcm8g
KGxlZnQsIHJpZ2h0KSBvcmkgbGVmdCwgcmlnaHQgZW5kKQorX2xsaW50X29wX2JpdG9yOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcFByb2ZpbGVkKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9zbG93X3BhdGhfYml0b3Is
CisgICAgICAgIGNvbnN0ZXhwciBvcF9iaXRvcl9sZW5ndGgpCiAKIAotbGxpbnRPcChvcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlLCBPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCkKLSAgICBnZXQoZHN0LCB0MykKK19sbGludF9vcF9vdmVycmlkZXNfaGFz
X2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9tU3RydWN0KE9w
T3ZlcnJpZGVzSGFzSW5zdGFuY2U6Om1fZHN0LCB0MykKIAotICAgIGdldChoYXNJbnN0YW5jZVZh
bHVlLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICBs
b2FkaXNGcm9tU3RydWN0KE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U6Om1faGFzSW5zdGFuY2VWYWx1
ZSwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCiAgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0Ml0s
IHQyCiAgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb25bdDJdLCB0MgogICAgIGJxbmVxIHQwLCB0MiwgLm9wT3ZlcnJpZGVzSGFz
SW5zdGFuY2VOb3REZWZhdWx0U3ltYm9sCiAKLSAgICBnZXQoY29uc3RydWN0b3IsIHQxKQotICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgIGxvYWRpc0Zyb21TdHJ1
Y3QoT3BPdmVycmlkZXNIYXNJbnN0YW5jZTo6bV9jb25zdHJ1Y3RvciwgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCiAgICAgdGJ6IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAg
ICAgc3RvcmVxIHQxLCBbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCisgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2VfbGVuZ3RoKQogCiAub3BPdmVycmlk
ZXNIYXNJbnN0YW5jZU5vdERlZmF1bHRTeW1ib2w6CiAgICAgc3RvcmVxIFZhbHVlVHJ1ZSwgW2Nm
ciwgdDMsIDhdCi0gICAgZGlzcGF0Y2goKQotZW5kKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBv
cF9vdmVycmlkZXNfaGFzX2luc3RhbmNlX2xlbmd0aCkKKworCitfbGxpbnRfb3BfaW5zdGFuY2Vv
Zl9jdXN0b206CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2luc3RhbmNlb2ZfY3VzdG9tKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9p
bnN0YW5jZW9mX2N1c3RvbV9sZW5ndGgpCiAKIAotbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfZW1w
dHksIE9wSXNFbXB0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBn
ZXQob3BlcmFuZCwgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDAp
CitfbGxpbnRfb3BfaXNfZW1wdHk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigyLCB0MSkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCiAgICAgY3FlcSB0MCwgVmFsdWVFbXB0
eSwgdDMKICAgICBvcnEgVmFsdWVGYWxzZSwgdDMKLSAgICByZXR1cm4odDMpCi1lbmQpCisgICAg
c3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaXNfZW1w
dHlfbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVmaW5lZCwgT3BJc1Vu
ZGVmaW5lZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBnZXQob3Bl
cmFuZCwgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCitfbGxp
bnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMiwgdDEpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwKQogICAgIGJ0cXogdDAsIHRhZ01hc2ssIC5v
cElzVW5kZWZpbmVkQ2VsbAogICAgIGNxZXEgdDAsIFZhbHVlVW5kZWZpbmVkLCB0MwogICAgIG9y
cSBWYWx1ZUZhbHNlLCB0MwotICAgIHJldHVybih0MykKKyAgICBzdG9yZXEgdDMsIFtjZnIsIHQy
LCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc191bmRlZmluZWRfbGVuZ3RoKQogLm9w
SXNVbmRlZmluZWRDZWxsOgogICAgIGJ0Ym56IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSBWYWx1ZUZh
bHNlLCB0MQotICAgIHJldHVybih0MSkKKyAgICBzdG9yZXEgdDEsIFtjZnIsIHQyLCA4XQorICAg
IGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc191bmRlZmluZWRfbGVuZ3RoKQogLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQ6CiAgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEsIHQ1
KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDFdLCB0MQogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0
M10sIHQxLCB0MAogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgIHJldHVybih0MCkKLWVuZCkK
KyAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9p
c191bmRlZmluZWRfbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2Jvb2xlYW4s
IE9wSXNCb29sZWFuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGdl
dChvcGVyYW5kLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkK
K19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oMiwgdDEpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwKQogICAgIHhvcnEgVmFsdWVGYWxzZSwg
dDAKICAgICB0cXogdDAsIH4xLCB0MAogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgIHJldHVy
bih0MCkKLWVuZCkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9pc19ib29sZWFuX2xlbmd0aCkKIAogCi1sbGludE9wV2l0aFJldHVybihvcF9p
c19udW1iZXIsIE9wSXNOdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4p
Ci0gICAgZ2V0KG9wZXJhbmQsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwg
dDEsIHQwKQorX2xsaW50X29wX2lzX251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQxKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigx
LCB0MikKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCkKICAgICB0cW56IHQwLCB0
YWdUeXBlTnVtYmVyLCB0MQogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQotICAgIHJldHVybih0MSkK
LWVuZCkKKyAgICBzdG9yZXEgdDEsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9pc19udW1iZXJfbGVuZ3RoKQogCiAKLWxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxf
d2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQotICAgIGdldCh0eXBlLCB0MCkKLSAgICBnZXQob3BlcmFuZCwgdDEpCi0gICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDMpCitfbGxpbnRfb3BfaXNfY2VsbF93aXRo
X3R5cGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigz
LCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDEpCisgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDEsIHQyKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzKQogICAg
IGJ0cW56IHQzLCB0YWdNYXNrLCAubm90Q2VsbENhc2UKICAgICBjYmVxIEpTQ2VsbDo6bV90eXBl
W3QzXSwgdDAsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCi0gICAgcmV0dXJuKHQxKQorICAg
IHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2lzX2Nl
bGxfd2l0aF90eXBlX2xlbmd0aCkKIC5ub3RDZWxsQ2FzZToKLSAgICByZXR1cm4oVmFsdWVGYWxz
ZSkKLWVuZCkKKyAgICBzdG9yZXEgVmFsdWVGYWxzZSwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2lzX2NlbGxfd2l0aF90eXBlX2xlbmd0aCkKIAogCi1sbGludE9wV2l0
aFJldHVybihvcF9pc19vYmplY3QsIE9wSXNPYmplY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCByZXR1cm4pCi0gICAgZ2V0KG9wZXJhbmQsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDEsIHQwKQorX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQxKQorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MikKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCkKICAg
ICBidHFueiB0MCwgdGFnTWFzaywgLm9wSXNPYmplY3ROb3RDZWxsCiAgICAgY2JhZXEgSlNDZWxs
OjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCB0MQogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQotICAg
IHJldHVybih0MSkKKyAgICBzdG9yZXEgdDEsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9pc19vYmplY3RfbGVuZ3RoKQogLm9wSXNPYmplY3ROb3RDZWxsOgotICAgIHJl
dHVybihWYWx1ZUZhbHNlKQotZW5kKQorICAgIHN0b3JlcSBWYWx1ZUZhbHNlLCBbY2ZyLCB0Miwg
OF0KKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaXNfb2JqZWN0X2xlbmd0aCkKIAogCiBtYWNy
byBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0QXNJbnQsIG9iamVj
dEFuZFN0b3JhZ2UsIHZhbHVlKQpAQCAtMTI0MiwxMDAgKzEzMzYsMTI1IEBAIG1hY3JvIHN0b3Jl
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHByb3BlcnR5T2Zmc2V0QXNJbnQsIG9iamVjdEFuZFN0
b3JhZ2UsIHZhbHVlCiBlbmQKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9k
aXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCi0gICAgbWV0YWRhdGEodDIsIHQwKQotICAgIGdldChiYXNlLCB0MCkKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWREaXJl
Y3RTbG93KQorX2xsaW50X29wX2dldF9ieV9pZF9kaXJlY3Q6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWREaXJlY3RTbG93KQogICAgIGxvYWRpIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRh
ZGF0YTo6c3RydWN0dXJlW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWREaXJl
Y3RTbG93Ci0gICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6b2Zmc2V0W3QyXSwg
dDEKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDIpCisgICAgYmluZXEgdDIsIHQxLCAu
b3BHZXRCeUlkRGlyZWN0U2xvdworICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MSkKKyAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIHQy
LCB0MCkKLSAgICByZXR1cm4odDApCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MiwgOF0KKyAgICB2
YWx1ZVByb2ZpbGUodDAsIDYsIHQxKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfYnlf
aWRfZGlyZWN0X2xlbmd0aCkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CiAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkX2RpcmVjdCkKLSAgICBkaXNwYXRjaCgpCi1l
bmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9ieV9pZF9kaXJlY3RfbGVuZ3RoKQog
CiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1ldGFkYXRhKHQyLCB0
MSkKLSAgICBsb2FkYiBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptb2RlW3QyXSwgdDEKLSAgICBnZXQo
YmFzZSwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAu
b3BHZXRCeUlkU2xvdykKLQotLm9wR2V0QnlJZERlZmF1bHQ6Ci0gICAgYmJuZXEgdDEsIGNvbnN0
ZXhwciBHZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9hZAorX2xsaW50X29w
X2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDIsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0
QnlJZFNsb3cpCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBs
b2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0
dXJlW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZGlz
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZz
ZXRbdDJdLCB0MQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig0LCB0MikKKyAgICBiaW5lcSB0
MiwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQor
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MikKICAgICBsb2FkUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQw
KQotICAgIHJldHVybih0MCkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQorICAgIHZhbHVl
UHJvZmlsZSh0MCwgOCwgdDEpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9ieV9pZF9s
ZW5ndGgpCiAKLS5vcEdldEJ5SWRQcm90b0xvYWQ6Ci0gICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBH
ZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKKy5vcEdldEJ5SWRT
bG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICBk
aXNwYXRjaChjb25zdGV4cHIgb3BfZ2V0X2J5X2lkX2xlbmd0aCkKKworCitfbGxpbnRfb3BfZ2V0
X2J5X2lkX3Byb3RvX2xvYWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigyLCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMs
IC5vcEdldEJ5SWRQcm90b1Nsb3cpCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEKLSAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bW9kZU1ldGFkYXRhLnByb3Rv
TG9hZE1vZGUuc3RydWN0dXJlW3QyXSwgdDMKLSAgICBiaW5lcSB0MywgdDEsIC5vcEdldEJ5SWRT
bG93Ci0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bW9kZU1ldGFkYXRhLnByb3RvTG9h
ZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKLSAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRh
Ojptb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKKyAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDIpCisgICAgYmluZXEgdDIsIHQxLCAub3BHZXRCeUlkUHJv
dG9TbG93CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQorICAgIGxvYWRwRnJvbUlu
c3RydWN0aW9uKDYsIHQzKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MikKICAgICBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlJZCwgdDIsIHQwKQotICAgIHJldHVybih0MCkKLQotLm9wR2V0QnlJZEFycmF5TGVu
Z3RoOgotICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAu
b3BHZXRCeUlkVW5zZXQKLSAgICBtb3ZlIHQzLCB0MAotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwg
dDAsIHQyLCB0NSkKLSAgICBidGl6IHQwLCBJc0FycmF5LCAub3BHZXRCeUlkU2xvdwotICAgIGJ0
aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xvdwotICAgIGxvYWRDYWdlZChf
Z19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpqc1ZhbHVlLCBjb25zdGV4
cHIgSlNWQUxVRV9HSUdBQ0FHRV9NQVNLLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwg
dDEpCi0gICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1
Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKLSAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlk
U2xvdwotICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MAotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIHQyLCB0MCkKLSAgICByZXR1cm4odDApCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MiwgOF0K
KyAgICB2YWx1ZVByb2ZpbGUodDAsIDgsIHQxKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9n
ZXRfYnlfaWRfcHJvdG9fbG9hZF9sZW5ndGgpCisKKy5vcEdldEJ5SWRQcm90b1Nsb3c6CisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZF9sZW5ndGgpCiAKLS5vcEdldEJ5SWRVbnNl
dDoKKworX2xsaW50X29wX2dldF9ieV9pZF91bnNldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFVuc2V0U2xvdykKICAgICBsb2FkaSBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1vZGVN
ZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlW3QyXSwgdDAKLSAgICBiaW5lcSB0MCwgdDEsIC5v
cEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIFZhbHVlVW5kZWZp
bmVkKQotICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oNCwgdDIpCisgICAgYmluZXEgdDIsIHQxLCAub3BHZXRCeUlkVW5zZXRTbG93CisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQorICAgIHN0b3JlcSBWYWx1ZVVuZGVmaW5lZCwgW2Nm
ciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKFZhbHVlVW5kZWZpbmVkLCA4LCB0MSkKKyAgICBk
aXNwYXRjaChjb25zdGV4cHIgb3BfZ2V0X2J5X2lkX3Vuc2V0X2xlbmd0aCkKKworLm9wR2V0QnlJ
ZFVuc2V0U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQp
CisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9ieV9pZF91bnNldF9sZW5ndGgpCiAKLS5v
cEdldEJ5SWRTbG93OgorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQorICAgIGxvYWRwRnJv
bUluc3RydWN0aW9uKDQsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0
MywgLm9wR2V0QXJyYXlMZW5ndGhTbG93KQorICAgIG1vdmUgdDMsIHQyCisgICAgYXJyYXlQcm9m
aWxlKHQyLCB0MSwgdDApCisgICAgYnRpeiB0MiwgSXNBcnJheSwgLm9wR2V0QXJyYXlMZW5ndGhT
bG93CisgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEFycmF5TGVuZ3RoU2xv
dworICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBsb2FkQ2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpT
VkFMVUVfR0lHQUNBR0VfTUFTSywgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQyKQor
ICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCisgICAgYmlsdCB0MCwgMCwgLm9wR2V0QXJyYXlMZW5n
dGhTbG93CisgICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQwCisgICAgdmFsdWVQcm9maWxlKHQwLCA4
LCB0MikKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9nZXRfYXJyYXlfbGVuZ3RoX2xlbmd0aCkKKworLm9wR2V0QXJyYXlMZW5ndGhTbG93Ogog
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKLSAgICBkaXNwYXRj
aCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9hcnJheV9sZW5ndGhfbGVu
Z3RoKQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIGdldChiYXNl
LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcFB1
dEJ5SWRTbG93KQotICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICBsb2FkaXMgT3BQdXRCeUlkOjpN
ZXRhZGF0YTo6b2xkU3RydWN0dXJlW3Q1XSwgdDIKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbig0LCB0MikKICAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVj
dHVyZUlEW3QwXSwgLm9wUHV0QnlJZFNsb3cKIAogICAgICMgQXQgdGhpcyBwb2ludCwgd2UgaGF2
ZToKLSAgICAjIHQ1IC0+IG1ldGFkYXRhCiAgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJ
RAogICAgICMgdDAgLT4gb2JqZWN0IGJhc2UKIAotICAgIGdldCh2YWx1ZSwgdDEpCi0gICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDMpCisgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzKQogCi0gICAgbG9h
ZHAgT3BQdXRCeUlkOjpNZXRhZGF0YTo6ZmxhZ3NbdDVdLCB0MQorICAgIGxvYWRwRnJvbUluc3Ry
dWN0aW9uKDgsIHQxKQogCiAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgogICAgICMgdDAg
LT4gb2JqZWN0IGJhc2UKICAgICAjIHQxIC0+IHB1dCBieSBpZCBmbGFncwogICAgICMgdDIgLT4g
Y3VycmVudCBzdHJ1Y3R1cmUgSUQKICAgICAjIHQzIC0+IHZhbHVlIHRvIHB1dAotICAgICMgdDUg
LT4gbWV0YWRhdGEKIAogICAgIGJ0cG56IHQxLCBQdXRCeUlkUHJpbWFyeVR5cGVNYXNrLCAub3BQ
dXRCeUlkVHlwZUNoZWNrT2JqZWN0V2l0aFN0cnVjdHVyZU9yT3RoZXIKIApAQCAtMTQwNSwyNCAr
MTUyNCwyMCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGJpbmVxIHQxLCBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDNdLCAub3BQdXRCeUlkU2xvdwogCiAub3BQdXRCeUlkRG9uZUNoZWNr
aW5nVHlwZXM6Ci0gICAgbG9hZGkgT3BQdXRCeUlkOjpNZXRhZGF0YTo6bmV3U3RydWN0dXJlW3Q1
XSwgdDEKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDEpCiAgICAgCiAgICAgYnRpeiB0
MSwgLm9wUHV0QnlJZE5vdFRyYW5zaXRpb24KIAogICAgICMgVGhpcyBpcyB0aGUgdHJhbnNpdGlv
biBjYXNlLiB0MSBob2xkcyB0aGUgbmV3IHN0cnVjdHVyZUlELiB0MiBob2xkcyB0aGUgb2xkIHN0
cnVjdHVyZSBJRC4KICAgICAjIElmIHdlIGhhdmUgYSBjaGFpbiwgd2UgbmVlZCB0byBjaGVjayBp
dC4gdDAgaXMgdGhlIGJhc2UuIFdlIG1heSBjbG9iYmVyIHQxIHRvIHVzZSBpdCBhcwogICAgICMg
c2NyYXRjaC4KLSAgICBsb2FkcCBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjpzdHJ1Y3R1cmVDaGFpblt0
NV0sIHQzCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNywgdDMpCiAgICAgYnRweiB0MywgLm9w
UHV0QnlJZFRyYW5zaXRpb25EaXJlY3QKIAotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRo
U2NyYXRjaCh0MiwgdDEsIHQzKQotCi0gICAgIyByZWxvYWQgdGhlIFN0cnVjdHVyZUNoYWluIHNp
bmNlIHdlIHVzZWQgdDMgYXMgYSBzY3JhdGNoIGFib3ZlCi0gICAgbG9hZHAgT3BQdXRCeUlkOjpN
ZXRhZGF0YTo6c3RydWN0dXJlQ2hhaW5bdDVdLCB0MwotCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hh
aW46Om1fdmVjdG9yW3QzXSwgdDMKICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiB0Mywgb2sg
ZW5kKQogCisgICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSwgdDUp
CiAgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCiAgICAgYnFlcSB0Miwg
VmFsdWVOdWxsLCAub3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZQogLm9wUHV0QnlJZFRyYW5z
aXRpb25DaGFpbkxvb3A6CkBAIC0xNDM5LDc0ICsxNTU0LDY1IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0CiAKIC5vcFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Eb25lOgogICAgICMgUmVsb2FkIHRo
ZSBuZXcgc3RydWN0dXJlLCBzaW5jZSB3ZSBjbG9iYmVyZWQgaXQgYWJvdmUuCi0gICAgbG9hZGkg
T3BQdXRCeUlkOjpNZXRhZGF0YTo6bmV3U3RydWN0dXJlW3Q1XSwgdDEKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oNiwgdDEpCiAKIC5vcFB1dEJ5SWRUcmFuc2l0aW9uRGlyZWN0OgogICAgIHN0
b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQotICAgIHdyaXRlQmFycmllck9uT3Bl
cmFuZFdpdGhSZWxvYWQoc2l6ZSwgZ2V0LCBiYXNlLCBtYWNybyAoKQotICAgICAgICAjIFJlbG9h
ZCBtZXRhZGF0YSBpbnRvIHQ1Ci0gICAgICAgIG1ldGFkYXRhKHQ1LCB0MSkKLSAgICAgICAgIyBS
ZWxvYWQgYmFzZSBpbnRvIHQwCi0gICAgICAgIGdldChiYXNlLCB0MSkKLSAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgZW5kKQorICAgIHdyaXRlQmFycmll
ck9uT3BlcmFuZCgxKQorICAgICMgUmVsb2FkIGJhc2UgaW50byB0MAorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCkKIAog
Lm9wUHV0QnlJZE5vdFRyYW5zaXRpb246CiAgICAgIyBUaGUgb25seSB0aGluZyBsaXZlIHJpZ2h0
IG5vdyBpcyB0MCwgd2hpY2ggaG9sZHMgdGhlIGJhc2UuCi0gICAgZ2V0KHZhbHVlLCB0MSkKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MikKLSAgICBsb2FkaSBPcFB1dEJ5
SWQ6Ok1ldGFkYXRhOjpvZmZzZXRbdDVdLCB0MQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigz
LCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MikKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEs
IHQwLCB0MikKLSAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgYmFzZSwgdmFs
dWUpCi0gICAgZGlzcGF0Y2goKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKKyAg
ICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHV0X2J5X2lkX2xlbmd0aCkKIAogLm9wUHV0QnlJZFNs
b3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5X2lkKQotICAgIGRp
c3BhdGNoKCkKLWVuZCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHV0X2J5X2lkX2xlbmd0
aCkKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1hY3JvIGZp
bmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAgICAgICAgZ2V0KGRzdCwgc2NyYXRjaCkK
LSAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByZXN1bHQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBl
bmQKLQotICAgIG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAgICAg
ICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHJlc3VsdAotICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1
bHQsIHNjcmF0Y2gpCi0gICAgZW5kCi0KLSAgICBtYWNybyBmaW5pc2hEb3VibGVHZXRCeVZhbChy
ZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICAgICAgZmQycSByZXN1bHQsIHNjcmF0Y2gx
Ci0gICAgICAgIHN1YnEgdGFnVHlwZU51bWJlciwgc2NyYXRjaDEKLSAgICAgICAgZmluaXNoR2V0
QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQotICAgIGVuZAorbWFjcm8gZmluaXNoR2V0QnlWYWwo
cmVzdWx0LCBzY3JhdGNoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCBzY3JhdGNoKQor
ICAgIHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgdmFsdWVQcm9maWxlKHJl
c3VsdCwgNSwgc2NyYXRjaCkKKyAgICBkaXNwYXRjaCg2KQorZW5kCiAKLSAgICBtZXRhZGF0YSh0
NSwgdDIpCittYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAgb3Jx
IHRhZ1R5cGVOdW1iZXIsIHJlc3VsdAorICAgIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRj
aCkKK2VuZAogCi0gICAgZ2V0KGJhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorbWFjcm8gZmluaXNoRG91YmxlR2V0
QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgZmQycSByZXN1bHQsIHNjcmF0
Y2gxCisgICAgc3VicSB0YWdUeXBlTnVtYmVyLCBzY3JhdGNoMQorICAgIGZpbmlzaEdldEJ5VmFs
KHNjcmF0Y2gxLCBzY3JhdGNoMikKK2VuZAogCitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQyKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDQsIHQzKQogICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9m
aWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjphcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCi0KLSAg
ICBnZXQocHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXpl
LCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MSkK
KyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZUludDMyKHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQogICAgIHN4aTJxIHQxLCB0MQotCi0g
ICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6Ompz
VmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRl
cmZseVt0MF0sIHQzLCB0YWdUeXBlTnVtYmVyKQotICAgIG1vdmUgVGFnVHlwZU51bWJlciwgdGFn
VHlwZU51bWJlcgotCisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2Fn
ZTo6QmFzZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpT
T2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCB0NSkKICAgICBhbmRpIEluZGV4aW5nU2hhcGVN
YXNrLCB0MgogICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3Vz
CiAgICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3Vz
CiAKIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgogICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4
aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAu
b3BHZXRCeVZhbFNsb3cKLSAgICBnZXQoZHN0LCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMSwgdDApCiAgICAgbG9hZHEgW3QzLCB0MSwgOF0sIHQyCiAgICAgYnRxeiB0MiwgLm9wR2V0
QnlWYWxTbG93CiAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQpAQCAtMTUxNCw3ICsxNjIwLDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIC5vcEdldEJ5VmFsTm90Q29udGlndW91czoKICAgICBi
aW5lcSB0MiwgRG91YmxlU2hhcGUsIC5vcEdldEJ5VmFsTm90RG91YmxlCiAgICAgYmlhZXEgdDEs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1Ymxp
Y0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChkc3QsIHQwKQorICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxICx0MCkKICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCiAgICAg
YmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CiAgICAgZmQycSBmdDAsIHQyCkBAIC0x
NTI1LDE0ICsxNjMxLDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgc3ViaSBBcnJh
eVN0b3JhZ2VTaGFwZSwgdDIKICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAt
IEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlCiAgICAgYmlh
ZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhz
LnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChkc3QsIHQwKQorICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBsb2FkcSBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yW3QzLCB0MSwgOF0sIHQyCiAgICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93CiAKIC5v
cEdldEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIpCi0gICAgZGlzcGF0Y2goKQorICAgIHZhbHVlUHJvZmls
ZSh0MiwgNSwgdDApCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9ieV92YWxfbGVuZ3Ro
KQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgogICAgICMgRmlyc3QgbGV0cyBjaGVj
ayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9p
bGVycGxhdGUgdXAgZnJvbnQuCkBAIC0xNjI5LDI3NyArMTczNSwyNjAgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2dldF9ieV92YWwpCi0gICAgZGlzcGF0Y2goKQotZW5kKQotCi0KLW1hY3JvIHB1
dEJ5VmFsT3AobmFtZSwgb3ApCi0gICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lbmFtZSUsIG9w
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICAgICAg
bWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCi0gICAgICAgICAgICBiaWFl
cSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QwXSwgLm91dE9mQm91bmRzCi0gICAgICAgIC5zdG9yZVJlc3VsdDoKLSAg
ICAgICAgICAgIGdldCh2YWx1ZSwgdDIpCi0gICAgICAgICAgICBzdG9yZUNhbGxiYWNrKHQyLCB0
MSwgW3QwLCB0MywgOF0pCi0gICAgICAgICAgICBkaXNwYXRjaCgpCi0KLSAgICAgICAgLm91dE9m
Qm91bmRzOgotICAgICAgICAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJ
bmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0
T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0b3JlYiAxLCAlb3AlOjpNZXRhZGF0YTo6YXJyYXlQcm9m
aWxlLm1fbWF5U3RvcmVUb0hvbGVbdDVdCi0gICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgotICAg
ICAgICAgICAgc3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdCi0gICAgICAgICAgICBqbXAgLnN0b3JlUmVz
dWx0Ci0gICAgICAgIGVuZAorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfYnlfdmFsX2xl
bmd0aCkKKworCittYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKKyAgICBi
aWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0
aHMucHVibGljTGVuZ3RoW3QwXSwgLm91dE9mQm91bmRzCisuc3RvcmVSZXN1bHQ6CisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQorICAgIHN0b3JlQ2FsbGJhY2sodDIsIHQxLCBbdDAs
IHQzLCA4XSkKKyAgICBkaXNwYXRjaCg1KQorCisub3V0T2ZCb3VuZHM6CisgICAgYmlhZXEgdDMs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rv
ckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKKyAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig0LCB0MikKKyAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xl
W3QyXQorICAgIGFkZGkgMSwgdDMsIHQyCisgICAgc3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdCisgICAg
am1wIC5zdG9yZVJlc3VsdAorZW5kCisKK21hY3JvIHB1dEJ5VmFsKHNsb3dQYXRoKQorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9h
ZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDMpCisgICAgbW92ZSB0MSwgdDIKKyAgICBhcnJheVByb2Zp
bGUodDIsIHQzLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDApCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQorICAgIHN4
aTJxIHQzLCB0MworICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpqc1ZhbHVlLCBjb25zdGV4cHIgSlNWQUxVRV9HSUdBQ0FHRV9NQVNLLCBKU09i
amVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgdDUpCisgICAgYnRpbnogdDIsIENvcHlPbldyaXRl
LCAub3BQdXRCeVZhbFNsb3cKKyAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgIGJp
bmVxIHQyLCBJbnQzMlNoYXBlLCAub3BQdXRCeVZhbE5vdEludDMyCisgICAgY29udGlndW91c1B1
dEJ5VmFsKAorICAgICAgICBtYWNybyAob3BlcmFuZCwgc2NyYXRjaCwgYWRkcmVzcykKKyAgICAg
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUob3BlcmFuZCwgc2NyYXRjaCkKKyAgICAgICAg
ICAgIGJxYiBzY3JhdGNoLCB0YWdUeXBlTnVtYmVyLCAub3BQdXRCeVZhbFNsb3cKKyAgICAgICAg
ICAgIHN0b3JlcSBzY3JhdGNoLCBhZGRyZXNzCisgICAgICAgICAgICB3cml0ZUJhcnJpZXJPbk9w
ZXJhbmRzKDEsIDMpCisgICAgICAgIGVuZCkKKworLm9wUHV0QnlWYWxOb3RJbnQzMjoKKyAgICBi
aW5lcSB0MiwgRG91YmxlU2hhcGUsIC5vcFB1dEJ5VmFsTm90RG91YmxlCisgICAgY29udGlndW91
c1B1dEJ5VmFsKAorICAgICAgICBtYWNybyAob3BlcmFuZCwgc2NyYXRjaCwgYWRkcmVzcykKKyAg
ICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUob3BlcmFuZCwgc2NyYXRjaCkKKyAgICAg
ICAgICAgIGJxYiBzY3JhdGNoLCB0YWdUeXBlTnVtYmVyLCAubm90SW50CisgICAgICAgICAgICBj
aTJkIHNjcmF0Y2gsIGZ0MAorICAgICAgICAgICAgam1wIC5yZWFkeQorICAgICAgICAubm90SW50
OgorICAgICAgICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCBzY3JhdGNoCisgICAgICAgICAgICBm
cTJkIHNjcmF0Y2gsIGZ0MAorICAgICAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wUHV0QnlW
YWxTbG93CisgICAgICAgIC5yZWFkeToKKyAgICAgICAgICAgIHN0b3JlZCBmdDAsIGFkZHJlc3MK
KyAgICAgICAgICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKKyAgICAgICAgZW5kKQor
Cisub3BQdXRCeVZhbE5vdERvdWJsZToKKyAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAu
b3BQdXRCeVZhbE5vdENvbnRpZ3VvdXMKKyAgICBjb250aWd1b3VzUHV0QnlWYWwoCisgICAgICAg
IG1hY3JvIChvcGVyYW5kLCBzY3JhdGNoLCBhZGRyZXNzKQorICAgICAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShvcGVyYW5kLCBzY3JhdGNoKQorICAgICAgICAgICAgc3RvcmVxIHNjcmF0
Y2gsIGFkZHJlc3MKKyAgICAgICAgICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKKyAg
ICAgICAgZW5kKQorCisub3BQdXRCeVZhbE5vdENvbnRpZ3VvdXM6CisgICAgYmluZXEgdDIsIEFy
cmF5U3RvcmFnZVNoYXBlLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MywgLXNpemVvZiBJ
bmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3Qw
XSwgLm9wUHV0QnlWYWxPdXRPZkJvdW5kcworICAgIGJ0cXogQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
clt0MCwgdDMsIDhdLCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5Cisub3BQdXRCeVZhbEFy
cmF5U3RvcmFnZVN0b3JlUmVzdWx0OgorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MikK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSkKKyAgICBzdG9yZXEgdDEsIEFycmF5
U3RvcmFnZTo6bV92ZWN0b3JbdDAsIHQzLCA4XQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMo
MSwgMykKKyAgICBkaXNwYXRjaCg1KQorCisub3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5Ogor
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQorICAgIHN0b3JlYiAxLCBBcnJheVByb2Zp
bGU6Om1fbWF5U3RvcmVUb0hvbGVbdDFdCisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVt
VmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQdXRCeVZhbEFy
cmF5U3RvcmFnZVN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MywgdDEKKyAgICBzdG9yZWkgdDEs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1Ymxp
Y0xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAor
Cisub3BQdXRCeVZhbE91dE9mQm91bmRzOgorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQw
KQorICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0T2ZCb3VuZHNbdDBdCisub3BQdXRC
eVZhbFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQorICAgIGRpc3BhdGNoKDUpCitl
bmQKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgcHV0QnlWYWwoX2xsaW50X3Nsb3dfcGF0
aF9wdXRfYnlfdmFsKQorCitfbGxpbnRfb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CisgICAgcHV0QnlW
YWwoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKKworCitfbGxpbnRfb3Bfam1w
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEludEluZGlyZWN0KDEpCisKKwor
bWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCkKKyAg
ICBidHFueiB0MCwgfjB4ZiwgLnNsb3cKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAg
ICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoSW50SW5kaXJlY3QoMikKKwor
LnNsb3c6CisgICAgY2FsbFNsb3dQYXRoKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCisK
K21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MAorICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRl
CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEsIHQzKQorICAgIGNlbGxI
YW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMp
CisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hJbnRJbmRpcmVjdCgyKQorCisuaW1tZWRpYXRlOgor
ICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQwLCAu
dGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKIAotICAgICAgICBnZXQoYmFzZSwgdDApCi0g
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MSwgLm9wUHV0QnlW
YWxTbG93KQotICAgICAgICBtb3ZlIHQxLCB0MgotICAgICAgICBtZXRhZGF0YSh0NSwgdDApCi0g
ICAgICAgIGFycmF5UHJvZmlsZSglb3AlOjpNZXRhZGF0YTo6YXJyYXlQcm9maWxlLCB0MiwgdDUs
IHQwKQotICAgICAgICBnZXQocHJvcGVydHksIHQwKQotICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCi0gICAgICAgIHN4aTJx
IHQzLCB0MwotICAgICAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdl
OjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpTVkFMVUVfR0lHQUNBR0VfTUFTSywgSlNP
YmplY3Q6Om1fYnV0dGVyZmx5W3QxXSwgdDAsIHRhZ1R5cGVOdW1iZXIpCi0gICAgICAgIG1vdmUg
VGFnVHlwZU51bWJlciwgdGFnVHlwZU51bWJlcgotICAgICAgICBidGlueiB0MiwgQ29weU9uV3Jp
dGUsIC5vcFB1dEJ5VmFsU2xvdwotICAgICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0Mgot
ICAgICAgICBiaW5lcSB0MiwgSW50MzJTaGFwZSwgLm9wUHV0QnlWYWxOb3RJbnQzMgotICAgICAg
ICBjb250aWd1b3VzUHV0QnlWYWwoCi0gICAgICAgICAgICBtYWNybyAob3BlcmFuZCwgc2NyYXRj
aCwgYWRkcmVzcykKLSAgICAgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IG9wZXJhbmQsIHNjcmF0Y2gpCi0gICAgICAgICAgICAgICAgYnFiIHNjcmF0Y2gsIHRhZ1R5cGVO
dW1iZXIsIC5vcFB1dEJ5VmFsU2xvdwotICAgICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBh
ZGRyZXNzCi0gICAgICAgICAgICAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQs
IGJhc2UsIHZhbHVlKQotICAgICAgICAgICAgZW5kKQotCi0gICAgLm9wUHV0QnlWYWxOb3RJbnQz
MjoKLSAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BQdXRCeVZhbE5vdERvdWJsZQot
ICAgICAgICBjb250aWd1b3VzUHV0QnlWYWwoCi0gICAgICAgICAgICBtYWNybyAob3BlcmFuZCwg
c2NyYXRjaCwgYWRkcmVzcykKLSAgICAgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIG9wZXJhbmQsIHNjcmF0Y2gpCi0gICAgICAgICAgICAgICAgYnFiIHNjcmF0Y2gsIHRh
Z1R5cGVOdW1iZXIsIC5ub3RJbnQKLSAgICAgICAgICAgICAgICBjaTJkIHNjcmF0Y2gsIGZ0MAot
ICAgICAgICAgICAgICAgIGptcCAucmVhZHkKLSAgICAgICAgICAgIC5ub3RJbnQ6Ci0gICAgICAg
ICAgICAgICAgYWRkcCB0YWdUeXBlTnVtYmVyLCBzY3JhdGNoCi0gICAgICAgICAgICAgICAgZnEy
ZCBzY3JhdGNoLCBmdDAKLSAgICAgICAgICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BQdXRC
eVZhbFNsb3cKLSAgICAgICAgICAgIC5yZWFkeToKLSAgICAgICAgICAgICAgICBzdG9yZWQgZnQw
LCBhZGRyZXNzCi0gICAgICAgICAgICAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBn
ZXQsIGJhc2UsIHZhbHVlKQotICAgICAgICAgICAgZW5kKQotCi0gICAgLm9wUHV0QnlWYWxOb3RE
b3VibGU6Ci0gICAgICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcFB1dEJ5VmFsTm90
Q29udGlndW91cwotICAgICAgICBjb250aWd1b3VzUHV0QnlWYWwoCi0gICAgICAgICAgICBtYWNy
byAob3BlcmFuZCwgc2NyYXRjaCwgYWRkcmVzcykKLSAgICAgICAgICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIG9wZXJhbmQsIHNjcmF0Y2gpCi0gICAgICAgICAgICAgICAgc3Rv
cmVxIHNjcmF0Y2gsIGFkZHJlc3MKLSAgICAgICAgICAgICAgICB3cml0ZUJhcnJpZXJPbk9wZXJh
bmRzKHNpemUsIGdldCwgYmFzZSwgdmFsdWUpCi0gICAgICAgICAgICBlbmQpCi0KLSAgICAub3BQ
dXRCeVZhbE5vdENvbnRpZ3VvdXM6Ci0gICAgICAgIGJpbmVxIHQyLCBBcnJheVN0b3JhZ2VTaGFw
ZSwgLm9wUHV0QnlWYWxTbG93Ci0gICAgICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRC
eVZhbE91dE9mQm91bmRzCi0gICAgICAgIGJ0cXogQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MCwg
dDMsIDhdLCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5Ci0gICAgLm9wUHV0QnlWYWxBcnJh
eVN0b3JhZ2VTdG9yZVJlc3VsdDoKLSAgICAgICAgZ2V0KHZhbHVlLCB0MikKLSAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDEpCi0gICAgICAgIHN0b3JlcSB0MSwgQXJy
YXlTdG9yYWdlOjptX3ZlY3Rvclt0MCwgdDMsIDhdCi0gICAgICAgIHdyaXRlQmFycmllck9uT3Bl
cmFuZHMoc2l6ZSwgZ2V0LCBiYXNlLCB2YWx1ZSkKLSAgICAgICAgZGlzcGF0Y2goKQotCi0gICAg
Lm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eToKLSAgICAgICAgc3RvcmViIDEsICVvcCU6Ok1l
dGFkYXRhOjphcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KLSAgICAgICAgYWRkaSAx
LCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCi0gICAgICAgIGJpYiB0Mywg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAotICAgICAgICBh
ZGRpIDEsIHQzLCB0MQotICAgICAgICBzdG9yZWkgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0KLSAgICAgICAgam1w
IC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKLQotICAgIC5vcFB1dEJ5VmFsT3V0
T2ZCb3VuZHM6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3AlOjpNZXRhZGF0YTo6YXJyYXlQcm9maWxl
Lm1fb3V0T2ZCb3VuZHNbdDVdCi0gICAgLm9wUHV0QnlWYWxTbG93OgotICAgICAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lbmFtZSUpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBl
bmQpCi1lbmQKLQotcHV0QnlWYWxPcChwdXRfYnlfdmFsLCBPcFB1dEJ5VmFsKQotCi1wdXRCeVZh
bE9wKHB1dF9ieV92YWxfZGlyZWN0LCBPcFB1dEJ5VmFsRGlyZWN0KQotCi0KLW1hY3JvIGxsaW50
SnVtcFRydWVPckZhbHNlT3AobmFtZSwgb3AsIGNvbmRpdGlvbk9wKQotICAgIGxsaW50T3BXaXRo
SnVtcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKLSAg
ICAgICAgZ2V0KGNvbmRpdGlvbiwgdDEpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQwKQotICAgICAgICBidHFueiB0MCwgfjB4ZiwgLnNsb3cKLSAgICAgICAgY29u
ZGl0aW9uT3AodDAsIC50YXJnZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKLQotICAgIC50YXJnZXQ6
Ci0gICAgICAgIGp1bXAodGFyZ2V0KQotCi0gICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKLSAgICAgICAgbmV4dEluc3RydWN0aW9uKCkKLSAg
ICBlbmQpCi1lbmQKLQotCi1tYWNybyBlcXVhbE51bGxKdW1wT3AobmFtZSwgb3AsIGNlbGxIYW5k
bGVyLCBpbW1lZGlhdGVIYW5kbGVyKQotICAgIGxsaW50T3BXaXRoSnVtcChvcF8lbmFtZSUsIG9w
LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKLSAgICAgICAgZ2V0KHZhbHVlLCB0
MCkKLSAgICAgICAgYXNzZXJ0Tm90Q29uc3RhbnQoc2l6ZSwgdDApCi0gICAgICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1lZGlhdGUKLSAg
ICAgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEsIHQzKQotICAgICAgICBj
ZWxsSGFuZGxlcih0MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKLSAgICAgICAgZGlz
cGF0Y2goKQotCi0gICAgLnRhcmdldDoKLSAgICAgICAganVtcCh0YXJnZXQpCi0KLSAgICAuaW1t
ZWRpYXRlOgotICAgICAgICBhbmRxIH5UYWdCaXRVbmRlZmluZWQsIHQwCi0gICAgICAgIGltbWVk
aWF0ZUhhbmRsZXIodDAsIC50YXJnZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQpCi1l
bmQKLQotZXF1YWxOdWxsSnVtcE9wKGplcV9udWxsLCBPcEplcU51bGwsCi0gICAgbWFjcm8gKHN0
cnVjdHVyZSwgdmFsdWUsIHRhcmdldCkgCi0gICAgICAgIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIC5ub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCi0gICAgICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKLSAgICAgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3N0cnVjdHVy
ZV0sIHQwLCB0YXJnZXQKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAoc3RydWN0dXJlLCB2YWx1ZSwgdGFyZ2V0
KSAKKyAgICAgICAgICAgIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5ub3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDAKKyAgICAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAor
ICAgICAgICAgICAgYnBlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3N0cnVjdHVyZV0sIHQw
LCB0YXJnZXQKIC5ub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgotICAgIGVuZCwKLSAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYnFlcSB2YWx1ZSwgVmFsdWVOdWxsLCB0YXJnZXQgZW5kKQorICAg
ICAgICBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBicWVxIHZhbHVlLCBWYWx1
ZU51bGwsIHRhcmdldCBlbmQpCiAKIAotZXF1YWxOdWxsSnVtcE9wKGpuZXFfbnVsbCwgT3BKbmVx
TnVsbCwKLSAgICBtYWNybyAoc3RydWN0dXJlLCB2YWx1ZSwgdGFyZ2V0KSAKLSAgICAgICAgYnRi
eiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0Ci0gICAgICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKLSAgICAgICAgYnBuZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFtzdHJ1Y3R1
cmVdLCB0MCwgdGFyZ2V0Ci0gICAgZW5kLAotICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBicW5l
cSB2YWx1ZSwgVmFsdWVOdWxsLCB0YXJnZXQgZW5kKQorX2xsaW50X29wX2puZXFfbnVsbDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAoc3RydWN0
dXJlLCB2YWx1ZSwgdGFyZ2V0KSAKKyAgICAgICAgICAgIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIHRhcmdldAorICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CisgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAg
ICAgICAgICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3Rbc3RydWN0dXJlXSwgdDAs
IHRhcmdldAorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBicW5l
cSB2YWx1ZSwgVmFsdWVOdWxsLCB0YXJnZXQgZW5kKQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEo
b3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCi0gICAgZ2V0KHZhbHVlLCB0MCkKLSAgICBnZXQoc3BlY2lhbFBvaW50ZXIs
IHQxKQorX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQx
KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDJdLCB0MgogICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3NwZWNpYWxQ
b2ludGVyc1t0MiwgdDEsIFB0clNpemVdLCB0MQogICAgIGJwbmVxIHQxLCBbY2ZyLCB0MCwgOF0s
IC5vcEpuZXFQdHJUYXJnZXQKLSAgICBkaXNwYXRjaCgpCisgICAgZGlzcGF0Y2goNSkKIAogLm9w
Sm5lcVB0clRhcmdldDoKLSAgICBtZXRhZGF0YSh0NSwgdDApCi0gICAgc3RvcmViIDEsIE9wSm5l
cVB0cjo6TWV0YWRhdGE6Omhhc0p1bXBlZFt0NV0KLSAgICBnZXQodGFyZ2V0LCB0MCkKLSAgICBq
dW1wSW1wbCh0MCkKLWVuZCkKLQotCi1tYWNybyBjb21wYXJlSnVtcE9wKG5hbWUsIG9wLCBpbnRl
Z2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSkKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5hbWUl
LCBvcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCi0gICAgICAgIGdldChsaHMs
IHQyKQotICAgICAgICBnZXQocmhzLCB0MykKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MiwgdDApCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDMs
IHQxKQotICAgICAgICBicWIgdDAsIHRhZ1R5cGVOdW1iZXIsIC5vcDFOb3RJbnQKLSAgICAgICAg
YnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AyTm90SW50Ci0gICAgICAgIGludGVnZXJDb21wYXJl
KHQwLCB0MSwgLmp1bXBUYXJnZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKLQotICAgIC5vcDFOb3RJ
bnQ6Ci0gICAgICAgIGJ0cXogdDAsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGJxYiB0
MSwgdGFnVHlwZU51bWJlciwgLm9wMU5vdEludE9wMk5vdEludAotICAgICAgICBjaTJkIHQxLCBm
dDEKLSAgICAgICAgam1wIC5vcDFOb3RJbnRSZWFkeQotICAgIC5vcDFOb3RJbnRPcDJOb3RJbnQ6
Ci0gICAgICAgIGJ0cXogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGFkZHEgdGFn
VHlwZU51bWJlciwgdDEKLSAgICAgICAgZnEyZCB0MSwgZnQxCi0gICAgLm9wMU5vdEludFJlYWR5
OgotICAgICAgICBhZGRxIHRhZ1R5cGVOdW1iZXIsIHQwCi0gICAgICAgIGZxMmQgdDAsIGZ0MAot
ICAgICAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKLSAgICAgICAgZGlz
cGF0Y2goKQotCi0gICAgLm9wMk5vdEludDoKLSAgICAgICAgY2kyZCB0MCwgZnQwCi0gICAgICAg
IGJ0cXogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGFkZHEgdGFnVHlwZU51bWJl
ciwgdDEKLSAgICAgICAgZnEyZCB0MSwgZnQxCi0gICAgICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBm
dDEsIC5qdW1wVGFyZ2V0KQotICAgICAgICBkaXNwYXRjaCgpCi0KLSAgICAuanVtcFRhcmdldDoK
LSAgICAgICAganVtcCh0YXJnZXQpCi0KLSAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfJW5hbWUlKQotICAgICAgICBuZXh0SW5zdHJ1Y3Rpb24oKQotICAg
IGVuZCkKLWVuZAotCi0KLW1hY3JvIGVxdWFsaXR5SnVtcE9wKG5hbWUsIG9wLCBpbnRlZ2VyQ29t
cGFyaXNvbikKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUs
IGdldCwganVtcCwgZGlzcGF0Y2gpCi0gICAgICAgIGdldChsaHMsIHQyKQotICAgICAgICBnZXQo
cmhzLCB0MykKLSAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQyLCB0
MCwgLnNsb3cpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0Mywg
dDEsIC5zbG93KQotICAgICAgICBpbnRlZ2VyQ29tcGFyaXNvbih0MCwgdDEsIC5qdW1wVGFyZ2V0
KQotICAgICAgICBkaXNwYXRjaCgpCi0KLSAgICAuanVtcFRhcmdldDoKLSAgICAgICAganVtcCh0
YXJnZXQpCi0KLSAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfJW5hbWUlKQotICAgICAgICBuZXh0SW5zdHJ1Y3Rpb24oKQotICAgIGVuZCkKLWVuZAotCi0K
LW1hY3JvIGNvbXBhcmVVbnNpZ25lZEp1bXBPcChuYW1lLCBvcCwgaW50ZWdlckNvbXBhcmUpCi0g
ICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAs
IGRpc3BhdGNoKQotICAgICAgICBnZXQobGhzLCB0MikKLSAgICAgICAgZ2V0KHJocywgdDMpCi0g
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQotICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQzLCB0MSkKLSAgICAgICAgaW50ZWdlckNvbXBhcmUo
dDAsIHQxLCAuanVtcFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQotCi0gICAgLmp1bXBUYXJn
ZXQ6Ci0gICAgICAgIGp1bXAodGFyZ2V0KQotICAgIGVuZCkKLWVuZAotCi0KLW1hY3JvIGNvbXBh
cmVVbnNpZ25lZE9wKG5hbWUsIG9wLCBpbnRlZ2VyQ29tcGFyZUFuZFNldCkKLSAgICBsbGludE9w
V2l0aFJldHVybihvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0
dXJuKQotICAgICAgICBnZXQobGhzLCB0MikKLSAgICAgICAgZ2V0KHJocywgIHQwKQotICAgICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKLSAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCi0gICAgICAgIGludGVnZXJDb21wYXJlQW5kU2V0
KHQwLCB0MSwgdDApCi0gICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgICAgICByZXR1cm4o
dDApCi0gICAgZW5kKQotZW5kCi0KLQotbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0sIE9w
U3dpdGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKLSAgICBnZXQoc2Ny
dXRpbmVlLCB0MikKLSAgICBnZXQodGFibGVJbmRleCwgdDMpCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzaXplLCB0MiwgdDEpCisgICAgc3RvcmVpc1RvSW5zdHJ1Y3Rpb24oMSwgNCkKKyAg
ICBkaXNwYXRjaEludEluZGlyZWN0KDMpCisKKworbWFjcm8gY29tcGFyZUp1bXAoaW50ZWdlckNv
bXBhcmUsIGRvdWJsZUNvbXBhcmUsIHNsb3dQYXRoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MikKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDMpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDApCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MywgdDEp
CisgICAgYnFiIHQwLCB0YWdUeXBlTnVtYmVyLCAub3AxTm90SW50CisgICAgYnFiIHQxLCB0YWdU
eXBlTnVtYmVyLCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDAsIHQxLCAuanVtcFRh
cmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJ0cXogdDAsIHRhZ1R5
cGVOdW1iZXIsIC5zbG93CisgICAgYnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AxTm90SW50T3Ay
Tm90SW50CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5v
dEludE9wMk5vdEludDoKKyAgICBidHF6IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgIGFk
ZHEgdGFnVHlwZU51bWJlciwgdDEKKyAgICBmcTJkIHQxLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToK
KyAgICBhZGRxIHRhZ1R5cGVOdW1iZXIsIHQwCisgICAgZnEyZCB0MCwgZnQwCisgICAgZG91Ymxl
Q29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5v
dEludDoKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBidHF6IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xv
dworICAgIGFkZHEgdGFnVHlwZU51bWJlciwgdDEKKyAgICBmcTJkIHQxLCBmdDEKKyAgICBkb3Vi
bGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVt
cFRhcmdldDoKKyAgICBkaXNwYXRjaEludEluZGlyZWN0KDMpCisKKy5zbG93OgorICAgIGNhbGxT
bG93UGF0aChzbG93UGF0aCkKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKKworbWFjcm8gY29tcGFy
ZVVuc2lnbmVkSnVtcChpbnRlZ2VyQ29tcGFyZSkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
MSwgdDIpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQzKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDMsIHQxKQor
ICAgIGludGVnZXJDb21wYXJlKHQwLCB0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkK
KworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hJbnRJbmRpcmVjdCgzKQorZW5kCisKKworbWFj
cm8gY29tcGFyZVVuc2lnbmVkKGludGVnZXJDb21wYXJlQW5kU2V0KQorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigzLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQorICAgIGludGVnZXJD
b21wYXJlQW5kU2V0KHQwLCB0MSwgdDApCisgICAgb3JxIFZhbHVlRmFsc2UsIHQwCisgICAgc3Rv
cmVxIHQwLCBbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorZW5kCisKKworX2xsaW50X29w
X3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigzLCB0MikKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCiAg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBT
aW1wbGVKdW1wVGFibGUsIHQzICAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUg
dGhpcyEKQEAgLTE5MTEsMjMgKzIwMDAsMjMgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9p
bW0sIE9wU3dpdGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBs
b2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
dDJdLCB0MwogICAgIGxvYWRpcyBbdDMsIHQxLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaAotICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCisgICAgZGlzcGF0Y2go
dDEpCiAKIC5vcFN3aXRjaEltbU5vdEludDoKICAgICBidHFueiB0MSwgdGFnVHlwZU51bWJlciwg
Lm9wU3dpdGNoSW1tU2xvdyAgICMgR28gc2xvdyBpZiBpdCdzIGEgZG91YmxlLgogLm9wU3dpdGNo
SW1tRmFsbFRocm91Z2g6Ci0gICAganVtcChkZWZhdWx0T2Zmc2V0KQorICAgIGRpc3BhdGNoSW50
SW5kaXJlY3QoMikKIAogLm9wU3dpdGNoSW1tU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9zd2l0Y2hfaW1tKQotICAgIG5leHRJbnN0cnVjdGlvbigpCi1lbmQpCisgICAg
ZGlzcGF0Y2goMCkKIAogCi1sbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNo
Q2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCi0gICAgZ2V0KHNjcnV0aW5l
ZSwgdDIpCi0gICAgZ2V0KHRhYmxlSW5kZXgsIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDIsIHQxKQorX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDEsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxKQogICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0
YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MwpAQCAtMTk1MCw5
MCArMjAzOSw4NCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hh
ciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgbG9hZHAgU2ltcGxlSnVt
cFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBs
b2FkaXMgW3QyLCB0MCwgNF0sIHQxCiAgICAgYnRpeiB0MSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCi0gICAgZGlzcGF0Y2hJbmRpcmVjdCh0MSkKKyAgICBkaXNwYXRjaCh0MSkKIAogLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoOgotICAgIGp1bXAoZGVmYXVsdE9mZnNldCkKKyAgICBkaXNwYXRj
aEludEluZGlyZWN0KDIpCiAKIC5vcFN3aXRjaE9uUm9wZToKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9zd2l0Y2hfY2hhcikKLSAgICBuZXh0SW5zdHJ1Y3Rpb24oKQotZW5kKQor
ICAgIGRpc3BhdGNoKDApCiAKIAotIyB3ZSBhc3N1bWUgdDUgY29udGFpbnMgdGhlIG1ldGFkYXRh
LCBhbmQgd2Ugc2hvdWxkIG5vdCBzY3JhdGNoIHRoYXQKLW1hY3JvIGFycmF5UHJvZmlsZUZvckNh
bGwob3AsIGdldHUpCi0gICAgZ2V0dShhcmd2LCB0MykKK21hY3JvIGFycmF5UHJvZmlsZUZvckNh
bGwoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig0LCB0MykKICAgICBuZWdwIHQzCiAgICAg
bG9hZHEgVGhpc0FyZ3VtZW50T2Zmc2V0W2NmciwgdDMsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0
YWdNYXNrLCAuZG9uZQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKChDYWxsT3BDb2RlU2l6ZSAt
IDIpLCB0MSkKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MwotICAgIHN0
b3JlaSB0MywgJW9wJTo6TWV0YWRhdGE6OmFycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJl
SURbdDVdCisgICAgc3RvcmVpIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJ
RFt0MV0KIC5kb25lOgogZW5kCiAKLW1hY3JvIGNvbW1vbkNhbGxPcChuYW1lLCBzbG93UGF0aCwg
b3AsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKLSAgICBsbGludE9wV2l0aE1ldGFkYXRhKG5hbWUs
IG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICAg
ICAgbWV0YWRhdGEodDUsIHQwKQotCi0gICAgICAgIHByb2xvZ3VlKG1hY3JvIChmaWVsZCwgZHN0
KQotICAgICAgICAgICAgZ2V0dShzaXplLCBvcCwgZmllbGQsIGRzdCkKLSAgICAgICAgZW5kLCBt
ZXRhZGF0YSkKLQotICAgICAgICBnZXQoY2FsbGVlLCB0MCkKLSAgICAgICAgaWYgUE9JTlRFUl9Q
Uk9GSUxJTkcKLSAgICAgICAgICAgIG1vdmUgdDEsIHQ1Ci0gICAgICAgIGVuZAotICAgICAgICBs
b2FkcCAlb3AlOjpNZXRhZGF0YTo6Y2FsbExpbmtJbmZvLmNhbGxlZVt0NV0sIHQyCi0gICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQotICAgICAgICBicW5lcSB0Mywg
dDIsIC5vcENhbGxTbG93Ci0gICAgICAgIGdldHUoc2l6ZSwgb3AsIGFyZ3YsIHQzKQotICAgICAg
ICBsc2hpZnRpIDMsIHQzCi0gICAgICAgIG5lZ3AgdDMKLSAgICAgICAgYWRkcCBjZnIsIHQzCi0g
ICAgICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQotICAgICAgICBnZXR1KHNpemUsIG9wLCBhcmdj
LCB0MikKLSAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0K
LSAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KLSAg
ICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgaWYgUE9JU09OCi0gICAgICAgICAgICBsb2FkcCBf
Z19KSVRDb2RlUG9pc29uLCB0MgotICAgICAgICAgICAgeG9ycCAlb3AlOjpNZXRhZGF0YTo6Y2Fs
bExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIKLSAgICAgICAgICAgIHByZXBhcmVD
YWxsKHQyLCB0MSwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICAgICAgY2FsbFRhcmdl
dEZ1bmN0aW9uKHNpemUsIG9wLCBkaXNwYXRjaCwgdDIsIEpTRW50cnlQdHJUYWcpCi0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHByZXBhcmVDYWxsKCVvcCU6Ok1ldGFkYXRhOjpjYWxsTGlua0lu
Zm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAg
ICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wLCBkaXNwYXRjaCwgJW9wJTo6TWV0
YWRhdGE6OmNhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcp
Ci0gICAgICAgIGVuZAorbWFjcm8gZG9DYWxsKHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDApCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwg
dDEpCisgICAgaWYgUE9JTlRFUl9QUk9GSUxJTkcKKyAgICAgICAgbW92ZSB0MSwgdDUKKyAgICBl
bmQKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MykKKyAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93
CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDQsIHQzKQorICAgIGxzaGlmdGkgMywgdDMKKyAg
ICBuZWdwIHQzCisgICAgYWRkcCBjZnIsIHQzCisgICAgc3RvcmVxIHQyLCBDYWxsZWVbdDNdCisg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQorICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBzcAorICAgIGlmIFBPSVNPTgorICAgICAgICBs
b2FkcCBfZ19KSVRDb2RlUG9pc29uLCB0MgorICAgICAgICB4b3JwIExMSW50Q2FsbExpbmtJbmZv
OjptYWNoaW5lQ29kZVRhcmdldFt0MV0sIHQyCisgICAgICAgIHByZXBhcmVDYWxsKHQyLCB0MSwg
dDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24odDIsIEpT
RW50cnlQdHJUYWcpCisgICAgZWxzZQorICAgICAgICBwcmVwYXJlQ2FsbChMTEludENhbGxMaW5r
SW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQor
ICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2Rl
VGFyZ2V0W3QxXSwgSlNFbnRyeVB0clRhZykKKyAgICBlbmQKIAotICAgIC5vcENhbGxTbG93Ogot
ICAgICAgICBzbG93UGF0aEZvckNhbGwoc2l6ZSwgb3AsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJl
cGFyZUNhbGwpCi0gICAgZW5kKQorLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKHNs
b3dQYXRoLCBwcmVwYXJlQ2FsbCkKIGVuZAogCi1sbGludE9wKG9wX3JldCwgT3BSZXQsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoKQorX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKLSAgICBnZXQodmFsdWUsIHQy
KQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHIwKQorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigxLCB0MikKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCByMCkK
ICAgICBkb1JldHVybigpCi1lbmQpCiAKIAotbGxpbnRPcFdpdGhSZXR1cm4ob3BfdG9fcHJpbWl0
aXZlLCBPcFRvUHJpbWl0aXZlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQot
ICAgIGdldChzcmMsIHQyKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQw
KQorX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDIsIHQyKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKICAgICBidHFueiB0MCwgdGFn
TWFzaywgLm9wVG9QcmltaXRpdmVJc0ltbQogICAgIGJiYWVxIEpTQ2VsbDo6bV90eXBlW3QwXSwg
T2JqZWN0VHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQogLm9wVG9QcmltaXRpdmVJc0ltbToK
LSAgICByZXR1cm4odDApCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aChjb25zdGV4cHIgb3BfdG9fcHJpbWl0aXZlX2xlbmd0aCkKIAogLm9wVG9QcmltaXRpdmVTbG93
Q2FzZToKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90b19wcmltaXRpdmUpCi0gICAgZGlz
cGF0Y2goKQotZW5kKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b19wcmltaXRpdmVfbGVu
Z3RoKQogCiAKLWNvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybygpIGVuZCwgbWFjcm8gKHNp
emUpCitfbGxpbnRfb3BfY2F0Y2g6CiAgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9t
IHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQogICAgICMgbWFjaGluZSBj
b2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBm
cm9tCiAgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50
X3Rocm93X3RyYW1wb2xpbmUpLgpAQCAtMjA0OCwxMyArMjEzMSwxMSBAQCBjb21tb25PcChsbGlu
dF9vcF9jYXRjaCwgbWFjcm8oKSBlbmQsIG1hY3JvIChzaXplKQogICAgIHJlc3RvcmVTdGFja1Bv
aW50ZXJBZnRlckNhbGwoKQogCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCi0gICAgIyBG
SVhNRTogY2xlYW51cCBkb3VibGUgbG9hZAotICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDkzMgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlv
bnNbUEJdLCBQQgotICAgIGxvYWRwIFtQQl0sIFBCCiAgICAgdW5wb2lzb24oX2dfQ29kZUJsb2Nr
UG9pc29uLCBQQiwgdDIpCiAgICAgbG9hZHAgVk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJv
d1t0M10sIFBDCiAgICAgc3VicCBQQiwgUEMKKyAgICByc2hpZnRwIGNvbnN0ZXhwciAoZ2V0TFNC
U2V0KHNpemVvZih2b2lkKikpKSwgUEMKIAogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVy
KQogICAgIGJwZXEgcjEsIDAsIC5pc0NhdGNoYWJsZUV4Y2VwdGlvbgpAQCAtMjA2NywzMSArMjE0
OCwzMCBAQCBjb21tb25PcChsbGludF9vcF9jYXRjaCwgbWFjcm8oKSBlbmQsIG1hY3JvIChzaXpl
KQogCiAgICAgbG9hZHAgVk06Om1fZXhjZXB0aW9uW3QzXSwgdDAKICAgICBzdG9yZXAgMCwgVk06
Om1fZXhjZXB0aW9uW3QzXQotICAgIGdldChzaXplLCBPcENhdGNoLCBleGNlcHRpb24sIHQyKQor
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MikKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQy
LCA4XQogCiAgICAgbG9hZHEgRXhjZXB0aW9uOjptX3ZhbHVlW3QwXSwgdDMKLSAgICBnZXQoc2l6
ZSwgT3BDYXRjaCwgdGhyb3duVmFsdWUsIHQyKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigy
LCB0MikKICAgICBzdG9yZXEgdDMsIFtjZnIsIHQyLCA4XQogCiAgICAgdHJhY2VFeGVjdXRpb24o
KQogCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKIAot
ICAgIGRpc3BhdGNoT3Aoc2l6ZSwgb3BfY2F0Y2gpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCi1sbGludE9wKG9wX2VuZCwgT3BFbmQsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoKQorX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKLSAgICBnZXQodmFsdWUsIHQwKQot
ICAgIGFzc2VydE5vdENvbnN0YW50KHNpemUsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MCkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwg
OF0sIHIwCiAgICAgZG9SZXR1cm4oKQotZW5kKQogCiAKLW9wKGxsaW50X3Rocm93X2Zyb21fc2xv
d19wYXRoX3RyYW1wb2xpbmUsIG1hY3JvICgpCitfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhf
dHJhbXBvbGluZToKICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKICAgICBhbmRwIE1hcmtlZEJs
b2NrTWFzaywgdDEKICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJs
b2NrOjpGb290ZXI6Om1fdm1bdDFdLCB0MQpAQCAtMjEwNiwxMyArMjE4NiwxMSBAQCBvcChsbGlu
dF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgIGFuZHAgTWFy
a2VkQmxvY2tNYXNrLCB0MQogICAgIGxvYWRwIE1hcmtlZEJsb2NrRm9vdGVyT2Zmc2V0ICsgTWFy
a2VkQmxvY2s6OkZvb3Rlcjo6bV92bVt0MV0sIHQxCiAgICAgam1wIFZNOjp0YXJnZXRNYWNoaW5l
UENGb3JUaHJvd1t0MV0sIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKLWVuZCkKIAogCi1vcChsbGlu
dF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lLCBtYWNybyAoKQorX2xsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmU6CiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KHQyKQogICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQotZW5k
KQogCiAKIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0
aW9uKQpAQCAtMjIwNCwxMjggKzIyODIsMTQyIEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxs
VHJhbXBvbGluZShvZmZzZXRPZkZ1bmN0aW9uKQogICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZQogZW5kCiAKLW1hY3JvIHZhckluamVjdGlvbkNoZWNrKHNsb3dQ
YXRoLCBzY3JhdGNoKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCi0gICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFtzY3JhdGNoXSwgc2NyYXRjaAotICAgIGxvYWRw
IEpTR2xvYmFsT2JqZWN0OjptX3ZhckluamVjdGlvbldhdGNocG9pbnRbc2NyYXRjaF0sIHNjcmF0
Y2gKLSAgICBiYmVxIFdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2NyYXRjaF0sIElzSW52YWxpZGF0
ZWQsIHNsb3dQYXRoCittYWNybyBnZXRDb25zdGFudFNjb3BlKGRzdCkKKyAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig2LCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oZHN0LCB0MSkKKyAg
ICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQogZW5kCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
cmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1ldGFkYXRhKHQ1LCB0MCkKK21hY3JvIHZhckluamVj
dGlvbkNoZWNrKHNsb3dQYXRoKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFs
T2JqZWN0OjptX3ZhckluamVjdGlvbldhdGNocG9pbnRbdDBdLCB0MAorICAgIGJiZXEgV2F0Y2hw
b2ludFNldDo6bV9zdGF0ZVt0MF0sIElzSW52YWxpZGF0ZWQsIHNsb3dQYXRoCitlbmQKIAotICAg
IG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6
TWV0YWRhdGE6OmNvbnN0YW50U2NvcGVbdDVdLCAgdDAKLSAgICAgICAgcmV0dXJuKHQwKQotICAg
IGVuZAorbWFjcm8gcmVzb2x2ZVNjb3BlKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwg
dDIpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQorICAgIGxvYWRxIFtjZnIsIHQw
LCA4XSwgdDAKKyAgICBidGl6IHQyLCAucmVzb2x2ZVNjb3BlTG9vcEVuZAogCi0gICAgbWFjcm8g
cmVzb2x2ZVNjb3BlKCkKLSAgICAgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjps
b2NhbFNjb3BlRGVwdGhbdDVdLCB0MgotICAgICAgICBnZXQoc2NvcGUsIHQwKQotICAgICAgICBs
b2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgICAgIGJ0aXogdDIsIC5yZXNvbHZlU2NvcGVMb29w
RW5kCisucmVzb2x2ZVNjb3BlTG9vcDoKKyAgICBsb2FkcCBKU1Njb3BlOjptX25leHRbdDBdLCB0
MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLnJlc29sdmVTY29wZUxvb3AKIAotICAg
IC5yZXNvbHZlU2NvcGVMb29wOgotICAgICAgICBsb2FkcCBKU1Njb3BlOjptX25leHRbdDBdLCB0
MAotICAgICAgICBzdWJpIDEsIHQyCi0gICAgICAgIGJ0aW56IHQyLCAucmVzb2x2ZVNjb3BlTG9v
cAorLnJlc29sdmVTY29wZUxvb3BFbmQ6CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQx
KQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCitlbmQKIAotICAgIC5yZXNvbHZlU2NvcGVM
b29wRW5kOgotICAgICAgICByZXR1cm4odDApCi0gICAgZW5kCiAKLSAgICBsb2FkcCBPcFJlc29s
dmVTY29wZTo6TWV0YWRhdGE6OnJlc29sdmVUeXBlW3Q1XSwgdDAKK19sbGludF9vcF9yZXNvbHZl
X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
NCwgdDApCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5
LCAuckdsb2JhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2Nv
cGUoMSkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcmVzb2x2ZV9zY29wZV9sZW5ndGgpCiAK
IC5yR2xvYmFsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXIsIC5yR2xvYmFsTGV4aWNhbFZh
cgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUoMSkKKyAgICBk
aXNwYXRjaChjb25zdGV4cHIgb3BfcmVzb2x2ZV9zY29wZV9sZW5ndGgpCiAKIC5yR2xvYmFsTGV4
aWNhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhciwgLnJDbG9zdXJlVmFyCi0g
ICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSgxKQorICAgIGRpc3Bh
dGNoKGNvbnN0ZXhwciBvcF9yZXNvbHZlX3Njb3BlX2xlbmd0aCkKIAogLnJDbG9zdXJlVmFyOgog
ICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29sdmVTY29wZSgp
CisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3Jlc29sdmVfc2NvcGVfbGVuZ3RoKQogCiAuck1v
ZHVsZVZhcjoKICAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcwotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50
U2NvcGUoMSkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcmVzb2x2ZV9zY29wZV9sZW5ndGgp
CiAKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQw
LCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcwotICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIpCi0g
ICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQor
ICAgIGdldENvbnN0YW50U2NvcGUoMSkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcmVzb2x2
ZV9zY29wZV9sZW5ndGgpCiAKIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAg
ICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHlu
YW1pYywgdDIpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgdmFySW5qZWN0aW9uQ2hlY2so
LnJEeW5hbWljKQorICAgIGdldENvbnN0YW50U2NvcGUoMSkKKyAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfcmVzb2x2ZV9zY29wZV9sZW5ndGgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzLCAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgdmFy
SW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAg
ICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCisgICAgZ2V0Q29uc3RhbnRTY29wZSgxKQor
ICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9yZXNvbHZlX3Njb3BlX2xlbmd0aCkKIAogLnJDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MsIC5yRHluYW1pYwotICAgIHZhckluamVjdGlvbkNoZWNrKC5y
RHluYW1pYywgdDIpCisgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQogICAgIHJlc29s
dmVTY29wZSgpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3Jlc29sdmVfc2NvcGVfbGVuZ3Ro
KQogCiAuckR5bmFtaWM6CiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzb2x2ZV9zY29w
ZSkKLSAgICBkaXNwYXRjaCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3Jlc29s
dmVfc2NvcGVfbGVuZ3RoKQogCiAKLW1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3AsIGdl
dCwgc2xvd1BhdGgpCi0gICAgZ2V0KHNjb3BlLCB0MCkKK21hY3JvIGxvYWRXaXRoU3RydWN0dXJl
Q2hlY2sob3BlcmFuZCwgc2xvd1BhdGgpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJh
bmQsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBsb2FkU3RydWN0dXJlV2l0
aFNjcmF0Y2godDAsIHQyLCB0MSwgdDMpCi0gICAgbG9hZHAgJW9wJTo6TWV0YWRhdGE6OnN0cnVj
dHVyZVt0NV0sIHQxCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgYnBuZXEg
dDIsIHQxLCBzbG93UGF0aAogZW5kCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKLSAgICBtZXRhZGF0YSh0NSwgdDApCi0KLSAgICBtYWNybyBnZXRQcm9wZXJ0
eSgpCi0gICAgICAgIGxvYWRpcyBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om9wZXJhbmRbdDVd
LCB0MQotICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0g
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgdDUsIHQyKQotICAgICAgICByZXR1
cm4odDIpCi0gICAgZW5kCittYWNybyBnZXRQcm9wZXJ0eSgpCisgICAgbG9hZGlzRnJvbUluc3Ry
dWN0aW9uKDYsIHQxKQorICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0
MikKKyAgICB2YWx1ZVByb2ZpbGUodDIsIDcsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MCkKKyAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQorZW5kCiAKLSAgICBtYWNybyBn
ZXRHbG9iYWxWYXIodGR6Q2hlY2tJZk5lY2Vzc2FyeSkKLSAgICAgICAgbG9hZHAgT3BHZXRGcm9t
U2NvcGU6Ok1ldGFkYXRhOjpvcGVyYW5kW3Q1XSwgdDAKLSAgICAgICAgbG9hZHEgW3QwXSwgdDAK
LSAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCB0NSwgdDApCi0gICAgICAgIHJldHVybih0MCkKLSAgICBlbmQKK21hY3Jv
IGdldEdsb2JhbFZhcih0ZHpDaGVja0lmTmVjZXNzYXJ5KQorICAgIGxvYWRwRnJvbUluc3RydWN0
aW9uKDYsIHQwKQorICAgIGxvYWRxIFt0MF0sIHQwCisgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0
MCkKKyAgICB2YWx1ZVByb2ZpbGUodDAsIDcsIHQxKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorZW5kCiAKLSAgICBtYWNybyBn
ZXRDbG9zdXJlVmFyKCkKLSAgICAgICAgbG9hZGlzIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6
b3BlcmFuZFt0NV0sIHQxCi0gICAgICAgIGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3Zhcmlh
Ymxlc1t0MCwgdDEsIDhdLCB0MAotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUs
IHQ1LCB0MCkKLSAgICAgICAgcmV0dXJuKHQwKQotICAgIGVuZAorbWFjcm8gZ2V0Q2xvc3VyZVZh
cigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDYsIHQxKQorICAgIGxvYWRxIEpTTGV4aWNh
bEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0
MCwgNywgdDEpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlcSB0
MCwgW2NmciwgdDEsIDhdCitlbmQKIAotICAgIGxvYWRpIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0
YTo6Z2V0UHV0SW5mb1t0NV0sIHQwCitfbGxpbnRfb3BfZ2V0X2Zyb21fc2NvcGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig0LCB0MCkKICAgICBhbmRp
IFJlc29sdmVUeXBlTWFzaywgdDAKIAogI2dHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwg
R2xvYmFsUHJvcGVydHksIC5nR2xvYmFsVmFyCi0gICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhP
cEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpCisgICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVj
aygyLCAuZ0R5bmFtaWMpCiAgICAgZ2V0UHJvcGVydHkoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9nZXRfZnJvbV9zY29wZV9sZW5ndGgpCiAKIC5nR2xvYmFsVmFyOgogICAgIGJpbmVxIHQw
LCBHbG9iYWxWYXIsIC5nR2xvYmFsTGV4aWNhbFZhcgogICAgIGdldEdsb2JhbFZhcihtYWNybyh2
KSBlbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dldF9mcm9tX3Njb3BlX2xlbmd0aCkK
IAogLmdHbG9iYWxMZXhpY2FsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFyLCAu
Z0Nsb3N1cmVWYXIKQEAgLTIzMzMsMTk0ICsyNDI1LDIwNSBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0YwogICAgICAgICBtYWNybyAodmFsdWUpCiAgICAgICAgICAgICBicWVxIHZhbHVlLCBWYWx1
ZUVtcHR5LCAuZ0R5bmFtaWMKICAgICAgICAgZW5kKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBv
cF9nZXRfZnJvbV9zY29wZV9sZW5ndGgpCiAKIC5nQ2xvc3VyZVZhcjoKICAgICBiaW5lcSB0MCwg
Q2xvc3VyZVZhciwgLmdHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBs
b2FkVmFyaWFibGUoZ2V0LCBzY29wZSwgdDApCisgICAgbG9hZFZhcmlhYmxlKDIsIHQwKQogICAg
IGdldENsb3N1cmVWYXIoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfZnJvbV9zY29w
ZV9sZW5ndGgpCiAKIC5nR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAg
IGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5nR2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BH
ZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2so
MiwgLmdEeW5hbWljKQogICAgIGdldFByb3BlcnR5KCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIg
b3BfZ2V0X2Zyb21fc2NvcGVfbGVuZ3RoKQogCiAuZ0dsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5n
R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICB2YXJJbmplY3Rpb25D
aGVjayguZ0R5bmFtaWMsIHQyKQorICAgIHZhckluamVjdGlvbkNoZWNrKC5nRHluYW1pYykKICAg
ICBnZXRHbG9iYWxWYXIobWFjcm8odikgZW5kKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9n
ZXRfZnJvbV9zY29wZV9sZW5ndGgpCiAKIC5nR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzLCAuZ0Nsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgdmFySW5qZWN0
aW9uQ2hlY2soLmdEeW5hbWljLCB0MikKKyAgICB2YXJJbmplY3Rpb25DaGVjayguZ0R5bmFtaWMp
CiAgICAgZ2V0R2xvYmFsVmFyKAogICAgICAgICBtYWNybyAodmFsdWUpCiAgICAgICAgICAgICBi
cWVxIHZhbHVlLCBWYWx1ZUVtcHR5LCAuZ0R5bmFtaWMKICAgICAgICAgZW5kKQorICAgIGRpc3Bh
dGNoKGNvbnN0ZXhwciBvcF9nZXRfZnJvbV9zY29wZV9sZW5ndGgpCiAKIC5nQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzLCAuZ0R5bmFtaWMKLSAgICB2YXJJbmplY3Rpb25DaGVjayguZ0R5bmFtaWMs
IHQyKQotICAgIGxvYWRWYXJpYWJsZShnZXQsIHNjb3BlLCB0MCkKKyAgICB2YXJJbmplY3Rpb25D
aGVjayguZ0R5bmFtaWMpCisgICAgbG9hZFZhcmlhYmxlKDIsIHQwKQogICAgIGdldENsb3N1cmVW
YXIoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfZnJvbV9zY29wZV9sZW5ndGgpCiAK
IC5nRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfZnJvbV9z
Y29wZSkKLSAgICBkaXNwYXRjaCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2dl
dF9mcm9tX3Njb3BlX2xlbmd0aCkKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19z
Y29wZSwgT3BQdXRUb1Njb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKLSAgICBtYWNybyBwdXRQcm9wZXJ0eSgpCi0gICAgICAgIGdldCh2YWx1ZSwgdDEp
Ci0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyKQotICAgICAgICBs
b2FkaXMgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6b3BlcmFuZFt0NV0sIHQxCi0gICAgICAgIHN0
b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0gICAgZW5kCittYWNybyBw
dXRQcm9wZXJ0eSgpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDEsIHQyKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig2LCB0
MSkKKyAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQorZW5kCiAK
LSAgICBtYWNybyBwdXRHbG9iYWxWYXJpYWJsZSgpCi0gICAgICAgIGdldCh2YWx1ZSwgdDApCi0g
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQotICAgICAgICBsb2Fk
cCBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjp3YXRjaHBvaW50U2V0W3Q1XSwgdDIKLSAgICAgICAg
bG9hZHAgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6b3BlcmFuZFt0NV0sIHQwCi0gICAgICAgIG5v
dGlmeVdyaXRlKHQyLCAucER5bmFtaWMpCi0gICAgICAgIHN0b3JlcSB0MSwgW3QwXQotICAgIGVu
ZAorbWFjcm8gcHV0R2xvYmFsVmFyaWFibGUoKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigz
LCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSkKKyAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig1LCB0MikKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MCkKKyAgICBu
b3RpZnlXcml0ZSh0MiwgLnBEeW5hbWljKQorICAgIHN0b3JlcSB0MSwgW3QwXQorZW5kCiAKLSAg
ICBtYWNybyBwdXRDbG9zdXJlVmFyKCkKLSAgICAgICAgZ2V0KHZhbHVlLCB0MSkKLSAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDIpCi0gICAgICAgIGxvYWRpcyBPcFB1
dFRvU2NvcGU6Ok1ldGFkYXRhOjpvcGVyYW5kW3Q1XSwgdDEKLSAgICAgICAgc3RvcmVxIHQyLCBK
U0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXNbdDAsIHQxLCA4XQotICAgIGVuZAorbWFjcm8g
cHV0Q2xvc3VyZVZhcigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig2
LCB0MSkKKyAgICBzdG9yZXEgdDIsIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwg
dDEsIDhdCitlbmQKIAotICAgIG1hY3JvIHB1dExvY2FsQ2xvc3VyZVZhcigpCi0gICAgICAgIGdl
dCh2YWx1ZSwgdDEpCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQy
KQotICAgICAgICBsb2FkcCBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjp3YXRjaHBvaW50U2V0W3Q1
XSwgdDMKLSAgICAgICAgYnRweiB0MywgLm5vVmFyaWFibGVXYXRjaHBvaW50U2V0Ci0gICAgICAg
IG5vdGlmeVdyaXRlKHQzLCAucER5bmFtaWMpCi0gICAgLm5vVmFyaWFibGVXYXRjaHBvaW50U2V0
OgotICAgICAgICBsb2FkaXMgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6b3BlcmFuZFt0NV0sIHQx
Ci0gICAgICAgIHN0b3JlcSB0MiwgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0
MSwgOF0KLSAgICBlbmQKK21hY3JvIHB1dExvY2FsQ2xvc3VyZVZhcigpCisgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyKQor
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQzKQorICAgIGJ0cHogdDMsIC5ub1ZhcmlhYmxl
V2F0Y2hwb2ludFNldAorICAgIG5vdGlmeVdyaXRlKHQzLCAucER5bmFtaWMpCisubm9WYXJpYWJs
ZVdhdGNocG9pbnRTZXQ6CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDYsIHQxKQorICAgIHN0
b3JlcSB0MiwgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0MSwgOF0KK2VuZAor
CittYWNybyBjaGVja1REWkluR2xvYmFsUHV0VG9TY29wZUlmTmVjZXNzYXJ5KCkKKyAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDApCisgICAgYW5kaSBJbml0aWFsaXphdGlvbk1vZGVNYXNr
LCB0MAorICAgIHJzaGlmdGkgSW5pdGlhbGl6YXRpb25Nb2RlU2hpZnQsIHQwCisgICAgYmluZXEg
dDAsIE5vdEluaXRpYWxpemF0aW9uLCAubm9OZWVkRm9yVERaQ2hlY2sKKyAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig2LCB0MCkKKyAgICBsb2FkcSBbdDBdLCB0MAorICAgIGJxZXEgdDAsIFZhbHVl
RW1wdHksIC5wRHluYW1pYworLm5vTmVlZEZvclREWkNoZWNrOgorZW5kCiAKLSAgICBtYWNybyBj
aGVja1REWkluR2xvYmFsUHV0VG9TY29wZUlmTmVjZXNzYXJ5KCkKLSAgICAgICAgbG9hZGlzIE9w
UHV0VG9TY29wZTo6TWV0YWRhdGE6OmdldFB1dEluZm9bdDVdLCB0MAotICAgICAgICBhbmRpIElu
aXRpYWxpemF0aW9uTW9kZU1hc2ssIHQwCi0gICAgICAgIHJzaGlmdGkgSW5pdGlhbGl6YXRpb25N
b2RlU2hpZnQsIHQwCi0gICAgICAgIGJpbmVxIHQwLCBOb3RJbml0aWFsaXphdGlvbiwgLm5vTmVl
ZEZvclREWkNoZWNrCi0gICAgICAgIGxvYWRwIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om9wZXJh
bmRbdDVdLCB0MAotICAgICAgICBsb2FkcSBbdDBdLCB0MAotICAgICAgICBicWVxIHQwLCBWYWx1
ZUVtcHR5LCAucER5bmFtaWMKLSAgICAubm9OZWVkRm9yVERaQ2hlY2s6Ci0gICAgZW5kCiAKLSAg
ICBtZXRhZGF0YSh0NSwgdDApCi0gICAgbG9hZGkgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6Z2V0
UHV0SW5mb1t0NV0sIHQwCitfbGxpbnRfb3BfcHV0X3RvX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNCwgdDApCiAgICAgYW5kaSBSZXNvbHZl
VHlwZU1hc2ssIHQwCiAKICNwTG9jYWxDbG9zdXJlVmFyOgogICAgIGJpbmVxIHQwLCBMb2NhbENs
b3N1cmVWYXIsIC5wR2xvYmFsUHJvcGVydHkKLSAgICBsb2FkVmFyaWFibGUoZ2V0LCBzY29wZSwg
dDApCisgICAgbG9hZFZhcmlhYmxlKDEsIHQwKQogICAgIHB1dExvY2FsQ2xvc3VyZVZhcigpCi0g
ICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIHNjb3BlLCB2YWx1ZSkKLSAgICBk
aXNwYXRjaCgpCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQorICAgIGRpc3BhdGNo
KGNvbnN0ZXhwciBvcF9wdXRfdG9fc2NvcGVfbGVuZ3RoKQogCiAucEdsb2JhbFByb3BlcnR5Ogog
ICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnBHbG9iYWxWYXIKLSAgICBsb2FkV2l0aFN0
cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpCisgICAgbG9hZFdpdGhT
dHJ1Y3R1cmVDaGVjaygxLCAucER5bmFtaWMpCiAgICAgcHV0UHJvcGVydHkoKQotICAgIHdyaXRl
QmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBzY29wZSwgdmFsdWUpCi0gICAgZGlzcGF0Y2go
KQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKKyAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfcHV0X3RvX3Njb3BlX2xlbmd0aCkKIAogLnBHbG9iYWxWYXI6CiAgICAgYmluZXEgdDAs
IEdsb2JhbFZhciwgLnBHbG9iYWxMZXhpY2FsVmFyCisgICAgd3JpdGVCYXJyaWVyT25HbG9iYWxP
YmplY3QoMykKICAgICBwdXRHbG9iYWxWYXJpYWJsZSgpCi0gICAgd3JpdGVCYXJyaWVyT25HbG9i
YWxPYmplY3Qoc2l6ZSwgZ2V0LCB2YWx1ZSkKLSAgICBkaXNwYXRjaCgpCisgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX3B1dF90b19zY29wZV9sZW5ndGgpCiAKIC5wR2xvYmFsTGV4aWNhbFZhcjoK
ICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhciwgLnBDbG9zdXJlVmFyCisgICAgd3JpdGVC
YXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoMykKICAgICBjaGVja1REWkluR2xvYmFs
UHV0VG9TY29wZUlmTmVjZXNzYXJ5KCkKICAgICBwdXRHbG9iYWxWYXJpYWJsZSgpCi0gICAgd3Jp
dGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2YWx1ZSkKLSAg
ICBkaXNwYXRjaCgpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3B1dF90b19zY29wZV9sZW5n
dGgpCiAKIC5wQ2xvc3VyZVZhcjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBsb2FkVmFyaWFibGUoZ2V0LCBzY29w
ZSwgdDApCisgICAgbG9hZFZhcmlhYmxlKDEsIHQwKQogICAgIHB1dENsb3N1cmVWYXIoKQotICAg
IHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBzY29wZSwgdmFsdWUpCi0gICAgZGlz
cGF0Y2goKQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKKyAgICBkaXNwYXRjaChj
b25zdGV4cHIgb3BfcHV0X3RvX3Njb3BlX2xlbmd0aCkKIAogLnBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcywgLnBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKQorICAgIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2soMSwgLnBEeW5hbWljKQogICAgIHB1dFByb3BlcnR5KCkKLSAg
ICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgc2NvcGUsIHZhbHVlKQotICAgIGRp
c3BhdGNoKCkKKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCisgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX3B1dF90b19zY29wZV9sZW5ndGgpCiAKIC5wR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIHZhcklu
amVjdGlvbkNoZWNrKC5wRHluYW1pYywgdDIpCisgICAgd3JpdGVCYXJyaWVyT25HbG9iYWxPYmpl
Y3QoMykKKyAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgcHV0R2xvYmFsVmFy
aWFibGUoKQotICAgIHdyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0KHNpemUsIGdldCwgdmFsdWUp
Ci0gICAgZGlzcGF0Y2goKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wdXRfdG9fc2NvcGVf
bGVuZ3RoKQogCiAucEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAg
IGJpbmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIHZhckluamVjdGlvbkNoZWNrKC5wRHlu
YW1pYywgdDIpCisgICAgd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoMykK
KyAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgY2hlY2tURFpJbkdsb2JhbFB1
dFRvU2NvcGVJZk5lY2Vzc2FyeSgpCiAgICAgcHV0R2xvYmFsVmFyaWFibGUoKQotICAgIHdyaXRl
QmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHNpemUsIGdldCwgdmFsdWUpCi0gICAg
ZGlzcGF0Y2goKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wdXRfdG9fc2NvcGVfbGVuZ3Ro
KQogCiAucENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBNb2R1bGVWYXIKLSAgICB2YXJJbmpl
Y3Rpb25DaGVjaygucER5bmFtaWMsIHQyKQotICAgIGxvYWRWYXJpYWJsZShnZXQsIHNjb3BlLCB0
MCkKKyAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCisgICAgbG9hZFZhcmlhYmxlKDEs
IHQwKQogICAgIHB1dENsb3N1cmVWYXIoKQotICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6
ZSwgZ2V0LCBzY29wZSwgdmFsdWUpCi0gICAgZGlzcGF0Y2goKQorICAgIHdyaXRlQmFycmllck9u
T3BlcmFuZHMoMSwgMykKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHV0X3RvX3Njb3BlX2xl
bmd0aCkKIAogLnBNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnBEeW5hbWlj
CiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlf
cHJvcGVydHlfd3JpdGVfZXJyb3IpCi0gICAgZGlzcGF0Y2goKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9wdXRfdG9fc2NvcGVfbGVuZ3RoKQogCiAucER5bmFtaWM6CiAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3RvX3Njb3BlKQotICAgIGRpc3BhdGNoKCkKLWVuZCkK
KyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHV0X3RvX3Njb3BlX2xlbmd0aCkKIAogCi1sbGlu
dE9wV2l0aFByb2ZpbGUob3BfZ2V0X2Zyb21fYXJndW1lbnRzLCBPcEdldEZyb21Bcmd1bWVudHMs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgbG9hZFZhcmlhYmxlKGdl
dCwgYXJndW1lbnRzLCB0MCkKLSAgICBnZXR1KHNpemUsIE9wR2V0RnJvbUFyZ3VtZW50cywgaW5k
ZXgsIHQxKQorX2xsaW50X29wX2dldF9mcm9tX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZFZhcmlhYmxlKDIsIHQwKQorICAgIGxvYWRpIDMgKiBQdHJTaXplW1BCLCBQ
QywgUHRyU2l6ZV0sIHQxCiAgICAgbG9hZHEgRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2VbdDAsIHQx
LCA4XSwgdDAKLSAgICByZXR1cm4odDApCi1lbmQpCisgICAgdmFsdWVQcm9maWxlKHQwLCA0LCB0
MSkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfZ2V0X2Zyb21fYXJndW1lbnRzX2xl
bmd0aCkKIAogCi1sbGludE9wKG9wX3B1dF90b19hcmd1bWVudHMsIE9wUHV0VG9Bcmd1bWVudHMs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGxvYWRWYXJpYWJsZShnZXQsIGFyZ3Vt
ZW50cywgdDApCi0gICAgZ2V0dShzaXplLCBPcFB1dFRvQXJndW1lbnRzLCBpbmRleCwgdDEpCi0g
ICAgZ2V0KHZhbHVlLCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQzLCB0
MikKK19sbGludF9vcF9wdXRfdG9fYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkVmFyaWFibGUoMSwgdDApCisgICAgbG9hZGkgMiAqIFB0clNpemVbUEIsIFBDLCBQdHJT
aXplXSwgdDEKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MywgdDIpCiAgICAgc3RvcmVxIHQyLCBEaXJlY3RBcmd1bWVudHNfc3Rv
cmFnZVt0MCwgdDEsIDhdCi0gICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIGFy
Z3VtZW50cywgdmFsdWUpCi0gICAgZGlzcGF0Y2goKQotZW5kKQorICAgIHdyaXRlQmFycmllck9u
T3BlcmFuZHMoMSwgMykKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHV0X3RvX2FyZ3VtZW50
c19sZW5ndGgpCiAKIAotbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3BhcmVudF9zY29wZSwgT3BH
ZXRQYXJlbnRTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBs
b2FkVmFyaWFibGUoZ2V0LCBzY29wZSwgdDApCitfbGxpbnRfb3BfZ2V0X3BhcmVudF9zY29wZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZFZhcmlhYmxlKDIsIHQwKQogICAgIGxvYWRw
IEpTU2NvcGU6Om1fbmV4dFt0MF0sIHQwCi0gICAgcmV0dXJuKHQwKQotZW5kKQorICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAg
IGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfcGFyZW50X3Njb3BlX2xlbmd0aCkKIAogCi1sbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfdHlwZSwgT3BQcm9maWxlVHlwZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCitfbGxpbnRfb3BfcHJvZmlsZV90
eXBlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
ICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCiAgICAgdW5wb2lzb24o
X2dfQ29kZUJsb2NrUG9pc29uLCB0MSwgdDMpCkBAIC0yNTMwLDE2ICsyNjMzLDE1IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV90eXBlLCBPcFByb2ZpbGVUeXBlLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwKICAgICBsb2FkcCBUeXBlUHJvZmlsZXJMb2c6Om1fY3VycmVudExv
Z0VudHJ5UHRyW3QxXSwgdDIKIAogICAgICMgdDAgaXMgaG9sZGluZyB0aGUgSlNWYWx1ZSBhcmd1
bWVudC4KLSAgICBnZXQodGFyZ2V0LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQzLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MywgdDApCiAKICAgICBicWVxIHQwLCBWYWx1ZUVtcHR5LCAub3BQ
cm9maWxlVHlwZURvbmUKICAgICAjIFN0b3JlIHRoZSBKU1ZhbHVlIG9udG8gdGhlIGxvZyBlbnRy
eS4KICAgICBzdG9yZXEgdDAsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnZhbHVlW3QyXQog
ICAgIAogICAgICMgU3RvcmUgdGhlIFR5cGVMb2NhdGlvbiBvbnRvIHRoZSBsb2cgZW50cnkuCi0g
ICAgbWV0YWRhdGEodDUsIHQzKQotICAgIGxvYWRwIE9wUHJvZmlsZVR5cGU6Ok1ldGFkYXRhOjp0
eXBlTG9jYXRpb25bdDVdLCB0MworICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQzKQogICAg
IHN0b3JlcCB0MywgVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6bG9jYXRpb25bdDJdCiAKICAg
ICBidHF6IHQwLCB0YWdNYXNrLCAub3BQcm9maWxlVHlwZUlzQ2VsbApAQCAtMjU1OSwyMiArMjY2
MSwyMCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfdHlwZSwgT3BQcm9maWxlVHlw
ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZykKIAogLm9wUHJvZmlsZVR5cGVEb25lOgotICAgIGRp
c3BhdGNoKCkKLWVuZCkKLQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wcm9maWxlX3R5cGVf
bGVuZ3RoKQogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX3Byb2ZpbGVfY29udHJvbF9mbG93LCBP
cFByb2ZpbGVDb250cm9sRmxvdywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCi0gICAgbWV0YWRhdGEodDUsIHQwKQotICAgIGxvYWRwIE9wUHJvZmlsZUNvbnRy
b2xGbG93OjpNZXRhZGF0YTo6YmFzaWNCbG9ja0xvY2F0aW9uW3Q1XSwgdDAKK19sbGludF9vcF9w
cm9maWxlX2NvbnRyb2xfZmxvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDApCiAgICAgYWRkcSAxLCBCYXNpY0Jsb2NrTG9jYXRpb246Om1fZXhl
Y3V0aW9uQ291bnRbdDBdCi0gICAgZGlzcGF0Y2goKQotZW5kKQorICAgIGRpc3BhdGNoKGNvbnN0
ZXhwciBvcF9wcm9maWxlX2NvbnRyb2xfZmxvd19sZW5ndGgpCiAKIAotbGxpbnRPcFdpdGhSZXR1
cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCByZXR1cm4pCitfbGxpbnRfb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJd
LCB0MAogICAgIHN1YmkgMSwgdDAKLSAgICBnZXR1KHNpemUsIE9wR2V0UmVzdExlbmd0aCwgbnVt
UGFyYW1ldGVyc1RvU2tpcCwgdDEpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQxKQog
ICAgIGJpbHRlcSB0MCwgdDEsIC5zdG9yZVplcm8KICAgICBzdWJpIHQxLCB0MAogICAgIGptcCAu
Ym94VXAKQEAgLTI1ODIsMzkgKzI2ODIsNDAgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jl
c3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAg
ICBtb3ZlIDAsIHQwCiAuYm94VXA6CiAgICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQwCi0gICAgcmV0
dXJuKHQwKQotZW5kKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9y
ZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9nZXRfcmVzdF9s
ZW5ndGhfbGVuZ3RoKQogCiAKLWxsaW50T3Aob3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
LCBPcExvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gp
CitfbGxpbnRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBhY3F1aXJlU2hhZG93Q2hpY2tlblBhY2tldCgub3BMb2dTaGFkb3dDaGlja2Vu
UHJvbG9ndWVTbG93KQogICAgIHN0b3JlcCBjZnIsIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6ZnJh
bWVbdDBdCiAgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDEKICAgICBzdG9yZXAgdDEsIFNo
YWRvd0NoaWNrZW46OlBhY2tldDo6Y2FsbGVyRnJhbWVbdDBdCiAgICAgbG9hZHAgQ2FsbGVlW2Nm
cl0sIHQxCiAgICAgc3RvcmVwIHQxLCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmNhbGxlZVt0MF0K
LSAgICBsb2FkVmFyaWFibGUoZ2V0LCBzY29wZSwgdDEpCisgICAgbG9hZFZhcmlhYmxlKDEsIHQx
KQogICAgIHN0b3JlcCB0MSwgU2hhZG93Q2hpY2tlbjo6UGFja2V0OjpzY29wZVt0MF0KLSAgICBk
aXNwYXRjaCgpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9w
cm9sb2d1ZV9sZW5ndGgpCiAub3BMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWVTbG93OgogICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSkK
LSAgICBkaXNwYXRjaCgpCi1lbmQpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2xvZ19zaGFk
b3dfY2hpY2tlbl9wcm9sb2d1ZV9sZW5ndGgpCiAKIAotbGxpbnRPcChvcF9sb2dfc2hhZG93X2No
aWNrZW5fdGFpbCwgT3BMb2dTaGFkb3dDaGlja2VuVGFpbCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gpCitfbGxpbnRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGFjcXVpcmVTaGFkb3dDaGlja2VuUGFja2V0KC5vcExvZ1NoYWRvd0NoaWNr
ZW5UYWlsU2xvdykKICAgICBzdG9yZXAgY2ZyLCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmZyYW1l
W3QwXQogICAgIHN0b3JlcCBTaGFkb3dDaGlja2VuVGFpbE1hcmtlciwgU2hhZG93Q2hpY2tlbjo6
UGFja2V0OjpjYWxsZWVbdDBdCi0gICAgbG9hZFZhcmlhYmxlKGdldCwgdGhpc1ZhbHVlLCB0MSkK
KyAgICBsb2FkVmFyaWFibGUoMSwgdDEpCiAgICAgc3RvcmVwIHQxLCBTaGFkb3dDaGlja2VuOjpQ
YWNrZXQ6OnRoaXNWYWx1ZVt0MF0KLSAgICBsb2FkVmFyaWFibGUoZ2V0LCBzY29wZSwgdDEpCisg
ICAgbG9hZFZhcmlhYmxlKDIsIHQxKQogICAgIHN0b3JlcCB0MSwgU2hhZG93Q2hpY2tlbjo6UGFj
a2V0OjpzY29wZVt0MF0KICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBzdG9yZXAg
dDEsIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6Y29kZUJsb2NrW3QwXQogICAgIHN0b3JlaSBQQywg
U2hhZG93Q2hpY2tlbjo6UGFja2V0OjpjYWxsU2l0ZUluZGV4W3QwXQotICAgIGRpc3BhdGNoKCkK
KyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWxfbGVuZ3Ro
KQogLm9wTG9nU2hhZG93Q2hpY2tlblRhaWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKQotICAgIGRpc3BhdGNoKCkKLWVuZCkK
KyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWxfbGVuZ3Ro
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCAxYzY2NmZi
NWVhZDIxMDIwZWE2MjNhNTk3MzE3YWYyM2FmZDNjZmJlLi5lZWI5MGVkNTM1ZjI3MjgyODIzMjgx
YmI4Nzc4NGMxODJiNmFmZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYgpAQCAtMjc2LDcgKzI3Niw3IEBAIGRlZiBhcm02NExvd2VyTGFiZWxSZWZlcmVuY2Vz
KGxpc3QpCiAgICAgICAgIHwgbm9kZSB8CiAgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rp
b24KICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gImxvYWRp
IiwgImxvYWRpcyIsICJsb2FkcCIsICJsb2FkcSIsICJsb2FkYiIsICJsb2FkYnMiLCAibG9hZGgi
LCAibG9hZGhzIiwgImxlYXAiCisgICAgICAgICAgICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAi
bG9hZHAiLCAibG9hZHEiLCAibG9hZGIiLCAibG9hZGJzIiwgImxvYWRoIiwgImxvYWRocyIKICAg
ICAgICAgICAgICAgICBsYWJlbFJlZiA9IG5vZGUub3BlcmFuZHNbMF0KICAgICAgICAgICAgICAg
ICBpZiBsYWJlbFJlZi5pc19hPyBMYWJlbFJlZmVyZW5jZQogICAgICAgICAgICAgICAgICAgICB0
bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKQEAgLTM3Myw3ICszNzMsNyBAQCBj
bGFzcyBTZXF1ZW5jZQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNYWxmb3JtZWRBZGRyZXNz
ZXMocmVzdWx0KSB7CiAgICAgICAgICAgICB8IG5vZGUsIGFkZHJlc3MgfAogICAgICAgICAgICAg
Y2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAgd2hlbiAibG9hZGIiLCAibG9hZGJzIiwgImxv
YWRic3AiLCAic3RvcmViIiwgL15iYi8sIC9eYnRiLywgL15jYi8sIC9edGIvCisgICAgICAgICAg
ICB3aGVuICJsb2FkYiIsICJsb2FkYnMiLCAic3RvcmViIiwgL15iYi8sIC9eYnRiLywgL15jYi8s
IC9edGIvCiAgICAgICAgICAgICAgICAgc2l6ZSA9IDEKICAgICAgICAgICAgIHdoZW4gImxvYWRo
IiwgImxvYWRocyIKICAgICAgICAgICAgICAgICBzaXplID0gMgpAQCAtNjY5LDggKzY2OSw2IEBA
IGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcmIiLCAi
bGR1cmIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDp3b3JkKQogICAgICAgICB3aGVuICJs
b2FkYnMiCiAgICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcnNiIiwgImxkdXJzYiIsIG9w
ZXJhbmRzWzFdLCBvcGVyYW5kc1swXSwgOndvcmQpCi0gICAgICAgIHdoZW4gImxvYWRic3AiCi0g
ICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcnNiIiwgImxkdXJzYiIsIG9wZXJhbmRzWzFd
LCBvcGVyYW5kc1swXSwgOnB0cikKICAgICAgICAgd2hlbiAic3RvcmViIgogICAgICAgICAgICAg
ZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHJiIiwgb3BlcmFuZHMsIDp3b3JkKQogICAgICAgICB3aGVu
ICJsb2FkaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fz
bS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgppbmRleCBkMWI0
NDEzNTYwOTM3ZTViMTRhZTI0MWYxOGRlZDc2MjNmZmVkYjJjLi5iZmFlNTE1MTVlOTFkMjZmYWVk
N2ZiY2YzZWRlNTk5MDFlZjlkMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hc20ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXNtLnJiCkBAIC0zNzEsMTMgKzM3MSwxMiBAQCBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7
CiAgICAgJGFzbSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKICAgICAKICAgICBhc3QgPSBwYXJz
ZShhc21GaWxlKQotICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29t
YmluYXRpb25zKGFzdCkKIAogICAgIGNvbmZpZ3VyYXRpb25MaXN0LmVhY2ggewogICAgICAgICB8
IGNvbmZpZ3VyYXRpb24gfAogICAgICAgICBvZmZzZXRzTGlzdCA9IGNvbmZpZ3VyYXRpb25bMF0K
ICAgICAgICAgY29uZmlnSW5kZXggPSBjb25maWd1cmF0aW9uWzFdCi0gICAgICAgIGZvclNldHRp
bmdzKHNldHRpbmdzQ29tYmluYXRpb25zW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAgICAgIGZv
clNldHRpbmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwg
YXN0KSB7CiAgICAgICAgICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNr
ZW5kIHwKIAogICAgICAgICAgICAgIyBUaGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBiYWNrZW5kcyB3
ZSBhcmUgZ2VuZXJhdGluZyBmb3IsIGJ1dCB0aGUgQ19MT09QIGlzCkBAIC0zODcsNyArMzg2LDYg
QEAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgewogICAgICAgICAgICAgICAgICRlbmFibGVE
ZWJ1Z0Fubm90YXRpb25zID0gZmFsc2UKICAgICAgICAgICAgIGVuZAogCi0gICAgICAgICAgICBs
b3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULmRlbWFjcm9pZnkoe30pCiAgICAgICAgICAgICBsb3dM
ZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNU
LCBvZmZzZXRzTGlzdCkpCiAgICAgICAgICAgICBsb3dMZXZlbEFTVC52YWxpZGF0ZQogICAgICAg
ICAgICAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIGJhY2tlbmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgppbmRl
eCA1ODZiYTVjZDZiMGY1Yzk2ZDBiNDA0MWMyZjVlZjE1NjYyYWIzNzRiLi5mNGY5YzNlNjc3MGQw
YWZjYzQyNjY0Y2YxY2VmNmQ5MTE3M2U5OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXN0LnJiCkBAIC05NzAsNyArOTcwLDcgQEAgY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVu
CiBlbmQKIAogY2xhc3MgQ29uc3RFeHByIDwgTm9DaGlsZHJlbgotICAgIGF0dHJfcmVhZGVyIDp2
YWx1ZQorICAgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCiAKICAgICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKICAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKQEAgLTEw
MjUsMTAgKzEwMjUsMTEgQEAgJGxhYmVsTWFwcGluZyA9IHt9CiAkcmVmZXJlbmNlZEV4dGVybkxh
YmVscyA9IEFycmF5Lm5ldwogCiBjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KLSAgICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBkZWZpbmVkSW5GaWxlID0gZmFsc2UpCisgICAgYXR0
cl9yZWFkZXIgOm5hbWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1l
KQogICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQogICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAg
ICAgQGRlZmluZWRJbkZpbGUgPSBkZWZpbmVkSW5GaWxlCiAgICAgICAgIEBleHRlcm4gPSB0cnVl
CiAgICAgICAgIEBnbG9iYWwgPSBmYWxzZQogICAgIGVuZApAQCAtMTAzNyw3ICsxMDM4LDcgQEAg
Y2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCiAgICAgICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0K
ICAgICAgICAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNz
ICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBkZWZp
bmVkSW5GaWxlKQorICAgICAgICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQogICAgICAgICBlbmQKICAgICAgICAgaWYgZGVmaW5lZEluRmlsZQog
ICAgICAgICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXS5jbGVhckV4dGVybigpCkBAIC0xMDg0LDEw
ICsxMDg1LDYgQEAgY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCiAgICAgICAgIEBnbG9iYWwKICAg
ICBlbmQKIAotICAgIGRlZiBuYW1lCi0gICAgICAgIEBuYW1lCi0gICAgZW5kCi0KICAgICBkZWYg
ZHVtcAogICAgICAgICAiI3tuYW1lfToiCiAgICAgZW5kCkBAIC0xMTE0LDkgKzExMTEsNiBAQCBj
bGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgogICAgIAogICAgIGRlZiBzZWxmLnVuaXF1ZShj
b21tZW50KQogICAgICAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgotICAgICAgICBpZiAkZW1p
dFdpbkFzbSBhbmQgbmV3TmFtZS5sZW5ndGggPiA5MAotICAgICAgICAgICAgbmV3TmFtZSA9IG5l
d05hbWVbMC4uLjQ1XSArICJfX18iICsgbmV3TmFtZVstNDUuLi0xXQotICAgICAgICBlbmQKICAg
ICAgICAgaWYgJGxhYmVsTWFwcGluZ1tuZXdOYW1lXQogICAgICAgICAgICAgd2hpbGUgJGxhYmVs
TWFwcGluZ1tuZXdOYW1lID0gIl8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQog
ICAgICAgICAgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQpAQCAtMTQzNiw5ICsxNDMw
LDcgQEAgY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKICAgICBlbmQKICAgICAKICAgICBkZWYgbWFw
Q2hpbGRyZW4KLSAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSkpCi0gICAgICAgIGlmVGhlbkVs
c2UuZWxzZUNhc2UgPSB5aWVsZCBAZWxzZUNhc2UKLSAgICAgICAgaWZUaGVuRWxzZQorICAgICAg
ICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBA
dGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKICAgICBlbmQKICAgICAKICAgICBkZWYgZHVt
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgppbmRleCA4MGI4MmZk
NzE3MTg2ZmMzMTZiODc0OTQ4NTRiZTViNGIyMGU0M2MxLi44NzA1MjU5MjJmMDJhNDQ0N2U4NzMy
Zjk5YTBkOGJmZTVkMTg2Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9jbG9vcC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9j
bG9vcC5yYgpAQCAtODgsOCArODgsNiBAQCBjbGFzcyBSZWdpc3RlcklECiAgICAgICAgICAgICAi
dGFnVHlwZU51bWJlciIKICAgICAgICAgd2hlbiAiY3NyMiIKICAgICAgICAgICAgICJ0YWdNYXNr
IgotICAgICAgICB3aGVuICJjc3IzIgotICAgICAgICAgICAgIm1ldGFkYXRhVGFibGUiCiAgICAg
ICAgIHdoZW4gImNmciIKICAgICAgICAgICAgICJjZnIiCiAgICAgICAgIHdoZW4gImxyIgpAQCAt
NDE4LDcgKzQxNiw3IEBAIGVuZAogZGVmIGNsb29wRW1pdENvbXBhcmVBbmRTZXQob3BlcmFuZHMs
IHR5cGUsIGNvbXBhcmF0b3IpCiAgICAgIyBUaGUgcmVzdWx0IGlzIGEgYm9vbGVhbi4gIEhlbmNl
LCBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgYmFzZWQgb24gdGhlIHR5cGUKICAgICAjIG9mIHRoZSBh
cmd1bWVudHMgYmVpbmcgY29tcGFyZWQuCi0gICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJdLmNs
VmFsdWV9ID0gKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAje29w
ZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9KTsiCisgICAgJGFzbS5wdXRjICIje29wZXJhbmRzWzJd
LmNsVmFsdWV9ID0gKCN7b3BlcmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0gI3tjb21wYXJhdG9yfSAj
e29wMiA9IG9wZXJhbmRzWzFdLmNsVmFsdWUodHlwZSl9KTsiCiBlbmQKIAogCkBAIC01MTEsNyAr
NTA5LDcgQEAgZGVmIGNsb29wRW1pdENhbGxTbG93UGF0aChvcGVyYW5kcykKICAgICAkYXNtLnB1
dGMgInsiCiAgICAgJGFzbS5wdXRjICIgICAgY2xvb3BTdGFjay5zZXRDdXJyZW50U3RhY2tQb2lu
dGVyKHNwLnZwKTsiCiAgICAgJGFzbS5wdXRjICIgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCA9ICN7b3BlcmFuZHNbMF0uY0xhYmVsfSgje29wZXJhbmRzWzFdLmNsRHVtcH0sICN7b3BlcmFu
ZHNbMl0uY2xEdW1wfSk7IgotICAgICRhc20ucHV0YyAiICAgIGRlY29kZVJlc3VsdChyZXN1bHQs
IHQwLmN2cCwgdDEuY3ZwKTsiCisgICAgJGFzbS5wdXRjICIgICAgZGVjb2RlUmVzdWx0KHJlc3Vs
dCwgdDAudnAsIHQxLnZwKTsiCiAgICAgJGFzbS5wdXRjICJ9IgogZW5kCiAKQEAgLTYxNCw3ICs2
MTIsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgJGFzbS5wdXRjICIje29wZXJh
bmRzWzFdLmludE1lbVJlZn0gPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmludCl9OyIKICAgICAg
ICAgd2hlbiAibG9hZGIiCiAgICAgICAgICAgICAkYXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xW
YWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLnVpbnQ4TWVtUmVmfTsiCi0gICAgICAgIHdoZW4g
ImxvYWRicyIsICJsb2FkYnNwIgorICAgICAgICB3aGVuICJsb2FkYnMiCiAgICAgICAgICAgICAk
YXNtLnB1dGMgIiN7b3BlcmFuZHNbMV0uY2xWYWx1ZSg6aW50KX0gPSAje29wZXJhbmRzWzBdLmlu
dDhNZW1SZWZ9OyIKICAgICAgICAgd2hlbiAic3RvcmViIgogICAgICAgICAgICAgJGFzbS5wdXRj
ICIje29wZXJhbmRzWzFdLnVpbnQ4TWVtUmVmfSA9ICN7b3BlcmFuZHNbMF0uY2xWYWx1ZSg6aW50
OCl9OyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVy
YXRlX29mZnNldF9leHRyYWN0b3IucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCmluZGV4IDJkOTc1MzU0YzdkNTZmYjJjNzUy
YjkxODcwMDg4YTU1ZDQ5YzAzZjMuLjZjMTM0MTFiYTRmZmM1MmQxMjFiN2JiNWQyZGMyNTJjZTY1
OGRmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVy
YXRlX29mZnNldF9leHRyYWN0b3IucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpAQCAtODQsNyArODQsNiBAQCBGaWxl
Lm9wZW4ob3V0cHV0RmxubSwgInciKSB7CiAgICAgICAgIGZvclNldHRpbmdzKHNldHRpbmdzQ29t
YmluYXRpb25zW2NvbmZpZ0luZGV4XSwgYXN0KSB7CiAgICAgICAgICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKIAotICAgICAgICAgICAgbG93TGV2ZWxBU1Qg
PSBsb3dMZXZlbEFTVC5kZW1hY3JvaWZ5KHt9KQogICAgICAgICAgICAgb2Zmc2V0c0xpc3QgPSBv
ZmZzZXRzTGlzdChsb3dMZXZlbEFTVCkKICAgICAgICAgICAgIHNpemVzTGlzdCA9IHNpemVzTGlz
dChsb3dMZXZlbEFTVCkKICAgICAgICAgICAgIGNvbnN0c0xpc3QgPSBjb25zdHNMaXN0KGxvd0xl
dmVsQVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5z
dHJ1Y3Rpb25zLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rp
b25zLnJiCmluZGV4IDBmMDEzZjk0YmJkMjIxODA3MjFmOWRiMGJjYTY0NDMyOWQyYzZlMjguLjcy
YmViZmU0M2MyYTIzY2EwYjA4YmI3OGQ5ZWViNGU2YWViNWNjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKQEAgLTU0LDcgKzU0LDYg
QEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAgImxvYWRpcyIsCiAgICAgICJsb2FkYiIsCiAg
ICAgICJsb2FkYnMiLAotICAgICAibG9hZGJzcCIsCiAgICAgICJsb2FkaCIsCiAgICAgICJsb2Fk
aHMiLAogICAgICAic3RvcmVpIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3BhcnNlci5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Bh
cnNlci5yYgppbmRleCA2MzJjYWZjMGFkYzI3ZTQwMjEyZmVkZTlmZTE2MGQ4ODcwMWYzZGM3Li5j
MTEzOGVmNDg1ZjFjYjdmZGUyYjI4MGVjZTRkM2Q3NTI5MDNmNGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCkBAIC0xNzcsMTEgKzE3NywxMSBAQCBkZWYg
bGV4KHN0ciwgZmlsZSkKICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhDb2RlT3JpZ2luLm5ldyhmaWxlLCBsaW5lTnVtYmVyKSwgJCYpCiAgICAgICAgICAg
ICBsaW5lTnVtYmVyICs9IDEKLSAgICAgICAgd2hlbiAvXEFbYS16QS1aJV0oW2EtekEtWjAtOV8u
JV0qKS8KKyAgICAgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05Xy5dKikvCiAgICAgICAg
ICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KENvZGVPcmlnaW4ubmV3KGZpbGUsIGxpbmVOdW1iZXIp
LCAkJikKICAgICAgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KICAgICAgICAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcoQ29kZU9yaWdpbi5uZXcoZmlsZSwgbGluZU51bWJlciksICQmKQot
ICAgICAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV8lXSopLworICAgICAgICB3aGVuIC9cQV8oW2Et
ekEtWjAtOV9dKikvCiAgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KENvZGVPcmlnaW4u
bmV3KGZpbGUsIGxpbmVOdW1iZXIpLCAkJikKICAgICAgICAgd2hlbiAvXEEoWyBcdF0rKS8KICAg
ICAgICAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCkBAIC0yMjgsMTEgKzIyOCwxMSBAQCBkZWYg
aXNLZXl3b3JkKHRva2VuKQogZW5kCiAKIGRlZiBpc0lkZW50aWZpZXIodG9rZW4pCi0gICAgdG9r
ZW4gPX4gL1xBW2EtekEtWiVdKFthLXpBLVowLTlfLiVdKilcWi8gYW5kIG5vdCBpc0tleXdvcmQo
dG9rZW4pCisgICAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV8uXSopXFovIGFuZCBu
b3QgaXNLZXl3b3JkKHRva2VuKQogZW5kCiAKIGRlZiBpc0xhYmVsKHRva2VuKQotICAgIHRva2Vu
ID1+IC9cQV8oW2EtekEtWjAtOV8lXSopXFovCisgICAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05
X10qKVxaLwogZW5kCiAKIGRlZiBpc0xvY2FsTGFiZWwodG9rZW4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKaW5kZXggNmI4ZDliNGJkZDIxYmYwMGUz
ZGQ0OTI4NGY5NTdlZGU2N2NiNGViNi4uNzVhNGIzNDg4OTBiZTlmY2Q0M2IwMGU0OWJhNTNkYjY0
MzEwZDc1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJh
bnNmb3JtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYgpAQCAtMTE4LDE0ICsxMTgsNyBAQCBjbGFzcyBOb2RlCiAgICAgICAgICAgICBjaGlsZC5k
ZW1hY3JvaWZ5KG1hY3JvcykKICAgICAgICAgfQogICAgIGVuZAotCi0gICAgZGVmIGZyZXNoVmFy
aWFibGVzKG1hcHBpbmcpCi0gICAgICAgIG1hcENoaWxkcmVuIHsKLSAgICAgICAgICAgIHwgY2hp
bGQgfAotICAgICAgICAgICAgY2hpbGQuZnJlc2hWYXJpYWJsZXMobWFwcGluZykKLSAgICAgICAg
fQotICAgIGVuZAotCisgICAgCiAgICAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKICAgICAgICAg
bWFwQ2hpbGRyZW4gewogICAgICAgICAgICAgfCBjaGlsZCB8CkBAIC0xNDMsMTYgKzEzNiwxNiBA
QCBlbmQKIAogJHVuaXF1ZU1hY3JvVmFySUQgPSAwCiBjbGFzcyBNYWNybwotICAgIGRlZiBmcmVz
aFZhcmlhYmxlcyhtYXBwaW5nID0ge30pCi0gICAgICAgIG15TWFwcGluZyA9IG1hcHBpbmcuZHVw
CisgICAgZGVmIGNhcHR1cmUKKyAgICAgICAgbWFwcGluZyA9IHt9CiAgICAgICAgIG5ld1ZhcnMg
PSBbXQogICAgICAgICB2YXJpYWJsZXMuZWFjaCBkbyB8dmFyfAogICAgICAgICAgICAgJHVuaXF1
ZU1hY3JvVmFySUQgKz0gMQogICAgICAgICAgICAgbmV3VmFyID0gVmFyaWFibGUuZm9yTmFtZSh2
YXIuY29kZU9yaWdpbiwgIl92YXIjeyR1bmlxdWVNYWNyb1ZhcklEfSIsIHZhci5vcmlnaW5hbE5h
bWUpCiAgICAgICAgICAgICBuZXdWYXJzIDw8IG5ld1ZhcgotICAgICAgICAgICAgbXlNYXBwaW5n
W3Zhcl0gPSBuZXdWYXIKKyAgICAgICAgICAgIG1hcHBpbmdbdmFyXSA9IG5ld1ZhcgogICAgICAg
ICBlbmQKLSAgICAgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG5ld1ZhcnMsIGJvZHku
ZnJlc2hWYXJpYWJsZXMobXlNYXBwaW5nKSkKKyAgICAgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4s
IG5hbWUsIG5ld1ZhcnMsIGJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKSkKICAgICBlbmQKIAogICAg
IGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCkBAIC0xNzEsNDUgKzE2NCwxOSBAQCBjbGFzcyBNYWNy
bwogZW5kCiAKIGNsYXNzIE1hY3JvQ2FsbAotICAgIGRlZiBmcmVzaFZhcmlhYmxlcyhtYXBwaW5n
KQotICAgICAgICBuZXdOYW1lID0gVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lLCBv
cmlnaW5hbE5hbWUpCisgICAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgbmV3TmFt
ZSA9IFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKICAgICAgICAgaWYgbWFwcGlu
Z1tuZXdOYW1lXQogICAgICAgICAgICAgbmV3TmFtZSA9IG1hcHBpbmdbbmV3TmFtZV0KICAgICAg
ICAgZW5kCi0gICAgICAgIG5ld09wZXJhbmRzID0gb3BlcmFuZHMubWFwIHsgfG9wZXJhbmR8IG9w
ZXJhbmQuZnJlc2hWYXJpYWJsZXMobWFwcGluZykgfQorICAgICAgICBuZXdPcGVyYW5kcyA9IG9w
ZXJhbmRzLm1hcCB7IHxvcGVyYW5kfCBvcGVyYW5kLnN1YnN0aXR1dGUobWFwcGluZykgfQogICAg
ICAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5ld05hbWUubmFtZSwgbmV3T3BlcmFuZHMs
IGFubm90YXRpb24sIG9yaWdpbmFsTmFtZSkKICAgICBlbmQKIGVuZAogCi0kY29uY2F0ZW5hdGlv
biA9IC8lKFthLXpBLVowLTlfXSspJS8KIGNsYXNzIFZhcmlhYmxlCi0gICAgZGVmIGZyZXNoVmFy
aWFibGVzKG1hcHBpbmcpCi0gICAgICAgIGlmIEBuYW1lID1+ICRjb25jYXRlbmF0aW9uCi0gICAg
ICAgICAgICBuYW1lID0gQG5hbWUuZ3N1YigkY29uY2F0ZW5hdGlvbikgeyB8bWF0Y2h8Ci0gICAg
ICAgICAgICAgICAgdmFyID0gVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBtYXRjaFsxLi4u
LTFdKQotICAgICAgICAgICAgICAgIGlmIG1hcHBpbmdbdmFyXQotICAgICAgICAgICAgICAgICAg
ICAiJSN7bWFwcGluZ1t2YXJdLm5hbWV9JSIKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIG1hdGNoCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCi0gICAgICAgIGVs
c2lmIG1hcHBpbmdbc2VsZl0KLSAgICAgICAgICAgIG1hcHBpbmdbc2VsZl0KLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgc2VsZgotICAgICAgICBlbmQKLSAgICBlbmQKLQogICAgIGRlZiBzdWJz
dGl0dXRlKG1hcHBpbmcpCi0gICAgICAgIGlmIEBuYW1lID1+ICRjb25jYXRlbmF0aW9uCi0gICAg
ICAgICAgICBuYW1lID0gQG5hbWUuZ3N1YigkY29uY2F0ZW5hdGlvbikgeyB8bWF0Y2h8Ci0gICAg
ICAgICAgICAgICAgdmFyID0gVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBtYXRjaFsxLi4u
LTFdKQotICAgICAgICAgICAgICAgIHJhaXNlICJVbmtub3duIHZhcmlhYmxlIGAje3Zhci5vcmln
aW5hbE5hbWV9YCBpbiBzdWJzdGl0dXRpb24gYXQgI3tjb2RlT3JpZ2lufSAtICN7bWFwcGluZ30g
IiB1bmxlc3MgbWFwcGluZ1t2YXJdCi0gICAgICAgICAgICAgICAgbWFwcGluZ1t2YXJdLm5hbWUK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKLSAgICAgICAgZWxzaWYgbWFwcGluZ1tzZWxmXQorICAgICAgICBpZiBtYXBwaW5nW3Nl
bGZdCiAgICAgICAgICAgICBtYXBwaW5nW3NlbGZdCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHNlbGYKQEAgLTIxNywxMzAgKzE4NCw2IEBAIGNsYXNzIFZhcmlhYmxlCiAgICAgZW5kCiBlbmQK
IAotY2xhc3MgU3RydWN0T2Zmc2V0Ci0gICAgZGVmIGZyZXNoVmFyaWFibGVzKG1hcHBpbmcpCi0g
ICAgICAgIGlmIGR1bXAgPX4gJGNvbmNhdGVuYXRpb24KLSAgICAgICAgICAgIG5hbWVzID0gZHVt
cC5nc3ViKCRjb25jYXRlbmF0aW9uKSB7IHxtYXRjaHwKLSAgICAgICAgICAgICAgICB2YXIgPSBW
YXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG1hdGNoWzEuLi4tMV0pCi0gICAgICAgICAgICAg
ICAgaWYgbWFwcGluZ1t2YXJdCi0gICAgICAgICAgICAgICAgICAgICIlI3ttYXBwaW5nW3Zhcl0u
bmFtZX0lIgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2gK
LSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIH0uc3BsaXQoJzo6JykKLSAgICAgICAg
ICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbign
OjonKSwgbmFtZXNbLTFdKQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZWxmCi0gICAgICAg
IGVuZAotICAgIGVuZAotCi0gICAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKLSAgICAgICAgaWYg
ZHVtcCA9fiAkY29uY2F0ZW5hdGlvbgotICAgICAgICAgICAgbmFtZXMgPSBkdW1wLmdzdWIoJGNv
bmNhdGVuYXRpb24pIHsgfG1hdGNofAotICAgICAgICAgICAgICAgIHZhciA9IFZhcmlhYmxlLmZv
ck5hbWUoY29kZU9yaWdpbiwgbWF0Y2hbMS4uLi0xXSkKLSAgICAgICAgICAgICAgICByYWlzZSAi
VW5rbm93biB2YXJpYWJsZSBgI3t2YXIub3JpZ2luYWxOYW1lfWAgaW4gc3Vic3RpdHV0aW9uIGF0
ICN7Y29kZU9yaWdpbn0iIHVubGVzcyBtYXBwaW5nW3Zhcl0KLSAgICAgICAgICAgICAgICBtYXBw
aW5nW3Zhcl0ubmFtZQotICAgICAgICAgICAgfS5zcGxpdCgnOjonKQotICAgICAgICAgICAgU3Ry
dWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6OicpLCBu
YW1lc1stMV0pCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlbGYKLSAgICAgICAgZW5kCi0g
ICAgZW5kCi1lbmQKLQotY2xhc3MgTGFiZWwKLSAgICBkZWYgZnJlc2hWYXJpYWJsZXMobWFwcGlu
ZykKLSAgICAgICAgaWYgQG5hbWUgPX4gJGNvbmNhdGVuYXRpb24KLSAgICAgICAgICAgIG5hbWUg
PSBAbmFtZS5nc3ViKCRjb25jYXRlbmF0aW9uKSB7IHxtYXRjaHwKLSAgICAgICAgICAgICAgICB2
YXIgPSBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG1hdGNoWzEuLi4tMV0pCi0gICAgICAg
ICAgICAgICAgaWYgbWFwcGluZ1t2YXJdCi0gICAgICAgICAgICAgICAgICAgICIlI3ttYXBwaW5n
W3Zhcl0ubmFtZX0lIgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
bWF0Y2gKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIExh
YmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSwgQGRlZmluZWRJbkZpbGUpCi0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHNlbGYKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLSAgICBkZWYgc3Vi
c3RpdHV0ZShtYXBwaW5nKQotICAgICAgICBpZiBAbmFtZSA9fiAkY29uY2F0ZW5hdGlvbgotICAg
ICAgICAgICAgbmFtZSA9IEBuYW1lLmdzdWIoJGNvbmNhdGVuYXRpb24pIHsgfG1hdGNofAotICAg
ICAgICAgICAgICAgIHZhciA9IFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbWF0Y2hbMS4u
Li0xXSkKLSAgICAgICAgICAgICAgICByYWlzZSAiVW5rbm93biB2YXJpYWJsZSBgI3t2YXIub3Jp
Z2luYWxOYW1lfWAgaW4gc3Vic3RpdHV0aW9uIGF0ICN7Y29kZU9yaWdpbn0iIHVubGVzcyBtYXBw
aW5nW3Zhcl0KLSAgICAgICAgICAgICAgICBtYXBwaW5nW3Zhcl0ubmFtZQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lLCBAZGVmaW5lZElu
RmlsZSkKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2VsZgotICAgICAgICBlbmQKLSAgICBl
bmQKLWVuZAotCi1jbGFzcyBDb25zdEV4cHIKLSAgICBkZWYgZnJlc2hWYXJpYWJsZXMobWFwcGlu
ZykKLSAgICAgICAgaWYgQHZhbHVlID1+ICRjb25jYXRlbmF0aW9uCi0gICAgICAgICAgICB2YWx1
ZSA9IEB2YWx1ZS5nc3ViKCRjb25jYXRlbmF0aW9uKSB7IHxtYXRjaHwKLSAgICAgICAgICAgICAg
ICB2YXIgPSBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG1hdGNoWzEuLi4tMV0pCi0gICAg
ICAgICAgICAgICAgaWYgbWFwcGluZ1t2YXJdCi0gICAgICAgICAgICAgICAgICAgICIlI3ttYXBw
aW5nW3Zhcl0ubmFtZX0lIgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IENvbnN0RXhwci5mb3JOYW1lKGNvZGVPcmlnaW4sIHZhbHVlKQotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzZWxmCi0gICAgICAgIGVuZAotICAgIGVuZAotCi0gICAgZGVmIHN1YnN0aXR1dGUo
bWFwcGluZykKLSAgICAgICAgaWYgQHZhbHVlID1+ICRjb25jYXRlbmF0aW9uCi0gICAgICAgICAg
ICB2YWx1ZSA9IEB2YWx1ZS5nc3ViKCRjb25jYXRlbmF0aW9uKSB7IHxtYXRjaHwKLSAgICAgICAg
ICAgICAgICB2YXIgPSBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG1hdGNoWzEuLi4tMV0p
Ci0gICAgICAgICAgICAgICAgcmFpc2UgIlVua25vd24gdmFyaWFibGUgYCN7dmFyLm9yaWdpbmFs
TmFtZX1gIGluIHN1YnN0aXR1dGlvbiBhdCAje2NvZGVPcmlnaW59IiB1bmxlc3MgbWFwcGluZ1t2
YXJdCi0gICAgICAgICAgICAgICAgbWFwcGluZ1t2YXJdLm5hbWUKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIENvbnN0RXhwci5mb3JOYW1lKGNvZGVPcmlnaW4sIHZhbHVlKQotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzZWxmCi0gICAgICAgIGVuZAotICAgIGVuZAotZW5kCi0KLWNsYXNz
IFNpemVvZgotICAgIGRlZiBmcmVzaFZhcmlhYmxlcyhtYXBwaW5nKQotICAgICAgICBpZiBzdHJ1
Y3QgPX4gJGNvbmNhdGVuYXRpb24KLSAgICAgICAgICAgIHZhbHVlID0gc3RydWN0LmdzdWIoJGNv
bmNhdGVuYXRpb24pIHsgfG1hdGNofAotICAgICAgICAgICAgICAgIHZhciA9IFZhcmlhYmxlLmZv
ck5hbWUoY29kZU9yaWdpbiwgbWF0Y2hbMS4uLi0xXSkKLSAgICAgICAgICAgICAgICBpZiBtYXBw
aW5nW3Zhcl0KLSAgICAgICAgICAgICAgICAgICAgIiUje21hcHBpbmdbdmFyXS5uYW1lfSUiCi0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtYXRjaAotICAgICAgICAg
ICAgICAgIGVuZAotICAgICAgICAgICAgfQotICAgICAgICAgICAgU2l6ZW9mLmZvck5hbWUoY29k
ZU9yaWdpbiwgdmFsdWUpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlbGYKLSAgICAgICAg
ZW5kCi0gICAgZW5kCi0KLSAgICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQotICAgICAgICBpZiBz
dHJ1Y3QgPX4gJGNvbmNhdGVuYXRpb24KLSAgICAgICAgICAgIHZhbHVlID0gc3RydWN0LmdzdWIo
JGNvbmNhdGVuYXRpb24pIHsgfG1hdGNofAotICAgICAgICAgICAgICAgIHZhciA9IFZhcmlhYmxl
LmZvck5hbWUoY29kZU9yaWdpbiwgbWF0Y2hbMS4uLi0xXSkKLSAgICAgICAgICAgICAgICByYWlz
ZSAiVW5rbm93biB2YXJpYWJsZSBgI3t2YXIub3JpZ2luYWxOYW1lfWAgaW4gc3Vic3RpdHV0aW9u
IGF0ICN7Y29kZU9yaWdpbn0iIHVubGVzcyBtYXBwaW5nW3Zhcl0KLSAgICAgICAgICAgICAgICBt
YXBwaW5nW3Zhcl0ubmFtZQotICAgICAgICAgICAgfQotICAgICAgICAgICAgU2l6ZW9mLmZvck5h
bWUoY29kZU9yaWdpbiwgdmFsdWUpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlbGYKLSAg
ICAgICAgZW5kCi0gICAgZW5kCi1lbmQKLQogY2xhc3MgTG9jYWxMYWJlbAogICAgIGRlZiBzdWJz
dGl0dXRlTGFiZWxzKG1hcHBpbmcpCiAgICAgICAgIGlmIG1hcHBpbmdbc2VsZl0KQEAgLTM1MSwx
NSArMTk0LDYgQEAgY2xhc3MgTG9jYWxMYWJlbAogICAgIGVuZAogZW5kCiAKLWNsYXNzIE1hY3Jv
RXJyb3IgPCBSdW50aW1lRXJyb3IKLSAgICBhdHRyX3JlYWRlciA6bWVzc2FnZQotICAgIGF0dHJf
cmVhZGVyIDpiYWNrdHJhY2UKLSAgICBkZWYgaW5pdGlhbGl6ZShtZXNzYWdlLCBiYWNrdHJhY2Up
Ci0gICAgICAgIEBtZXNzYWdlID0gbWVzc2FnZQotICAgICAgICBAYmFja3RyYWNlID0gYmFja3Ry
YWNlCi0gICAgZW5kCi1lbmQKLQogY2xhc3MgU2VxdWVuY2UKICAgICBkZWYgc3Vic3RpdHV0ZShj
b25zdGFudHMpCiAgICAgICAgIG5ld0xpc3QgPSBbXQpAQCAtMzg4LDIwICsyMjIsMTIgQEAgY2xh
c3MgU2VxdWVuY2UKICAgICAgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQogICAgIGVuZAog
ICAgIAotICAgIEBAZGVtYWNyb2lmeVN0YWNrID0gW10KLSAgICBkZWYgbWFjcm9FcnJvcihtc2cp
Ci0gICAgICAgIGJhY2t0cmFjZSA9IEBAZGVtYWNyb2lmeVN0YWNrLnJldmVyc2UubWFwIHsgfG1h
Y3JvQ2FsbHwKLSAgICAgICAgICAgICIje21hY3JvQ2FsbC5jb2RlT3JpZ2lufSBpbiBjYWxsIHRv
ICN7bWFjcm9DYWxsLm9yaWdpbmFsTmFtZX0iCi0gICAgICAgIH0KLSAgICAgICAgcmFpc2UgTWFj
cm9FcnJvci5uZXcobXNnLCBiYWNrdHJhY2UpCi0gICAgZW5kCi0KICAgICBkZWYgZGVtYWNyb2lm
eShtYWNyb3MpCiAgICAgICAgIG15TWFjcm9zID0gbWFjcm9zLmR1cAogICAgICAgICBAbGlzdC5l
YWNoIHsKICAgICAgICAgICAgIHwgaXRlbSB8CiAgICAgICAgICAgICBpZiBpdGVtLmlzX2E/IE1h
Y3JvCi0gICAgICAgICAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0uZnJlc2hWYXJp
YWJsZXMKKyAgICAgICAgICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbS5jYXB0dXJl
CiAgICAgICAgICAgICBlbmQKICAgICAgICAgfQogICAgICAgICBuZXdMaXN0ID0gW10KQEAgLTQx
MCwzMCArMjM2LDI3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBpZiBpdGVtLmlzX2E/
IE1hY3JvCiAgICAgICAgICAgICAgICAgIyBJZ25vcmUuCiAgICAgICAgICAgICBlbHNpZiBpdGVt
LmlzX2E/IE1hY3JvQ2FsbAotICAgICAgICAgICAgICAgIEBAZGVtYWNyb2lmeVN0YWNrIDw8IGl0
ZW0KICAgICAgICAgICAgICAgICBtYXBwaW5nID0ge30KICAgICAgICAgICAgICAgICBteU15TWFj
cm9zID0gbXlNYWNyb3MuZHVwCi0gICAgICAgICAgICAgICAgbWFjcm8gPSBteU1hY3Jvc1tpdGVt
Lm5hbWVdCi0gICAgICAgICAgICAgICAgbWFjcm9FcnJvciAiQ291bGQgbm90IGZpbmQgbWFjcm8g
I3tpdGVtLm9yaWdpbmFsTmFtZX0iIHVubGVzcyBtYWNybwotICAgICAgICAgICAgICAgIG1hY3Jv
RXJyb3IgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5vcmlnaW5h
bE5hbWV9IChleHBlY3RlZCAje21hY3JvLnZhcmlhYmxlcy5zaXplfSBidXQgZ290ICN7aXRlbS5v
cGVyYW5kcy5zaXplfSBhcmd1bWVudHMgZm9yIG1hY3JvICN7aXRlbS5vcmlnaW5hbE5hbWV9IGRl
ZmluZWQgYXQgI3ttYWNyby5jb2RlT3JpZ2lufSkiIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUg
PT0gbWFjcm8udmFyaWFibGVzLnNpemUKKyAgICAgICAgICAgICAgICByYWlzZSAiQ291bGQgbm90
IGZpbmQgbWFjcm8gI3tpdGVtLm9yaWdpbmFsTmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICAgICAgICAgIHJhaXNlICJB
cmd1bWVudCBjb3VudCBtaXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0ub3JpZ2luYWxOYW1lfSBh
dCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0g
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQogICAgICAgICAgICAgICAgIGl0ZW0u
b3BlcmFuZHMuc2l6ZS50aW1lcyB7CiAgICAgICAgICAgICAgICAgICAgIHwgaWR4IHwKICAgICAg
ICAgICAgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBt
eU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KLSAgICAgICAgICAgICAgICAgICAgICAg
IG15TXlNYWNyb3NbbWFjcm8udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9w
ZXJhbmRzW2lkeF0ubmFtZV0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbbWFjcm8u
dmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICAgICAgICAgICAgICBteU15TWFjcm9z
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVt
Lm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAogICAgICAgICAgICAg
ICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KLSAgICAgICAgICAg
ICAgICAgICAgICAgIG15TXlNYWNyb3NbbWFjcm8udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVt
Lm9wZXJhbmRzW2lkeF0uZnJlc2hWYXJpYWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1h
cHBpbmdbbWFjcm8udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICAgICAgICAgICAg
ICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBp
dGVtLm9wZXJhbmRzW2lkeF0uY2FwdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGlu
Z1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCiAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG15TXlNYWNyb3NbbWFj
cm8udmFyaWFibGVzW2lkeF1dID0gbmlsCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5n
W21hY3JvLnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAg
ICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhd
XSA9IG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQogICAgICAgICAgICAgICAg
ICAgICBlbmQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgaXRlbS5hbm5v
dGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGl0
ZW0uY29kZU9yaWdpbiwgImxvY2FsQW5ub3RhdGlvbiIsIFtdLCBpdGVtLmFubm90YXRpb24pCiAg
ICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgbmV3TGlzdCArPSBtYWNyby5ib2R5
LnN1YnN0aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMo
aXRlbS5vcmlnaW5hbE5hbWUpLmxpc3QKLSAgICAgICAgICAgICAgICBAQGRlbWFjcm9pZnlTdGFj
ay5wb3AKKyAgICAgICAgICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0ZW0ubmFtZV0uYm9k
eS5zdWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3JvcykucmVuYW1lTGFiZWxz
KGl0ZW0ub3JpZ2luYWxOYW1lKS5saXN0CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCiAgICAgICAgICAgICBlbmQK
QEAgLTY5OCw3ICs1MjEsNiBAQCBlbmQKIAogY2xhc3MgTGFiZWwKICAgICBkZWYgdmFsaWRhdGUK
LSAgICAgICAgcmFpc2UgIlVucmVzb2x2ZWQgc3Vic3RpdHV0aW9uIGluIExhYmVsICN7bmFtZX0g
YXQgI3tjb2RlT3JpZ2lufSIgaWYgbmFtZSA9fiAvJS8KICAgICBlbmQKIGVuZAogCkBAIC03MjEs
MyArNTQzLDQgQEAgY2xhc3MgU2tpcAogICAgIGRlZiB2YWxpZGF0ZQogICAgIGVuZAogZW5kCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgppbmRleCAyYThjNTQ5OTMwMzQ0
Yzc5ZDFjOGVmMWI3MDA1YTk0MTk1ODhmMjUwLi45OWZmYjhhMDJkMTljMDMzNTJlNWFmODZmYmQ5
NTA0Mzg5NWRmMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS94ODYucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCkBA
IC0yODMsNyArMjgzLDggQEAgY2xhc3MgUmVnaXN0ZXJJRAogICAgICAgICAgICAgd2hlbiAidDQi
CiAgICAgICAgICAgICAgICAgaXNXaW4gPyAicjEwIiA6ICJyOCIKICAgICAgICAgICAgIHdoZW4g
InQ1IgotICAgICAgICAgICAgICAgIGlzV2luID8gImVjeCIgOiAicjEwIgorICAgICAgICAgICAg
ICAgIHJhaXNlICJjYW5ub3QgdXNlIHJlZ2lzdGVyICN7bmFtZX0gb24gWDg2LTY0IFdpbmRvd3Mi
IHVubGVzcyBub3QgaXNXaW4KKyAgICAgICAgICAgICAgICAicjEwIgogICAgICAgICAgICAgd2hl
biAiY3NyMCIKICAgICAgICAgICAgICAgICAiZWJ4IgogICAgICAgICAgICAgd2hlbiAiY3NyMSIK
QEAgLTQ2NCwxMiArNDY1LDcgQEAgY2xhc3MgTGFiZWxSZWZlcmVuY2UKICAgICBkZWYgeDg2TG9h
ZE9wZXJhbmQoa2luZCwgZHN0KQogICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBvbiBw
bGF0Zm9ybXMgdGhhdCBhcmVuJ3QgTWFjaC1PLgogICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxMDQKLSAgICAgICAgdXNlZAotICAgICAgICBpZiAh
aXNJbnRlbFN5bnRheAotICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZxICN7YXNtTGFiZWx9QEdP
VFBDUkVMKCVyaXApLCAje2RzdC54ODZPcGVyYW5kKDpwdHIpfSIKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgJGFzbS5wdXRzICJsZWEgI3tkc3QueDg2T3BlcmFuZCg6cHRyKX0sICN7YXNtTGFi
ZWx9IgotICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICJtb3ZxICN7YXNtTGFiZWx9QEdP
VFBDUkVMKCVyaXApLCAje2RzdC54ODZPcGVyYW5kKDpwdHIpfSIKICAgICAgICAgIiN7b2Zmc2V0
fSgje2RzdC54ODZPcGVyYW5kKGtpbmQpfSkiCiAgICAgZW5kCiBlbmQKQEAgLTU4OCwxMiArNTg0
LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KIAogICAgIGRlZiBlbWl0WDg2TGVhKHNyYywgZHN0LCBr
aW5kKQogICAgICAgICBpZiBzcmMuaXNfYT8gTGFiZWxSZWZlcmVuY2UKLSAgICAgICAgICAgIHNy
Yy51c2VkCi0gICAgICAgICAgICBpZiAhaXNJbnRlbFN5bnRheAotICAgICAgICAgICAgICAgICRh
c20ucHV0cyAibW92cSAje3NyYy5hc21MYWJlbH1AR09UUENSRUwoJXJpcCksICN7ZHN0Lng4Nk9w
ZXJhbmQoOnB0cil9IgotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICRhc20ucHV0
cyAibGVhICN7ZHN0Lng4Nk9wZXJhbmQoOnB0cil9LCAje3NyYy5hc21MYWJlbH0iCi0gICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92cSAje3NyYy5hc21MYWJlbH1AR09U
UENSRUwoJXJpcCksICN7ZHN0Lng4Nk9wZXJhbmQoOnB0cil9IgogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAkYXNtLnB1dHMgImxlYSN7eDg2U3VmZml4KGtpbmQpfSAje29yZGVyT3BlcmFuZHMo
c3JjLng4NkFkZHJlc3NPcGVyYW5kKGtpbmQpLCBkc3QueDg2T3BlcmFuZChraW5kKSl9IgogICAg
ICAgICBlbmQKQEAgLTk1Niw4ICs5NDcsNiBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAg
ICAgaGFuZGxlWDg2T3AoInhvciN7eDg2U3VmZml4KDpwdHIpfSIsIDpwdHIpCiAgICAgICAgIHdo
ZW4gInhvcnEiCiAgICAgICAgICAgICBoYW5kbGVYODZPcCgieG9yI3t4ODZTdWZmaXgoOnF1YWQp
fSIsIDpxdWFkKQotICAgICAgICB3aGVuICJsZWFwIgotICAgICAgICAgICAgZW1pdFg4NkxlYShv
cGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIDpwdHIpCiAgICAgICAgIHdoZW4gImxvYWRpIgogICAg
ICAgICAgICAgJGFzbS5wdXRzICJtb3Yje3g4NlN1ZmZpeCg6aW50KX0gI3t4ODZMb2FkT3BlcmFu
ZHMoOmludCwgOmludCl9IgogICAgICAgICB3aGVuICJzdG9yZWkiCkBAIC05OTIsMTIgKzk4MSw2
IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3ZzeCAje3g4NkxvYWRPcGVyYW5kcyg6Ynl0ZSwgOmludCl9IgogICAgICAg
ICAgICAgZW5kCi0gICAgICAgIHdoZW4gImxvYWRic3AiCi0gICAgICAgICAgICBpZiAhaXNJbnRl
bFN5bnRheAotICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92c2Ije3g4NlN1ZmZpeCg6cHRy
KX0gI3t4ODZMb2FkT3BlcmFuZHMoOmJ5dGUsIDpwdHIpfSIKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnN4ICN7eDg2TG9hZE9wZXJhbmRzKDpieXRlLCA6
cHRyKX0iCi0gICAgICAgICAgICBlbmQKICAgICAgICAgd2hlbiAibG9hZGgiCiAgICAgICAgICAg
ICBpZiAhaXNJbnRlbFN5bnRheAogICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92endsICN7
eDg2TG9hZE9wZXJhbmRzKDpoYWxmLCA6aW50KX0iCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUmVzdWx0VHlwZS5oCmluZGV4IGM5MjYyMWFmMGNkYmZjODM1YzExNTdhNmNmOTI0OWQ4NjRk
YmU4YzIuLjdkNDY5MjlmYWVkMDQ0MzVkYTYwMzNiMzVkMzg0ZjMxNTk2YzNhYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCkBAIC0xNzQsMTMgKzE3NCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGNvbnN0ZXhwciBUeXBlIGJpdHMoKSBjb25zdCB7
IHJldHVybiBtX2JpdHM7IH0KIAotICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRklYTUU6IG1vcmUgbWVhbmluZ2Z1bCBp
bmZvcm1hdGlvbgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MDkzMAotICAgICAgICAgICAgb3V0LnByaW50KGJpdHMoKSk7Ci0gICAgICAg
IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIFR5cGUgbV9iaXRzOwogICAgIH07CkBAIC0yMDQs
MTIgKzE5NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGludCBpOwogICAgICAg
ICB9IG1fdTsKIAotICAgICAgICBSZXN1bHRUeXBlIGZpcnN0KCkgY29uc3QKKyAgICAgICAgUmVz
dWx0VHlwZSBmaXJzdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBl
KG1fdS5yZHMuZmlyc3QpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVzdWx0VHlwZSBzZWNvbmQo
KSBjb25zdAorICAgICAgICBSZXN1bHRUeXBlIHNlY29uZCgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBSZXN1bHRUeXBlKG1fdS5yZHMuc2Vjb25kKTsKICAgICAgICAgfQpAQCAtMjI0
LDExICsyMTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHR5cGVzLm1fdS5pID0g
dmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gdHlwZXM7CiAgICAgICAgIH0KLQotICAgICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
b3V0LnByaW50KCJPcGVyYW5kVHlwZXMoIiwgZmlyc3QoKSwgICIsICIsIHNlY29uZCgpLCAiKSIp
OwotICAgICAgICB9CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVu
Y2UuY3BwCmluZGV4IDMwY2FmY2I3MGYzZTM2ZWJlNTRhMjM0NDIzNTQ3NTE1MDRlZDUzMjMuLjZl
OTNjZTgxMDAxMTYxOGU4ZDRjOGI4MGU2NzBkODNlOGUxOGExMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVu
Y2UuY3BwCkBAIC01NSwxMCArNTUsOSBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVl
bmNlKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCA9IDA7IGJ5dGVjb2RlSW5kZXggPCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsp
IHsKICAgICAgICAgb3V0LnJlc2V0KCk7CiAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2Rl
KG91dCwgYnl0ZWNvZGVJbmRleCwgc3RhdHVzTWFwKTsKLSAgICAgICAgYXV0byBpbnN0cnVjdGlv
biA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CisgICAgICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleF0udS5vcGNvZGUpOwogICAgICAgICBtX3NlcXVlbmNl
LmFwcGVuZChCeXRlY29kZShieXRlY29kZUluZGV4LCBvcGNvZGVJRCwgb3V0LnRvQ1N0cmluZygp
KSk7Ci0gICAgICAgIGJ5dGVjb2RlSW5kZXggKz0gaW5zdHJ1Y3Rpb24tPnNpemUoKTsKKyAgICAg
ICAgYnl0ZWNvZGVJbmRleCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
aW5kZXggNzBlMzQ0OTI0OTFhYmVhNTc3MTc1NjM0NmE3MTVkYmVjNWU5ZTEyNy4uMGExMzI3YTQ3
OWZlMTMzODcxYjg0NTExZDRhNWY5YTNlNzQ2YTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC03OSwxMSArNzksMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAjaWZuZGVmIE5ERUJVRwogI2RlZmluZSBTRVRfUENfRk9SX1NUVUJT
KCkgZG8geyBcCiAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChwYyk7
IFwKLSAgICAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyk7IFwKKyAgICAgICAgZXhlYy0+c2V0
Q3VycmVudFZQQyhwYyArIDEpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAjZWxzZQogI2RlZmlu
ZSBTRVRfUENfRk9SX1NUVUJTKCkgZG8geyBcCi0gICAgICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMo
cGMpOyBcCisgICAgICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMgKyAxKTsgXAogICAgIH0gd2hp
bGUgKGZhbHNlKQogI2VuZGlmCiAKQEAgLTkzLDggKzkzLDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIEJFR0lOX05PX1NFVF9QQygpOyAgICAgICAgICAgICAgICAgICAgXAogICAgIFNFVF9QQ19G
T1JfU1RVQlMoKQogCi0jZGVmaW5lIEdFVChvcGVyYW5kKSAoZXhlYy0+dW5jaGVja2VkUihvcGVy
YW5kLm9mZnNldCgpKSkKLSNkZWZpbmUgR0VUX0Mob3BlcmFuZCkgKGV4ZWMtPnIob3BlcmFuZC5v
ZmZzZXQoKSkpCisjZGVmaW5lIE9QKGluZGV4KSAoZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0u
dS5vcGVyYW5kKSkKKyNkZWZpbmUgT1BfQyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUub3Bl
cmFuZCkpCisKKyNkZWZpbmUgR0VUKG9wZXJhbmQpIChleGVjLT51bmNoZWNrZWRSKG9wZXJhbmQp
KQorI2RlZmluZSBHRVRfQyhvcGVyYW5kKSAoZXhlYy0+cihvcGVyYW5kKSkKIAogI2RlZmluZSBS
RVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAogICAgICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KGZpcnN0LCBzZWNvbmQpOyAgICAgICAgXApAQCAtMTIxLDM2ICsxMjQsMzMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKLSNkZWZpbmUgQlJBTkNIKGNvbmRpdGlvbikgZG8g
eyAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIEJSQU5DSChvcGNvZGUsIGNvbmRpdGlv
bikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGJvb2wgYkNvbmRpdGlvbiA9
IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlm
IChiQ29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgICBwYyA9IGJ5dGVjb2RlLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgPyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocGMpICsgYnl0ZWNvZGUudGFyZ2V0KSBcCi0gICAgICAgICAgICAgICAgOiBleGVj
LT5jb2RlQmxvY2soKS0+b3V0T2ZMaW5lSnVtcFRhcmdldChwYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUp
IC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcGMgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4ocGMpICsgcGMtPnNpemUoKSk7IFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09E
RV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRU5E
X0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9
IHdoaWxlIChmYWxzZSkKIAotI2RlZmluZSBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKHJl
c3VsdF9fLCB2YWx1ZV9fLCBwcm9maWxpbmdBY3Rpb25fXykgZG8geyBcCisjZGVmaW5lIFJFVFVS
Tl9XSVRIX1BST0ZJTElORyh2YWx1ZV9fLCBwcm9maWxpbmdBY3Rpb25fXykgZG8geyBcCiAgICAg
ICAgIEpTVmFsdWUgcmV0dXJuVmFsdWVfXyA9ICh2YWx1ZV9fKTsgIFwKICAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBHRVQocmVzdWx0X18pID0g
cmV0dXJuVmFsdWVfXzsgICAgICAgICAgICAgIFwKKyAgICAgICAgT1AoMSkgPSByZXR1cm5WYWx1
ZV9fOyAgICAgICAgICAgICAgXAogICAgICAgICBwcm9maWxpbmdBY3Rpb25fXzsgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIEVORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKIAotI2RlZmluZSBSRVRVUk5fV0lUSF9QUk9GSUxJTkcodmFs
dWVfXywgcHJvZmlsaW5nQWN0aW9uX18pIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0
ZWNvZGUuZHN0LCB2YWx1ZV9fLCBwcm9maWxpbmdBY3Rpb25fXykKLQogI2RlZmluZSBSRVRVUk4o
dmFsdWUpIFwKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcodmFsdWUsIHsgfSkKIAotI2RlZmlu
ZSBSRVRVUk5fUFJPRklMRUQodmFsdWVfXykgXAotICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyh2
YWx1ZV9fLCBQUk9GSUxFX1ZBTFVFKHJldHVyblZhbHVlX18pKQorI2RlZmluZSBSRVRVUk5fUFJP
RklMRUQob3Bjb2RlX18sIHZhbHVlX18pIFwKKyAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcodmFs
dWVfXywgUFJPRklMRV9WQUxVRShvcGNvZGVfXywgcmV0dXJuVmFsdWVfXykpCiAKLSNkZWZpbmUg
UFJPRklMRV9WQUxVRSh2YWx1ZSkgZG8geyBcCi0gICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGV4
ZWMpLnByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorI2Rl
ZmluZSBQUk9GSUxFX1ZBTFVFKG9wY29kZSwgdmFsdWUpIGRvIHsgXAorICAgICAgICBwY1tPUENP
REVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAg
ICAgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGls
ZSAoZmFsc2UpCiAKICNkZWZpbmUgQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0LCBjYWxs
VGFyZ2V0VGFnKSBcCkBAIC0yMDUsMTUgKzIwNSwxMyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRl
X2RpcmVjdF9hcmd1bWVudHMpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQ3JlYXRlRGlyZWN0QXJndW1lbnRzPigpOwogICAgIFJFVFVSTihEaXJlY3RBcmd1
bWVudHM6OmNyZWF0ZUJ5Q29weWluZyhleGVjKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cykKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BDcmVhdGVTY29wZWRBcmd1bWVudHM+KCk7Ci0gICAgSlNMZXhp
Y2FsRW52aXJvbm1lbnQqIHNjb3BlID0ganNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4oR0VU
KGJ5dGVjb2RlLnNjb3BlKS5qc1ZhbHVlKCkpOworICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBz
Y29wZSA9IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+KE9QKDIpLmpzVmFsdWUoKSk7CiAg
ICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHRhYmxlID0gc2NvcGUtPnN5bWJvbFRhYmxlKCktPmFy
Z3VtZW50cygpOwogICAgIFJFVFVSTihTY29wZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZyhl
eGVjLCB0YWJsZSwgc2NvcGUpKTsKIH0KQEAgLTIyMSwyNSArMjE5LDI0IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cykKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKIHsKICAgICBCRUdJTigpOwotICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDcmVhdGVDbG9uZWRBcmd1bWVudHM+KCk7CiAgICAgUkVU
VVJOKENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aE1hY2hpbmVGcmFtZShleGVjLCBleGVjLCBB
cmd1bWVudHNNb2RlOjpDbG9uZWQpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Ny
ZWF0ZV90aGlzKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cENyZWF0ZVRoaXM+KCk7CisgICAgYXV0byYgYnl0ZWNvZGUgPSAqcmVpbnRlcnByZXRfY2FzdDxP
cENyZWF0ZVRoaXMqPihwYyk7CiAgICAgSlNPYmplY3QqIHJlc3VsdDsKLSAgICBKU09iamVjdCog
Y29uc3RydWN0b3JBc09iamVjdCA9IGFzT2JqZWN0KEdFVChieXRlY29kZS5jYWxsZWUpLmpzVmFs
dWUoKSk7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yQXNPYmplY3QgPSBhc09iamVjdChHRVQo
Ynl0ZWNvZGUuY2FsbGVlKCkpLmpzVmFsdWUoKSk7CiAgICAgaWYgKGNvbnN0cnVjdG9yQXNPYmpl
Y3QtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSAmJiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0
cnVjdG9yQXNPYmplY3QpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIEpT
RnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvckFz
T2JqZWN0KTsKLSAgICAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4mIGNhY2hlZENhbGxlZSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGV4ZWMpLmNhY2hlZENhbGxlZTsKKyAgICAgICAgV3JpdGVCYXJyaWVy
PEpTQ2VsbD4mIGNhY2hlZENhbGxlZSA9IGJ5dGVjb2RlLmNhY2hlZENhbGxlZSgpOwogICAgICAg
ICBpZiAoIWNhY2hlZENhbGxlZSkKICAgICAgICAgICAgIGNhY2hlZENhbGxlZS5zZXQodm0sIGV4
ZWMtPmNvZGVCbG9jaygpLCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIGVsc2UgaWYgKGNhY2hlZENh
bGxlZS51bnZhbGlkYXRlZEdldCgpICE9IEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0
cygpICYmIGNhY2hlZENhbGxlZS5nZXQoKSAhPSBjb25zdHJ1Y3RvcikKICAgICAgICAgICAgIGNh
Y2hlZENhbGxlZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2Fs
bGVlT2JqZWN0cygpKTsKIAotICAgICAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBieXRlY29k
ZS5pbmxpbmVDYXBhY2l0eTsKKyAgICAgICAgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gYnl0ZWNv
ZGUuaW5saW5lQ2FwYWNpdHkoKTsKICAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIGFs
bG9jYXRpb25Qcm9maWxlID0gY29uc3RydWN0b3ItPmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlv
blByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgp
OwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1
Y3R1cmUoKTsKICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3Ry
dWN0dXJlKTsKQEAgLTI2NSwyMCArMjYyLDE4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfdGhpcykKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQogewogICAgIEJF
R0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRvVGhpcz4oKTsKLSAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwotICAgIEpTVmFsdWUgdjEgPSBH
RVQoYnl0ZWNvZGUuc3JjRHN0KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MSA9IE9QKDEpLmpz
VmFsdWUoKTsKICAgICBpZiAodjEuaXNDZWxsKCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBteVN0
cnVjdHVyZSA9IHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwotICAgICAgICBTdHJ1Y3R1cmUq
IG90aGVyU3RydWN0dXJlID0gbWV0YWRhdGEuY2FjaGVkU3RydWN0dXJlLmdldCgpOworICAgICAg
ICBTdHJ1Y3R1cmUqIG90aGVyU3RydWN0dXJlID0gcGNbMl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAg
ICAgICAgIGlmIChteVN0cnVjdHVyZSAhPSBvdGhlclN0cnVjdHVyZSkgewogICAgICAgICAgICAg
aWYgKG90aGVyU3RydWN0dXJlKQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLnRvVGhpc1N0YXR1
cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgICAgICBtZXRhZGF0YS5jYWNoZWRTdHJ1Y3R1
cmUuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKSwgbXlTdHJ1Y3R1cmUpOworICAgICAgICAgICAg
ICAgIHBjWzNdLnUudG9UaGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3RlZDsKKyAgICAgICAgICAg
IHBjWzJdLnUuc3RydWN0dXJlLnNldCh2bSwgZXhlYy0+Y29kZUJsb2NrKCksIG15U3RydWN0dXJl
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1ldGFkYXRhLnRvVGhpc1N0YXR1
cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIG1ldGFkYXRhLmNhY2hlZFN0cnVjdHVyZS5j
bGVhcigpOworICAgICAgICBwY1szXS51LnRvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7
CisgICAgICAgIHBjWzJdLnUuc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgfQogICAgIC8vIE5vdGU6
IFdlIG9ubHkgbmVlZCB0byBkbyB0aGlzIHZhbHVlIHByb2ZpbGluZyBoZXJlIG9uIHRoZSBzbG93
IHBhdGguIFRoZSBmYXN0IHBhdGgKICAgICAvLyBqdXN0IHJldHVybnMgdGhlIGlucHV0IHRvIHRv
X3RoaXMgaWYgdGhlIHN0cnVjdHVyZSBjaGVjayBzdWNjZWVkcy4gSWYgdGhlIHN0cnVjdHVyZQpA
QCAtMjg2LDggKzI4MSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQogICAg
IC8vIGRpZmZlcmVudCBvYmplY3QgdGhhdCBzdGlsbCBoYXMgdGhlIHNhbWUgc3RydWN0dXJlIG9u
IHRoZSBmYXN0IHBhdGggc2luY2UgaXQnbGwgcHJvZHVjZQogICAgIC8vIHRoZSBzYW1lIFNwZWN1
bGF0ZWRUeXBlLiBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdmFsdWUg
cHJvZmlsaW5nIG9uIHRoZQogICAgIC8vIGZhc3QgcGF0aC4KLSAgICBhdXRvIHZhbHVlID0gdjEu
dG9UaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1v
ZGUgOiBOb3RTdHJpY3RNb2RlKTsKLSAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5
dGVjb2RlLnNyY0RzdCwgdmFsdWUsIFBST0ZJTEVfVkFMVUUodmFsdWUpKTsKKyAgICBSRVRVUk5f
UFJPRklMRUQob3BfdG9fdGhpcywgdjEudG9UaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKSk7CiB9CiAKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpCkBAIC0zMTEsOTEgKzMwNSw3OSBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJv
cGVydHlfd3JpdGVfZXJyb3IpCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQogewogICAg
IEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcE5vdD4oKTsKLSAgICBSRVRV
Uk4oanNCb29sZWFuKCFHRVRfQyhieXRlY29kZS5vcGVyYW5kKS5qc1ZhbHVlKCkudG9Cb29sZWFu
KGV4ZWMpKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbighT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29s
ZWFuKGV4ZWMpKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lcSkKIHsKICAgICBC
RUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BFcT4oKTsKLSAgICBSRVRVUk4o
anNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIEdFVF9DKGJ5dGVjb2RlLmxocykuanNWYWx1
ZSgpLCBHRVRfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUoKSkpKTsKKyAgICBSRVRVUk4oanNCb29s
ZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFs
dWUoKSkpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lcSkKIHsKICAgICBCRUdJ
TigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BOZXE+KCk7Ci0gICAgUkVUVVJOKGpz
Qm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgR0VUX0MoYnl0ZWNvZGUubGhzKS5qc1ZhbHVl
KCksIEdFVF9DKGJ5dGVjb2RlLnJocykuanNWYWx1ZSgpKSkpOworICAgIFJFVFVSTihqc0Jvb2xl
YW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBPUF9DKDMpLmpzVmFs
dWUoKSkpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmljdGVxKQogewogICAg
IEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFN0cmljdGVxPigpOwotICAg
IFJFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgR0VUX0MoYnl0ZWNv
ZGUubGhzKS5qc1ZhbHVlKCksIEdFVF9DKGJ5dGVjb2RlLnJocykuanNWYWx1ZSgpKSkpOworICAg
IFJFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgT1BfQygyKS5qc1Zh
bHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbnN0cmljdGVxKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcE5zdHJpY3RlcT4oKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RF
cXVhbChleGVjLCBHRVRfQyhieXRlY29kZS5saHMpLmpzVmFsdWUoKSwgR0VUX0MoYnl0ZWNvZGUu
cmhzKS5qc1ZhbHVlKCkpKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0
RXF1YWwoZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOwogfQog
CiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbGVzcykKIHsKICAgICBCRUdJTigpOwotICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BMZXNzPigpOwotICAgIFJFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzPHRydWU+KGV4ZWMsIEdFVF9DKGJ5dGVjb2RlLmxocykuanNWYWx1ZSgpLCBHRVRfQyhieXRl
Y29kZS5yaHMpLmpzVmFsdWUoKSkpKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVl
PihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCkpKSk7CiB9CiAKIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sZXNzZXEpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wTGVzc2VxPigpOwotICAgIFJFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzRXE8dHJ1ZT4oZXhlYywgR0VUX0MoYnl0ZWNvZGUubGhzKS5qc1ZhbHVlKCksIEdFVF9DKGJ5
dGVjb2RlLnJocykuanNWYWx1ZSgpKSkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8
dHJ1ZT4oZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOwogfQog
CiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ3JlYXRlcikKIHsKICAgICBCRUdJTigpOwotICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHcmVhdGVyPigpOwotICAgIFJFVFVSTihqc0Jvb2xl
YW4oanNMZXNzPGZhbHNlPihleGVjLCBHRVRfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUoKSwgR0VU
X0MoYnl0ZWNvZGUubGhzKS5qc1ZhbHVlKCkpKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihqc0xl
c3M8ZmFsc2U+KGV4ZWMsIE9QX0MoMykuanNWYWx1ZSgpLCBPUF9DKDIpLmpzVmFsdWUoKSkpKTsK
IH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXJlcSkKIHsKICAgICBCRUdJTigp
OwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHcmVhdGVyZXE+KCk7Ci0gICAgUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgR0VUX0MoYnl0ZWNvZGUucmhzKS5qc1Zh
bHVlKCksIEdFVF9DKGJ5dGVjb2RlLmxocykuanNWYWx1ZSgpKSkpOworICAgIFJFVFVSTihqc0Jv
b2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIE9QX0MoMykuanNWYWx1ZSgpLCBPUF9DKDIpLmpz
VmFsdWUoKSkpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luYykKIHsKICAgICBC
RUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbmM+KCk7Ci0gICAgUkVUVVJO
X1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5zcmNEc3QsIGpzTnVtYmVyKEdFVChieXRl
Y29kZS5zcmNEc3QpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpLCB7IH0pOworICAgIFJF
VFVSTihqc051bWJlcihPUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7CiB9CiAK
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigpOwotICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19D
VVNUT00oYnl0ZWNvZGUuc3JjRHN0LCBqc051bWJlcihHRVQoYnl0ZWNvZGUuc3JjRHN0KS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSwgeyB9KTsKKyAgICBSRVRVUk4oanNOdW1iZXIoT1Ao
MSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfdG9fc3RyaW5nKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcFRvU3RyaW5nPigpOwotICAgIFJFVFVSTihHRVRfQyhieXRlY29kZS5vcGVyYW5k
KS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYykpOworICAgIFJFVFVSTihPUF9DKDIpLmpzVmFsdWUo
KS50b1N0cmluZyhleGVjKSk7CiB9CiAKICNpZiBFTkFCTEUoSklUKQotc3RhdGljIHZvaWQgdXBk
YXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRh
dGEsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIG9wZXJhbmQpCitzdGF0aWMgdm9pZCB1cGRhdGVB
cml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AoSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIHJlc3Vs
dCwgSlNWYWx1ZSBvcGVyYW5kKQogewotICAgIEFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFk
YXRhLmFyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSAqYml0d2lzZV9j
YXN0PEFyaXRoUHJvZmlsZSo+KCZwY1szXS51Lm9wZXJhbmQpOwogICAgIHByb2ZpbGUub2JzZXJ2
ZUxIUyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0Lmlz
QmlnSW50KCkpOwogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgewpAQCAtNDIyLDM0ICs0MDQs
MzIgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVn
YXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZl
ZE5vbk51bWJlcigpOwogfQogI2Vsc2UKLXN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZv
clVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0K
K3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChJbnN0cnVjdGlv
biosIEpTVmFsdWUsIEpTVmFsdWUpIHsgfQogI2VuZGlmCiAKIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZWdhdGUpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
PE9wTmVnYXRlPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhl
Yyk7Ci0gICAgSlNWYWx1ZSBvcGVyYW5kID0gR0VUX0MoYnl0ZWNvZGUub3BlcmFuZCkuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgb3BlcmFuZCA9IE9QX0MoMikuanNWYWx1ZSgpOwogICAgIEpTVmFs
dWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJOdW1iZXIpOwog
ICAgIENIRUNLX0VYQ0VQVElPTigpOwogCiAgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7
CiAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNC
aWdJbnQocHJpbVZhbHVlKSk7CiAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQs
IHsKLSAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0
YSwgcmVzdWx0LCBvcGVyYW5kKTsKKyAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVu
YXJ5QXJpdGhPcChwYywgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CiAgICAgfQogICAg
IAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoLXByaW1WYWx1ZS50b051bWJlcihleGVj
KSk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJl
c3VsdCwgewotICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRh
dGEsIHJlc3VsdCwgb3BlcmFuZCk7CisgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5
QXJpdGhPcChwYywgcmVzdWx0LCBvcGVyYW5kKTsKICAgICB9KTsKIH0KIAogI2lmIEVOQUJMRShE
RkdfSklUKQotc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQsIEpT
VmFsdWUgbGVmdCwgSlNWYWx1ZSByaWdodCkKK3N0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFs
dWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7CiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBBcml0aFByb2ZpbGUmIHByb2Zp
bGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CkBAIC00NzgsMzggKzQ1OCwz
NSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3RpbwogICAgICAgICBwcm9maWxlLnNldE9ic2VydmVk
Tm9uTnVtYmVyKCk7CiB9CiAjZWxzZQotc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9y
QmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBjb25zdCBJbnN0cnVjdGlvbiosIEpTVmFsdWUsIEpT
VmFsdWUsIEpTVmFsdWUpIHsgfQorc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmlu
YXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdWUsIEpTVmFsdWUsIEpT
VmFsdWUpIHsgfQogI2VuZGlmCiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19udW1iZXIp
CiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1iZXI+
KCk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVjb2RlLm9wZXJhbmQpLmpzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gT1BfQygyKS5qc1ZhbHVlKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihhcmd1bWVudC50b051bWJlcihleGVjKSk7Ci0gICAgUkVU
VVJOX1BST0ZJTEVEKHJlc3VsdCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKG9wX3RvX251bWJlciwg
cmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX29iamVjdCkKIHsKICAg
ICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BUb09iamVjdD4oKTsKLSAg
ICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUub3BlcmFuZCkuanNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgYXJndW1lbnQgPSBPUF9DKDIpLmpzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtF
TFkoYXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSkpIHsKLSAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihieXRlY29kZS5tZXNz
YWdlKTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2so
KS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgICAgICBpZiAoIWlkZW50LmlzRW1w
dHkoKSkKICAgICAgICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBpZGVudC5pbXBs
KCkpKTsKICAgICB9CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGFyZ3VtZW50LnRvT2JqZWN0KGV4
ZWMpOwotICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOworICAgIFJFVFVSTl9QUk9GSUxFRChv
cF90b19vYmplY3QsIHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQp
CiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQWRkPigpOwot
ICAgIEpTVmFsdWUgdjEgPSBHRVRfQyhieXRlY29kZS5saHMpLmpzVmFsdWUoKTsKLSAgICBKU1Zh
bHVlIHYyID0gR0VUX0MoYnl0ZWNvZGUucmhzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MSA9
IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBPUF9DKDMpLmpzVmFsdWUoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdDsKIAogICAgIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0g
KmV4ZWMtPmNvZGVCbG9jaygpLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CkBAIC01MzYsOSArNTEz
LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9tdWwpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
TXVsPigpOwotICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLmxocykuanNWYWx1ZSgp
OwotICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIGxlZnQgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHJpZ2h0ID0g
T1BfQygzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc011bChleGVjLCBsZWZ0
LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklM
SU5HKHJlc3VsdCwgewpAQCAtNTQ5LDkgKzUyNSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9tdWwpCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogewogICAgIEJFR0lOKCk7Ci0g
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFN1Yj4oKTsKLSAgICBKU1ZhbHVlIGxlZnQgPSBH
RVRfQyhieXRlY29kZS5saHMpLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0Mo
Ynl0ZWNvZGUucmhzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBsZWZ0ID0gT1BfQygyKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSByaWdodCA9IE9QX0MoMykuanNWYWx1ZSgpOwogICAgIGF1dG8g
bGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhleGVjKTsKICAgICBDSEVDS19FWENFUFRJT04o
KTsKICAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhleGVjKTsKQEAgLTU3
Nyw5ICs1NTIsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2RpdikKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BEaXY+KCk7Ci0gICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubGhzKS5q
c1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLnJocykuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgbGVmdCA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
cmlnaHQgPSBPUF9DKDMpLmpzVmFsdWUoKTsKICAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50
b051bWVyaWMoZXhlYyk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgYXV0byByaWdodE51
bWVyaWMgPSByaWdodC50b051bWVyaWMoZXhlYyk7CkBAIC02MDgsOSArNTgyLDggQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RpdikKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tb2QpCiB7
CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTW9kPigpOwotICAg
IEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLmxocykuanNWYWx1ZSgpOwotICAgIEpTVmFs
dWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGxl
ZnQgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHJpZ2h0ID0gT1BfQygzKS5qc1Zh
bHVlKCk7CiAgICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGV4ZWMpOwogICAg
IENIRUNLX0VYQ0VQVElPTigpOwogICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1l
cmljKGV4ZWMpOwpAQCAtNjM0LDExICs2MDcsMTAgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X21vZCkKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3cpCiB7CiAgICAgQkVHSU4oKTsKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93PigpOwotICAgIGRvdWJsZSBhID0gR0VUX0Mo
Ynl0ZWNvZGUubGhzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIGEgPSBP
UF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKICAgICBpZiAoVU5MSUtFTFkodGhyb3dT
Y29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIFJFVFVSTihKU1ZhbHVlKCkpOwotICAgIGRvdWJs
ZSBiID0gR0VUX0MoYnl0ZWNvZGUucmhzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAg
ZG91YmxlIGIgPSBPUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKICAgICBpZiAoVU5M
SUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIFJFVFVSTihKU1ZhbHVlKCkp
OwogICAgIFJFVFVSTihqc051bWJlcihvcGVyYXRpb25NYXRoUG93KGEsIGIpKSk7CkBAIC02NDcs
OTMgKzYxOSw4NiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG93KQogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2xzaGlmdCkKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BMc2hpZnQ+KCk7Ci0gICAgaW50MzJfdCBhID0gR0VUX0MoYnl0ZWNvZGUubGhz
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGEgPSBPUF9DKDIpLmpzVmFs
dWUoKS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpKSkKICAgICAgICAgUkVUVVJOKEpTVmFsdWUoKSk7Ci0gICAgdWludDMyX3QgYiA9IEdFVF9D
KGJ5dGVjb2RlLnJocykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOworICAgIHVpbnQzMl90IGIg
PSBPUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICBSRVRVUk4oanNOdW1iZXIo
YSA8PCAoYiAmIDMxKSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQog
ewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsK
LSAgICBpbnQzMl90IGEgPSBHRVRfQyhieXRlY29kZS5saHMpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpOworICAgIGludDMyX3QgYSA9IE9QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYyk7CiAg
ICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBSRVRVUk4o
SlNWYWx1ZSgpKTsKLSAgICB1aW50MzJfdCBiID0gR0VUX0MoYnl0ZWNvZGUucmhzKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYyk7CisgICAgdWludDMyX3QgYiA9IE9QX0MoMykuanNWYWx1ZSgpLnRv
VUludDMyKGV4ZWMpOwogICAgIFJFVFVSTihqc051bWJlcihhID4+IChiICYgMzEpKSk7CiB9CiAK
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF91cnNoaWZ0KQogewogICAgIEJFR0lOKCk7Ci0gICAg
YXV0byBieXRlY29kZSA9IHBjLT5hczxPcFVyc2hpZnQ+KCk7Ci0gICAgdWludDMyX3QgYSA9IEdF
VF9DKGJ5dGVjb2RlLmxocykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOworICAgIHVpbnQzMl90
IGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAoVU5MSUtFTFko
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIFJFVFVSTihKU1ZhbHVlKCkpOwotICAg
IHVpbnQzMl90IGIgPSBHRVRfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVj
KTsKKyAgICB1aW50MzJfdCBiID0gT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYyk7CiAg
ICAgUkVUVVJOKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGEgPj4gKGIgJiAzMSkpKSk7
CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF91bnNpZ25lZCkKIHsKICAgICBCRUdJTigp
OwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BVbnNpZ25lZD4oKTsKLSAgICB1aW50MzJf
dCBhID0gR0VUX0MoYnl0ZWNvZGUub3BlcmFuZCkuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpOwor
ICAgIHVpbnQzMl90IGEgPSBPUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICBS
RVRVUk4oanNOdW1iZXIoYSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0YW5k
KQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEJpdGFuZD4o
KTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubGhzKS5qc1ZhbHVlKCku
dG9CaWdJbnRPckludDMyKGV4ZWMpOworICAgIGF1dG8gbGVmdE51bWVyaWMgPSBPUF9DKDIpLmpz
VmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZXhlYyk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5yaHMpLmpzVmFsdWUoKS50b0Jp
Z0ludE9ySW50MzIoZXhlYyk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSBPUF9DKDMpLmpzVmFs
dWUoKS50b0JpZ0ludE9ySW50MzIoZXhlYyk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKICAgICAgICAg
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZCh2bSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOworICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKG9wX2JpdGFuZCwg
cmVzdWx0KTsKICAgICAgICAgfQogCiAgICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcg
b3BlcmF0aW9uLiIpKTsKICAgICB9CiAKLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RG
OjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpICYgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1l
cmljKSkpOworICAgIFJFVFVSTl9QUk9GSUxFRChvcF9iaXRhbmQsIGpzTnVtYmVyKFdURjo6Z2V0
PGludDMyX3Q+KGxlZnROdW1lcmljKSAmIFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykp
KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQogewogICAgIEJFR0lOKCk7
Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEJpdG9yPigpOwotICAgIGF1dG8gbGVmdE51
bWVyaWMgPSBHRVRfQyhieXRlY29kZS5saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZXhl
Yyk7CisgICAgYXV0byBsZWZ0TnVtZXJpYyA9IE9QX0MoMikuanNWYWx1ZSgpLnRvQmlnSW50T3JJ
bnQzMihleGVjKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IEdFVF9DKGJ5dGVjb2RlLnJocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihleGVjKTsK
KyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IE9QX0MoMykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQz
MihleGVjKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewogICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50OjpiaXR3aXNlT3Iodm0sIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwogICAgICAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKKyAg
ICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChvcF9iaXRvciwgcmVzdWx0KTsKICAgICAgICAgfQog
CiAgICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIikpOwogICAgIH0K
IAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVt
ZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgUkVUVVJOX1BS
T0ZJTEVEKG9wX2JpdG9yLCBqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykg
fCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9iaXR4b3IpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQml0eG9yPigpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29k
ZS5saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZXhlYyk7CisgICAgYXV0byBsZWZ0TnVt
ZXJpYyA9IE9QX0MoMikuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihleGVjKTsKICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLnJo
cykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihleGVjKTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IE9QX0MoMykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihleGVjKTsKICAgICBDSEVDS19F
WENFUFRJT04oKTsKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1l
cmljKSkgewogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1l
cmljKSkgewpAQCAtNzUxLDUzICs3MTYsNDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Jp
dHhvcikKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCiB7CiAgICAgQkVHSU4oKTsK
LSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVHlwZW9mPigpOwotICAgIFJFVFVSTihqc1R5
cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBHRVRfQyhieXRlY29kZS52YWx1ZSkuanNWYWx1ZSgpKSk7
CisgICAgUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgp
KSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3Rfb3JfbnVsbCkKIHsK
ICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJc09iamVjdE9yTnVs
bD4oKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlT3JOdWxsKGV4ZWMsIEdF
VF9DKGJ5dGVjb2RlLm9wZXJhbmQpLmpzVmFsdWUoKSkpKTsKKyAgICBSRVRVUk4oanNCb29sZWFu
KGpzSXNPYmplY3RUeXBlT3JOdWxsKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpKSkpOwogfQogCiBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCiB7CiAgICAgQkVHSU4oKTsKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXNGdW5jdGlvbj4oKTsKLSAgICBSRVRVUk4oanNC
b29sZWFuKEdFVF9DKGJ5dGVjb2RlLm9wZXJhbmQpLmpzVmFsdWUoKS5pc0Z1bmN0aW9uKHZtKSkp
OworICAgIFJFVFVSTihqc0Jvb2xlYW4oT1BfQygyKS5qc1ZhbHVlKCkuaXNGdW5jdGlvbih2bSkp
KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkKIHsKICAgICBCRUdJ
TigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFsPigpOwotICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7Ci0gICAgUkVUVVJOKGpzQm9vbGVh
bihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChleGVjLCBHRVRfQyhieXRlY29kZS5iYXNlKS5q
c1ZhbHVlKCksIEdFVF9DKGJ5dGVjb2RlLnByb3BlcnR5KS5qc1ZhbHVlKCksICZtZXRhZGF0YS5h
cnJheVByb2ZpbGUpKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW5CeVZhbChleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCksIGFycmF5
UHJvZmlsZUZvcjxPcEluQnlWYWxTaGFwZT4ocGMpKSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaW5fYnlfaWQpCiB7CiAgICAgQkVHSU4oKTsKIAotICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRl
Y29kZS5iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpz
VmFsdWUoKTsKICAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICBUSFJPVyhj
cmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsdWUpKTsKIAotICAgIFJF
VFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHkoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpKSkpOworICAgIFJF
VFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHkoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSkpKTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVsQnlWYWw+KCk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBHRVRfQyhieXRlY29kZS5iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VW
YWx1ZS50b09iamVjdChleGVjKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAKLSAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEdFVF9DKGJ5dGVjb2RlLnByb3BlcnR5KS5qc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBPUF9DKDMpLmpzVmFsdWUoKTsKICAgICAKICAgICBib29s
IGNvdWxkRGVsZXRlOwogICAgIApAQCAtODIwLDE1ICs3NzgsMTMgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3RyY2F0KQog
ewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFN0cmNhdD4oKTsK
LSAgICBSRVRVUk4oanNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheShleGVjLCAmR0VUKGJ5dGVjb2Rl
LnNyYyksIGJ5dGVjb2RlLmNvdW50KSk7CisgICAgUkVUVVJOKGpzU3RyaW5nRnJvbVJlZ2lzdGVy
QXJyYXkoZXhlYywgJk9QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKIH0KIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSkKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BUb1ByaW1pdGl2ZT4oKTsKLSAgICBSRVRVUk4oR0VUX0MoYnl0ZWNv
ZGUuc3JjKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUoZXhlYykpOworICAgIFJFVFVSTihPUF9DKDIp
LmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9lbnRlcikKQEAgLTg0Miw4ICs3OTgsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZW50ZXIpCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2VudW1lcmFibGVfbGVuZ3RoKQog
ewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldEVudW1lcmFi
bGVMZW5ndGg+KCk7Ci0gICAgSlNWYWx1ZSBlbnVtZXJhdG9yVmFsdWUgPSBHRVQoYnl0ZWNvZGUu
YmFzZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgZW51bWVyYXRvclZhbHVlID0gT1AoMikuanNW
YWx1ZSgpOwogICAgIGlmIChlbnVtZXJhdG9yVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAg
ICAgICAgUkVUVVJOKGpzTnVtYmVyKDApKTsKIApAQCAtODU1LDEyICs4MTAsMTAgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2dldF9lbnVtZXJhYmxlX2xlbmd0aCkKIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSkKIHsKICAgICBCRUdJTigpOwotICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNJbmRleGVkUHJvcGVydHk+KCk7Ci0gICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKLSAgICBKU09iamVjdCogYmFzZSA9
IEdFVChieXRlY29kZS5iYXNlKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmpl
Y3QqIGJhc2UgPSBPUCgyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEdFVChieXRlY29kZS5wcm9wZXJ0eSku
anNWYWx1ZSgpOwotICAgIG1ldGFkYXRhLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJh
c2UtPnN0cnVjdHVyZSh2bSkpOworICAgIEpTVmFsdWUgcHJvcGVydHkgPSBPUCgzKS5qc1ZhbHVl
KCk7CisgICAgYXJyYXlQcm9maWxlRm9yPE9wSGFzSW5kZXhlZFByb3BlcnR5U2hhcGU+KHBjKS0+
b2JzZXJ2ZVN0cnVjdHVyZShiYXNlLT5zdHJ1Y3R1cmUodm0pKTsKICAgICBBU1NFUlQocHJvcGVy
dHkuaXNVSW50MzIoKSk7CiAgICAgUkVUVVJOKGpzQm9vbGVhbihiYXNlLT5oYXNQcm9wZXJ0eUdl
bmVyaWMoZXhlYywgcHJvcGVydHkuYXNVSW50MzIoKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQpAQCAtODY4LDEyICs4MjEsMTEgQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2hhc19pbmRleGVkX3Byb3BlcnR5KQogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpCiB7CiAgICAgQkVHSU4oKTsKLSAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSGFzU3RydWN0dXJlUHJvcGVydHk+KCk7Ci0gICAg
SlNPYmplY3QqIGJhc2UgPSBHRVQoYnl0ZWNvZGUuYmFzZSkuanNWYWx1ZSgpLnRvT2JqZWN0KGV4
ZWMpOworICAgIEpTT2JqZWN0KiBiYXNlID0gT1AoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcHJvcGVydHkgPSBHRVQoYnl0
ZWNvZGUucHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gT1AoMyku
anNWYWx1ZSgpOwogICAgIEFTU0VSVChwcm9wZXJ0eS5pc1N0cmluZygpKTsKLSAgICBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKj4oR0VUKGJ5dGVjb2RlLmVudW1lcmF0b3IpLmpzVmFsdWUoKS5hc0NlbGwoKSk7Cisg
ICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0ganNDYXN0PEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcio+KE9QKDQpLmpzVmFsdWUoKS5hc0NlbGwoKSk7CiAgICAgaWYgKGJh
c2UtPnN0cnVjdHVyZSh2bSktPmlkKCkgPT0gZW51bWVyYXRvci0+Y2FjaGVkU3RydWN0dXJlSUQo
KSkKICAgICAgICAgUkVUVVJOKGpzQm9vbGVhbih0cnVlKSk7CiAgICAgSlNTdHJpbmcqIHN0cmlu
ZyA9IGFzU3RyaW5nKHByb3BlcnR5KTsKQEAgLTg4NSwxMCArODM3LDkgQEAgU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpCiBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaGFzX2dlbmVyaWNfcHJvcGVydHkpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wSGFzR2VuZXJpY1Byb3BlcnR5PigpOwotICAgIEpTT2JqZWN0KiBi
YXNlID0gR0VUKGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBK
U09iamVjdCogYmFzZSA9IE9QKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHByb3BlcnR5ID0gR0VUKGJ5dGVjb2RlLnByb3Bl
cnR5KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IE9QKDMpLmpzVmFsdWUoKTsK
ICAgICBBU1NFUlQocHJvcGVydHkuaXNTdHJpbmcoKSk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9
IGFzU3RyaW5nKHByb3BlcnR5KTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9J
ZGVudGlmaWVyKGV4ZWMpOwpAQCAtODk5LDkgKzg1MCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSkKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
ZGlyZWN0X3BuYW1lKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcEdldERpcmVjdFBuYW1lPigpOwotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0
ZWNvZGUuYmFzZSkuanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgcHJvcGVydHkgPSBHRVQoYnl0ZWNv
ZGUucHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0MoMiku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgcHJvcGVydHkgPSBPUCgzKS5qc1ZhbHVlKCk7CiAgICAg
QVNTRVJUKHByb3BlcnR5LmlzU3RyaW5nKCkpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0
cmluZyhwcm9wZXJ0eSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRlbnRp
ZmllcihleGVjKTsKQEAgLTkxMiw4ICs4NjIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Z2V0X2RpcmVjdF9wbmFtZSkKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcikKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BHZXRQcm9wZXJ0eUVudW1lcmF0b3I+KCk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVQo
Ynl0ZWNvZGUuYmFzZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gT1AoMiku
anNWYWx1ZSgpOwogICAgIGlmIChiYXNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAg
ICAgUkVUVVJOKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtKSk7CiAKQEAgLTky
MywxMiArODcyLDExIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51
bWVyYXRvcikKICAgICBSRVRVUk4ocHJvcGVydHlOYW1lRW51bWVyYXRvcihleGVjLCBiYXNlKSk7
CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFt
ZSkKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXh0X3N0cnVjdHVyZV9lbnVtZXJhdG9yX3Bu
YW1lKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEVudW1l
cmF0b3JTdHJ1Y3R1cmVQbmFtZT4oKTsKLSAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVu
dW1lcmF0b3IgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKj4oR0VUKGJ5dGVjb2Rl
LmVudW1lcmF0b3IpLmpzVmFsdWUoKS5hc0NlbGwoKSk7Ci0gICAgdWludDMyX3QgaW5kZXggPSBH
RVQoYnl0ZWNvZGUuaW5kZXgpLmpzVmFsdWUoKS5hc1VJbnQzMigpOworICAgIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqPihPUCgyKS5qc1ZhbHVlKCkuYXNDZWxsKCkpOworICAgIHVpbnQzMl90IGluZGV4ID0gT1Ao
MykuanNWYWx1ZSgpLmFzVUludDMyKCk7CiAKICAgICBKU1N0cmluZyogcHJvcGVydHlOYW1lID0g
bnVsbHB0cjsKICAgICBpZiAoaW5kZXggPCBlbnVtZXJhdG9yLT5lbmRTdHJ1Y3R1cmVQcm9wZXJ0
eUluZGV4KCkpCkBAIC05MzYsMTIgKzg4NCwxMSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUpCiAgICAgUkVUVVJOKHByb3BlcnR5TmFtZSA/IHBy
b3BlcnR5TmFtZSA6IGpzTnVsbCgpKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Vu
dW1lcmF0b3JfZ2VuZXJpY19wbmFtZSkKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXh0X2dl
bmVyaWNfZW51bWVyYXRvcl9wbmFtZSkKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lPigpOwotICAgIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqPihHRVQoYnl0ZWNvZGUuZW51bWVyYXRvcikuanNWYWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICB1
aW50MzJfdCBpbmRleCA9IEdFVChieXRlY29kZS5pbmRleCkuanNWYWx1ZSgpLmFzVUludDMyKCk7
CisgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0ganNDYXN0PEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcio+KE9QKDIpLmpzVmFsdWUoKS5hc0NlbGwoKSk7CisgICAgdWlu
dDMyX3QgaW5kZXggPSBPUCgzKS5qc1ZhbHVlKCkuYXNVSW50MzIoKTsKIAogICAgIEpTU3RyaW5n
KiBwcm9wZXJ0eU5hbWUgPSBudWxscHRyOwogICAgIGlmIChlbnVtZXJhdG9yLT5lbmRTdHJ1Y3R1
cmVQcm9wZXJ0eUluZGV4KCkgPD0gaW5kZXggJiYgaW5kZXggPCBlbnVtZXJhdG9yLT5lbmRHZW5l
cmljUHJvcGVydHlJbmRleCgpKQpAQCAtOTUyLDggKzg5OSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUpCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfdG9faW5kZXhfc3RyaW5nKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcFRvSW5kZXhTdHJpbmc+KCk7Ci0gICAgUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgR0VUKGJ5dGVjb2RlLmluZGV4KS5qc1ZhbHVlKCkuYXNVSW50
MzIoKSkuc3RyaW5nKCkpKTsKKyAgICBSRVRVUk4oanNTdHJpbmcoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBPUCgyKS5qc1ZhbHVlKCkuYXNVSW50MzIoKSkuc3RyaW5nKCkpKTsKIH0KIAog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpCkBAIC05NzMs
MTEgKzkxOSwxMCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdW5yZWFjaGFibGUpCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAg
QkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRlTGV4aWNhbEVudmly
b25tZW50PigpOwotICAgIGludCBzY29wZVJlZyA9IGJ5dGVjb2RlLnNjb3BlLm9mZnNldCgpOwor
ICAgIGludCBzY29wZVJlZyA9IHBjWzJdLnUub3BlcmFuZDsKICAgICBKU1Njb3BlKiBjdXJyZW50
U2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAg
ICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBqc0Nhc3Q8U3ltYm9sVGFibGUqPihHRVRfQyhi
eXRlY29kZS5zeW1ib2xUYWJsZSkuanNWYWx1ZSgpKTsKLSAgICBKU1ZhbHVlIGluaXRpYWxWYWx1
ZSA9IEdFVF9DKGJ5dGVjb2RlLmluaXRpYWxWYWx1ZSkuanNWYWx1ZSgpOworICAgIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSA9IGpzQ2FzdDxTeW1ib2xUYWJsZSo+KE9QX0MoMykuanNWYWx1ZSgp
KTsKKyAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IE9QX0MoNCkuanNWYWx1ZSgpOwogICAgIEFT
U0VSVChpbml0aWFsVmFsdWUgPT0ganNVbmRlZmluZWQoKSB8fCBpbml0aWFsVmFsdWUgPT0ganNU
RFpWYWx1ZSgpKTsKICAgICBKU1Njb3BlKiBuZXdTY29wZSA9IEpTTGV4aWNhbEVudmlyb25tZW50
OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgY3VycmVudFNjb3BlLCBz
eW1ib2xUYWJsZSwgaW5pdGlhbFZhbHVlKTsKICAgICBSRVRVUk4obmV3U2NvcGUpOwpAQCAtOTg2
LDExICs5MzEsMTAgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vu
dmlyb25tZW50KQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSkKIHsK
ICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQdXNoV2l0aFNjb3Bl
PigpOwotICAgIEpTT2JqZWN0KiBuZXdTY29wZSA9IEdFVF9DKGJ5dGVjb2RlLm5ld1Njb3BlKS5q
c1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIG5ld1Njb3BlID0gT1BfQygz
KS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAg
ICBpbnQgc2NvcGVSZWcgPSBieXRlY29kZS5jdXJyZW50U2NvcGUub2Zmc2V0KCk7CisgICAgaW50
IHNjb3BlUmVnID0gcGNbMl0udS5vcGVyYW5kOwogICAgIEpTU2NvcGUqIGN1cnJlbnRTY29wZSA9
IGV4ZWMtPnVuY2hlY2tlZFIoc2NvcGVSZWcpLlJlZ2lzdGVyOjpzY29wZSgpOwogICAgIFJFVFVS
TihKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGN1
cnJlbnRTY29wZSwgbmV3U2NvcGUpKTsKIH0KQEAgLTk5OCw5ICs5NDIsOCBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQogewogICAgIEJF
R0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJlc29sdmVTY29wZUZvckhvaXN0
aW5nRnVuY0RlY2xJbkV2YWw+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihieXRlY29kZS5wcm9wZXJ0eSk7Ci0gICAgSlNTY29w
ZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKGJ5dGVjb2RlLnNjb3BlLm9mZnNldCgpKS5SZWdp
c3Rlcjo6c2NvcGUoKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNTY29wZSogc2NvcGUg
PSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CiAg
ICAgSlNWYWx1ZSByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZVNjb3BlRm9ySG9pc3Rp
bmdGdW5jRGVjbEluRXZhbChleGVjLCBzY29wZSwgaWRlbnQpOwogCiAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CkBAIC0xMDExLDE1ICs5NTQsMTMgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jl
c29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wUmVzb2x2ZVNjb3BlPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihieXRlY29kZS52YXIpOwotICAgIEpTU2NvcGUq
IHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihieXRlY29kZS5zY29wZS5vZmZzZXQoKSkuUmVnaXN0
ZXI6OnNjb3BlKCk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxv
Y2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTU2NvcGUqIHNjb3BlID0g
ZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOwogICAg
IEpTT2JqZWN0KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShleGVjLCBzY29wZSwg
aWRlbnQpOwogICAgIC8vIFByb3h5IGNhbiB0aHJvdyBhbiBlcnJvciBoZXJlLCBlLmcuIFByb3h5
IGluIHdpdGggc3RhdGVtZW50J3MgQHVuc2NvcGFibGVzLgogICAgIENIRUNLX0VYQ0VQVElPTigp
OwogCi0gICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5yZXNvbHZlVHlwZTsK
KyAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihw
Y1s0XS51Lm9wZXJhbmQpOwogCiAgICAgLy8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNj
b3BlIHJlZ2lzdGVyIHZhbHVlIGFsaXZlIGluIERGRy4KICAgICBBU1NFUlQocmVzb2x2ZVR5cGUg
IT0gTW9kdWxlVmFyKTsKQEAgLTEwMzIsMjAgKzk3MywyMCBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcmVzb2x2ZV9zY29wZSkKICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAg
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCkt
Pm1fbG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQ
cm9wZXJ0eSkKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEucmVzb2x2ZVR5cGUgPSBHbG9i
YWxQcm9wZXJ0eTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5vcGVyYW5kID0gR2xvYmFs
UHJvcGVydHk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5yZXNvbHZlVHlwZSA9IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsK
KyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5vcGVyYW5kID0gR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOwogCi0gICAgICAgICAgICAgICAgbWV0YWRhdGEuZ2xvYmFsT2Jq
ZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgICAgICAgICAgICAgIHBjWzZdLnUucG9pbnRlciA9IGds
b2JhbE9iamVjdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXNvbHZlZFNj
b3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4ocmVzb2x2ZWRTY29wZSk7CiAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAg
ICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSkKLSAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5yZXNvbHZlVHlwZSA9IEdsb2JhbExleGljYWxWYXI7CisgICAgICAg
ICAgICAgICAgcGNbNF0udS5vcGVyYW5kID0gR2xvYmFsTGV4aWNhbFZhcjsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5yZXNvbHZlVHlwZSA9IEdsb2JhbExleGlj
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotICAgICAgICAgICAgbWV0YWRhdGEuZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50OworICAgICAgICAg
ICAgICAgIHBjWzRdLnUub3BlcmFuZCA9IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOworICAgICAgICAgICAgcGNbNl0udS5wb2ludGVyID0gZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDU1LDExICs5OTYsMTAgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY3JlYXRlX3Jlc3QpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wQ3JlYXRlUmVzdD4oKTsKLSAgICB1bnNpZ25lZCBhcnJheVNpemUgPSBHRVRfQyhieXRl
Y29kZS5hcnJheVNpemUpLmpzVmFsdWUoKS5hc1VJbnQzMigpOworICAgIHVuc2lnbmVkIGFycmF5
U2l6ZSA9IE9QX0MoMikuanNWYWx1ZSgpLmFzVUludDMyKCk7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+cmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpOwot
ICAgIHVuc2lnbmVkIG51bVBhcmFtc1RvU2tpcCA9IGJ5dGVjb2RlLm51bVBhcmFtZXRlcnNUb1Nr
aXA7CisgICAgdW5zaWduZWQgbnVtUGFyYW1zVG9Ta2lwID0gcGNbM10udS51bnNpZ25lZFZhbHVl
OwogICAgIEpTVmFsdWUqIGFyZ3VtZW50c1RvQ29weVJlZ2lvbiA9IGV4ZWMtPmFkZHJlc3NPZkFy
Z3VtZW50c1N0YXJ0KCkgKyBudW1QYXJhbXNUb1NraXA7CiAgICAgUkVUVVJOKGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIHN0cnVjdHVyZSwgYXJndW1lbnRzVG9Db3B5UmVnaW9uLCBhcnJheVNpemUpKTsK
IH0KQEAgLTEwNjcsMzAgKzEwMDcsMjggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0
ZV9yZXN0KQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpCiB7
CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlJZFdpdGhU
aGlzPigpOwotICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIoYnl0ZWNvZGUucHJvcGVydHkpOwotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
R0VUX0MoYnl0ZWNvZGUuYmFzZSkuanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEdF
VF9DKGJ5dGVjb2RlLnRoaXNWYWx1ZSkuanNWYWx1ZSgpOworICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbNF0udS5vcGVyYW5kKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbCA9IE9QX0MoMykuanNWYWx1ZSgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNW
YWwsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsK
LSAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKKyAgICBSRVRVUk5fUFJPRklMRUQob3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcywgcmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9ieV92YWxfd2l0aF90aGlzKQogewogICAgIEJFR0lOKCk7CiAKLSAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wR2V0QnlWYWxXaXRoVGhpcz4oKTsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEdFVF9DKGJ5dGVjb2RlLmJhc2UpLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IEdFVF9DKGJ5dGVjb2RlLnRoaXNWYWx1ZSkuanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gR0VUX0MoYnl0ZWNvZGUucHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
T1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBPUF9DKDQpLmpzVmFs
dWUoKTsKIAogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5p
c1N0cmluZygpKSkgewogICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RH
ZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEF0b21p
Y1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+
dG9FeGlzdGluZ0F0b21pY1N0cmluZyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChKU1Zh
bHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBz
dHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbWljU3RyaW5nLmdldCgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9Q
Uk9GSUxFRChvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcywgcmVzdWx0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTEwOTksMjcgKzEwMzcsMjYgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQogICAgIGlmIChzdWJzY3JpcHQuaXNVSW50
MzIoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CiAgICAg
ICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCi0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQoYXNTdHJpbmcoYmFzZVZh
bHVlKS0+Z2V0SW5kZXgoZXhlYywgaSkpOworICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKG9w
X2dldF9ieV92YWxfd2l0aF90aGlzLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVj
LCBpKSk7CiAgICAgICAgIAotICAgICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChl
eGVjLCBpLCBzbG90KSk7CisgICAgICAgIFJFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsX3dp
dGhfdGhpcywgYmFzZVZhbHVlLmdldChleGVjLCBpLCBzbG90KSk7CiAgICAgfQogCiAgICAgYmFz
ZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOwog
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0
KGV4ZWMsIHByb3BlcnR5LCBzbG90KSk7CisgICAgUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92
YWxfd2l0aF90aGlzLCBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAK
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQogewogICAgIEJF
R0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFB1dEJ5SWRXaXRoVGhpcz4oKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLnByb3Bl
cnR5KTsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLmJhc2UpLmpzVmFs
dWUoKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWwgPSBHRVRfQyhieXRlY29kZS50aGlzVmFsdWUpLmpz
VmFsdWUoKTsKLSAgICBKU1ZhbHVlIHB1dFZhbHVlID0gR0VUX0MoYnl0ZWNvZGUudmFsdWUpLmpz
VmFsdWUoKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRp
ZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gT1BfQygxKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSBwdXRWYWx1ZSA9IE9QX0MoNCkuanNWYWx1ZSgpOwogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXNWYWwsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0
QnlJZENvbnRleHQoKSk7CiAgICAgYmFzZVZhbHVlLnB1dElubGluZShleGVjLCBpZGVudCwgcHV0
VmFsdWUsIHNsb3QpOwogICAgIEVORCgpOwpAQCAtMTEyOCwxMSArMTA2NSwxMCBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BQdXRCeVZhbFdpdGhUaGlzPigpOwotICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUuYmFzZSkuanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gR0VUX0MoYnl0ZWNvZGUudGhpc1ZhbHVlKS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1
ZSBzdWJzY3JpcHQgPSBHRVRfQyhieXRlY29kZS5wcm9wZXJ0eSkuanNWYWx1ZSgpOwotICAgIEpT
VmFsdWUgdmFsdWUgPSBHRVRfQyhieXRlY29kZS52YWx1ZSkuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IE9QX0MoMykuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBPUF9DKDQpLmpzVmFsdWUoKTsKICAgICAKICAg
ICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CkBAIC0xMTQ0LDExICsxMDgwLDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWZpbmVfZGF0YV9wcm9wZXJ0eSkKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BEZWZpbmVEYXRhUHJvcGVydHk+KCk7Ci0gICAgSlNPYmplY3QqIGJhc2UgPSBh
c09iamVjdChHRVRfQyhieXRlY29kZS5iYXNlKS5qc1ZhbHVlKCkpOwotICAgIEpTVmFsdWUgcHJv
cGVydHkgPSBHRVRfQyhieXRlY29kZS5wcm9wZXJ0eSkuanNWYWx1ZSgpOwotICAgIEpTVmFsdWUg
dmFsdWUgPSBHRVRfQyhieXRlY29kZS52YWx1ZSkuanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgYXR0
cmlidXRlcyA9IEdFVF9DKGJ5dGVjb2RlLmF0dHJpYnV0ZXMpLmpzVmFsdWUoKTsKKyAgICBKU09i
amVjdCogYmFzZSA9IGFzT2JqZWN0KE9QX0MoMSkuanNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHBy
b3BlcnR5ID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IE9QX0MoMyku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IE9QX0MoNCkuanNWYWx1ZSgpOwog
ICAgIEFTU0VSVChhdHRyaWJ1dGVzLmlzSW50MzIoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IHByb3BlcnR5LnRvUHJvcGVydHlLZXkoZXhlYyk7CkBAIC0xMTYyLDEyICsxMDk3LDExIEBA
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpCiB7CiAgICAgQkVHSU4o
KTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eT4o
KTsKLSAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KEdFVF9DKGJ5dGVjb2RlLmJhc2UpLmpz
VmFsdWUoKSk7Ci0gICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEdFVF9DKGJ5dGVjb2RlLnByb3BlcnR5
KS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBnZXR0ZXIgPSBHRVRfQyhieXRlY29kZS5nZXR0ZXIp
LmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHNldHRlciA9IEdFVF9DKGJ5dGVjb2RlLnNldHRlciku
anNWYWx1ZSgpOwotICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IEdFVF9DKGJ5dGVjb2RlLmF0dHJp
YnV0ZXMpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KE9QX0MoMSku
anNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gT1BfQygyKS5qc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSBnZXR0ZXIgPSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHNldHRl
ciA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IE9QX0MoNSku
anNWYWx1ZSgpOwogICAgIEFTU0VSVChhdHRyaWJ1dGVzLmlzSW50MzIoKSk7CiAKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LnRvUHJvcGVydHlLZXkoZXhlYyk7CkBAIC0xMTgxLDIz
ICsxMTE1LDIxIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJv
cGVydHkpCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9yKQogewog
ICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRocm93U3RhdGljRXJy
b3I+KCk7Ci0gICAgSlNWYWx1ZSBlcnJvck1lc3NhZ2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1l
c3NhZ2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGVycm9yTWVzc2FnZVZhbHVlID0gT1BfQygx
KS5qc1ZhbHVlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3JNZXNzYWdlVmFsdWUuaXNTdHJp
bmcoKSk7CiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGFzU3RyaW5nKGVycm9yTWVzc2FnZVZh
bHVlKS0+dmFsdWUoZXhlYyk7Ci0gICAgRXJyb3JUeXBlIGVycm9yVHlwZSA9IGJ5dGVjb2RlLmVy
cm9yVHlwZTsKKyAgICBFcnJvclR5cGUgZXJyb3JUeXBlID0gc3RhdGljX2Nhc3Q8RXJyb3JUeXBl
PihwY1syXS51LnVuc2lnbmVkVmFsdWUpOwogICAgIFRIUk9XKGNyZWF0ZUVycm9yKGV4ZWMsIGVy
cm9yVHlwZSwgZXJyb3JNZXNzYWdlKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfYXJyYXlfd2l0aF9zcHJlYWQpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wTmV3QXJyYXlXaXRoU3ByZWFkPigpOwotICAgIGludCBudW1JdGVtcyA9IGJ5
dGVjb2RlLmFyZ2M7CisgICAgaW50IG51bUl0ZW1zID0gcGNbM10udS5vcGVyYW5kOwogICAgIEFT
U0VSVChudW1JdGVtcyA+PSAwKTsKLSAgICBjb25zdCBCaXRWZWN0b3ImIGJpdFZlY3RvciA9IGV4
ZWMtPmNvZGVCbG9jaygpLT51bmxpbmtlZENvZGVCbG9jaygpLT5iaXRWZWN0b3IoYnl0ZWNvZGUu
Yml0VmVjdG9yKTsKKyAgICBjb25zdCBCaXRWZWN0b3ImIGJpdFZlY3RvciA9IGV4ZWMtPmNvZGVC
bG9jaygpLT51bmxpbmtlZENvZGVCbG9jaygpLT5iaXRWZWN0b3IocGNbNF0udS51bnNpZ25lZFZh
bHVlKTsKIAotICAgIEpTVmFsdWUqIHZhbHVlcyA9IGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkdF
VChieXRlY29kZS5hcmd2KSk7CisgICAgSlNWYWx1ZSogdmFsdWVzID0gYml0d2lzZV9jYXN0PEpT
VmFsdWUqPigmT1AoMikpOwogCiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
IGNoZWNrZWRBcnJheVNpemUgPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtSXRlbXM7
IGkrKykgewpAQCAtMTI0NiwxMiArMTE3OCwxMiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X2FycmF5X3dpdGhfc3ByZWFkKQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJh
eV9idWZmZXIpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
TmV3QXJyYXlCdWZmZXI+KCk7Ci0gICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5pc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChieXRlY29kZS5pbW11dGFibGVCdXR0ZXJmbHkub2Zmc2V0KCkpKTsK
LSAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogaW1tdXRhYmxlQnV0dGVyZmx5ID0gYml0d2lzZV9j
YXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oR0VUX0MoYnl0ZWNvZGUuaW1tdXRhYmxlQnV0dGVy
Zmx5KS5qc1ZhbHVlKCkuYXNDZWxsKCkpOwotICAgIGF1dG8mIHByb2ZpbGUgPSBieXRlY29kZS5t
ZXRhZGF0YShleGVjKS5hcnJheUFsbG9jYXRpb25Qcm9maWxlOworICAgIGF1dG8qIG5ld0FycmF5
QnVmZmVyID0gYml0d2lzZV9jYXN0PE9wTmV3QXJyYXlCdWZmZXIqPihwYyk7CisgICAgQVNTRVJU
KGV4ZWMtPmNvZGVCbG9jaygpLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChuZXdBcnJheUJ1ZmZl
ci0+aW1tdXRhYmxlQnV0dGVyZmx5KCkpKTsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogaW1t
dXRhYmxlQnV0dGVyZmx5ID0gYml0d2lzZV9jYXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oR0VU
X0MobmV3QXJyYXlCdWZmZXItPmltbXV0YWJsZUJ1dHRlcmZseSgpKS5qc1ZhbHVlKCkuYXNDZWxs
KCkpOworICAgIGF1dG8qIHByb2ZpbGUgPSBuZXdBcnJheUJ1ZmZlci0+cHJvZmlsZSgpOwogCi0g
ICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nTW9kZSA9IHByb2ZpbGUuc2VsZWN0SW5kZXhpbmdUeXBl
KCk7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nTW9kZSA9IHByb2ZpbGUtPnNlbGVjdEluZGV4
aW5nVHlwZSgpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
aW5kZXhpbmdNb2RlKTsKICAgICBBU1NFUlQoaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUpKTsK
ICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CkBAIC0xMjY3LDEz
ICsxMTk5LDEzIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKQog
ICAgICAgICAvLyBXZSBhbHNvIGNhbm5vdCBhbGxvY2F0ZSBhIG5ldyBidXR0ZXJmbHkgZnJvbSBj
b21waWxhdGlvbiB0aHJlYWRzIHNpbmNlIGl0J3MgaW52YWxpZCB0byBhbGxvY2F0ZSBjZWxscyBm
cm9tCiAgICAgICAgIC8vIGEgY29tcGlsYXRpb24gdGhyZWFkLgogICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOwotICAgICAgICBjb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXIoYnl0ZWNv
ZGUuaW1tdXRhYmxlQnV0dGVyZmx5Lm9mZnNldCgpKS5zZXQodm0sIGNvZGVCbG9jaywgaW1tdXRh
YmxlQnV0dGVyZmx5KTsKKyAgICAgICAgY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKG5ld0Fy
cmF5QnVmZmVyLT5pbW11dGFibGVCdXR0ZXJmbHkoKSkuc2V0KHZtLCBjb2RlQmxvY2ssIGltbXV0
YWJsZUJ1dHRlcmZseSk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgfQog
CiAgICAgSlNBcnJheSogcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjphbGxvY2F0ZU5ld0FycmF5
QnVmZmVyKHZtLCBzdHJ1Y3R1cmUsIGltbXV0YWJsZUJ1dHRlcmZseSk7CiAgICAgQVNTRVJUKGlz
Q29weU9uV3JpdGUocmVzdWx0LT5pbmRleGluZ01vZGUoKSkgfHwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5pc0hhdmluZ0FCYWRUaW1lKCkpOwotICAgIEFycmF5QWxsb2NhdGlvblByb2Zp
bGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKCZwcm9maWxlLCByZXN1bHQpOworICAgIEFycmF5
QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIHJlc3Vs
dCk7CiAgICAgUkVUVVJOKHJlc3VsdCk7CiB9CiAKQEAgLTEyODEsOCArMTIxMyw3IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpCiB7CiAgICAgQkVHSU4oKTsKIAotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BTcHJlYWQ+KCk7Ci0gICAgSlNWYWx1ZSBpdGVyYWJsZSA9IEdF
VF9DKGJ5dGVjb2RlLmFyZ3VtZW50KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBpdGVyYWJsZSA9
IE9QX0MoMikuanNWYWx1ZSgpOwogCiAgICAgaWYgKGl0ZXJhYmxlLmlzQ2VsbCgpICYmIGlzSlNB
cnJheShpdGVyYWJsZS5hc0NlbGwoKSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nh
c3Q8SlNBcnJheSo+KGl0ZXJhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNWNmYmY2OTBlZTk3ZWM4MjVjNGY0YzRjN2JmM2I3
MGY1OWYzZjhiYy4uZWIxMGZkNzAwOGQ2MDA3ODhlOGM1NDg5MzAxNjZiMDE5Zjc2Zjc2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAg
LTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJCeXRlY29kZVN0cnVj
dHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCkBAIC0xMTMsMTIgKzExMiwx
MSBAQCBpbmxpbmUgYm9vbCBvcEluQnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VW
YWwsIEpTVmFsdWUgcHJvcE5hbWUsIEFycmF5UAogfQogCiBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1
dFRvU2NvcGVHbG9iYWwoCi0gICAgRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgT3BQdXRUb1Njb3BlJiBieXRlY29kZSwgSlNPYmplY3QqIHNjb3BlLAotICAgIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRXhlY1N0YXRlKiBl
eGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIHBjLCBKU09iamVjdCogc2Nv
cGUsCisgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxz
LiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlk
bid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgotICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7Ci0gICAgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUgPSBtZXRhZGF0YS5nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CisgICAgUmVzb2x2ZVR5
cGUgcmVzb2x2ZVR5cGUgPSBnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAgICAgaWYgKHJlc29s
dmVUeXBlICE9IEdsb2JhbFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcyAKICAgICAgICAgJiYgcmVzb2x2ZVR5cGUgIT0gVW5yZXNv
bHZlZFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3MpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNywxNyArMTI1LDE4IEBAIGlu
bGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAgICAgaWYgKHNjb3BlLT5p
c0dsb2JhbE9iamVjdCgpKSB7CiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlw
ZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbFByb3BlcnR5IDog
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwogICAgICAgICAgICAgcmVzb2x2
ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsKKyAgICAgICAgICAgIGdldFB1dEluZm8gPSBHZXRQdXRJ
bmZvKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIGdldFB1dEluZm8u
aW5pdGlhbGl6YXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5nZXRQdXRJbmZv
ID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29s
dmVUeXBlLCBtZXRhZGF0YS5nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAg
ICAgICAgIHBjWzRdLnUub3BlcmFuZCA9IGdldFB1dEluZm8ub3BlcmFuZCgpOwogICAgICAgICB9
IGVsc2UgaWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAg
ICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4oc2NvcGUpOwogICAgICAgICAg
ICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVk
UHJvcGVydHkgPyBHbG9iYWxMZXhpY2FsVmFyIDogR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M7Ci0gICAgICAgICAgICBtZXRhZGF0YS5nZXRQdXRJbmZvID0gR2V0UHV0SW5m
byhtZXRhZGF0YS5nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRh
ZGF0YS5nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIHBjWzRd
LnUub3BlcmFuZCA9IEdldFB1dEluZm8oZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNv
bHZlVHlwZSwgZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkub3BlcmFuZCgpOwogICAg
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
IWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEud2F0Y2hwb2ludFNldCA9
IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm9wZXJhbmQgPSBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJp
YWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAgICBwY1s1XS51
LndhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgICAgICBwY1s2
XS51LnBvaW50ZXIgPSBzdGF0aWNfY2FzdDx2b2lkKj4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCkBAIC0xNjAsMzIgKzE1OSwzMiBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRv
U2NvcGVHbG9iYWwoCiAgICAgICAgIHNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5kaWRDYWNoZVByb3Bl
cnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogCiAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICBtZXRhZGF0
YS5zdHJ1Y3R1cmUuc2V0KHZtLCBjb2RlQmxvY2ssIHNjb3BlLT5zdHJ1Y3R1cmUodm0pKTsKLSAg
ICAgICAgbWV0YWRhdGEub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIHBj
WzVdLnUuc3RydWN0dXJlLnNldCh2bSwgY29kZUJsb2NrLCBzY29wZS0+c3RydWN0dXJlKHZtKSk7
CisgICAgICAgIHBjWzZdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgfQog
fQogCiBpbmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbCgKLSAgICBFeGVjU3Rh
dGUqIGV4ZWMsIFZNJiB2bSwgT3BHZXRGcm9tU2NvcGUmIGJ5dGVjb2RlLCBKU09iamVjdCogc2Nv
cGUsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIEluc3RydWN0aW9uKiBwYywgSlNPYmplY3QqIHNjb3BlLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewotICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7Ci0gICAgUmVzb2x2ZVR5cGUgcmVz
b2x2ZVR5cGUgPSBtZXRhZGF0YS5nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CisgICAgR2V0UHV0
SW5mbyBnZXRQdXRJbmZvKHBjWzRdLnUub3BlcmFuZCk7CisgICAgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUgPSBnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAKICAgICBpZiAocmVzb2x2ZVR5cGUg
PT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKICAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbE9i
amVjdCgpKSB7CiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29s
dmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbFByb3BlcnR5IDogR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBu
ZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBp
bi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2Nr
KCktPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5nZXRQdXRJbmZvID0gR2V0UHV0SW5m
byhtZXRhZGF0YS5nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRh
ZGF0YS5nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIHBjWzRd
LnUub3BlcmFuZCA9IEdldFB1dEluZm8oZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNv
bHZlVHlwZSwgZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkub3BlcmFuZCgpOwogICAg
ICAgICB9IGVsc2UgaWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CiAg
ICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4oc2NvcGUpOwogICAg
ICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJl
c29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhpY2FsVmFyIDogR2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3M7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgp
KTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKLSAgICAg
ICAgICAgIG1ldGFkYXRhLmdldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLmdldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLmdldFB1dEluZm8uaW5p
dGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgbWV0YWRhdGEud2F0Y2hwb2ludFNldCA9
IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm9wZXJhbmQgPSBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJp
YWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAgICBwY1s0XS51
Lm9wZXJhbmQgPSBHZXRQdXRJbmZvKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2
ZVR5cGUsIGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpLm9wZXJhbmQoKTsKKyAgICAg
ICAgICAgIHBjWzVdLnUud2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKKyAg
ICAgICAgICAgIHBjWzZdLnUucG9pbnRlciA9IHN0YXRpY19jYXN0PHZvaWQqPihnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTk4LDggKzE5Nyw4IEBAIGlubGluZSB2b2lkIHRyeUNh
Y2hlR2V0RnJvbVNjb3BlR2xvYmFsKAogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBzY29wZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5zdHJ1Y3R1cmUuc2V0KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0g
ICAgICAgICAgICAgICAgbWV0YWRhdGEub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Cisg
ICAgICAgICAgICAgICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KHZtLCBjb2RlQmxvY2ssIHN0cnVj
dHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNl0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGlu
Z1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAg
ICAgfQpAQCAtMjgyLDcgKzI4MSw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbjsKICNkZWZpbmUgU0xP
V19QQVRICiAgICAgCiAjZGVmaW5lIFNMT1dfUEFUSF9ERUNMKG5hbWUpIFwKLWV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIFNMT1dfUEFUSCBuYW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjKQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRI
IG5hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCiAgICAgCiAjZGVmaW5lIFNM
T1dfUEFUSF9ISURERU5fREVDTChuYW1lKSBcCiBTTE9XX1BBVEhfREVDTChuYW1lKSBXVEZfSU5U
RVJOQUwKQEAgLTM0Miw4ICszNDEsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9kaXJlY3RfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcik7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Vu
dW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV4dF9zdHJ1Y3R1cmVfZW51bWVyYXRvcl9wbmFtZSk7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25leHRfZ2VuZXJpY19lbnVtZXJhdG9yX3BuYW1lKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3VucmVhY2hhYmxlKTsKQEAgLTM2NCw2ICszNjMsNiBAQCBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NwcmVhZCk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwogCi11c2luZyBTbG93UGF0aEZ1bmN0aW9u
ID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1dfUEFUSCAqKShFeGVjU3RhdGUqLCBjb25zdCBJbnN0
cnVjdGlvbiopOwordXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQYXRoUmV0dXJuVHlwZShT
TE9XX1BBVEggKikoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25G
dXp6LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3Bw
CmluZGV4IDZhMTQ4NDUwZGZiNTkxNDhlMzdhZjkzMGQ5NjNhMmRhNmJiNTMwOGEuLjIzOGQ1YjVk
MzcwNzQ1YjAwYzcxYzViMjdkMWU2ZDU5ZDFjMTkzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3BwCkBAIC0zNiw3ICszNiw3IEBAIHN0YXRp
YyB1bnNpZ25lZCBzX251bWJlck9mRXhjZXB0aW9uRnV6ekNoZWNrczsKIHVuc2lnbmVkIG51bWJl
ck9mRXhjZXB0aW9uRnV6ekNoZWNrcygpIHsgcmV0dXJuIHNfbnVtYmVyT2ZFeGNlcHRpb25GdXp6
Q2hlY2tzOyB9CiAKIC8vIENhbGwgdGhpcyBvbmx5IGlmIHlvdSBrbm93IHRoYXQgZXhjZXB0aW9u
IGZ1enppbmcgaXMgZW5hYmxlZC4KLXZvaWQgZG9FeGNlcHRpb25GdXp6aW5nKEV4ZWNTdGF0ZSog
ZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIHdoZXJlLCBjb25zdCB2b2lkKiBy
ZXR1cm5QQykKK3ZvaWQgZG9FeGNlcHRpb25GdXp6aW5nKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dT
Y29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIHdoZXJlLCB2b2lkKiByZXR1cm5QQykKIHsKICAgICBW
TSYgdm0gPSBzY29wZS52bSgpOwogICAgIEFTU0VSVChPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
RnV6ei5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5oCmlu
ZGV4IGM2OTRiNTc2NmM0MGUxMjA5Yjc0NjcwNmZiNzI2MjhiNzc0ZTIxYjAuLmFhYjA3Y2ZiNWRm
ZGVjYjkzZTdiYTRjOTVkZDczMmJiNzA4NGE2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmgKQEAgLTMzLDEwICszMywxMCBAQCBjbGFzcyBFeGVj
U3RhdGU7CiBjbGFzcyBUaHJvd1Njb3BlOwogCiAvLyBDYWxsIHRoaXMgb25seSBpZiB5b3Uga25v
dyB0aGF0IGV4Y2VwdGlvbiBmdXp6aW5nIGlzIGVuYWJsZWQuCi12b2lkIGRvRXhjZXB0aW9uRnV6
emluZyhFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogd2hlcmUsIGNvbnN0IHZv
aWQqIHJldHVyblBDKTsKK3ZvaWQgZG9FeGNlcHRpb25GdXp6aW5nKEV4ZWNTdGF0ZSosIFRocm93
U2NvcGUmLCBjb25zdCBjaGFyKiB3aGVyZSwgdm9pZCogcmV0dXJuUEMpOwogCiAvLyBUaGlzIGlz
IHdoYXQgeW91IHNob3VsZCBjYWxsIGlmIHlvdSBkb24ndCBrbm93IGlmIGZ1enppbmcgaXMgZW5h
YmxlZC4KLUFMV0FZU19JTkxJTkUgdm9pZCBkb0V4Y2VwdGlvbkZ1enppbmdJZkVuYWJsZWQoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogd2hlcmUsIGNvbnN0
IHZvaWQqIHJldHVyblBDKQorQUxXQVlTX0lOTElORSB2b2lkIGRvRXhjZXB0aW9uRnV6emluZ0lm
RW5hYmxlZChFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiB3
aGVyZSwgdm9pZCogcmV0dXJuUEMpCiB7CiAgICAgaWYgKExJS0VMWSghT3B0aW9uczo6dXNlRXhj
ZXB0aW9uRnV6eigpKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXRQdXRJbmZvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZl
NzFlZDg0OGE3YzU3YmNlODlmOTI0NDgyOTIxZTM5NTg0MGM4Yy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXRQdXRJbmZvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiR2V0UHV0SW5mby5oIgotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lkIEdldFB1dEluZm86OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQob3BlcmFuZCgpLCAiPCIsIHJlc29sdmVNb2Rl
KCksICJ8IiwgcmVzb2x2ZVR5cGUoKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGUoKSwgIj4iKTsK
LQotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlJlc29sdmVNb2RlIG1vZGUpCi17Ci0g
ICAgb3V0LnByaW50KHJlc29sdmVNb2RlTmFtZShtb2RlKSk7Ci19Ci0KLXZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlJlc29sdmVUeXBlIHR5cGUpCi17Ci0gICAgb3V0
LnByaW50KHJlc29sdmVUeXBlTmFtZSh0eXBlKSk7Ci19Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQotewotICAgIG91
dC5wcmludChpbml0aWFsaXphdGlvbk1vZGVOYW1lKG1vZGUpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKaW5kZXgg
OWYzODEyNjU1NThlZmI5NDVmZDAyMWMzOTA0MjAzYTE2MTdkZWJjMS4uYjdhY2IxODM1N2ZlNzg4
ZDBmMTIyYTUyNDc2MGQ4ZmMyYmExYjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldFB1dEluZm8uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMjMsOSArMjIzLDcgQEAgcHVibGljOgogICAgIFJlc29sdmVUeXBl
IHJlc29sdmVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KG1f
b3BlcmFuZCAmIHR5cGVCaXRzKTsgfQogICAgIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXph
dGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbml0aWFsaXphdGlvbk1vZGU+
KChtX29wZXJhbmQgJiBpbml0aWFsaXphdGlvbkJpdHMpID4+IGluaXRpYWxpemF0aW9uU2hpZnQp
OyB9CiAgICAgUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxSZXNvbHZlTW9kZT4oKG1fb3BlcmFuZCAmIG1vZGVCaXRzKSA+PiBtb2RlU2hpZnQpOyB9
Ci0gICAgdW5zaWduZWQgb3BlcmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQotCi0g
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdW5zaWduZWQgb3BlcmFuZCgp
IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQogCiBwcml2YXRlOgogICAgIE9wZXJhbmQgbV9vcGVyYW5k
OwpAQCAtMjM0LDEzICsyMzIsMyBAQCBwcml2YXRlOgogZW51bSBHZXRPclB1dCB7IEdldCwgUHV0
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJp
bnRTdHJlYW07Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UmVzb2x2
ZU1vZGUpOwotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpSZXNvbHZlVHlw
ZSk7Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkluaXRpYWxpemF0aW9u
TW9kZSk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NQb2lzb24uaAppbmRleCAxZGI0YWM2ZDU0NjMwMTlkOWZjNmZhMTE4ODMxMDdjODUxZGE4
NDBkLi5jZmI1MmNkNmVlNWI1MWYxZDliZmNlOTE4YTYxYmE4ZGY4NDMzMmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaApAQCAtNjksNyArNjksNyBAQCBGT1Jf
RUFDSF9KU0NfUE9JU09OKERFQ0xBUkVfUE9JU09OKQogc3RydWN0IENsYXNzSW5mbzsKIAogdXNp
bmcgUG9pc29uZWRDbGFzc0luZm9QdHIgPSBQb2lzb25lZDxHbG9iYWxEYXRhUG9pc29uLCBjb25z
dCBDbGFzc0luZm8qPjsKLXVzaW5nIFBvaXNvbmVkTWFzbVB0ciA9IFBvaXNvbmVkPEpJVENvZGVQ
b2lzb24sIGNvbnN0IHZvaWQqPjsKK3VzaW5nIFBvaXNvbmVkTWFzbVB0ciA9IFBvaXNvbmVkPEpJ
VENvZGVQb2lzb24sIHZvaWQqPjsKIAogdm9pZCBpbml0aWFsaXplUG9pc29uKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3MDRhMTZmOTA1MmVmMjY3YmZlYTBjOTRkMWIxMzE5MmE5YTkzZjc0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJKU1R5cGUuaCIKLQotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLSNkZWZpbmUg
Q0FTRShfX3R5cGUpIFwKLSAgICBjYXNlIEpTQzo6X190eXBlOiBcCi0gICAgICAgIG91dC5wcmlu
dCgjX190eXBlKTsgXAotICAgICAgICByZXR1cm47Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewot
ICAgIENBU0UoQ2VsbFR5cGUpCi0gICAgQ0FTRShTdHJpbmdUeXBlKQotICAgIENBU0UoU3ltYm9s
VHlwZSkKLSAgICBDQVNFKEJpZ0ludFR5cGUpCi0gICAgQ0FTRShDdXN0b21HZXR0ZXJTZXR0ZXJU
eXBlKQotICAgIENBU0UoQVBJVmFsdWVXcmFwcGVyVHlwZSkKLSAgICBDQVNFKFByb2dyYW1FeGVj
dXRhYmxlVHlwZSkKLSAgICBDQVNFKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSkKLSAgICBD
QVNFKEV2YWxFeGVjdXRhYmxlVHlwZSkKLSAgICBDQVNFKEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUp
Ci0gICAgQ0FTRShVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUpCi0gICAgQ0FTRShVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tUeXBlKQotICAgIENBU0UoVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrVHlwZSkKLSAgICBDQVNFKFVubGlua2VkRXZhbENvZGVCbG9ja1R5cGUpCi0gICAg
Q0FTRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrVHlwZSkKLSAgICBDQVNFKENvZGVCbG9ja1R5
cGUpCi0gICAgQ0FTRShKU0ZpeGVkQXJyYXlUeXBlKQotICAgIENBU0UoSlNJbW11dGFibGVCdXR0
ZXJmbHlUeXBlKQotICAgIENBU0UoSlNTb3VyY2VDb2RlVHlwZSkKLSAgICBDQVNFKEpTU2NyaXB0
RmV0Y2hlclR5cGUpCi0gICAgQ0FTRShKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1R5cGUpCi0gICAg
Q0FTRShPYmplY3RUeXBlKQotICAgIENBU0UoRmluYWxPYmplY3RUeXBlKQotICAgIENBU0UoSlND
YWxsZWVUeXBlKQotICAgIENBU0UoSlNGdW5jdGlvblR5cGUpCi0gICAgQ0FTRShJbnRlcm5hbEZ1
bmN0aW9uVHlwZSkKLSAgICBDQVNFKE51bWJlck9iamVjdFR5cGUpCi0gICAgQ0FTRShFcnJvcklu
c3RhbmNlVHlwZSkKLSAgICBDQVNFKFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKQotICAgIENBU0Uo
SW1wdXJlUHJveHlUeXBlKQotICAgIENBU0UoRGlyZWN0QXJndW1lbnRzVHlwZSkKLSAgICBDQVNF
KFNjb3BlZEFyZ3VtZW50c1R5cGUpCi0gICAgQ0FTRShDbG9uZWRBcmd1bWVudHNUeXBlKQotICAg
IENBU0UoQXJyYXlUeXBlKQotICAgIENBU0UoRGVyaXZlZEFycmF5VHlwZSkKLSAgICBDQVNFKEFy
cmF5QnVmZmVyVHlwZSkKLSAgICBDQVNFKEludDhBcnJheVR5cGUpCi0gICAgQ0FTRShVaW50OEFy
cmF5VHlwZSkKLSAgICBDQVNFKFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSkKLSAgICBDQVNFKEludDE2
QXJyYXlUeXBlKQotICAgIENBU0UoVWludDE2QXJyYXlUeXBlKQotICAgIENBU0UoSW50MzJBcnJh
eVR5cGUpCi0gICAgQ0FTRShVaW50MzJBcnJheVR5cGUpCi0gICAgQ0FTRShGbG9hdDMyQXJyYXlU
eXBlKQotICAgIENBU0UoRmxvYXQ2NEFycmF5VHlwZSkKLSAgICBDQVNFKERhdGFWaWV3VHlwZSkK
LSAgICBDQVNFKEdldHRlclNldHRlclR5cGUpCi0gICAgQ0FTRShHbG9iYWxPYmplY3RUeXBlKQot
ICAgIENBU0UoR2xvYmFsTGV4aWNhbEVudmlyb25tZW50VHlwZSkKLSAgICBDQVNFKExleGljYWxF
bnZpcm9ubWVudFR5cGUpCi0gICAgQ0FTRShNb2R1bGVFbnZpcm9ubWVudFR5cGUpCi0gICAgQ0FT
RShTdHJpY3RFdmFsQWN0aXZhdGlvblR5cGUpCi0gICAgQ0FTRShXaXRoU2NvcGVUeXBlKQotICAg
IENBU0UoUmVnRXhwT2JqZWN0VHlwZSkKLSAgICBDQVNFKFByb3h5T2JqZWN0VHlwZSkKLSAgICBD
QVNFKEpTTWFwVHlwZSkKLSAgICBDQVNFKEpTU2V0VHlwZSkKLSAgICBDQVNFKEpTV2Vha01hcFR5
cGUpCi0gICAgQ0FTRShKU1dlYWtTZXRUeXBlKQotICAgIENBU0UoV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlVHlwZSkKLSAgICBDQVNFKE1heEpTVHlwZSkKLSAgICB9Ci19Ci0KLSN1bmRlZiBDQVNFCi0K
LX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApp
bmRleCAzYWY3NjhiYTRkODJjMmNkNWMyYTEyODQyMTA4YTk4YjkxZTUyMmQ3Li5hOGE1MGNjYmI4
MTM4NzkxN2UzMTVlZTAyZGJlOTE3M2RlZDAzY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaApAQCAtMTMxLDExICsxMzEsMyBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihK
U1R5cGUpID09IHNpemVvZih1aW50OF90KSwgInNpemVvZihKU1R5cGUpIGlzIG9uZSBieXRlLiIp
Owogc3RhdGljX2Fzc2VydChMYXN0SlNDT2JqZWN0VHlwZSA8IDEyOCwgIlRoZSBoaWdoZXN0IGJp
dCBpcyByZXNlcnZlZCBmb3IgZW1iZWRkZXIncyBleHRlbnNpb24uIik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6SlNUeXBlKTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJv
ZmlsZXIuY3BwCmluZGV4IGUyYTczOTNlZGE4OGUxMWE4MmVmNzczNTE1OTc4MDI1YjQ3MDczZjku
LjI4NDhhZTE4YjQ3MWIyZDk4YjBiOTA1ZWQwMjYxZDlkZTNkOWExYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC03NjAs
NyArNzYwLDcgQEAgU3RyaW5nIFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OmRpc3BsYXlO
YW1lKFZNJiB2bSkKICAgICBpZiAoZnJhbWVUeXBlID09IEZyYW1lVHlwZTo6VW5rbm93biB8fCBm
cmFtZVR5cGUgPT0gRnJhbWVUeXBlOjpDKSB7CiAjaWYgSEFWRShETEFERFIpCiAgICAgICAgIGlm
IChmcmFtZVR5cGUgPT0gRnJhbWVUeXBlOjpDKSB7Ci0gICAgICAgICAgICBhdXRvIGRlbWFuZ2xl
ZCA9IFdURjo6U3RhY2tUcmFjZTo6ZGVtYW5nbGUoY29uc3RfY2FzdDx2b2lkKj4oY0NvZGVQQykp
OworICAgICAgICAgICAgYXV0byBkZW1hbmdsZWQgPSBXVEY6OlN0YWNrVHJhY2U6OmRlbWFuZ2xl
KGNDb2RlUEMpOwogICAgICAgICAgICAgaWYgKGRlbWFuZ2xlZCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpID8gZGVtYW5nbGVkLT5kZW1h
bmdsZWROYW1lKCkgOiBkZW1hbmdsZWQtPm1hbmdsZWROYW1lKCkpOwogICAgICAgICAgICAgV1RG
OjpkYXRhTG9nKCJjb3VsZG4ndCBnZXQgYSBuYW1lIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmgKaW5kZXggMzJhMWI0OGEwYjBiZTY1OTE0
MTBkOTY2YzUyYzhhOTY4MjFlYTNmMC4uMjAxMjAwZmEyNDBjYjE5MDBiNTJjMGY0ODdkZGRhZmRj
MDFjZTY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxp
bmdQcm9maWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuaApAQCAtNTMsMTMgKzUzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgY2Fs
bFNpdGVJbmRleChjYWxsU2l0ZUluZGV4KQogICAgICAgICB7IH0KIAotICAgICAgICBVbnByb2Nl
c3NlZFN0YWNrRnJhbWUoY29uc3Qgdm9pZCogcGMpCisgICAgICAgIFVucHJvY2Vzc2VkU3RhY2tG
cmFtZSh2b2lkKiBwYykKICAgICAgICAgICAgIDogY0NvZGVQQyhwYykKICAgICAgICAgeyB9CiAK
ICAgICAgICAgVW5wcm9jZXNzZWRTdGFja0ZyYW1lKCkgPSBkZWZhdWx0OwogCi0gICAgICAgIGNv
bnN0IHZvaWQqIGNDb2RlUEMgeyBudWxscHRyIH07CisgICAgICAgIHZvaWQqIGNDb2RlUEMgeyBu
dWxscHRyIH07CiAgICAgICAgIENhbGxlZUJpdHMgdW52ZXJpZmllZENhbGxlZTsKICAgICAgICAg
Q29kZUJsb2NrKiB2ZXJpZmllZENvZGVCbG9jayB7IG51bGxwdHIgfTsKICAgICAgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4OwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHsgfQogCiAgICAgICAgIEZyYW1lVHlwZSBmcmFtZVR5cGUgeyBGcmFtZVR5cGU6OlVua25vd24g
fTsKLSAgICAgICAgY29uc3Qgdm9pZCogY0NvZGVQQyB7IG51bGxwdHIgfTsKKyAgICAgICAgdm9p
ZCogY0NvZGVQQyB7IG51bGxwdHIgfTsKICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUgeyBudWxscHRyIH07CiAgICAgICAgIEpTT2JqZWN0KiBjYWxsZWUgeyBudWxscHRyIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nsb3dQYXRoUmV0dXJu
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhSZXR1cm5UeXBl
LmgKaW5kZXggYmUxNjE1MzQ4NGRkNGRhMDQzMzdkODExMDRlMDIzNjRlMTJlNzlkMi4uYzA3Y2Mx
OTRkMThkOTRjNDg0NDA1MTAyMjA0ODE2NTQ1YzM3MmViMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhSZXR1cm5UeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhSZXR1cm5UeXBlLmgKQEAgLTQwLDcgKzQwLDcg
QEAgc3RydWN0IFNsb3dQYXRoUmV0dXJuVHlwZSB7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2Yo
U2xvd1BhdGhSZXR1cm5UeXBlKSA+PSBzaXplb2Yodm9pZCopICogMiwgIlNsb3dQYXRoUmV0dXJu
VHlwZSBzaG91bGQgZml0IGluIHR3byBtYWNoaW5lIHJlZ2lzdGVycyIpOwogCi1pbmxpbmUgU2xv
d1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBi
KQoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBlbmNvZGVSZXN1bHQodm9pZCogYSwgdm9pZCog
YikKIHsKICAgICBTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0OwogICAgIHJlc3VsdC5hID0gcmVp
bnRlcnByZXRfY2FzdDxDUFVSZWdpc3Rlcj4oYSk7CkBAIC00OCw3ICs0OCw3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQq
IGIpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNs
b3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIGNvbnN0IHZvaWQqJiBhLCBjb25zdCB2b2lkKiYgYikK
K2lubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lk
KiYgYSwgdm9pZComIGIpCiB7CiAgICAgYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlc3Vs
dC5hKTsKICAgICBiID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVzdWx0LmIpOwpAQCAtNTks
MTMgKzU5LDEzIEBAIHR5cGVkZWYgaW50NjRfdCBTbG93UGF0aFJldHVyblR5cGU7CiAKIHR5cGVk
ZWYgdW5pb24gewogICAgIHN0cnVjdCB7Ci0gICAgICAgIGNvbnN0IHZvaWQqIGE7Ci0gICAgICAg
IGNvbnN0IHZvaWQqIGI7CisgICAgICAgIHZvaWQqIGE7CisgICAgICAgIHZvaWQqIGI7CiAgICAg
fSBwYWlyOwogICAgIGludDY0X3QgaTsKIH0gU2xvd1BhdGhSZXR1cm5UeXBlRW5jb2Rpbmc7CiAK
LWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KGNvbnN0IHZvaWQqIGEsIGNv
bnN0IHZvaWQqIGIpCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lk
KiBhLCB2b2lkKiBiKQogewogICAgIFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nIHU7CiAgICAg
dS5wYWlyLmEgPSBhOwpAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IGVuY29kZVJlc3VsdChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQogICAgIHJldHVybiB1
Lmk7CiB9CiAKLWlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVz
dWx0LCBjb25zdCB2b2lkKiYgYSwgY29uc3Qgdm9pZComIGIpCitpbmxpbmUgdm9pZCBkZWNvZGVS
ZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQqJiBiKQogewog
ICAgIFNsb3dQYXRoUmV0dXJuVHlwZUVuY29kaW5nIHU7CiAgICAgdS5pID0gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYzAzNDk4ZWU2MTQ2YWRhODAyYTZlZTliNWM4
MmY0ZDMwNDhjNzExNS4uNWNhY2NjNTcxNTllYzMyNzQ5ZTU1MmIzNzg2ODE0ZjY3ZDEwODk0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC03NDUsNyArNzQ1LDcgQEAgcHVibGlj
OgogICAgIEV4ZWNTdGF0ZSogbmV3Q2FsbEZyYW1lUmV0dXJuVmFsdWU7CiAgICAgRXhlY1N0YXRl
KiBjYWxsRnJhbWVGb3JDYXRjaDsKICAgICB2b2lkKiB0YXJnZXRNYWNoaW5lUENGb3JUaHJvdzsK
LSAgICBjb25zdCBJbnN0cnVjdGlvbiogdGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93OworICAg
IEluc3RydWN0aW9uKiB0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3c7CiAgICAgdWludDMyX3Qg
b3NyRXhpdEluZGV4OwogICAgIHZvaWQqIG9zckV4aXRKdW1wRGVzdGluYXRpb247CiAgICAgYm9v
bCBpc0V4ZWN1dGluZ0luUmVnRXhwSklUIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XYXRjaGRvZy5oCmluZGV4IGNjOGY5MWJjY2Y1N2YxNzBiMWUxNjFkNTA0YTkxOGJi
YjVlN2QwNGEuLjk2M2EyODcyMGVlMDNkMjc3ZjEzMTlkNjRmZTA2ZDAxNjY1ODAyYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaApAQCAtMjYsNyArMjYsNiBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9Nb25v
dG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5kZXggZDc3M2Q4NTVmZmMyZTAx
NTQ4ZWNmNmRhYThjZDhkNTU1OTFjOGM5Ni4uNjNkZGU4MzgyNDllNTQzNzZmODFmMTRkYWQ4OTk2
YWJjZTgwYzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBW
ZXJpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmll
ci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJI
ZWFwVmVyaWZpZXIuaCIKIAotI2luY2x1ZGUgIkNvZGVCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCA1ZmRi
NTkyOGY4N2E2YTVmZmQ1MmNkNDBjMmRlMTgzZjRiOGRjZjI4Li5kZjBiNzFiY2UzOWQxZGU5ZThj
MTdiZjMzYzk5ZWM3MmZkZTQyOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJk
LmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0xNDQsMzkgKzE0NCwyNCBAQCB0
ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVjdGVkID0gc3RkOjpleHBlcmltZW50YWw6OnVu
ZXhwZWN0ZWQ8RT47CiAvLyB9OwogI2RlZmluZSBXVEZfTEFaWV9KT0lOX1VOTEFaRShBLCBCKSBB
IyNCCiAjZGVmaW5lIFdURl9MQVpZX0pPSU4oQSwgQikgV1RGX0xBWllfSk9JTl9VTkxBWkUoQSwg
QikKLSNkZWZpbmUgV1RGX0xBWllfQVJHVU1FTlRfTlVNQkVSKF8xLCBfMiwgXzMsIF80LCBfNSwg
XzYsIF83LCBfOCwgTiwgLi4uKSBOCi0jZGVmaW5lIFdURl9MQVpZX0FVR01FTlQoLi4uKSB1bnVz
ZWQsIF9fVkFfQVJHU19fCi0jZGVmaW5lIFdURl9MQVpZX0VYUEFORCh4KSB4Ci0jZGVmaW5lIFdU
Rl9MQVpZX05VTV9BUkdTXyguLi4pIFdURl9MQVpZX0VYUEFORChXVEZfTEFaWV9BUkdVTUVOVF9O
VU1CRVIoX19WQV9BUkdTX18sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApKQotI2RlZmluZSBXVEZf
TEFaWV9OVU1fQVJHUyguLi4pIFdURl9MQVpZX05VTV9BUkdTXyhXVEZfTEFaWV9BVUdNRU5UKF9f
VkFfQVJHU19fKSkKKyNkZWZpbmUgV1RGX0xBWllfQVJHVU1FTlRfTlVNQkVSKF8xLCBfMiwgXzMs
IF80LCBfNSwgXzYsIF83LCBOLCAuLi4pIE4KKyNkZWZpbmUgV1RGX0xBWllfUkVWRVJTRV9TRVFV
RU5DRSgpIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAKKyNkZWZpbmUgV1RGX0xBWllfTlVNX0FSR1Nf
KC4uLikgV1RGX0xBWllfQVJHVU1FTlRfTlVNQkVSKF9fVkFfQVJHU19fKQorI2RlZmluZSBXVEZf
TEFaWV9OVU1fQVJHUyguLi4pIFdURl9MQVpZX05VTV9BUkdTXyhfX1ZBX0FSR1NfXywgV1RGX0xB
WllfUkVWRVJTRV9TRVFVRU5DRSgpKQogI2RlZmluZSBXVEZfTEFaWV9GT1JfRUFDSF9URVJNKEYs
IC4uLikgXAogICAgIFdURl9MQVpZX0pPSU4oV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8sIFdURl9M
QVpZX05VTV9BUkdTKF9fVkFfQVJHU19fKSkoRiwgKF9fVkFfQVJHU19fKSkKICNkZWZpbmUgV1RG
X0xBWllfRklSU1QoXzEsIC4uLikgXzEKICNkZWZpbmUgV1RGX0xBWllfUkVTVChfMSwgLi4uKSAo
X19WQV9BUkdTX18pCi0jZGVmaW5lIFdURl9MQVpZX1JFU1RfKF8xLCAuLi4pIF9fVkFfQVJHU19f
Ci0jZGVmaW5lIFdURl9MQVpZX0NBTEwoRiwgQVJHKSBGKEFSRykKICNkZWZpbmUgV1RGX0xBWllf
Rk9SX0VBQ0hfVEVSTV8wKC4uLikKLSNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8xKEYs
IEFSR1MpIFdURl9MQVpZX0NBTEwoRiwgV1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9S
X0VBQ0hfVEVSTV8wKEYsIFdURl9MQVpZX1JFU1QgQVJHUykKLSNkZWZpbmUgV1RGX0xBWllfRk9S
X0VBQ0hfVEVSTV8yKEYsIEFSR1MpIFdURl9MQVpZX0NBTEwoRiwgV1RGX0xBWllfRklSU1QgQVJH
UykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8xKEYsIFdURl9MQVpZX1JFU1QgQVJHUykKLSNkZWZp
bmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8zKEYsIEFSR1MpIFdURl9MQVpZX0NBTEwoRiwgV1RG
X0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8yKEYsIFdURl9MQVpZX1JF
U1QgQVJHUykKLSNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV80KEYsIEFSR1MpIFdURl9M
QVpZX0NBTEwoRiwgV1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8z
KEYsIFdURl9MQVpZX1JFU1QgQVJHUykKLSNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV81
KEYsIEFSR1MpIFdURl9MQVpZX0NBTEwoRiwgV1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllf
Rk9SX0VBQ0hfVEVSTV80KEYsIFdURl9MQVpZX1JFU1QgQVJHUykKLSNkZWZpbmUgV1RGX0xBWllf
Rk9SX0VBQ0hfVEVSTV82KEYsIEFSR1MpIFdURl9MQVpZX0NBTEwoRiwgV1RGX0xBWllfRklSU1Qg
QVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV81KEYsIFdURl9MQVpZX1JFU1QgQVJHUykKLSNk
ZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV83KEYsIEFSR1MpIFdURl9MQVpZX0NBTEwoRiwg
V1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV82KEYsIFdURl9MQVpZ
X1JFU1QgQVJHUykKKyNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8xKEYsIEFSR1MpIEYo
V1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8wKEYsIFdURl9MQVpZ
X1JFU1QgQVJHUykKKyNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8yKEYsIEFSR1MpIEYo
V1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8xKEYsIFdURl9MQVpZ
X1JFU1QgQVJHUykKKyNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8zKEYsIEFSR1MpIEYo
V1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8yKEYsIFdURl9MQVpZ
X1JFU1QgQVJHUykKKyNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV80KEYsIEFSR1MpIEYo
V1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV8zKEYsIFdURl9MQVpZ
X1JFU1QgQVJHUykKKyNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV81KEYsIEFSR1MpIEYo
V1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV80KEYsIFdURl9MQVpZ
X1JFU1QgQVJHUykKKyNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV82KEYsIEFSR1MpIEYo
V1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV81KEYsIFdURl9MQVpZ
X1JFU1QgQVJHUykKKyNkZWZpbmUgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV83KEYsIEFSR1MpIEYo
V1RGX0xBWllfRklSU1QgQVJHUykgV1RGX0xBWllfRk9SX0VBQ0hfVEVSTV82KEYsIFdURl9MQVpZ
X1JFU1QgQVJHUykKICNkZWZpbmUgV1RGX0xBWllfREVDTEFSRV9BTElBU19BTkRfVFlQRShBTElB
U19BTkRfVFlQRSkgdHlwZW5hbWUgQUxJQVNfQU5EX1RZUEUsCiAjZGVmaW5lIFdURl9MQVpZX0lO
U1RBTlRJQVRFKC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIHRlbXBsYXRlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICBXVEZfTEFaWV9GT1JfRUFDSF9URVJNKFdURl9MQVpZX0RF
Q0xBUkVfQUxJQVNfQU5EX1RZUEUsIF9fVkFfQVJHU19fKSBcCiAgICAgdHlwZW5hbWUgPSB2b2lk
PgotCi0jZGVmaW5lIFdURl9MQVpZX0hBU19SRVNUXzAoLi4uKQotI2RlZmluZSBXVEZfTEFaWV9I
QVNfUkVTVF8xKC4uLikKLSNkZWZpbmUgV1RGX0xBWllfSEFTX1JFU1RfMiBXVEZfTEFaWV9FWFBB
TkQKLSNkZWZpbmUgV1RGX0xBWllfSEFTX1JFU1RfMyBXVEZfTEFaWV9FWFBBTkQKLSNkZWZpbmUg
V1RGX0xBWllfSEFTX1JFU1RfNCBXVEZfTEFaWV9FWFBBTkQKLSNkZWZpbmUgV1RGX0xBWllfSEFT
X1JFU1RfNSBXVEZfTEFaWV9FWFBBTkQKLSNkZWZpbmUgV1RGX0xBWllfSEFTX1JFU1RfNiBXVEZf
TEFaWV9FWFBBTkQKLSNkZWZpbmUgV1RGX0xBWllfSEFTX1JFU1RfNyBXVEZfTEFaWV9FWFBBTkQK
LSNkZWZpbmUgV1RGX0xBWllfSEFTX1JFU1RfOCBXVEZfTEFaWV9FWFBBTkQKLSNkZWZpbmUgV1RG
X0xBWllfSEFTX1JFU1QoLi4uKSBcCi0gICAgV1RGX0xBWllfSk9JTihXVEZfTEFaWV9IQVNfUkVT
VF8sIFdURl9MQVpZX05VTV9BUkdTKF9fVkFfQVJHU19fKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGZhNzNj
YTQ5NDlmZjM0Y2EyZWE0MTNhZDJmOTBlNDZhNjY2NjMyYmIuLjQ2N2I4ZjhlYmM3OTk1YTI3NGM4
N2E1MGY5N2UyNGZjNzNmYjEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNzUyLDE5ICs3NTIsMjMgQEAK
ICNlbmRpZgogI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVT
RV9KU1ZBTFVFMzJfNjQpICovCiAKLS8qIFRoZSBKSVQgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9u
IGFsbCB4ODYtNjQgJiBBUk02NCBwbGF0Zm9ybXMuICovCisvKiBUaGUgSklUIGlzIGVuYWJsZWQg
YnkgZGVmYXVsdCBvbiBhbGwgeDg2LCB4ODYtNjQsIEFSTSAmIE1JUFMgcGxhdGZvcm1zIGV4Y2Vw
dCBBUk12N2suICovCiAjaWYgIWRlZmluZWQoRU5BQkxFX0pJVCkgXAotICAgICYmIChDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpKSBcCisgICAgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8
IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSBcCiAgICAgJiYgIUNQVShBUFBM
RV9BUk1WN0spCiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKLS8qIEZvcmNlIENfTE9P
UCBmb3IgMzItYml0IGJ1aWxkcy4gKi8KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQorLyogQ29jb2Eg
cG9ydHMgc2hvdWxkIG5vdCB1c2UgdGhlIGppdCBvbiAzMi1iaXQgQVJNIENQVXMuICovCisjaWYg
UExBVEZPUk0oQ09DT0EpICYmIChDUFUoQVJNKSB8fCBDUFUoQVBQTEVfQVJNVjdLKSkKKyN1bmRl
ZiBFTkFCTEVfSklUCisjZGVmaW5lIEVOQUJMRV9KSVQgMAorI2VuZGlmCisKKy8qIERpc2FibGUg
dGhlIEpJVCBmb3IgMzItYml0IFdpbmRvd3MgYnVpbGRzLiAqLworI2lmIFVTRShKU1ZBTFVFMzJf
NjQpICYmIE9TKFdJTkRPV1MpCiAjdW5kZWYgRU5BQkxFX0pJVAogI2RlZmluZSBFTkFCTEVfSklU
IDAKLSN1bmRlZiBFTkFCTEVfQ19MT09QCi0jZGVmaW5lIEVOQUJMRV9DX0xPT1AgMQogI2VuZGlm
CiAKICNpZiAhZGVmaW5lZChFTkFCTEVfQ19MT09QKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCAzNDk2ZmNiMjkwZGU4
NmVhZTJkNTYyNjc0N2NjOGQ4M2U1Njc3ZmRmLi42NjE5MWRkMzBmYTM1OGZiZjgxMWRhMjU1M2Ew
NmJjOTMxYjQwZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNzc2LDcgKzc3Niw3IEBAIHB1YmxpYzoKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3Qg
VSosIHNpemVfdCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBpbnNlcnQoc2l6ZV90
IHBvc2l0aW9uLCBVJiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBjLCB0eXBl
bmFtZSBPSD4gdm9pZCBpbnNlcnRWZWN0b3Ioc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8
VSwgYywgT0g+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGM+IHZvaWQgaW5z
ZXJ0VmVjdG9yKHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFUsIGM+Jik7CiAKICAgICB2
b2lkIHJlbW92ZShzaXplX3QgcG9zaXRpb24pOwogICAgIHZvaWQgcmVtb3ZlKHNpemVfdCBwb3Np
dGlvbiwgc2l6ZV90IGxlbmd0aCk7CkBAIC0xNDMyLDggKzE0MzIsOCBAQCBpbmxpbmUgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpp
bnNlcnQoc2l6ZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgotdGVtcGxh
dGU8dHlwZW5hbWUgVSwgc2l6ZV90IGMsIHR5cGVuYW1lIE9IPgotaW5saW5lIHZvaWQgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6aW5zZXJ0
VmVjdG9yKHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFUsIGMsIE9IPiYgdmFsKQordGVt
cGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGM+CitpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjppbnNlcnRWZWN0b3Ioc2l6
ZV90IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8VSwgYz4mIHZhbCkKIHsKICAgICBpbnNlcnQocG9z
aXRpb24sIHZhbC5iZWdpbigpLCB2YWwuc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5j
bWFrZQppbmRleCA0ZjkwZGM1MzAyYzNhMjcwMzYxNzk2ZGY1MjczZTFlODg3OTE1NDVlLi5kMzQz
MDI2MGExMmZiOTAzNmVjMzJhODQxNGE2YjM4NThhMWY5ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1
cmVzLmNtYWtlCkBAIC02MiwxNSArNjIsMTkgQEAgZW5kbWFjcm8oKQogbWFjcm8oV0VCS0lUX09Q
VElPTl9CRUdJTikKICAgICBzZXQoX1NFVFRJTkdfV0VCS0lUX09QVElPTlMgVFJVRSkKIAotICAg
IGlmIChXVEZfQ1BVX0FSTTY0IE9SIFdURl9DUFVfWDg2XzY0KQotICAgICAgICBzZXQoRU5BQkxF
X0pJVF9ERUZBVUxUIE9OKQorICAgIGlmIChXVEZfQ1BVX1g4Nl82NCBPUiBXVEZfQ1BVX0FSTTY0
KQogICAgICAgICBzZXQoRU5BQkxFX0ZUTF9ERUZBVUxUIE9OKQorICAgIGVsc2UgKCkKKyAgICAg
ICAgc2V0KEVOQUJMRV9GVExfREVGQVVMVCBPRkYpCisgICAgZW5kaWYgKCkKKworICAgIGlmIChX
VEZfQ1BVX0FSTSBPUiBXVEZfQ1BVX0FSTTY0IE9SIFdURl9DUFVfTUlQUyBPUiBXVEZfQ1BVX1g4
Nl82NCBPUiBXVEZfQ1BVX1g4NikKKyAgICAgICAgc2V0KEVOQUJMRV9KSVRfREVGQVVMVCBPTikK
ICAgICAgICAgc2V0KFVTRV9TWVNURU1fTUFMTE9DX0RFRkFVTFQgT0ZGKQogICAgICAgICBzZXQo
RU5BQkxFX0NfTE9PUF9ERUZBVUxUIE9GRikKICAgICAgICAgc2V0KEVOQUJMRV9TQU1QTElOR19Q
Uk9GSUxFUl9ERUZBVUxUIE9OKQogICAgIGVsc2UgKCkKICAgICAgICAgc2V0KEVOQUJMRV9KSVRf
REVGQVVMVCBPRkYpCi0gICAgICAgIHNldChFTkFCTEVfRlRMX0RFRkFVTFQgT0ZGKQogICAgICAg
ICBzZXQoVVNFX1NZU1RFTV9NQUxMT0NfREVGQVVMVCBPTikKICAgICAgICAgc2V0KEVOQUJMRV9D
X0xPT1BfREVGQVVMVCBPTikKICAgICAgICAgc2V0KEVOQUJMRV9TQU1QTElOR19QUk9GSUxFUl9E
RUZBVUxUIE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAyZWZiYzU1ZWYwOTUzOGE0NWUzNzA1ODM3YzVkNjkzNzk4YWNjZDBhLi4yY2EzZWRl
NDVlYzc2ZTJiOTM2ZDM1OWIyNGY0ZTEzODBkM2Q4YmY4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMTAtMjYg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzc0NzkgYW5kIHIyMzc0ODQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5NzgKKworICAgICAgICBicm9rZSBK
U0Mgb24gaU9TIChSZXF1ZXN0ZWQgYnkgdGFkZXV6YWdhbGxvIG9uICN3ZWJraXQpLgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIk5ldyBieXRlY29kZSBmb3JtYXQg
Zm9yIEpTQyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NzM3MworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM3NDc5
CisKKyAgICAgICAgIkdhcmRlbmluZzogQnVpbGQgZml4IGFmdGVyIHIyMzc0NzkuIgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3MzczCisgICAgICAg
IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzc0ODQKKwogMjAxOC0xMC0yNiAg
VGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgYnl0ZWNv
ZGUgZm9ybWF0IGZvciBKU0MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjIGIv
VG9vbHMvU2NyaXB0cy9idWlsZC1qc2MKaW5kZXggMjhmYTRjYTEzMjAwMTA5NDQ1YjFlNjc1MGE5
MjUzY2QxMGMyM2EzZC4uYWQwMzNmMDhhYjVjZWUyMGM2M2MxNjkxMmUxYTc2YjM3OWFlN2I5OCAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MKKysrIGIvVG9vbHMvU2NyaXB0cy9i
dWlsZC1qc2MKQEAgLTE0MSw5ICsxNDEsNyBAQCBpZiAoJGZvcmNlQ0xvb3ApIHsKIH0KIAogaWYg
KGlzQ01ha2VCdWlsZCgpKSB7Ci0gICAgaWYgKCRmb3JjZUNMb29wKSB7Ci0gICAgICAgIHB1c2gg
QGNtYWtlQXJncywgIiAtREVOQUJMRV9KSVQ9T0ZGIgotICAgIH0KKyAgICBwdXNoIEBjbWFrZUFy
Z3MsICRmb3JjZUNMb29wID8gIiAtREVOQUJMRV9KSVQ9T0ZGIiA6ICIgLURFTkFCTEVfSklUPU9O
IjsKICAgICBwdXNoIEBjbWFrZUFyZ3MsICRmdGxKSVQgPyAiIC1ERU5BQkxFX0ZUTF9KSVQ9T04i
IDogIiAtREVOQUJMRV9GVExfSklUPU9GRiI7CiAgICAgaWYgKCRidWlsZERpcikgewogICAgICAg
ICBwdXNoIEBjbWFrZUFyZ3MsICIgIiAuIHNvdXJjZURpcigpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA4NGFhMTk3OTFh
YjdmYjZlZDMwZmNhMjY0OTcwMDVmNTZhYTQxNzQuLjFiNTgwZDk0OTAxMWY0NjQxM2JkYzYzZjg0
ODk0NzYyMDcyNDA1NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMC0yNiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIzNzQ3OSBhbmQgcjIzNzQ4NC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDk3OAorCisgICAgICAgIGJyb2tlIEpTQyBvbiBp
T1MgKFJlcXVlc3RlZCBieSB0YWRldXphZ2FsbG8gb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2
ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiTmV3IGJ5dGVjb2RlIGZvcm1hdCBmb3IgSlND
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3Mzcz
CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzc0NzkKKworICAg
ICAgICAiR2FyZGVuaW5nOiBCdWlsZCBmaXggYWZ0ZXIgcjIzNzQ3OS4iCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODczNzMKKyAgICAgICAgaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzNzQ4NAorCiAyMDE4LTEwLTI2ICBUYWRldSBa
YWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBieXRlY29kZSBmb3Jt
YXQgZm9yIEpTQwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291
cmNlcy9wb3N0bWVzc2FnZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jl
c291cmNlcy9wb3N0bWVzc2FnZS10ZXN0LmpzCmluZGV4IDI4NmYyMzY0MWY5MmMwNjUyYTVjMTg4
MmViODk4MjAwN2ViYjE4MjIuLmE3NzQzYmY3ZTUxYmZjMThiZjE2ZTY2ZTg5OWFiMjE2NWYxNGJi
NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvcG9z
dG1lc3NhZ2UtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3Vy
Y2VzL3Bvc3RtZXNzYWdlLXRlc3QuanMKQEAgLTEwLDY4ICsxMCw1NyBAQCB2YXIgZXZhbFRodW5r
cyA9IFtdOwogCiBmdW5jdGlvbiBlcXVhbChhY3R1YWwsIGV4cGVjdGVkKQogewotICAgIHZhciBh
Y3R1YWxRdWV1ZSA9IFthY3R1YWxdOwotICAgIHZhciBleHBlY3RlZFF1ZXVlID0gW2V4cGVjdGVk
XTsKLSAgICB3aGlsZSAoYWN0dWFsUXVldWUubGVuZ3RoICYmIGV4cGVjdGVkUXVldWUubGVuZ3Ro
KSB7Ci0gICAgICAgIHZhciBhY3R1YWwgPSBhY3R1YWxRdWV1ZS5zaGlmdCgpOwotICAgICAgICB2
YXIgZXhwZWN0ZWQgPSBleHBlY3RlZFF1ZXVlLnNoaWZ0KCk7Ci0KLSAgICAgICAgaWYgKGFjdHVh
bCA9PT0gZXhwZWN0ZWQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHR5cGVv
ZiBhY3R1YWwgIT09IHR5cGVvZiBleHBlY3RlZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKChhY3R1YWwgaW5zdGFuY2VvZiBEYXRlKSB8fCAoZXhwZWN0ZWQgaW5zdGFu
Y2VvZiBEYXRlKSkgewotICAgICAgICAgICAgaWYgKChhY3R1YWwgaW5zdGFuY2VvZiBEYXRlKSAm
JiAoZXhwZWN0ZWQgaW5zdGFuY2VvZiBEYXRlKSAmJiBhY3R1YWwuZ2V0VGltZSgpID09IGV4cGVj
dGVkLmdldFRpbWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKGFjdHVhbCBpbnN0YW5jZW9mIE51
bWJlcikgfHwgKGV4cGVjdGVkIGluc3RhbmNlb2YgTnVtYmVyKSkgewotICAgICAgICAgICAgaWYg
KChhY3R1YWwgaW5zdGFuY2VvZiBOdW1iZXIpICYmIChleHBlY3RlZCBpbnN0YW5jZW9mIE51bWJl
cikgJiYgKGV4cGVjdGVkLnZhbHVlT2YoKSA9PSBhY3R1YWwudmFsdWVPZigpKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoKGFjdHVhbCBpbnN0YW5jZW9mIEJvb2xlYW4pIHx8IChleHBlY3RlZCBpbnN0
YW5jZW9mIEJvb2xlYW4pKSB7Ci0gICAgICAgICAgICBpZiAoKGFjdHVhbCBpbnN0YW5jZW9mIEJv
b2xlYW4pICYmIChleHBlY3RlZCBpbnN0YW5jZW9mIEJvb2xlYW4pICYmIChleHBlY3RlZC52YWx1
ZU9mKCkgPT0gYWN0dWFsLnZhbHVlT2YoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh0eXBlb2YgYWN0dWFsICE9PSB0eXBlb2YgZXhwZWN0ZWQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoKGFjdHVhbCBpbnN0YW5jZW9mIERhdGUpIHx8IChleHBlY3RlZCBpbnN0YW5j
ZW9mIERhdGUpKSB7CisgICAgICAgIGlmICgoYWN0dWFsIGluc3RhbmNlb2YgRGF0ZSkgJiYgKGV4
cGVjdGVkIGluc3RhbmNlb2YgRGF0ZSkpCisgICAgICAgICAgICByZXR1cm4gKGV4cGVjdGVkIGlu
c3RhbmNlb2YgRGF0ZSkgJiYgYWN0dWFsLmdldFRpbWUoKSA9PSBleHBlY3RlZC5nZXRUaW1lKCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKChhY3R1YWwgaW5zdGFuY2Vv
ZiBOdW1iZXIpIHx8IChleHBlY3RlZCBpbnN0YW5jZW9mIE51bWJlcikpIHsKKyAgICAgICAgcmV0
dXJuIChhY3R1YWwgaW5zdGFuY2VvZiBOdW1iZXIpICYmIChleHBlY3RlZCBpbnN0YW5jZW9mIE51
bWJlcikgJiYKKyAgICAgICAgICAgIChleHBlY3RlZC52YWx1ZU9mKCkgPT0gYWN0dWFsLnZhbHVl
T2YoKSk7CisgICAgfQorICAgIGlmICgoYWN0dWFsIGluc3RhbmNlb2YgQm9vbGVhbikgfHwgKGV4
cGVjdGVkIGluc3RhbmNlb2YgQm9vbGVhbikpIHsKKyAgICAgICAgcmV0dXJuIChhY3R1YWwgaW5z
dGFuY2VvZiBCb29sZWFuKSAmJiAoZXhwZWN0ZWQgaW5zdGFuY2VvZiBCb29sZWFuKSAmJgorICAg
ICAgICAgICAgKGV4cGVjdGVkLnZhbHVlT2YoKSA9PSBhY3R1YWwudmFsdWVPZigpKTsKKyAgICB9
CisgICAgaWYgKChhY3R1YWwgaW5zdGFuY2VvZiBTdHJpbmcpIHx8IChleHBlY3RlZCBpbnN0YW5j
ZW9mIFN0cmluZykpIHsKKyAgICAgICAgcmV0dXJuIChhY3R1YWwgaW5zdGFuY2VvZiBTdHJpbmcp
ICYmIChleHBlY3RlZCBpbnN0YW5jZW9mIFN0cmluZykgJiYKKyAgICAgICAgICAgIChleHBlY3Rl
ZC52YWx1ZU9mKCkgPT0gYWN0dWFsLnZhbHVlT2YoKSk7CisgICAgfQorICAgIGlmIChBcnJheS5p
c0FycmF5KGFjdHVhbCkgfHwgQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHsKKyAgICAgICAgaWYg
KCFBcnJheS5pc0FycmF5KGFjdHVhbCkgfHwgIUFycmF5LmlzQXJyYXkoZXhwZWN0ZWQpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoYWN0dWFsIGlu
c3RhbmNlb2YgU3RyaW5nKSB8fCAoZXhwZWN0ZWQgaW5zdGFuY2VvZiBTdHJpbmcpKSB7Ci0gICAg
ICAgICAgICBpZiAoKGFjdHVhbCBpbnN0YW5jZW9mIFN0cmluZykgJiYgKGV4cGVjdGVkIGluc3Rh
bmNlb2YgU3RyaW5nKSAmJiAoZXhwZWN0ZWQudmFsdWVPZigpID09IGFjdHVhbC52YWx1ZU9mKCkp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAh
PSBleHBlY3RlZC5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0dWFsKSB8fCBBcnJheS5pc0FycmF5KGV4cGVj
dGVkKSkgewotICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdHVhbCkgfHwgIUFycmF5
LmlzQXJyYXkoZXhwZWN0ZWQpKQorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbC5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKChpIGluIGFjdHVhbCkgXiAoaSBpbiBleHBl
Y3RlZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGFj
dHVhbC5sZW5ndGggIT0gZXhwZWN0ZWQubGVuZ3RoKQorICAgICAgICAgICAgaWYgKCFlcXVhbChh
Y3R1YWxbaV0sIGV4cGVjdGVkW2ldKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgICAgIGlmICgoaSBpbiBhY3R1YWwpIF4gKGkgaW4gZXhwZWN0ZWQpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYWN0dWFsUXVldWUu
cHVzaChhY3R1YWxbaV0pOwotICAgICAgICAgICAgICAgIGV4cGVjdGVkUXVldWUucHVzaChleHBl
Y3RlZFtpXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQotICAgICAgICBpZiAoYWN0dWFsLmNvbnN0cnVjdG9yICE9PSBleHBlY3RlZC5jb25zdHJ1Y3Rv
cikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IHZhciBrZXlzID0gT2JqZWN0LmtleXMoYWN0dWFsKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgdHJ5IHsKLSAgICAg
ICAgaWYgKCFlcXVhbChrZXlzLCBPYmplY3Qua2V5cyhleHBlY3RlZCkpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGlmIChhY3R1YWwuY29uc3RydWN0b3IgIT09IGV4cGVjdGVkLmNvbnN0cnVj
dG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGtleXMg
PSBPYmplY3Qua2V5cyhhY3R1YWwpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHRyeSB7CisgICAgaWYgKCFlcXVhbChrZXlzLCBPYmplY3Qua2V5
cyhleHBlY3RlZCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghZXF1YWwoYWN0dWFsW2tleXNbaV1dLCBleHBl
Y3RlZFtrZXlzW2ldXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICBhY3R1YWxRdWV1ZS5wdXNoKGFjdHVhbFtrZXlzW2ldXSk7Ci0gICAgICAgICAgICBleHBlY3Rl
ZFF1ZXVlLnB1c2goZXhwZWN0ZWRba2V5c1tpXV0pOwotICAgICAgICB9CiAgICAgfQotCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCAyZDFjY2FjYTNjNTdjOTRhNWVhYzE0YjFlNTMyM2ViMmQwM2U1NDg0Li5kOTY4NmZlNTI4Y2Qw
ODkzNGI3M2NmNmU1OTZhYmYyYjAzZmY1MTlmIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMTAtMjYgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMzc0NzkgYW5kIHIyMzc0ODQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTA5NzgKKworICAgICAgICBicm9rZSBKU0Mgb24gaU9TIChSZXF1ZXN0
ZWQgYnkgdGFkZXV6YWdhbGxvIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5n
ZXNldHM6CisKKyAgICAgICAgIk5ldyBieXRlY29kZSBmb3JtYXQgZm9yIEpTQyIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzM3MworICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM3NDc5CisKKyAgICAgICAgIkdhcmRl
bmluZzogQnVpbGQgZml4IGFmdGVyIHIyMzc0NzkuIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3MzczCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8yMzc0ODQKKwogMjAxOC0xMC0yNiAgVGFkZXUgWmFnYWxsbyAgPHR6
YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgYnl0ZWNvZGUgZm9ybWF0IGZvciBKU0MK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YmZlZmZiZWM3MGZjZDZmZTAzNGJlYzVmMDM3NWExNDRiMTNiZTU0Zi4uOGNjM2FkM2UzMWFlNThj
NGVkMDA2ZjI4MTQxMWRiMGU2YTRmZjU0NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMC0yNiAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIzNzQ3OSBhbmQgcjIzNzQ4NC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDk3OAorCisgICAgICAgIGJyb2tlIEpTQyBv
biBpT1MgKFJlcXVlc3RlZCBieSB0YWRldXphZ2FsbG8gb24gI3dlYmtpdCkuCisKKyAgICAgICAg
UmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiTmV3IGJ5dGVjb2RlIGZvcm1hdCBmb3Ig
SlNDIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MzczCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzc0NzkKKwor
ICAgICAgICAiR2FyZGVuaW5nOiBCdWlsZCBmaXggYWZ0ZXIgcjIzNzQ3OS4iCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODczNzMKKyAgICAgICAgaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzNzQ4NAorCiAyMDE4LTEwLTI2ICBUYWRl
dSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBieXRlY29kZSBm
b3JtYXQgZm9yIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWF4aW11bS1pbmxpbmUt
Y2FwYWNpdHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9tYXhpbXVtLWlubGluZS1jYXBhY2l0eS5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIyYTlkMmZlNDhhN2EyYzhjNGE5Y2E1YjIy
MGMyYWIxMzJkMzZkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9tYXhpbXVtLWlubGluZS1jYXBhY2l0eS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDMwMjAgKzAsMCBAQAotLy8gdGVzdCBtYXhpbXVtIGlubGluZSBjYXBhY2l0eSBp
bmZlcnJlZCBmb3IgbmFycm93IGluc3RydWN0aW9ucwotCi1mdW5jdGlvbiB0ZXN0MSgpIHsKLSAg
ICAoewotICAgICAgICBwcm9wZXJ0eTE6IDEsCi0gICAgICAgIHByb3BlcnR5MjogMiwKLSAgICAg
ICAgcHJvcGVydHkzOiAzLAotICAgICAgICBwcm9wZXJ0eTQ6IDQsCi0gICAgICAgIHByb3BlcnR5
NTogNSwKLSAgICAgICAgcHJvcGVydHk2OiA2LAotICAgICAgICBwcm9wZXJ0eTc6IDcsCi0gICAg
ICAgIHByb3BlcnR5ODogOCwKLSAgICAgICAgcHJvcGVydHk5OiA5LAotICAgICAgICBwcm9wZXJ0
eTEwOiAxMCwKLSAgICAgICAgcHJvcGVydHkxMTogMTEsCi0gICAgICAgIHByb3BlcnR5MTI6IDEy
LAotICAgICAgICBwcm9wZXJ0eTEzOiAxMywKLSAgICAgICAgcHJvcGVydHkxNDogMTQsCi0gICAg
ICAgIHByb3BlcnR5MTU6IDE1LAotICAgICAgICBwcm9wZXJ0eTE2OiAxNiwKLSAgICAgICAgcHJv
cGVydHkxNzogMTcsCi0gICAgICAgIHByb3BlcnR5MTg6IDE4LAotICAgICAgICBwcm9wZXJ0eTE5
OiAxOSwKLSAgICAgICAgcHJvcGVydHkyMDogMjAsCi0gICAgICAgIHByb3BlcnR5MjE6IDIxLAot
ICAgICAgICBwcm9wZXJ0eTIyOiAyMiwKLSAgICAgICAgcHJvcGVydHkyMzogMjMsCi0gICAgICAg
IHByb3BlcnR5MjQ6IDI0LAotICAgICAgICBwcm9wZXJ0eTI1OiAyNSwKLSAgICAgICAgcHJvcGVy
dHkyNjogMjYsCi0gICAgICAgIHByb3BlcnR5Mjc6IDI3LAotICAgICAgICBwcm9wZXJ0eTI4OiAy
OCwKLSAgICAgICAgcHJvcGVydHkyOTogMjksCi0gICAgICAgIHByb3BlcnR5MzA6IDMwLAotICAg
ICAgICBwcm9wZXJ0eTMxOiAzMSwKLSAgICAgICAgcHJvcGVydHkzMjogMzIsCi0gICAgICAgIHBy
b3BlcnR5MzM6IDMzLAotICAgICAgICBwcm9wZXJ0eTM0OiAzNCwKLSAgICAgICAgcHJvcGVydHkz
NTogMzUsCi0gICAgICAgIHByb3BlcnR5MzY6IDM2LAotICAgICAgICBwcm9wZXJ0eTM3OiAzNywK
LSAgICAgICAgcHJvcGVydHkzODogMzgsCi0gICAgICAgIHByb3BlcnR5Mzk6IDM5LAotICAgICAg
ICBwcm9wZXJ0eTQwOiA0MCwKLSAgICAgICAgcHJvcGVydHk0MTogNDEsCi0gICAgICAgIHByb3Bl
cnR5NDI6IDQyLAotICAgICAgICBwcm9wZXJ0eTQzOiA0MywKLSAgICAgICAgcHJvcGVydHk0NDog
NDQsCi0gICAgICAgIHByb3BlcnR5NDU6IDQ1LAotICAgICAgICBwcm9wZXJ0eTQ2OiA0NiwKLSAg
ICAgICAgcHJvcGVydHk0NzogNDcsCi0gICAgICAgIHByb3BlcnR5NDg6IDQ4LAotICAgICAgICBw
cm9wZXJ0eTQ5OiA0OSwKLSAgICAgICAgcHJvcGVydHk1MDogNTAsCi0gICAgICAgIHByb3BlcnR5
NTE6IDUxLAotICAgICAgICBwcm9wZXJ0eTUyOiA1MiwKLSAgICAgICAgcHJvcGVydHk1MzogNTMs
Ci0gICAgICAgIHByb3BlcnR5NTQ6IDU0LAotICAgICAgICBwcm9wZXJ0eTU1OiA1NSwKLSAgICAg
ICAgcHJvcGVydHk1NjogNTYsCi0gICAgICAgIHByb3BlcnR5NTc6IDU3LAotICAgICAgICBwcm9w
ZXJ0eTU4OiA1OCwKLSAgICAgICAgcHJvcGVydHk1OTogNTksCi0gICAgICAgIHByb3BlcnR5NjA6
IDYwLAotICAgICAgICBwcm9wZXJ0eTYxOiA2MSwKLSAgICAgICAgcHJvcGVydHk2MjogNjIsCi0g
ICAgICAgIHByb3BlcnR5NjM6IDYzLAotICAgICAgICBwcm9wZXJ0eTY0OiA2NCwKLSAgICAgICAg
cHJvcGVydHk2NTogNjUsCi0gICAgICAgIHByb3BlcnR5NjY6IDY2LAotICAgICAgICBwcm9wZXJ0
eTY3OiA2NywKLSAgICAgICAgcHJvcGVydHk2ODogNjgsCi0gICAgICAgIHByb3BlcnR5Njk6IDY5
LAotICAgICAgICBwcm9wZXJ0eTcwOiA3MCwKLSAgICAgICAgcHJvcGVydHk3MTogNzEsCi0gICAg
ICAgIHByb3BlcnR5NzI6IDcyLAotICAgICAgICBwcm9wZXJ0eTczOiA3MywKLSAgICAgICAgcHJv
cGVydHk3NDogNzQsCi0gICAgICAgIHByb3BlcnR5NzU6IDc1LAotICAgICAgICBwcm9wZXJ0eTc2
OiA3NiwKLSAgICAgICAgcHJvcGVydHk3NzogNzcsCi0gICAgICAgIHByb3BlcnR5Nzg6IDc4LAot
ICAgICAgICBwcm9wZXJ0eTc5OiA3OSwKLSAgICAgICAgcHJvcGVydHk4MDogODAsCi0gICAgICAg
IHByb3BlcnR5ODE6IDgxLAotICAgICAgICBwcm9wZXJ0eTgyOiA4MiwKLSAgICAgICAgcHJvcGVy
dHk4MzogODMsCi0gICAgICAgIHByb3BlcnR5ODQ6IDg0LAotICAgICAgICBwcm9wZXJ0eTg1OiA4
NSwKLSAgICAgICAgcHJvcGVydHk4NjogODYsCi0gICAgICAgIHByb3BlcnR5ODc6IDg3LAotICAg
ICAgICBwcm9wZXJ0eTg4OiA4OCwKLSAgICAgICAgcHJvcGVydHk4OTogODksCi0gICAgICAgIHBy
b3BlcnR5OTA6IDkwLAotICAgICAgICBwcm9wZXJ0eTkxOiA5MSwKLSAgICAgICAgcHJvcGVydHk5
MjogOTIsCi0gICAgICAgIHByb3BlcnR5OTM6IDkzLAotICAgICAgICBwcm9wZXJ0eTk0OiA5NCwK
LSAgICAgICAgcHJvcGVydHk5NTogOTUsCi0gICAgICAgIHByb3BlcnR5OTY6IDk2LAotICAgICAg
ICBwcm9wZXJ0eTk3OiA5NywKLSAgICAgICAgcHJvcGVydHk5ODogOTgsCi0gICAgICAgIHByb3Bl
cnR5OTk6IDk5LAotICAgICAgICBwcm9wZXJ0eTEwMDogMTAwLAotICAgICAgICBwcm9wZXJ0eTEw
MTogMTAxLAotICAgICAgICBwcm9wZXJ0eTEwMjogMTAyLAotICAgICAgICBwcm9wZXJ0eTEwMzog
MTAzLAotICAgICAgICBwcm9wZXJ0eTEwNDogMTA0LAotICAgICAgICBwcm9wZXJ0eTEwNTogMTA1
LAotICAgICAgICBwcm9wZXJ0eTEwNjogMTA2LAotICAgICAgICBwcm9wZXJ0eTEwNzogMTA3LAot
ICAgICAgICBwcm9wZXJ0eTEwODogMTA4LAotICAgICAgICBwcm9wZXJ0eTEwOTogMTA5LAotICAg
ICAgICBwcm9wZXJ0eTExMDogMTEwLAotICAgICAgICBwcm9wZXJ0eTExMTogMTExLAotICAgICAg
ICBwcm9wZXJ0eTExMjogMTEyLAotICAgICAgICBwcm9wZXJ0eTExMzogMTEzLAotICAgICAgICBw
cm9wZXJ0eTExNDogMTE0LAotICAgICAgICBwcm9wZXJ0eTExNTogMTE1LAotICAgICAgICBwcm9w
ZXJ0eTExNjogMTE2LAotICAgICAgICBwcm9wZXJ0eTExNzogMTE3LAotICAgICAgICBwcm9wZXJ0
eTExODogMTE4LAotICAgICAgICBwcm9wZXJ0eTExOTogMTE5LAotICAgICAgICBwcm9wZXJ0eTEy
MDogMTIwLAotICAgICAgICBwcm9wZXJ0eTEyMTogMTIxLAotICAgICAgICBwcm9wZXJ0eTEyMjog
MTIyLAotICAgICAgICBwcm9wZXJ0eTEyMzogMTIzLAotICAgICAgICBwcm9wZXJ0eTEyNDogMTI0
LAotICAgICAgICBwcm9wZXJ0eTEyNTogMTI1LAotICAgICAgICBwcm9wZXJ0eTEyNjogMTI2LAot
ICAgICAgICBwcm9wZXJ0eTEyNzogMTI3LAotICAgICAgICBwcm9wZXJ0eTEyODogMTI4LAotICAg
ICAgICBwcm9wZXJ0eTEyOTogMTI5LAotICAgICAgICBwcm9wZXJ0eTEzMDogMTMwLAotICAgICAg
ICBwcm9wZXJ0eTEzMTogMTMxLAotICAgICAgICBwcm9wZXJ0eTEzMjogMTMyLAotICAgICAgICBw
cm9wZXJ0eTEzMzogMTMzLAotICAgICAgICBwcm9wZXJ0eTEzNDogMTM0LAotICAgICAgICBwcm9w
ZXJ0eTEzNTogMTM1LAotICAgICAgICBwcm9wZXJ0eTEzNjogMTM2LAotICAgICAgICBwcm9wZXJ0
eTEzNzogMTM3LAotICAgICAgICBwcm9wZXJ0eTEzODogMTM4LAotICAgICAgICBwcm9wZXJ0eTEz
OTogMTM5LAotICAgICAgICBwcm9wZXJ0eTE0MDogMTQwLAotICAgICAgICBwcm9wZXJ0eTE0MTog
MTQxLAotICAgICAgICBwcm9wZXJ0eTE0MjogMTQyLAotICAgICAgICBwcm9wZXJ0eTE0MzogMTQz
LAotICAgICAgICBwcm9wZXJ0eTE0NDogMTQ0LAotICAgICAgICBwcm9wZXJ0eTE0NTogMTQ1LAot
ICAgICAgICBwcm9wZXJ0eTE0NjogMTQ2LAotICAgICAgICBwcm9wZXJ0eTE0NzogMTQ3LAotICAg
ICAgICBwcm9wZXJ0eTE0ODogMTQ4LAotICAgICAgICBwcm9wZXJ0eTE0OTogMTQ5LAotICAgICAg
ICBwcm9wZXJ0eTE1MDogMTUwLAotICAgICAgICBwcm9wZXJ0eTE1MTogMTUxLAotICAgICAgICBw
cm9wZXJ0eTE1MjogMTUyLAotICAgICAgICBwcm9wZXJ0eTE1MzogMTUzLAotICAgICAgICBwcm9w
ZXJ0eTE1NDogMTU0LAotICAgICAgICBwcm9wZXJ0eTE1NTogMTU1LAotICAgICAgICBwcm9wZXJ0
eTE1NjogMTU2LAotICAgICAgICBwcm9wZXJ0eTE1NzogMTU3LAotICAgICAgICBwcm9wZXJ0eTE1
ODogMTU4LAotICAgICAgICBwcm9wZXJ0eTE1OTogMTU5LAotICAgICAgICBwcm9wZXJ0eTE2MDog
MTYwLAotICAgICAgICBwcm9wZXJ0eTE2MTogMTYxLAotICAgICAgICBwcm9wZXJ0eTE2MjogMTYy
LAotICAgICAgICBwcm9wZXJ0eTE2MzogMTYzLAotICAgICAgICBwcm9wZXJ0eTE2NDogMTY0LAot
ICAgICAgICBwcm9wZXJ0eTE2NTogMTY1LAotICAgICAgICBwcm9wZXJ0eTE2NjogMTY2LAotICAg
ICAgICBwcm9wZXJ0eTE2NzogMTY3LAotICAgICAgICBwcm9wZXJ0eTE2ODogMTY4LAotICAgICAg
ICBwcm9wZXJ0eTE2OTogMTY5LAotICAgICAgICBwcm9wZXJ0eTE3MDogMTcwLAotICAgICAgICBw
cm9wZXJ0eTE3MTogMTcxLAotICAgICAgICBwcm9wZXJ0eTE3MjogMTcyLAotICAgICAgICBwcm9w
ZXJ0eTE3MzogMTczLAotICAgICAgICBwcm9wZXJ0eTE3NDogMTc0LAotICAgICAgICBwcm9wZXJ0
eTE3NTogMTc1LAotICAgICAgICBwcm9wZXJ0eTE3NjogMTc2LAotICAgICAgICBwcm9wZXJ0eTE3
NzogMTc3LAotICAgICAgICBwcm9wZXJ0eTE3ODogMTc4LAotICAgICAgICBwcm9wZXJ0eTE3OTog
MTc5LAotICAgICAgICBwcm9wZXJ0eTE4MDogMTgwLAotICAgICAgICBwcm9wZXJ0eTE4MTogMTgx
LAotICAgICAgICBwcm9wZXJ0eTE4MjogMTgyLAotICAgICAgICBwcm9wZXJ0eTE4MzogMTgzLAot
ICAgICAgICBwcm9wZXJ0eTE4NDogMTg0LAotICAgICAgICBwcm9wZXJ0eTE4NTogMTg1LAotICAg
ICAgICBwcm9wZXJ0eTE4NjogMTg2LAotICAgICAgICBwcm9wZXJ0eTE4NzogMTg3LAotICAgICAg
ICBwcm9wZXJ0eTE4ODogMTg4LAotICAgICAgICBwcm9wZXJ0eTE4OTogMTg5LAotICAgICAgICBw
cm9wZXJ0eTE5MDogMTkwLAotICAgICAgICBwcm9wZXJ0eTE5MTogMTkxLAotICAgICAgICBwcm9w
ZXJ0eTE5MjogMTkyLAotICAgICAgICBwcm9wZXJ0eTE5MzogMTkzLAotICAgICAgICBwcm9wZXJ0
eTE5NDogMTk0LAotICAgICAgICBwcm9wZXJ0eTE5NTogMTk1LAotICAgICAgICBwcm9wZXJ0eTE5
NjogMTk2LAotICAgICAgICBwcm9wZXJ0eTE5NzogMTk3LAotICAgICAgICBwcm9wZXJ0eTE5ODog
MTk4LAotICAgICAgICBwcm9wZXJ0eTE5OTogMTk5LAotICAgICAgICBwcm9wZXJ0eTIwMDogMjAw
LAotICAgICAgICBwcm9wZXJ0eTIwMTogMjAxLAotICAgICAgICBwcm9wZXJ0eTIwMjogMjAyLAot
ICAgICAgICBwcm9wZXJ0eTIwMzogMjAzLAotICAgICAgICBwcm9wZXJ0eTIwNDogMjA0LAotICAg
ICAgICBwcm9wZXJ0eTIwNTogMjA1LAotICAgICAgICBwcm9wZXJ0eTIwNjogMjA2LAotICAgICAg
ICBwcm9wZXJ0eTIwNzogMjA3LAotICAgICAgICBwcm9wZXJ0eTIwODogMjA4LAotICAgICAgICBw
cm9wZXJ0eTIwOTogMjA5LAotICAgICAgICBwcm9wZXJ0eTIxMDogMjEwLAotICAgICAgICBwcm9w
ZXJ0eTIxMTogMjExLAotICAgICAgICBwcm9wZXJ0eTIxMjogMjEyLAotICAgICAgICBwcm9wZXJ0
eTIxMzogMjEzLAotICAgICAgICBwcm9wZXJ0eTIxNDogMjE0LAotICAgICAgICBwcm9wZXJ0eTIx
NTogMjE1LAotICAgICAgICBwcm9wZXJ0eTIxNjogMjE2LAotICAgICAgICBwcm9wZXJ0eTIxNzog
MjE3LAotICAgICAgICBwcm9wZXJ0eTIxODogMjE4LAotICAgICAgICBwcm9wZXJ0eTIxOTogMjE5
LAotICAgICAgICBwcm9wZXJ0eTIyMDogMjIwLAotICAgICAgICBwcm9wZXJ0eTIyMTogMjIxLAot
ICAgICAgICBwcm9wZXJ0eTIyMjogMjIyLAotICAgICAgICBwcm9wZXJ0eTIyMzogMjIzLAotICAg
ICAgICBwcm9wZXJ0eTIyNDogMjI0LAotICAgICAgICBwcm9wZXJ0eTIyNTogMjI1LAotICAgICAg
ICBwcm9wZXJ0eTIyNjogMjI2LAotICAgICAgICBwcm9wZXJ0eTIyNzogMjI3LAotICAgICAgICBw
cm9wZXJ0eTIyODogMjI4LAotICAgICAgICBwcm9wZXJ0eTIyOTogMjI5LAotICAgICAgICBwcm9w
ZXJ0eTIzMDogMjMwLAotICAgICAgICBwcm9wZXJ0eTIzMTogMjMxLAotICAgICAgICBwcm9wZXJ0
eTIzMjogMjMyLAotICAgICAgICBwcm9wZXJ0eTIzMzogMjMzLAotICAgICAgICBwcm9wZXJ0eTIz
NDogMjM0LAotICAgICAgICBwcm9wZXJ0eTIzNTogMjM1LAotICAgICAgICBwcm9wZXJ0eTIzNjog
MjM2LAotICAgICAgICBwcm9wZXJ0eTIzNzogMjM3LAotICAgICAgICBwcm9wZXJ0eTIzODogMjM4
LAotICAgICAgICBwcm9wZXJ0eTIzOTogMjM5LAotICAgICAgICBwcm9wZXJ0eTI0MDogMjQwLAot
ICAgICAgICBwcm9wZXJ0eTI0MTogMjQxLAotICAgICAgICBwcm9wZXJ0eTI0MjogMjQyLAotICAg
ICAgICBwcm9wZXJ0eTI0MzogMjQzLAotICAgICAgICBwcm9wZXJ0eTI0NDogMjQ0LAotICAgICAg
ICBwcm9wZXJ0eTI0NTogMjQ1LAotICAgICAgICBwcm9wZXJ0eTI0NjogMjQ2LAotICAgICAgICBw
cm9wZXJ0eTI0NzogMjQ3LAotICAgICAgICBwcm9wZXJ0eTI0ODogMjQ4LAotICAgICAgICBwcm9w
ZXJ0eTI0OTogMjQ5LAotICAgICAgICBwcm9wZXJ0eTI1MDogMjUwLAotICAgICAgICBwcm9wZXJ0
eTI1MTogMjUxLAotICAgICAgICBwcm9wZXJ0eTI1MjogMjUyLAotICAgICAgICBwcm9wZXJ0eTI1
MzogMjUzLAotICAgICAgICBwcm9wZXJ0eTI1NDogMjU0LAotICAgICAgICBwcm9wZXJ0eTI1NTog
MjU1LAotICAgICAgICBwcm9wZXJ0eTI1NjogMjU2LAotICAgICAgICBwcm9wZXJ0eTI1NzogMjU3
LAotICAgICAgICBwcm9wZXJ0eTI1ODogMjU4LAotICAgICAgICBwcm9wZXJ0eTI1OTogMjU5LAot
ICAgICAgICBwcm9wZXJ0eTI2MDogMjYwLAotICAgICAgICBwcm9wZXJ0eTI2MTogMjYxLAotICAg
ICAgICBwcm9wZXJ0eTI2MjogMjYyLAotICAgICAgICBwcm9wZXJ0eTI2MzogMjYzLAotICAgICAg
ICBwcm9wZXJ0eTI2NDogMjY0LAotICAgICAgICBwcm9wZXJ0eTI2NTogMjY1LAotICAgICAgICBw
cm9wZXJ0eTI2NjogMjY2LAotICAgICAgICBwcm9wZXJ0eTI2NzogMjY3LAotICAgICAgICBwcm9w
ZXJ0eTI2ODogMjY4LAotICAgICAgICBwcm9wZXJ0eTI2OTogMjY5LAotICAgICAgICBwcm9wZXJ0
eTI3MDogMjcwLAotICAgICAgICBwcm9wZXJ0eTI3MTogMjcxLAotICAgICAgICBwcm9wZXJ0eTI3
MjogMjcyLAotICAgICAgICBwcm9wZXJ0eTI3MzogMjczLAotICAgICAgICBwcm9wZXJ0eTI3NDog
Mjc0LAotICAgICAgICBwcm9wZXJ0eTI3NTogMjc1LAotICAgICAgICBwcm9wZXJ0eTI3NjogMjc2
LAotICAgICAgICBwcm9wZXJ0eTI3NzogMjc3LAotICAgICAgICBwcm9wZXJ0eTI3ODogMjc4LAot
ICAgICAgICBwcm9wZXJ0eTI3OTogMjc5LAotICAgICAgICBwcm9wZXJ0eTI4MDogMjgwLAotICAg
ICAgICBwcm9wZXJ0eTI4MTogMjgxLAotICAgICAgICBwcm9wZXJ0eTI4MjogMjgyLAotICAgICAg
ICBwcm9wZXJ0eTI4MzogMjgzLAotICAgICAgICBwcm9wZXJ0eTI4NDogMjg0LAotICAgICAgICBw
cm9wZXJ0eTI4NTogMjg1LAotICAgICAgICBwcm9wZXJ0eTI4NjogMjg2LAotICAgICAgICBwcm9w
ZXJ0eTI4NzogMjg3LAotICAgICAgICBwcm9wZXJ0eTI4ODogMjg4LAotICAgICAgICBwcm9wZXJ0
eTI4OTogMjg5LAotICAgICAgICBwcm9wZXJ0eTI5MDogMjkwLAotICAgICAgICBwcm9wZXJ0eTI5
MTogMjkxLAotICAgICAgICBwcm9wZXJ0eTI5MjogMjkyLAotICAgICAgICBwcm9wZXJ0eTI5Mzog
MjkzLAotICAgICAgICBwcm9wZXJ0eTI5NDogMjk0LAotICAgICAgICBwcm9wZXJ0eTI5NTogMjk1
LAotICAgICAgICBwcm9wZXJ0eTI5NjogMjk2LAotICAgICAgICBwcm9wZXJ0eTI5NzogMjk3LAot
ICAgICAgICBwcm9wZXJ0eTI5ODogMjk4LAotICAgICAgICBwcm9wZXJ0eTI5OTogMjk5LAotICAg
ICAgICBwcm9wZXJ0eTMwMDogMzAwLAotICAgICAgICBwcm9wZXJ0eTMwMTogMzAxLAotICAgICAg
ICBwcm9wZXJ0eTMwMjogMzAyLAotICAgICAgICBwcm9wZXJ0eTMwMzogMzAzLAotICAgICAgICBw
cm9wZXJ0eTMwNDogMzA0LAotICAgICAgICBwcm9wZXJ0eTMwNTogMzA1LAotICAgICAgICBwcm9w
ZXJ0eTMwNjogMzA2LAotICAgICAgICBwcm9wZXJ0eTMwNzogMzA3LAotICAgICAgICBwcm9wZXJ0
eTMwODogMzA4LAotICAgICAgICBwcm9wZXJ0eTMwOTogMzA5LAotICAgICAgICBwcm9wZXJ0eTMx
MDogMzEwLAotICAgICAgICBwcm9wZXJ0eTMxMTogMzExLAotICAgICAgICBwcm9wZXJ0eTMxMjog
MzEyLAotICAgICAgICBwcm9wZXJ0eTMxMzogMzEzLAotICAgICAgICBwcm9wZXJ0eTMxNDogMzE0
LAotICAgICAgICBwcm9wZXJ0eTMxNTogMzE1LAotICAgICAgICBwcm9wZXJ0eTMxNjogMzE2LAot
ICAgICAgICBwcm9wZXJ0eTMxNzogMzE3LAotICAgICAgICBwcm9wZXJ0eTMxODogMzE4LAotICAg
ICAgICBwcm9wZXJ0eTMxOTogMzE5LAotICAgICAgICBwcm9wZXJ0eTMyMDogMzIwLAotICAgICAg
ICBwcm9wZXJ0eTMyMTogMzIxLAotICAgICAgICBwcm9wZXJ0eTMyMjogMzIyLAotICAgICAgICBw
cm9wZXJ0eTMyMzogMzIzLAotICAgICAgICBwcm9wZXJ0eTMyNDogMzI0LAotICAgICAgICBwcm9w
ZXJ0eTMyNTogMzI1LAotICAgICAgICBwcm9wZXJ0eTMyNjogMzI2LAotICAgICAgICBwcm9wZXJ0
eTMyNzogMzI3LAotICAgICAgICBwcm9wZXJ0eTMyODogMzI4LAotICAgICAgICBwcm9wZXJ0eTMy
OTogMzI5LAotICAgICAgICBwcm9wZXJ0eTMzMDogMzMwLAotICAgICAgICBwcm9wZXJ0eTMzMTog
MzMxLAotICAgICAgICBwcm9wZXJ0eTMzMjogMzMyLAotICAgICAgICBwcm9wZXJ0eTMzMzogMzMz
LAotICAgICAgICBwcm9wZXJ0eTMzNDogMzM0LAotICAgICAgICBwcm9wZXJ0eTMzNTogMzM1LAot
ICAgICAgICBwcm9wZXJ0eTMzNjogMzM2LAotICAgICAgICBwcm9wZXJ0eTMzNzogMzM3LAotICAg
ICAgICBwcm9wZXJ0eTMzODogMzM4LAotICAgICAgICBwcm9wZXJ0eTMzOTogMzM5LAotICAgICAg
ICBwcm9wZXJ0eTM0MDogMzQwLAotICAgICAgICBwcm9wZXJ0eTM0MTogMzQxLAotICAgICAgICBw
cm9wZXJ0eTM0MjogMzQyLAotICAgICAgICBwcm9wZXJ0eTM0MzogMzQzLAotICAgICAgICBwcm9w
ZXJ0eTM0NDogMzQ0LAotICAgICAgICBwcm9wZXJ0eTM0NTogMzQ1LAotICAgICAgICBwcm9wZXJ0
eTM0NjogMzQ2LAotICAgICAgICBwcm9wZXJ0eTM0NzogMzQ3LAotICAgICAgICBwcm9wZXJ0eTM0
ODogMzQ4LAotICAgICAgICBwcm9wZXJ0eTM0OTogMzQ5LAotICAgICAgICBwcm9wZXJ0eTM1MDog
MzUwLAotICAgICAgICBwcm9wZXJ0eTM1MTogMzUxLAotICAgICAgICBwcm9wZXJ0eTM1MjogMzUy
LAotICAgICAgICBwcm9wZXJ0eTM1MzogMzUzLAotICAgICAgICBwcm9wZXJ0eTM1NDogMzU0LAot
ICAgICAgICBwcm9wZXJ0eTM1NTogMzU1LAotICAgICAgICBwcm9wZXJ0eTM1NjogMzU2LAotICAg
ICAgICBwcm9wZXJ0eTM1NzogMzU3LAotICAgICAgICBwcm9wZXJ0eTM1ODogMzU4LAotICAgICAg
ICBwcm9wZXJ0eTM1OTogMzU5LAotICAgICAgICBwcm9wZXJ0eTM2MDogMzYwLAotICAgICAgICBw
cm9wZXJ0eTM2MTogMzYxLAotICAgICAgICBwcm9wZXJ0eTM2MjogMzYyLAotICAgICAgICBwcm9w
ZXJ0eTM2MzogMzYzLAotICAgICAgICBwcm9wZXJ0eTM2NDogMzY0LAotICAgICAgICBwcm9wZXJ0
eTM2NTogMzY1LAotICAgICAgICBwcm9wZXJ0eTM2NjogMzY2LAotICAgICAgICBwcm9wZXJ0eTM2
NzogMzY3LAotICAgICAgICBwcm9wZXJ0eTM2ODogMzY4LAotICAgICAgICBwcm9wZXJ0eTM2OTog
MzY5LAotICAgICAgICBwcm9wZXJ0eTM3MDogMzcwLAotICAgICAgICBwcm9wZXJ0eTM3MTogMzcx
LAotICAgICAgICBwcm9wZXJ0eTM3MjogMzcyLAotICAgICAgICBwcm9wZXJ0eTM3MzogMzczLAot
ICAgICAgICBwcm9wZXJ0eTM3NDogMzc0LAotICAgICAgICBwcm9wZXJ0eTM3NTogMzc1LAotICAg
ICAgICBwcm9wZXJ0eTM3NjogMzc2LAotICAgICAgICBwcm9wZXJ0eTM3NzogMzc3LAotICAgICAg
ICBwcm9wZXJ0eTM3ODogMzc4LAotICAgICAgICBwcm9wZXJ0eTM3OTogMzc5LAotICAgICAgICBw
cm9wZXJ0eTM4MDogMzgwLAotICAgICAgICBwcm9wZXJ0eTM4MTogMzgxLAotICAgICAgICBwcm9w
ZXJ0eTM4MjogMzgyLAotICAgICAgICBwcm9wZXJ0eTM4MzogMzgzLAotICAgICAgICBwcm9wZXJ0
eTM4NDogMzg0LAotICAgICAgICBwcm9wZXJ0eTM4NTogMzg1LAotICAgICAgICBwcm9wZXJ0eTM4
NjogMzg2LAotICAgICAgICBwcm9wZXJ0eTM4NzogMzg3LAotICAgICAgICBwcm9wZXJ0eTM4ODog
Mzg4LAotICAgICAgICBwcm9wZXJ0eTM4OTogMzg5LAotICAgICAgICBwcm9wZXJ0eTM5MDogMzkw
LAotICAgICAgICBwcm9wZXJ0eTM5MTogMzkxLAotICAgICAgICBwcm9wZXJ0eTM5MjogMzkyLAot
ICAgICAgICBwcm9wZXJ0eTM5MzogMzkzLAotICAgICAgICBwcm9wZXJ0eTM5NDogMzk0LAotICAg
ICAgICBwcm9wZXJ0eTM5NTogMzk1LAotICAgICAgICBwcm9wZXJ0eTM5NjogMzk2LAotICAgICAg
ICBwcm9wZXJ0eTM5NzogMzk3LAotICAgICAgICBwcm9wZXJ0eTM5ODogMzk4LAotICAgICAgICBw
cm9wZXJ0eTM5OTogMzk5LAotICAgICAgICBwcm9wZXJ0eTQwMDogNDAwLAotICAgICAgICBwcm9w
ZXJ0eTQwMTogNDAxLAotICAgICAgICBwcm9wZXJ0eTQwMjogNDAyLAotICAgICAgICBwcm9wZXJ0
eTQwMzogNDAzLAotICAgICAgICBwcm9wZXJ0eTQwNDogNDA0LAotICAgICAgICBwcm9wZXJ0eTQw
NTogNDA1LAotICAgICAgICBwcm9wZXJ0eTQwNjogNDA2LAotICAgICAgICBwcm9wZXJ0eTQwNzog
NDA3LAotICAgICAgICBwcm9wZXJ0eTQwODogNDA4LAotICAgICAgICBwcm9wZXJ0eTQwOTogNDA5
LAotICAgICAgICBwcm9wZXJ0eTQxMDogNDEwLAotICAgICAgICBwcm9wZXJ0eTQxMTogNDExLAot
ICAgICAgICBwcm9wZXJ0eTQxMjogNDEyLAotICAgICAgICBwcm9wZXJ0eTQxMzogNDEzLAotICAg
ICAgICBwcm9wZXJ0eTQxNDogNDE0LAotICAgICAgICBwcm9wZXJ0eTQxNTogNDE1LAotICAgICAg
ICBwcm9wZXJ0eTQxNjogNDE2LAotICAgICAgICBwcm9wZXJ0eTQxNzogNDE3LAotICAgICAgICBw
cm9wZXJ0eTQxODogNDE4LAotICAgICAgICBwcm9wZXJ0eTQxOTogNDE5LAotICAgICAgICBwcm9w
ZXJ0eTQyMDogNDIwLAotICAgICAgICBwcm9wZXJ0eTQyMTogNDIxLAotICAgICAgICBwcm9wZXJ0
eTQyMjogNDIyLAotICAgICAgICBwcm9wZXJ0eTQyMzogNDIzLAotICAgICAgICBwcm9wZXJ0eTQy
NDogNDI0LAotICAgICAgICBwcm9wZXJ0eTQyNTogNDI1LAotICAgICAgICBwcm9wZXJ0eTQyNjog
NDI2LAotICAgICAgICBwcm9wZXJ0eTQyNzogNDI3LAotICAgICAgICBwcm9wZXJ0eTQyODogNDI4
LAotICAgICAgICBwcm9wZXJ0eTQyOTogNDI5LAotICAgICAgICBwcm9wZXJ0eTQzMDogNDMwLAot
ICAgICAgICBwcm9wZXJ0eTQzMTogNDMxLAotICAgICAgICBwcm9wZXJ0eTQzMjogNDMyLAotICAg
ICAgICBwcm9wZXJ0eTQzMzogNDMzLAotICAgICAgICBwcm9wZXJ0eTQzNDogNDM0LAotICAgICAg
ICBwcm9wZXJ0eTQzNTogNDM1LAotICAgICAgICBwcm9wZXJ0eTQzNjogNDM2LAotICAgICAgICBw
cm9wZXJ0eTQzNzogNDM3LAotICAgICAgICBwcm9wZXJ0eTQzODogNDM4LAotICAgICAgICBwcm9w
ZXJ0eTQzOTogNDM5LAotICAgICAgICBwcm9wZXJ0eTQ0MDogNDQwLAotICAgICAgICBwcm9wZXJ0
eTQ0MTogNDQxLAotICAgICAgICBwcm9wZXJ0eTQ0MjogNDQyLAotICAgICAgICBwcm9wZXJ0eTQ0
MzogNDQzLAotICAgICAgICBwcm9wZXJ0eTQ0NDogNDQ0LAotICAgICAgICBwcm9wZXJ0eTQ0NTog
NDQ1LAotICAgICAgICBwcm9wZXJ0eTQ0NjogNDQ2LAotICAgICAgICBwcm9wZXJ0eTQ0NzogNDQ3
LAotICAgICAgICBwcm9wZXJ0eTQ0ODogNDQ4LAotICAgICAgICBwcm9wZXJ0eTQ0OTogNDQ5LAot
ICAgICAgICBwcm9wZXJ0eTQ1MDogNDUwLAotICAgICAgICBwcm9wZXJ0eTQ1MTogNDUxLAotICAg
ICAgICBwcm9wZXJ0eTQ1MjogNDUyLAotICAgICAgICBwcm9wZXJ0eTQ1MzogNDUzLAotICAgICAg
ICBwcm9wZXJ0eTQ1NDogNDU0LAotICAgICAgICBwcm9wZXJ0eTQ1NTogNDU1LAotICAgICAgICBw
cm9wZXJ0eTQ1NjogNDU2LAotICAgICAgICBwcm9wZXJ0eTQ1NzogNDU3LAotICAgICAgICBwcm9w
ZXJ0eTQ1ODogNDU4LAotICAgICAgICBwcm9wZXJ0eTQ1OTogNDU5LAotICAgICAgICBwcm9wZXJ0
eTQ2MDogNDYwLAotICAgICAgICBwcm9wZXJ0eTQ2MTogNDYxLAotICAgICAgICBwcm9wZXJ0eTQ2
MjogNDYyLAotICAgICAgICBwcm9wZXJ0eTQ2MzogNDYzLAotICAgICAgICBwcm9wZXJ0eTQ2NDog
NDY0LAotICAgICAgICBwcm9wZXJ0eTQ2NTogNDY1LAotICAgICAgICBwcm9wZXJ0eTQ2NjogNDY2
LAotICAgICAgICBwcm9wZXJ0eTQ2NzogNDY3LAotICAgICAgICBwcm9wZXJ0eTQ2ODogNDY4LAot
ICAgICAgICBwcm9wZXJ0eTQ2OTogNDY5LAotICAgICAgICBwcm9wZXJ0eTQ3MDogNDcwLAotICAg
ICAgICBwcm9wZXJ0eTQ3MTogNDcxLAotICAgICAgICBwcm9wZXJ0eTQ3MjogNDcyLAotICAgICAg
ICBwcm9wZXJ0eTQ3MzogNDczLAotICAgICAgICBwcm9wZXJ0eTQ3NDogNDc0LAotICAgICAgICBw
cm9wZXJ0eTQ3NTogNDc1LAotICAgICAgICBwcm9wZXJ0eTQ3NjogNDc2LAotICAgICAgICBwcm9w
ZXJ0eTQ3NzogNDc3LAotICAgICAgICBwcm9wZXJ0eTQ3ODogNDc4LAotICAgICAgICBwcm9wZXJ0
eTQ3OTogNDc5LAotICAgICAgICBwcm9wZXJ0eTQ4MDogNDgwLAotICAgICAgICBwcm9wZXJ0eTQ4
MTogNDgxLAotICAgICAgICBwcm9wZXJ0eTQ4MjogNDgyLAotICAgICAgICBwcm9wZXJ0eTQ4Mzog
NDgzLAotICAgICAgICBwcm9wZXJ0eTQ4NDogNDg0LAotICAgICAgICBwcm9wZXJ0eTQ4NTogNDg1
LAotICAgICAgICBwcm9wZXJ0eTQ4NjogNDg2LAotICAgICAgICBwcm9wZXJ0eTQ4NzogNDg3LAot
ICAgICAgICBwcm9wZXJ0eTQ4ODogNDg4LAotICAgICAgICBwcm9wZXJ0eTQ4OTogNDg5LAotICAg
ICAgICBwcm9wZXJ0eTQ5MDogNDkwLAotICAgICAgICBwcm9wZXJ0eTQ5MTogNDkxLAotICAgICAg
ICBwcm9wZXJ0eTQ5MjogNDkyLAotICAgICAgICBwcm9wZXJ0eTQ5MzogNDkzLAotICAgICAgICBw
cm9wZXJ0eTQ5NDogNDk0LAotICAgICAgICBwcm9wZXJ0eTQ5NTogNDk1LAotICAgICAgICBwcm9w
ZXJ0eTQ5NjogNDk2LAotICAgICAgICBwcm9wZXJ0eTQ5NzogNDk3LAotICAgICAgICBwcm9wZXJ0
eTQ5ODogNDk4LAotICAgICAgICBwcm9wZXJ0eTQ5OTogNDk5LAotICAgICAgICBwcm9wZXJ0eTUw
MDogNTAwLAotICAgICAgICBwcm9wZXJ0eTUwMTogNTAxLAotICAgICAgICBwcm9wZXJ0eTUwMjog
NTAyLAotICAgICAgICBwcm9wZXJ0eTUwMzogNTAzLAotICAgICAgICBwcm9wZXJ0eTUwNDogNTA0
LAotICAgICAgICBwcm9wZXJ0eTUwNTogNTA1LAotICAgICAgICBwcm9wZXJ0eTUwNjogNTA2LAot
ICAgICAgICBwcm9wZXJ0eTUwNzogNTA3LAotICAgICAgICBwcm9wZXJ0eTUwODogNTA4LAotICAg
ICAgICBwcm9wZXJ0eTUwOTogNTA5LAotICAgICAgICBwcm9wZXJ0eTUxMDogNTEwLAotICAgICAg
ICBwcm9wZXJ0eTUxMTogNTExLAotICAgICAgICBwcm9wZXJ0eTUxMjogNTEyLAotICAgICAgICBw
cm9wZXJ0eTUxMzogNTEzLAotICAgICAgICBwcm9wZXJ0eTUxNDogNTE0LAotICAgICAgICBwcm9w
ZXJ0eTUxNTogNTE1LAotICAgICAgICBwcm9wZXJ0eTUxNjogNTE2LAotICAgICAgICBwcm9wZXJ0
eTUxNzogNTE3LAotICAgICAgICBwcm9wZXJ0eTUxODogNTE4LAotICAgICAgICBwcm9wZXJ0eTUx
OTogNTE5LAotICAgICAgICBwcm9wZXJ0eTUyMDogNTIwLAotICAgICAgICBwcm9wZXJ0eTUyMTog
NTIxLAotICAgICAgICBwcm9wZXJ0eTUyMjogNTIyLAotICAgICAgICBwcm9wZXJ0eTUyMzogNTIz
LAotICAgICAgICBwcm9wZXJ0eTUyNDogNTI0LAotICAgICAgICBwcm9wZXJ0eTUyNTogNTI1LAot
ICAgICAgICBwcm9wZXJ0eTUyNjogNTI2LAotICAgICAgICBwcm9wZXJ0eTUyNzogNTI3LAotICAg
ICAgICBwcm9wZXJ0eTUyODogNTI4LAotICAgICAgICBwcm9wZXJ0eTUyOTogNTI5LAotICAgICAg
ICBwcm9wZXJ0eTUzMDogNTMwLAotICAgICAgICBwcm9wZXJ0eTUzMTogNTMxLAotICAgICAgICBw
cm9wZXJ0eTUzMjogNTMyLAotICAgICAgICBwcm9wZXJ0eTUzMzogNTMzLAotICAgICAgICBwcm9w
ZXJ0eTUzNDogNTM0LAotICAgICAgICBwcm9wZXJ0eTUzNTogNTM1LAotICAgICAgICBwcm9wZXJ0
eTUzNjogNTM2LAotICAgICAgICBwcm9wZXJ0eTUzNzogNTM3LAotICAgICAgICBwcm9wZXJ0eTUz
ODogNTM4LAotICAgICAgICBwcm9wZXJ0eTUzOTogNTM5LAotICAgICAgICBwcm9wZXJ0eTU0MDog
NTQwLAotICAgICAgICBwcm9wZXJ0eTU0MTogNTQxLAotICAgICAgICBwcm9wZXJ0eTU0MjogNTQy
LAotICAgICAgICBwcm9wZXJ0eTU0MzogNTQzLAotICAgICAgICBwcm9wZXJ0eTU0NDogNTQ0LAot
ICAgICAgICBwcm9wZXJ0eTU0NTogNTQ1LAotICAgICAgICBwcm9wZXJ0eTU0NjogNTQ2LAotICAg
ICAgICBwcm9wZXJ0eTU0NzogNTQ3LAotICAgICAgICBwcm9wZXJ0eTU0ODogNTQ4LAotICAgICAg
ICBwcm9wZXJ0eTU0OTogNTQ5LAotICAgICAgICBwcm9wZXJ0eTU1MDogNTUwLAotICAgICAgICBw
cm9wZXJ0eTU1MTogNTUxLAotICAgICAgICBwcm9wZXJ0eTU1MjogNTUyLAotICAgICAgICBwcm9w
ZXJ0eTU1MzogNTUzLAotICAgICAgICBwcm9wZXJ0eTU1NDogNTU0LAotICAgICAgICBwcm9wZXJ0
eTU1NTogNTU1LAotICAgICAgICBwcm9wZXJ0eTU1NjogNTU2LAotICAgICAgICBwcm9wZXJ0eTU1
NzogNTU3LAotICAgICAgICBwcm9wZXJ0eTU1ODogNTU4LAotICAgICAgICBwcm9wZXJ0eTU1OTog
NTU5LAotICAgICAgICBwcm9wZXJ0eTU2MDogNTYwLAotICAgICAgICBwcm9wZXJ0eTU2MTogNTYx
LAotICAgICAgICBwcm9wZXJ0eTU2MjogNTYyLAotICAgICAgICBwcm9wZXJ0eTU2MzogNTYzLAot
ICAgICAgICBwcm9wZXJ0eTU2NDogNTY0LAotICAgICAgICBwcm9wZXJ0eTU2NTogNTY1LAotICAg
ICAgICBwcm9wZXJ0eTU2NjogNTY2LAotICAgICAgICBwcm9wZXJ0eTU2NzogNTY3LAotICAgICAg
ICBwcm9wZXJ0eTU2ODogNTY4LAotICAgICAgICBwcm9wZXJ0eTU2OTogNTY5LAotICAgICAgICBw
cm9wZXJ0eTU3MDogNTcwLAotICAgICAgICBwcm9wZXJ0eTU3MTogNTcxLAotICAgICAgICBwcm9w
ZXJ0eTU3MjogNTcyLAotICAgICAgICBwcm9wZXJ0eTU3MzogNTczLAotICAgICAgICBwcm9wZXJ0
eTU3NDogNTc0LAotICAgICAgICBwcm9wZXJ0eTU3NTogNTc1LAotICAgICAgICBwcm9wZXJ0eTU3
NjogNTc2LAotICAgICAgICBwcm9wZXJ0eTU3NzogNTc3LAotICAgICAgICBwcm9wZXJ0eTU3ODog
NTc4LAotICAgICAgICBwcm9wZXJ0eTU3OTogNTc5LAotICAgICAgICBwcm9wZXJ0eTU4MDogNTgw
LAotICAgICAgICBwcm9wZXJ0eTU4MTogNTgxLAotICAgICAgICBwcm9wZXJ0eTU4MjogNTgyLAot
ICAgICAgICBwcm9wZXJ0eTU4MzogNTgzLAotICAgICAgICBwcm9wZXJ0eTU4NDogNTg0LAotICAg
ICAgICBwcm9wZXJ0eTU4NTogNTg1LAotICAgICAgICBwcm9wZXJ0eTU4NjogNTg2LAotICAgICAg
ICBwcm9wZXJ0eTU4NzogNTg3LAotICAgICAgICBwcm9wZXJ0eTU4ODogNTg4LAotICAgICAgICBw
cm9wZXJ0eTU4OTogNTg5LAotICAgICAgICBwcm9wZXJ0eTU5MDogNTkwLAotICAgICAgICBwcm9w
ZXJ0eTU5MTogNTkxLAotICAgICAgICBwcm9wZXJ0eTU5MjogNTkyLAotICAgICAgICBwcm9wZXJ0
eTU5MzogNTkzLAotICAgICAgICBwcm9wZXJ0eTU5NDogNTk0LAotICAgICAgICBwcm9wZXJ0eTU5
NTogNTk1LAotICAgICAgICBwcm9wZXJ0eTU5NjogNTk2LAotICAgICAgICBwcm9wZXJ0eTU5Nzog
NTk3LAotICAgICAgICBwcm9wZXJ0eTU5ODogNTk4LAotICAgICAgICBwcm9wZXJ0eTU5OTogNTk5
LAotICAgICAgICBwcm9wZXJ0eTYwMDogNjAwLAotICAgICAgICBwcm9wZXJ0eTYwMTogNjAxLAot
ICAgICAgICBwcm9wZXJ0eTYwMjogNjAyLAotICAgICAgICBwcm9wZXJ0eTYwMzogNjAzLAotICAg
ICAgICBwcm9wZXJ0eTYwNDogNjA0LAotICAgICAgICBwcm9wZXJ0eTYwNTogNjA1LAotICAgICAg
ICBwcm9wZXJ0eTYwNjogNjA2LAotICAgICAgICBwcm9wZXJ0eTYwNzogNjA3LAotICAgICAgICBw
cm9wZXJ0eTYwODogNjA4LAotICAgICAgICBwcm9wZXJ0eTYwOTogNjA5LAotICAgICAgICBwcm9w
ZXJ0eTYxMDogNjEwLAotICAgICAgICBwcm9wZXJ0eTYxMTogNjExLAotICAgICAgICBwcm9wZXJ0
eTYxMjogNjEyLAotICAgICAgICBwcm9wZXJ0eTYxMzogNjEzLAotICAgICAgICBwcm9wZXJ0eTYx
NDogNjE0LAotICAgICAgICBwcm9wZXJ0eTYxNTogNjE1LAotICAgICAgICBwcm9wZXJ0eTYxNjog
NjE2LAotICAgICAgICBwcm9wZXJ0eTYxNzogNjE3LAotICAgICAgICBwcm9wZXJ0eTYxODogNjE4
LAotICAgICAgICBwcm9wZXJ0eTYxOTogNjE5LAotICAgICAgICBwcm9wZXJ0eTYyMDogNjIwLAot
ICAgICAgICBwcm9wZXJ0eTYyMTogNjIxLAotICAgICAgICBwcm9wZXJ0eTYyMjogNjIyLAotICAg
ICAgICBwcm9wZXJ0eTYyMzogNjIzLAotICAgICAgICBwcm9wZXJ0eTYyNDogNjI0LAotICAgICAg
ICBwcm9wZXJ0eTYyNTogNjI1LAotICAgICAgICBwcm9wZXJ0eTYyNjogNjI2LAotICAgICAgICBw
cm9wZXJ0eTYyNzogNjI3LAotICAgICAgICBwcm9wZXJ0eTYyODogNjI4LAotICAgICAgICBwcm9w
ZXJ0eTYyOTogNjI5LAotICAgICAgICBwcm9wZXJ0eTYzMDogNjMwLAotICAgICAgICBwcm9wZXJ0
eTYzMTogNjMxLAotICAgICAgICBwcm9wZXJ0eTYzMjogNjMyLAotICAgICAgICBwcm9wZXJ0eTYz
MzogNjMzLAotICAgICAgICBwcm9wZXJ0eTYzNDogNjM0LAotICAgICAgICBwcm9wZXJ0eTYzNTog
NjM1LAotICAgICAgICBwcm9wZXJ0eTYzNjogNjM2LAotICAgICAgICBwcm9wZXJ0eTYzNzogNjM3
LAotICAgICAgICBwcm9wZXJ0eTYzODogNjM4LAotICAgICAgICBwcm9wZXJ0eTYzOTogNjM5LAot
ICAgICAgICBwcm9wZXJ0eTY0MDogNjQwLAotICAgICAgICBwcm9wZXJ0eTY0MTogNjQxLAotICAg
ICAgICBwcm9wZXJ0eTY0MjogNjQyLAotICAgICAgICBwcm9wZXJ0eTY0MzogNjQzLAotICAgICAg
ICBwcm9wZXJ0eTY0NDogNjQ0LAotICAgICAgICBwcm9wZXJ0eTY0NTogNjQ1LAotICAgICAgICBw
cm9wZXJ0eTY0NjogNjQ2LAotICAgICAgICBwcm9wZXJ0eTY0NzogNjQ3LAotICAgICAgICBwcm9w
ZXJ0eTY0ODogNjQ4LAotICAgICAgICBwcm9wZXJ0eTY0OTogNjQ5LAotICAgICAgICBwcm9wZXJ0
eTY1MDogNjUwLAotICAgICAgICBwcm9wZXJ0eTY1MTogNjUxLAotICAgICAgICBwcm9wZXJ0eTY1
MjogNjUyLAotICAgICAgICBwcm9wZXJ0eTY1MzogNjUzLAotICAgICAgICBwcm9wZXJ0eTY1NDog
NjU0LAotICAgICAgICBwcm9wZXJ0eTY1NTogNjU1LAotICAgICAgICBwcm9wZXJ0eTY1NjogNjU2
LAotICAgICAgICBwcm9wZXJ0eTY1NzogNjU3LAotICAgICAgICBwcm9wZXJ0eTY1ODogNjU4LAot
ICAgICAgICBwcm9wZXJ0eTY1OTogNjU5LAotICAgICAgICBwcm9wZXJ0eTY2MDogNjYwLAotICAg
ICAgICBwcm9wZXJ0eTY2MTogNjYxLAotICAgICAgICBwcm9wZXJ0eTY2MjogNjYyLAotICAgICAg
ICBwcm9wZXJ0eTY2MzogNjYzLAotICAgICAgICBwcm9wZXJ0eTY2NDogNjY0LAotICAgICAgICBw
cm9wZXJ0eTY2NTogNjY1LAotICAgICAgICBwcm9wZXJ0eTY2NjogNjY2LAotICAgICAgICBwcm9w
ZXJ0eTY2NzogNjY3LAotICAgICAgICBwcm9wZXJ0eTY2ODogNjY4LAotICAgICAgICBwcm9wZXJ0
eTY2OTogNjY5LAotICAgICAgICBwcm9wZXJ0eTY3MDogNjcwLAotICAgICAgICBwcm9wZXJ0eTY3
MTogNjcxLAotICAgICAgICBwcm9wZXJ0eTY3MjogNjcyLAotICAgICAgICBwcm9wZXJ0eTY3Mzog
NjczLAotICAgICAgICBwcm9wZXJ0eTY3NDogNjc0LAotICAgICAgICBwcm9wZXJ0eTY3NTogNjc1
LAotICAgICAgICBwcm9wZXJ0eTY3NjogNjc2LAotICAgICAgICBwcm9wZXJ0eTY3NzogNjc3LAot
ICAgICAgICBwcm9wZXJ0eTY3ODogNjc4LAotICAgICAgICBwcm9wZXJ0eTY3OTogNjc5LAotICAg
ICAgICBwcm9wZXJ0eTY4MDogNjgwLAotICAgICAgICBwcm9wZXJ0eTY4MTogNjgxLAotICAgICAg
ICBwcm9wZXJ0eTY4MjogNjgyLAotICAgICAgICBwcm9wZXJ0eTY4MzogNjgzLAotICAgICAgICBw
cm9wZXJ0eTY4NDogNjg0LAotICAgICAgICBwcm9wZXJ0eTY4NTogNjg1LAotICAgICAgICBwcm9w
ZXJ0eTY4NjogNjg2LAotICAgICAgICBwcm9wZXJ0eTY4NzogNjg3LAotICAgICAgICBwcm9wZXJ0
eTY4ODogNjg4LAotICAgICAgICBwcm9wZXJ0eTY4OTogNjg5LAotICAgICAgICBwcm9wZXJ0eTY5
MDogNjkwLAotICAgICAgICBwcm9wZXJ0eTY5MTogNjkxLAotICAgICAgICBwcm9wZXJ0eTY5Mjog
NjkyLAotICAgICAgICBwcm9wZXJ0eTY5MzogNjkzLAotICAgICAgICBwcm9wZXJ0eTY5NDogNjk0
LAotICAgICAgICBwcm9wZXJ0eTY5NTogNjk1LAotICAgICAgICBwcm9wZXJ0eTY5NjogNjk2LAot
ICAgICAgICBwcm9wZXJ0eTY5NzogNjk3LAotICAgICAgICBwcm9wZXJ0eTY5ODogNjk4LAotICAg
ICAgICBwcm9wZXJ0eTY5OTogNjk5LAotICAgICAgICBwcm9wZXJ0eTcwMDogNzAwLAotICAgICAg
ICBwcm9wZXJ0eTcwMTogNzAxLAotICAgICAgICBwcm9wZXJ0eTcwMjogNzAyLAotICAgICAgICBw
cm9wZXJ0eTcwMzogNzAzLAotICAgICAgICBwcm9wZXJ0eTcwNDogNzA0LAotICAgICAgICBwcm9w
ZXJ0eTcwNTogNzA1LAotICAgICAgICBwcm9wZXJ0eTcwNjogNzA2LAotICAgICAgICBwcm9wZXJ0
eTcwNzogNzA3LAotICAgICAgICBwcm9wZXJ0eTcwODogNzA4LAotICAgICAgICBwcm9wZXJ0eTcw
OTogNzA5LAotICAgICAgICBwcm9wZXJ0eTcxMDogNzEwLAotICAgICAgICBwcm9wZXJ0eTcxMTog
NzExLAotICAgICAgICBwcm9wZXJ0eTcxMjogNzEyLAotICAgICAgICBwcm9wZXJ0eTcxMzogNzEz
LAotICAgICAgICBwcm9wZXJ0eTcxNDogNzE0LAotICAgICAgICBwcm9wZXJ0eTcxNTogNzE1LAot
ICAgICAgICBwcm9wZXJ0eTcxNjogNzE2LAotICAgICAgICBwcm9wZXJ0eTcxNzogNzE3LAotICAg
ICAgICBwcm9wZXJ0eTcxODogNzE4LAotICAgICAgICBwcm9wZXJ0eTcxOTogNzE5LAotICAgICAg
ICBwcm9wZXJ0eTcyMDogNzIwLAotICAgICAgICBwcm9wZXJ0eTcyMTogNzIxLAotICAgICAgICBw
cm9wZXJ0eTcyMjogNzIyLAotICAgICAgICBwcm9wZXJ0eTcyMzogNzIzLAotICAgICAgICBwcm9w
ZXJ0eTcyNDogNzI0LAotICAgICAgICBwcm9wZXJ0eTcyNTogNzI1LAotICAgICAgICBwcm9wZXJ0
eTcyNjogNzI2LAotICAgICAgICBwcm9wZXJ0eTcyNzogNzI3LAotICAgICAgICBwcm9wZXJ0eTcy
ODogNzI4LAotICAgICAgICBwcm9wZXJ0eTcyOTogNzI5LAotICAgICAgICBwcm9wZXJ0eTczMDog
NzMwLAotICAgICAgICBwcm9wZXJ0eTczMTogNzMxLAotICAgICAgICBwcm9wZXJ0eTczMjogNzMy
LAotICAgICAgICBwcm9wZXJ0eTczMzogNzMzLAotICAgICAgICBwcm9wZXJ0eTczNDogNzM0LAot
ICAgICAgICBwcm9wZXJ0eTczNTogNzM1LAotICAgICAgICBwcm9wZXJ0eTczNjogNzM2LAotICAg
ICAgICBwcm9wZXJ0eTczNzogNzM3LAotICAgICAgICBwcm9wZXJ0eTczODogNzM4LAotICAgICAg
ICBwcm9wZXJ0eTczOTogNzM5LAotICAgICAgICBwcm9wZXJ0eTc0MDogNzQwLAotICAgICAgICBw
cm9wZXJ0eTc0MTogNzQxLAotICAgICAgICBwcm9wZXJ0eTc0MjogNzQyLAotICAgICAgICBwcm9w
ZXJ0eTc0MzogNzQzLAotICAgICAgICBwcm9wZXJ0eTc0NDogNzQ0LAotICAgICAgICBwcm9wZXJ0
eTc0NTogNzQ1LAotICAgICAgICBwcm9wZXJ0eTc0NjogNzQ2LAotICAgICAgICBwcm9wZXJ0eTc0
NzogNzQ3LAotICAgICAgICBwcm9wZXJ0eTc0ODogNzQ4LAotICAgICAgICBwcm9wZXJ0eTc0OTog
NzQ5LAotICAgICAgICBwcm9wZXJ0eTc1MDogNzUwLAotICAgICAgICBwcm9wZXJ0eTc1MTogNzUx
LAotICAgICAgICBwcm9wZXJ0eTc1MjogNzUyLAotICAgICAgICBwcm9wZXJ0eTc1MzogNzUzLAot
ICAgICAgICBwcm9wZXJ0eTc1NDogNzU0LAotICAgICAgICBwcm9wZXJ0eTc1NTogNzU1LAotICAg
ICAgICBwcm9wZXJ0eTc1NjogNzU2LAotICAgICAgICBwcm9wZXJ0eTc1NzogNzU3LAotICAgICAg
ICBwcm9wZXJ0eTc1ODogNzU4LAotICAgICAgICBwcm9wZXJ0eTc1OTogNzU5LAotICAgICAgICBw
cm9wZXJ0eTc2MDogNzYwLAotICAgICAgICBwcm9wZXJ0eTc2MTogNzYxLAotICAgICAgICBwcm9w
ZXJ0eTc2MjogNzYyLAotICAgICAgICBwcm9wZXJ0eTc2MzogNzYzLAotICAgICAgICBwcm9wZXJ0
eTc2NDogNzY0LAotICAgICAgICBwcm9wZXJ0eTc2NTogNzY1LAotICAgICAgICBwcm9wZXJ0eTc2
NjogNzY2LAotICAgICAgICBwcm9wZXJ0eTc2NzogNzY3LAotICAgICAgICBwcm9wZXJ0eTc2ODog
NzY4LAotICAgICAgICBwcm9wZXJ0eTc2OTogNzY5LAotICAgICAgICBwcm9wZXJ0eTc3MDogNzcw
LAotICAgICAgICBwcm9wZXJ0eTc3MTogNzcxLAotICAgICAgICBwcm9wZXJ0eTc3MjogNzcyLAot
ICAgICAgICBwcm9wZXJ0eTc3MzogNzczLAotICAgICAgICBwcm9wZXJ0eTc3NDogNzc0LAotICAg
ICAgICBwcm9wZXJ0eTc3NTogNzc1LAotICAgICAgICBwcm9wZXJ0eTc3NjogNzc2LAotICAgICAg
ICBwcm9wZXJ0eTc3NzogNzc3LAotICAgICAgICBwcm9wZXJ0eTc3ODogNzc4LAotICAgICAgICBw
cm9wZXJ0eTc3OTogNzc5LAotICAgICAgICBwcm9wZXJ0eTc4MDogNzgwLAotICAgICAgICBwcm9w
ZXJ0eTc4MTogNzgxLAotICAgICAgICBwcm9wZXJ0eTc4MjogNzgyLAotICAgICAgICBwcm9wZXJ0
eTc4MzogNzgzLAotICAgICAgICBwcm9wZXJ0eTc4NDogNzg0LAotICAgICAgICBwcm9wZXJ0eTc4
NTogNzg1LAotICAgICAgICBwcm9wZXJ0eTc4NjogNzg2LAotICAgICAgICBwcm9wZXJ0eTc4Nzog
Nzg3LAotICAgICAgICBwcm9wZXJ0eTc4ODogNzg4LAotICAgICAgICBwcm9wZXJ0eTc4OTogNzg5
LAotICAgICAgICBwcm9wZXJ0eTc5MDogNzkwLAotICAgICAgICBwcm9wZXJ0eTc5MTogNzkxLAot
ICAgICAgICBwcm9wZXJ0eTc5MjogNzkyLAotICAgICAgICBwcm9wZXJ0eTc5MzogNzkzLAotICAg
ICAgICBwcm9wZXJ0eTc5NDogNzk0LAotICAgICAgICBwcm9wZXJ0eTc5NTogNzk1LAotICAgICAg
ICBwcm9wZXJ0eTc5NjogNzk2LAotICAgICAgICBwcm9wZXJ0eTc5NzogNzk3LAotICAgICAgICBw
cm9wZXJ0eTc5ODogNzk4LAotICAgICAgICBwcm9wZXJ0eTc5OTogNzk5LAotICAgICAgICBwcm9w
ZXJ0eTgwMDogODAwLAotICAgICAgICBwcm9wZXJ0eTgwMTogODAxLAotICAgICAgICBwcm9wZXJ0
eTgwMjogODAyLAotICAgICAgICBwcm9wZXJ0eTgwMzogODAzLAotICAgICAgICBwcm9wZXJ0eTgw
NDogODA0LAotICAgICAgICBwcm9wZXJ0eTgwNTogODA1LAotICAgICAgICBwcm9wZXJ0eTgwNjog
ODA2LAotICAgICAgICBwcm9wZXJ0eTgwNzogODA3LAotICAgICAgICBwcm9wZXJ0eTgwODogODA4
LAotICAgICAgICBwcm9wZXJ0eTgwOTogODA5LAotICAgICAgICBwcm9wZXJ0eTgxMDogODEwLAot
ICAgICAgICBwcm9wZXJ0eTgxMTogODExLAotICAgICAgICBwcm9wZXJ0eTgxMjogODEyLAotICAg
ICAgICBwcm9wZXJ0eTgxMzogODEzLAotICAgICAgICBwcm9wZXJ0eTgxNDogODE0LAotICAgICAg
ICBwcm9wZXJ0eTgxNTogODE1LAotICAgICAgICBwcm9wZXJ0eTgxNjogODE2LAotICAgICAgICBw
cm9wZXJ0eTgxNzogODE3LAotICAgICAgICBwcm9wZXJ0eTgxODogODE4LAotICAgICAgICBwcm9w
ZXJ0eTgxOTogODE5LAotICAgICAgICBwcm9wZXJ0eTgyMDogODIwLAotICAgICAgICBwcm9wZXJ0
eTgyMTogODIxLAotICAgICAgICBwcm9wZXJ0eTgyMjogODIyLAotICAgICAgICBwcm9wZXJ0eTgy
MzogODIzLAotICAgICAgICBwcm9wZXJ0eTgyNDogODI0LAotICAgICAgICBwcm9wZXJ0eTgyNTog
ODI1LAotICAgICAgICBwcm9wZXJ0eTgyNjogODI2LAotICAgICAgICBwcm9wZXJ0eTgyNzogODI3
LAotICAgICAgICBwcm9wZXJ0eTgyODogODI4LAotICAgICAgICBwcm9wZXJ0eTgyOTogODI5LAot
ICAgICAgICBwcm9wZXJ0eTgzMDogODMwLAotICAgICAgICBwcm9wZXJ0eTgzMTogODMxLAotICAg
ICAgICBwcm9wZXJ0eTgzMjogODMyLAotICAgICAgICBwcm9wZXJ0eTgzMzogODMzLAotICAgICAg
ICBwcm9wZXJ0eTgzNDogODM0LAotICAgICAgICBwcm9wZXJ0eTgzNTogODM1LAotICAgICAgICBw
cm9wZXJ0eTgzNjogODM2LAotICAgICAgICBwcm9wZXJ0eTgzNzogODM3LAotICAgICAgICBwcm9w
ZXJ0eTgzODogODM4LAotICAgICAgICBwcm9wZXJ0eTgzOTogODM5LAotICAgICAgICBwcm9wZXJ0
eTg0MDogODQwLAotICAgICAgICBwcm9wZXJ0eTg0MTogODQxLAotICAgICAgICBwcm9wZXJ0eTg0
MjogODQyLAotICAgICAgICBwcm9wZXJ0eTg0MzogODQzLAotICAgICAgICBwcm9wZXJ0eTg0NDog
ODQ0LAotICAgICAgICBwcm9wZXJ0eTg0NTogODQ1LAotICAgICAgICBwcm9wZXJ0eTg0NjogODQ2
LAotICAgICAgICBwcm9wZXJ0eTg0NzogODQ3LAotICAgICAgICBwcm9wZXJ0eTg0ODogODQ4LAot
ICAgICAgICBwcm9wZXJ0eTg0OTogODQ5LAotICAgICAgICBwcm9wZXJ0eTg1MDogODUwLAotICAg
ICAgICBwcm9wZXJ0eTg1MTogODUxLAotICAgICAgICBwcm9wZXJ0eTg1MjogODUyLAotICAgICAg
ICBwcm9wZXJ0eTg1MzogODUzLAotICAgICAgICBwcm9wZXJ0eTg1NDogODU0LAotICAgICAgICBw
cm9wZXJ0eTg1NTogODU1LAotICAgICAgICBwcm9wZXJ0eTg1NjogODU2LAotICAgICAgICBwcm9w
ZXJ0eTg1NzogODU3LAotICAgICAgICBwcm9wZXJ0eTg1ODogODU4LAotICAgICAgICBwcm9wZXJ0
eTg1OTogODU5LAotICAgICAgICBwcm9wZXJ0eTg2MDogODYwLAotICAgICAgICBwcm9wZXJ0eTg2
MTogODYxLAotICAgICAgICBwcm9wZXJ0eTg2MjogODYyLAotICAgICAgICBwcm9wZXJ0eTg2Mzog
ODYzLAotICAgICAgICBwcm9wZXJ0eTg2NDogODY0LAotICAgICAgICBwcm9wZXJ0eTg2NTogODY1
LAotICAgICAgICBwcm9wZXJ0eTg2NjogODY2LAotICAgICAgICBwcm9wZXJ0eTg2NzogODY3LAot
ICAgICAgICBwcm9wZXJ0eTg2ODogODY4LAotICAgICAgICBwcm9wZXJ0eTg2OTogODY5LAotICAg
ICAgICBwcm9wZXJ0eTg3MDogODcwLAotICAgICAgICBwcm9wZXJ0eTg3MTogODcxLAotICAgICAg
ICBwcm9wZXJ0eTg3MjogODcyLAotICAgICAgICBwcm9wZXJ0eTg3MzogODczLAotICAgICAgICBw
cm9wZXJ0eTg3NDogODc0LAotICAgICAgICBwcm9wZXJ0eTg3NTogODc1LAotICAgICAgICBwcm9w
ZXJ0eTg3NjogODc2LAotICAgICAgICBwcm9wZXJ0eTg3NzogODc3LAotICAgICAgICBwcm9wZXJ0
eTg3ODogODc4LAotICAgICAgICBwcm9wZXJ0eTg3OTogODc5LAotICAgICAgICBwcm9wZXJ0eTg4
MDogODgwLAotICAgICAgICBwcm9wZXJ0eTg4MTogODgxLAotICAgICAgICBwcm9wZXJ0eTg4Mjog
ODgyLAotICAgICAgICBwcm9wZXJ0eTg4MzogODgzLAotICAgICAgICBwcm9wZXJ0eTg4NDogODg0
LAotICAgICAgICBwcm9wZXJ0eTg4NTogODg1LAotICAgICAgICBwcm9wZXJ0eTg4NjogODg2LAot
ICAgICAgICBwcm9wZXJ0eTg4NzogODg3LAotICAgICAgICBwcm9wZXJ0eTg4ODogODg4LAotICAg
ICAgICBwcm9wZXJ0eTg4OTogODg5LAotICAgICAgICBwcm9wZXJ0eTg5MDogODkwLAotICAgICAg
ICBwcm9wZXJ0eTg5MTogODkxLAotICAgICAgICBwcm9wZXJ0eTg5MjogODkyLAotICAgICAgICBw
cm9wZXJ0eTg5MzogODkzLAotICAgICAgICBwcm9wZXJ0eTg5NDogODk0LAotICAgICAgICBwcm9w
ZXJ0eTg5NTogODk1LAotICAgICAgICBwcm9wZXJ0eTg5NjogODk2LAotICAgICAgICBwcm9wZXJ0
eTg5NzogODk3LAotICAgICAgICBwcm9wZXJ0eTg5ODogODk4LAotICAgICAgICBwcm9wZXJ0eTg5
OTogODk5LAotICAgICAgICBwcm9wZXJ0eTkwMDogOTAwLAotICAgICAgICBwcm9wZXJ0eTkwMTog
OTAxLAotICAgICAgICBwcm9wZXJ0eTkwMjogOTAyLAotICAgICAgICBwcm9wZXJ0eTkwMzogOTAz
LAotICAgICAgICBwcm9wZXJ0eTkwNDogOTA0LAotICAgICAgICBwcm9wZXJ0eTkwNTogOTA1LAot
ICAgICAgICBwcm9wZXJ0eTkwNjogOTA2LAotICAgICAgICBwcm9wZXJ0eTkwNzogOTA3LAotICAg
ICAgICBwcm9wZXJ0eTkwODogOTA4LAotICAgICAgICBwcm9wZXJ0eTkwOTogOTA5LAotICAgICAg
ICBwcm9wZXJ0eTkxMDogOTEwLAotICAgICAgICBwcm9wZXJ0eTkxMTogOTExLAotICAgICAgICBw
cm9wZXJ0eTkxMjogOTEyLAotICAgICAgICBwcm9wZXJ0eTkxMzogOTEzLAotICAgICAgICBwcm9w
ZXJ0eTkxNDogOTE0LAotICAgICAgICBwcm9wZXJ0eTkxNTogOTE1LAotICAgICAgICBwcm9wZXJ0
eTkxNjogOTE2LAotICAgICAgICBwcm9wZXJ0eTkxNzogOTE3LAotICAgICAgICBwcm9wZXJ0eTkx
ODogOTE4LAotICAgICAgICBwcm9wZXJ0eTkxOTogOTE5LAotICAgICAgICBwcm9wZXJ0eTkyMDog
OTIwLAotICAgICAgICBwcm9wZXJ0eTkyMTogOTIxLAotICAgICAgICBwcm9wZXJ0eTkyMjogOTIy
LAotICAgICAgICBwcm9wZXJ0eTkyMzogOTIzLAotICAgICAgICBwcm9wZXJ0eTkyNDogOTI0LAot
ICAgICAgICBwcm9wZXJ0eTkyNTogOTI1LAotICAgICAgICBwcm9wZXJ0eTkyNjogOTI2LAotICAg
ICAgICBwcm9wZXJ0eTkyNzogOTI3LAotICAgICAgICBwcm9wZXJ0eTkyODogOTI4LAotICAgICAg
ICBwcm9wZXJ0eTkyOTogOTI5LAotICAgICAgICBwcm9wZXJ0eTkzMDogOTMwLAotICAgICAgICBw
cm9wZXJ0eTkzMTogOTMxLAotICAgICAgICBwcm9wZXJ0eTkzMjogOTMyLAotICAgICAgICBwcm9w
ZXJ0eTkzMzogOTMzLAotICAgICAgICBwcm9wZXJ0eTkzNDogOTM0LAotICAgICAgICBwcm9wZXJ0
eTkzNTogOTM1LAotICAgICAgICBwcm9wZXJ0eTkzNjogOTM2LAotICAgICAgICBwcm9wZXJ0eTkz
NzogOTM3LAotICAgICAgICBwcm9wZXJ0eTkzODogOTM4LAotICAgICAgICBwcm9wZXJ0eTkzOTog
OTM5LAotICAgICAgICBwcm9wZXJ0eTk0MDogOTQwLAotICAgICAgICBwcm9wZXJ0eTk0MTogOTQx
LAotICAgICAgICBwcm9wZXJ0eTk0MjogOTQyLAotICAgICAgICBwcm9wZXJ0eTk0MzogOTQzLAot
ICAgICAgICBwcm9wZXJ0eTk0NDogOTQ0LAotICAgICAgICBwcm9wZXJ0eTk0NTogOTQ1LAotICAg
ICAgICBwcm9wZXJ0eTk0NjogOTQ2LAotICAgICAgICBwcm9wZXJ0eTk0NzogOTQ3LAotICAgICAg
ICBwcm9wZXJ0eTk0ODogOTQ4LAotICAgICAgICBwcm9wZXJ0eTk0OTogOTQ5LAotICAgICAgICBw
cm9wZXJ0eTk1MDogOTUwLAotICAgICAgICBwcm9wZXJ0eTk1MTogOTUxLAotICAgICAgICBwcm9w
ZXJ0eTk1MjogOTUyLAotICAgICAgICBwcm9wZXJ0eTk1MzogOTUzLAotICAgICAgICBwcm9wZXJ0
eTk1NDogOTU0LAotICAgICAgICBwcm9wZXJ0eTk1NTogOTU1LAotICAgICAgICBwcm9wZXJ0eTk1
NjogOTU2LAotICAgICAgICBwcm9wZXJ0eTk1NzogOTU3LAotICAgICAgICBwcm9wZXJ0eTk1ODog
OTU4LAotICAgICAgICBwcm9wZXJ0eTk1OTogOTU5LAotICAgICAgICBwcm9wZXJ0eTk2MDogOTYw
LAotICAgICAgICBwcm9wZXJ0eTk2MTogOTYxLAotICAgICAgICBwcm9wZXJ0eTk2MjogOTYyLAot
ICAgICAgICBwcm9wZXJ0eTk2MzogOTYzLAotICAgICAgICBwcm9wZXJ0eTk2NDogOTY0LAotICAg
ICAgICBwcm9wZXJ0eTk2NTogOTY1LAotICAgICAgICBwcm9wZXJ0eTk2NjogOTY2LAotICAgICAg
ICBwcm9wZXJ0eTk2NzogOTY3LAotICAgICAgICBwcm9wZXJ0eTk2ODogOTY4LAotICAgICAgICBw
cm9wZXJ0eTk2OTogOTY5LAotICAgICAgICBwcm9wZXJ0eTk3MDogOTcwLAotICAgICAgICBwcm9w
ZXJ0eTk3MTogOTcxLAotICAgICAgICBwcm9wZXJ0eTk3MjogOTcyLAotICAgICAgICBwcm9wZXJ0
eTk3MzogOTczLAotICAgICAgICBwcm9wZXJ0eTk3NDogOTc0LAotICAgICAgICBwcm9wZXJ0eTk3
NTogOTc1LAotICAgICAgICBwcm9wZXJ0eTk3NjogOTc2LAotICAgICAgICBwcm9wZXJ0eTk3Nzog
OTc3LAotICAgICAgICBwcm9wZXJ0eTk3ODogOTc4LAotICAgICAgICBwcm9wZXJ0eTk3OTogOTc5
LAotICAgICAgICBwcm9wZXJ0eTk4MDogOTgwLAotICAgICAgICBwcm9wZXJ0eTk4MTogOTgxLAot
ICAgICAgICBwcm9wZXJ0eTk4MjogOTgyLAotICAgICAgICBwcm9wZXJ0eTk4MzogOTgzLAotICAg
ICAgICBwcm9wZXJ0eTk4NDogOTg0LAotICAgICAgICBwcm9wZXJ0eTk4NTogOTg1LAotICAgICAg
ICBwcm9wZXJ0eTk4NjogOTg2LAotICAgICAgICBwcm9wZXJ0eTk4NzogOTg3LAotICAgICAgICBw
cm9wZXJ0eTk4ODogOTg4LAotICAgICAgICBwcm9wZXJ0eTk4OTogOTg5LAotICAgICAgICBwcm9w
ZXJ0eTk5MDogOTkwLAotICAgICAgICBwcm9wZXJ0eTk5MTogOTkxLAotICAgICAgICBwcm9wZXJ0
eTk5MjogOTkyLAotICAgICAgICBwcm9wZXJ0eTk5MzogOTkzLAotICAgICAgICBwcm9wZXJ0eTk5
NDogOTk0LAotICAgICAgICBwcm9wZXJ0eTk5NTogOTk1LAotICAgICAgICBwcm9wZXJ0eTk5Njog
OTk2LAotICAgICAgICBwcm9wZXJ0eTk5NzogOTk3LAotICAgICAgICBwcm9wZXJ0eTk5ODogOTk4
LAotICAgICAgICBwcm9wZXJ0eTk5OTogOTk5LAotICAgICAgICBwcm9wZXJ0eTEwMDA6IDEwMDAs
Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QyKCkgewotICAgIHZhciBvID0ge307Ci0gICAg
by5wcm9wZXJ0eTEgPSAxOwotICAgIG8ucHJvcGVydHkyID0gMjsKLSAgICBvLnByb3BlcnR5MyA9
IDM7Ci0gICAgby5wcm9wZXJ0eTQgPSA0OwotICAgIG8ucHJvcGVydHk1ID0gNTsKLSAgICBvLnBy
b3BlcnR5NiA9IDY7Ci0gICAgby5wcm9wZXJ0eTcgPSA3OwotICAgIG8ucHJvcGVydHk4ID0gODsK
LSAgICBvLnByb3BlcnR5OSA9IDk7Ci0gICAgby5wcm9wZXJ0eTEwID0gMTA7Ci0gICAgby5wcm9w
ZXJ0eTExID0gMTE7Ci0gICAgby5wcm9wZXJ0eTEyID0gMTI7Ci0gICAgby5wcm9wZXJ0eTEzID0g
MTM7Ci0gICAgby5wcm9wZXJ0eTE0ID0gMTQ7Ci0gICAgby5wcm9wZXJ0eTE1ID0gMTU7Ci0gICAg
by5wcm9wZXJ0eTE2ID0gMTY7Ci0gICAgby5wcm9wZXJ0eTE3ID0gMTc7Ci0gICAgby5wcm9wZXJ0
eTE4ID0gMTg7Ci0gICAgby5wcm9wZXJ0eTE5ID0gMTk7Ci0gICAgby5wcm9wZXJ0eTIwID0gMjA7
Ci0gICAgby5wcm9wZXJ0eTIxID0gMjE7Ci0gICAgby5wcm9wZXJ0eTIyID0gMjI7Ci0gICAgby5w
cm9wZXJ0eTIzID0gMjM7Ci0gICAgby5wcm9wZXJ0eTI0ID0gMjQ7Ci0gICAgby5wcm9wZXJ0eTI1
ID0gMjU7Ci0gICAgby5wcm9wZXJ0eTI2ID0gMjY7Ci0gICAgby5wcm9wZXJ0eTI3ID0gMjc7Ci0g
ICAgby5wcm9wZXJ0eTI4ID0gMjg7Ci0gICAgby5wcm9wZXJ0eTI5ID0gMjk7Ci0gICAgby5wcm9w
ZXJ0eTMwID0gMzA7Ci0gICAgby5wcm9wZXJ0eTMxID0gMzE7Ci0gICAgby5wcm9wZXJ0eTMyID0g
MzI7Ci0gICAgby5wcm9wZXJ0eTMzID0gMzM7Ci0gICAgby5wcm9wZXJ0eTM0ID0gMzQ7Ci0gICAg
by5wcm9wZXJ0eTM1ID0gMzU7Ci0gICAgby5wcm9wZXJ0eTM2ID0gMzY7Ci0gICAgby5wcm9wZXJ0
eTM3ID0gMzc7Ci0gICAgby5wcm9wZXJ0eTM4ID0gMzg7Ci0gICAgby5wcm9wZXJ0eTM5ID0gMzk7
Ci0gICAgby5wcm9wZXJ0eTQwID0gNDA7Ci0gICAgby5wcm9wZXJ0eTQxID0gNDE7Ci0gICAgby5w
cm9wZXJ0eTQyID0gNDI7Ci0gICAgby5wcm9wZXJ0eTQzID0gNDM7Ci0gICAgby5wcm9wZXJ0eTQ0
ID0gNDQ7Ci0gICAgby5wcm9wZXJ0eTQ1ID0gNDU7Ci0gICAgby5wcm9wZXJ0eTQ2ID0gNDY7Ci0g
ICAgby5wcm9wZXJ0eTQ3ID0gNDc7Ci0gICAgby5wcm9wZXJ0eTQ4ID0gNDg7Ci0gICAgby5wcm9w
ZXJ0eTQ5ID0gNDk7Ci0gICAgby5wcm9wZXJ0eTUwID0gNTA7Ci0gICAgby5wcm9wZXJ0eTUxID0g
NTE7Ci0gICAgby5wcm9wZXJ0eTUyID0gNTI7Ci0gICAgby5wcm9wZXJ0eTUzID0gNTM7Ci0gICAg
by5wcm9wZXJ0eTU0ID0gNTQ7Ci0gICAgby5wcm9wZXJ0eTU1ID0gNTU7Ci0gICAgby5wcm9wZXJ0
eTU2ID0gNTY7Ci0gICAgby5wcm9wZXJ0eTU3ID0gNTc7Ci0gICAgby5wcm9wZXJ0eTU4ID0gNTg7
Ci0gICAgby5wcm9wZXJ0eTU5ID0gNTk7Ci0gICAgby5wcm9wZXJ0eTYwID0gNjA7Ci0gICAgby5w
cm9wZXJ0eTYxID0gNjE7Ci0gICAgby5wcm9wZXJ0eTYyID0gNjI7Ci0gICAgby5wcm9wZXJ0eTYz
ID0gNjM7Ci0gICAgby5wcm9wZXJ0eTY0ID0gNjQ7Ci0gICAgby5wcm9wZXJ0eTY1ID0gNjU7Ci0g
ICAgby5wcm9wZXJ0eTY2ID0gNjY7Ci0gICAgby5wcm9wZXJ0eTY3ID0gNjc7Ci0gICAgby5wcm9w
ZXJ0eTY4ID0gNjg7Ci0gICAgby5wcm9wZXJ0eTY5ID0gNjk7Ci0gICAgby5wcm9wZXJ0eTcwID0g
NzA7Ci0gICAgby5wcm9wZXJ0eTcxID0gNzE7Ci0gICAgby5wcm9wZXJ0eTcyID0gNzI7Ci0gICAg
by5wcm9wZXJ0eTczID0gNzM7Ci0gICAgby5wcm9wZXJ0eTc0ID0gNzQ7Ci0gICAgby5wcm9wZXJ0
eTc1ID0gNzU7Ci0gICAgby5wcm9wZXJ0eTc2ID0gNzY7Ci0gICAgby5wcm9wZXJ0eTc3ID0gNzc7
Ci0gICAgby5wcm9wZXJ0eTc4ID0gNzg7Ci0gICAgby5wcm9wZXJ0eTc5ID0gNzk7Ci0gICAgby5w
cm9wZXJ0eTgwID0gODA7Ci0gICAgby5wcm9wZXJ0eTgxID0gODE7Ci0gICAgby5wcm9wZXJ0eTgy
ID0gODI7Ci0gICAgby5wcm9wZXJ0eTgzID0gODM7Ci0gICAgby5wcm9wZXJ0eTg0ID0gODQ7Ci0g
ICAgby5wcm9wZXJ0eTg1ID0gODU7Ci0gICAgby5wcm9wZXJ0eTg2ID0gODY7Ci0gICAgby5wcm9w
ZXJ0eTg3ID0gODc7Ci0gICAgby5wcm9wZXJ0eTg4ID0gODg7Ci0gICAgby5wcm9wZXJ0eTg5ID0g
ODk7Ci0gICAgby5wcm9wZXJ0eTkwID0gOTA7Ci0gICAgby5wcm9wZXJ0eTkxID0gOTE7Ci0gICAg
by5wcm9wZXJ0eTkyID0gOTI7Ci0gICAgby5wcm9wZXJ0eTkzID0gOTM7Ci0gICAgby5wcm9wZXJ0
eTk0ID0gOTQ7Ci0gICAgby5wcm9wZXJ0eTk1ID0gOTU7Ci0gICAgby5wcm9wZXJ0eTk2ID0gOTY7
Ci0gICAgby5wcm9wZXJ0eTk3ID0gOTc7Ci0gICAgby5wcm9wZXJ0eTk4ID0gOTg7Ci0gICAgby5w
cm9wZXJ0eTk5ID0gOTk7Ci0gICAgby5wcm9wZXJ0eTEwMCA9IDEwMDsKLSAgICBvLnByb3BlcnR5
MTAxID0gMTAxOwotICAgIG8ucHJvcGVydHkxMDIgPSAxMDI7Ci0gICAgby5wcm9wZXJ0eTEwMyA9
IDEwMzsKLSAgICBvLnByb3BlcnR5MTA0ID0gMTA0OwotICAgIG8ucHJvcGVydHkxMDUgPSAxMDU7
Ci0gICAgby5wcm9wZXJ0eTEwNiA9IDEwNjsKLSAgICBvLnByb3BlcnR5MTA3ID0gMTA3OwotICAg
IG8ucHJvcGVydHkxMDggPSAxMDg7Ci0gICAgby5wcm9wZXJ0eTEwOSA9IDEwOTsKLSAgICBvLnBy
b3BlcnR5MTEwID0gMTEwOwotICAgIG8ucHJvcGVydHkxMTEgPSAxMTE7Ci0gICAgby5wcm9wZXJ0
eTExMiA9IDExMjsKLSAgICBvLnByb3BlcnR5MTEzID0gMTEzOwotICAgIG8ucHJvcGVydHkxMTQg
PSAxMTQ7Ci0gICAgby5wcm9wZXJ0eTExNSA9IDExNTsKLSAgICBvLnByb3BlcnR5MTE2ID0gMTE2
OwotICAgIG8ucHJvcGVydHkxMTcgPSAxMTc7Ci0gICAgby5wcm9wZXJ0eTExOCA9IDExODsKLSAg
ICBvLnByb3BlcnR5MTE5ID0gMTE5OwotICAgIG8ucHJvcGVydHkxMjAgPSAxMjA7Ci0gICAgby5w
cm9wZXJ0eTEyMSA9IDEyMTsKLSAgICBvLnByb3BlcnR5MTIyID0gMTIyOwotICAgIG8ucHJvcGVy
dHkxMjMgPSAxMjM7Ci0gICAgby5wcm9wZXJ0eTEyNCA9IDEyNDsKLSAgICBvLnByb3BlcnR5MTI1
ID0gMTI1OwotICAgIG8ucHJvcGVydHkxMjYgPSAxMjY7Ci0gICAgby5wcm9wZXJ0eTEyNyA9IDEy
NzsKLSAgICBvLnByb3BlcnR5MTI4ID0gMTI4OwotICAgIG8ucHJvcGVydHkxMjkgPSAxMjk7Ci0g
ICAgby5wcm9wZXJ0eTEzMCA9IDEzMDsKLSAgICBvLnByb3BlcnR5MTMxID0gMTMxOwotICAgIG8u
cHJvcGVydHkxMzIgPSAxMzI7Ci0gICAgby5wcm9wZXJ0eTEzMyA9IDEzMzsKLSAgICBvLnByb3Bl
cnR5MTM0ID0gMTM0OwotICAgIG8ucHJvcGVydHkxMzUgPSAxMzU7Ci0gICAgby5wcm9wZXJ0eTEz
NiA9IDEzNjsKLSAgICBvLnByb3BlcnR5MTM3ID0gMTM3OwotICAgIG8ucHJvcGVydHkxMzggPSAx
Mzg7Ci0gICAgby5wcm9wZXJ0eTEzOSA9IDEzOTsKLSAgICBvLnByb3BlcnR5MTQwID0gMTQwOwot
ICAgIG8ucHJvcGVydHkxNDEgPSAxNDE7Ci0gICAgby5wcm9wZXJ0eTE0MiA9IDE0MjsKLSAgICBv
LnByb3BlcnR5MTQzID0gMTQzOwotICAgIG8ucHJvcGVydHkxNDQgPSAxNDQ7Ci0gICAgby5wcm9w
ZXJ0eTE0NSA9IDE0NTsKLSAgICBvLnByb3BlcnR5MTQ2ID0gMTQ2OwotICAgIG8ucHJvcGVydHkx
NDcgPSAxNDc7Ci0gICAgby5wcm9wZXJ0eTE0OCA9IDE0ODsKLSAgICBvLnByb3BlcnR5MTQ5ID0g
MTQ5OwotICAgIG8ucHJvcGVydHkxNTAgPSAxNTA7Ci0gICAgby5wcm9wZXJ0eTE1MSA9IDE1MTsK
LSAgICBvLnByb3BlcnR5MTUyID0gMTUyOwotICAgIG8ucHJvcGVydHkxNTMgPSAxNTM7Ci0gICAg
by5wcm9wZXJ0eTE1NCA9IDE1NDsKLSAgICBvLnByb3BlcnR5MTU1ID0gMTU1OwotICAgIG8ucHJv
cGVydHkxNTYgPSAxNTY7Ci0gICAgby5wcm9wZXJ0eTE1NyA9IDE1NzsKLSAgICBvLnByb3BlcnR5
MTU4ID0gMTU4OwotICAgIG8ucHJvcGVydHkxNTkgPSAxNTk7Ci0gICAgby5wcm9wZXJ0eTE2MCA9
IDE2MDsKLSAgICBvLnByb3BlcnR5MTYxID0gMTYxOwotICAgIG8ucHJvcGVydHkxNjIgPSAxNjI7
Ci0gICAgby5wcm9wZXJ0eTE2MyA9IDE2MzsKLSAgICBvLnByb3BlcnR5MTY0ID0gMTY0OwotICAg
IG8ucHJvcGVydHkxNjUgPSAxNjU7Ci0gICAgby5wcm9wZXJ0eTE2NiA9IDE2NjsKLSAgICBvLnBy
b3BlcnR5MTY3ID0gMTY3OwotICAgIG8ucHJvcGVydHkxNjggPSAxNjg7Ci0gICAgby5wcm9wZXJ0
eTE2OSA9IDE2OTsKLSAgICBvLnByb3BlcnR5MTcwID0gMTcwOwotICAgIG8ucHJvcGVydHkxNzEg
PSAxNzE7Ci0gICAgby5wcm9wZXJ0eTE3MiA9IDE3MjsKLSAgICBvLnByb3BlcnR5MTczID0gMTcz
OwotICAgIG8ucHJvcGVydHkxNzQgPSAxNzQ7Ci0gICAgby5wcm9wZXJ0eTE3NSA9IDE3NTsKLSAg
ICBvLnByb3BlcnR5MTc2ID0gMTc2OwotICAgIG8ucHJvcGVydHkxNzcgPSAxNzc7Ci0gICAgby5w
cm9wZXJ0eTE3OCA9IDE3ODsKLSAgICBvLnByb3BlcnR5MTc5ID0gMTc5OwotICAgIG8ucHJvcGVy
dHkxODAgPSAxODA7Ci0gICAgby5wcm9wZXJ0eTE4MSA9IDE4MTsKLSAgICBvLnByb3BlcnR5MTgy
ID0gMTgyOwotICAgIG8ucHJvcGVydHkxODMgPSAxODM7Ci0gICAgby5wcm9wZXJ0eTE4NCA9IDE4
NDsKLSAgICBvLnByb3BlcnR5MTg1ID0gMTg1OwotICAgIG8ucHJvcGVydHkxODYgPSAxODY7Ci0g
ICAgby5wcm9wZXJ0eTE4NyA9IDE4NzsKLSAgICBvLnByb3BlcnR5MTg4ID0gMTg4OwotICAgIG8u
cHJvcGVydHkxODkgPSAxODk7Ci0gICAgby5wcm9wZXJ0eTE5MCA9IDE5MDsKLSAgICBvLnByb3Bl
cnR5MTkxID0gMTkxOwotICAgIG8ucHJvcGVydHkxOTIgPSAxOTI7Ci0gICAgby5wcm9wZXJ0eTE5
MyA9IDE5MzsKLSAgICBvLnByb3BlcnR5MTk0ID0gMTk0OwotICAgIG8ucHJvcGVydHkxOTUgPSAx
OTU7Ci0gICAgby5wcm9wZXJ0eTE5NiA9IDE5NjsKLSAgICBvLnByb3BlcnR5MTk3ID0gMTk3Owot
ICAgIG8ucHJvcGVydHkxOTggPSAxOTg7Ci0gICAgby5wcm9wZXJ0eTE5OSA9IDE5OTsKLSAgICBv
LnByb3BlcnR5MjAwID0gMjAwOwotICAgIG8ucHJvcGVydHkyMDEgPSAyMDE7Ci0gICAgby5wcm9w
ZXJ0eTIwMiA9IDIwMjsKLSAgICBvLnByb3BlcnR5MjAzID0gMjAzOwotICAgIG8ucHJvcGVydHky
MDQgPSAyMDQ7Ci0gICAgby5wcm9wZXJ0eTIwNSA9IDIwNTsKLSAgICBvLnByb3BlcnR5MjA2ID0g
MjA2OwotICAgIG8ucHJvcGVydHkyMDcgPSAyMDc7Ci0gICAgby5wcm9wZXJ0eTIwOCA9IDIwODsK
LSAgICBvLnByb3BlcnR5MjA5ID0gMjA5OwotICAgIG8ucHJvcGVydHkyMTAgPSAyMTA7Ci0gICAg
by5wcm9wZXJ0eTIxMSA9IDIxMTsKLSAgICBvLnByb3BlcnR5MjEyID0gMjEyOwotICAgIG8ucHJv
cGVydHkyMTMgPSAyMTM7Ci0gICAgby5wcm9wZXJ0eTIxNCA9IDIxNDsKLSAgICBvLnByb3BlcnR5
MjE1ID0gMjE1OwotICAgIG8ucHJvcGVydHkyMTYgPSAyMTY7Ci0gICAgby5wcm9wZXJ0eTIxNyA9
IDIxNzsKLSAgICBvLnByb3BlcnR5MjE4ID0gMjE4OwotICAgIG8ucHJvcGVydHkyMTkgPSAyMTk7
Ci0gICAgby5wcm9wZXJ0eTIyMCA9IDIyMDsKLSAgICBvLnByb3BlcnR5MjIxID0gMjIxOwotICAg
IG8ucHJvcGVydHkyMjIgPSAyMjI7Ci0gICAgby5wcm9wZXJ0eTIyMyA9IDIyMzsKLSAgICBvLnBy
b3BlcnR5MjI0ID0gMjI0OwotICAgIG8ucHJvcGVydHkyMjUgPSAyMjU7Ci0gICAgby5wcm9wZXJ0
eTIyNiA9IDIyNjsKLSAgICBvLnByb3BlcnR5MjI3ID0gMjI3OwotICAgIG8ucHJvcGVydHkyMjgg
PSAyMjg7Ci0gICAgby5wcm9wZXJ0eTIyOSA9IDIyOTsKLSAgICBvLnByb3BlcnR5MjMwID0gMjMw
OwotICAgIG8ucHJvcGVydHkyMzEgPSAyMzE7Ci0gICAgby5wcm9wZXJ0eTIzMiA9IDIzMjsKLSAg
ICBvLnByb3BlcnR5MjMzID0gMjMzOwotICAgIG8ucHJvcGVydHkyMzQgPSAyMzQ7Ci0gICAgby5w
cm9wZXJ0eTIzNSA9IDIzNTsKLSAgICBvLnByb3BlcnR5MjM2ID0gMjM2OwotICAgIG8ucHJvcGVy
dHkyMzcgPSAyMzc7Ci0gICAgby5wcm9wZXJ0eTIzOCA9IDIzODsKLSAgICBvLnByb3BlcnR5MjM5
ID0gMjM5OwotICAgIG8ucHJvcGVydHkyNDAgPSAyNDA7Ci0gICAgby5wcm9wZXJ0eTI0MSA9IDI0
MTsKLSAgICBvLnByb3BlcnR5MjQyID0gMjQyOwotICAgIG8ucHJvcGVydHkyNDMgPSAyNDM7Ci0g
ICAgby5wcm9wZXJ0eTI0NCA9IDI0NDsKLSAgICBvLnByb3BlcnR5MjQ1ID0gMjQ1OwotICAgIG8u
cHJvcGVydHkyNDYgPSAyNDY7Ci0gICAgby5wcm9wZXJ0eTI0NyA9IDI0NzsKLSAgICBvLnByb3Bl
cnR5MjQ4ID0gMjQ4OwotICAgIG8ucHJvcGVydHkyNDkgPSAyNDk7Ci0gICAgby5wcm9wZXJ0eTI1
MCA9IDI1MDsKLSAgICBvLnByb3BlcnR5MjUxID0gMjUxOwotICAgIG8ucHJvcGVydHkyNTIgPSAy
NTI7Ci0gICAgby5wcm9wZXJ0eTI1MyA9IDI1MzsKLSAgICBvLnByb3BlcnR5MjU0ID0gMjU0Owot
ICAgIG8ucHJvcGVydHkyNTUgPSAyNTU7Ci0gICAgby5wcm9wZXJ0eTI1NiA9IDI1NjsKLSAgICBv
LnByb3BlcnR5MjU3ID0gMjU3OwotICAgIG8ucHJvcGVydHkyNTggPSAyNTg7Ci0gICAgby5wcm9w
ZXJ0eTI1OSA9IDI1OTsKLSAgICBvLnByb3BlcnR5MjYwID0gMjYwOwotICAgIG8ucHJvcGVydHky
NjEgPSAyNjE7Ci0gICAgby5wcm9wZXJ0eTI2MiA9IDI2MjsKLSAgICBvLnByb3BlcnR5MjYzID0g
MjYzOwotICAgIG8ucHJvcGVydHkyNjQgPSAyNjQ7Ci0gICAgby5wcm9wZXJ0eTI2NSA9IDI2NTsK
LSAgICBvLnByb3BlcnR5MjY2ID0gMjY2OwotICAgIG8ucHJvcGVydHkyNjcgPSAyNjc7Ci0gICAg
by5wcm9wZXJ0eTI2OCA9IDI2ODsKLSAgICBvLnByb3BlcnR5MjY5ID0gMjY5OwotICAgIG8ucHJv
cGVydHkyNzAgPSAyNzA7Ci0gICAgby5wcm9wZXJ0eTI3MSA9IDI3MTsKLSAgICBvLnByb3BlcnR5
MjcyID0gMjcyOwotICAgIG8ucHJvcGVydHkyNzMgPSAyNzM7Ci0gICAgby5wcm9wZXJ0eTI3NCA9
IDI3NDsKLSAgICBvLnByb3BlcnR5Mjc1ID0gMjc1OwotICAgIG8ucHJvcGVydHkyNzYgPSAyNzY7
Ci0gICAgby5wcm9wZXJ0eTI3NyA9IDI3NzsKLSAgICBvLnByb3BlcnR5Mjc4ID0gMjc4OwotICAg
IG8ucHJvcGVydHkyNzkgPSAyNzk7Ci0gICAgby5wcm9wZXJ0eTI4MCA9IDI4MDsKLSAgICBvLnBy
b3BlcnR5MjgxID0gMjgxOwotICAgIG8ucHJvcGVydHkyODIgPSAyODI7Ci0gICAgby5wcm9wZXJ0
eTI4MyA9IDI4MzsKLSAgICBvLnByb3BlcnR5Mjg0ID0gMjg0OwotICAgIG8ucHJvcGVydHkyODUg
PSAyODU7Ci0gICAgby5wcm9wZXJ0eTI4NiA9IDI4NjsKLSAgICBvLnByb3BlcnR5Mjg3ID0gMjg3
OwotICAgIG8ucHJvcGVydHkyODggPSAyODg7Ci0gICAgby5wcm9wZXJ0eTI4OSA9IDI4OTsKLSAg
ICBvLnByb3BlcnR5MjkwID0gMjkwOwotICAgIG8ucHJvcGVydHkyOTEgPSAyOTE7Ci0gICAgby5w
cm9wZXJ0eTI5MiA9IDI5MjsKLSAgICBvLnByb3BlcnR5MjkzID0gMjkzOwotICAgIG8ucHJvcGVy
dHkyOTQgPSAyOTQ7Ci0gICAgby5wcm9wZXJ0eTI5NSA9IDI5NTsKLSAgICBvLnByb3BlcnR5Mjk2
ID0gMjk2OwotICAgIG8ucHJvcGVydHkyOTcgPSAyOTc7Ci0gICAgby5wcm9wZXJ0eTI5OCA9IDI5
ODsKLSAgICBvLnByb3BlcnR5Mjk5ID0gMjk5OwotICAgIG8ucHJvcGVydHkzMDAgPSAzMDA7Ci0g
ICAgby5wcm9wZXJ0eTMwMSA9IDMwMTsKLSAgICBvLnByb3BlcnR5MzAyID0gMzAyOwotICAgIG8u
cHJvcGVydHkzMDMgPSAzMDM7Ci0gICAgby5wcm9wZXJ0eTMwNCA9IDMwNDsKLSAgICBvLnByb3Bl
cnR5MzA1ID0gMzA1OwotICAgIG8ucHJvcGVydHkzMDYgPSAzMDY7Ci0gICAgby5wcm9wZXJ0eTMw
NyA9IDMwNzsKLSAgICBvLnByb3BlcnR5MzA4ID0gMzA4OwotICAgIG8ucHJvcGVydHkzMDkgPSAz
MDk7Ci0gICAgby5wcm9wZXJ0eTMxMCA9IDMxMDsKLSAgICBvLnByb3BlcnR5MzExID0gMzExOwot
ICAgIG8ucHJvcGVydHkzMTIgPSAzMTI7Ci0gICAgby5wcm9wZXJ0eTMxMyA9IDMxMzsKLSAgICBv
LnByb3BlcnR5MzE0ID0gMzE0OwotICAgIG8ucHJvcGVydHkzMTUgPSAzMTU7Ci0gICAgby5wcm9w
ZXJ0eTMxNiA9IDMxNjsKLSAgICBvLnByb3BlcnR5MzE3ID0gMzE3OwotICAgIG8ucHJvcGVydHkz
MTggPSAzMTg7Ci0gICAgby5wcm9wZXJ0eTMxOSA9IDMxOTsKLSAgICBvLnByb3BlcnR5MzIwID0g
MzIwOwotICAgIG8ucHJvcGVydHkzMjEgPSAzMjE7Ci0gICAgby5wcm9wZXJ0eTMyMiA9IDMyMjsK
LSAgICBvLnByb3BlcnR5MzIzID0gMzIzOwotICAgIG8ucHJvcGVydHkzMjQgPSAzMjQ7Ci0gICAg
by5wcm9wZXJ0eTMyNSA9IDMyNTsKLSAgICBvLnByb3BlcnR5MzI2ID0gMzI2OwotICAgIG8ucHJv
cGVydHkzMjcgPSAzMjc7Ci0gICAgby5wcm9wZXJ0eTMyOCA9IDMyODsKLSAgICBvLnByb3BlcnR5
MzI5ID0gMzI5OwotICAgIG8ucHJvcGVydHkzMzAgPSAzMzA7Ci0gICAgby5wcm9wZXJ0eTMzMSA9
IDMzMTsKLSAgICBvLnByb3BlcnR5MzMyID0gMzMyOwotICAgIG8ucHJvcGVydHkzMzMgPSAzMzM7
Ci0gICAgby5wcm9wZXJ0eTMzNCA9IDMzNDsKLSAgICBvLnByb3BlcnR5MzM1ID0gMzM1OwotICAg
IG8ucHJvcGVydHkzMzYgPSAzMzY7Ci0gICAgby5wcm9wZXJ0eTMzNyA9IDMzNzsKLSAgICBvLnBy
b3BlcnR5MzM4ID0gMzM4OwotICAgIG8ucHJvcGVydHkzMzkgPSAzMzk7Ci0gICAgby5wcm9wZXJ0
eTM0MCA9IDM0MDsKLSAgICBvLnByb3BlcnR5MzQxID0gMzQxOwotICAgIG8ucHJvcGVydHkzNDIg
PSAzNDI7Ci0gICAgby5wcm9wZXJ0eTM0MyA9IDM0MzsKLSAgICBvLnByb3BlcnR5MzQ0ID0gMzQ0
OwotICAgIG8ucHJvcGVydHkzNDUgPSAzNDU7Ci0gICAgby5wcm9wZXJ0eTM0NiA9IDM0NjsKLSAg
ICBvLnByb3BlcnR5MzQ3ID0gMzQ3OwotICAgIG8ucHJvcGVydHkzNDggPSAzNDg7Ci0gICAgby5w
cm9wZXJ0eTM0OSA9IDM0OTsKLSAgICBvLnByb3BlcnR5MzUwID0gMzUwOwotICAgIG8ucHJvcGVy
dHkzNTEgPSAzNTE7Ci0gICAgby5wcm9wZXJ0eTM1MiA9IDM1MjsKLSAgICBvLnByb3BlcnR5MzUz
ID0gMzUzOwotICAgIG8ucHJvcGVydHkzNTQgPSAzNTQ7Ci0gICAgby5wcm9wZXJ0eTM1NSA9IDM1
NTsKLSAgICBvLnByb3BlcnR5MzU2ID0gMzU2OwotICAgIG8ucHJvcGVydHkzNTcgPSAzNTc7Ci0g
ICAgby5wcm9wZXJ0eTM1OCA9IDM1ODsKLSAgICBvLnByb3BlcnR5MzU5ID0gMzU5OwotICAgIG8u
cHJvcGVydHkzNjAgPSAzNjA7Ci0gICAgby5wcm9wZXJ0eTM2MSA9IDM2MTsKLSAgICBvLnByb3Bl
cnR5MzYyID0gMzYyOwotICAgIG8ucHJvcGVydHkzNjMgPSAzNjM7Ci0gICAgby5wcm9wZXJ0eTM2
NCA9IDM2NDsKLSAgICBvLnByb3BlcnR5MzY1ID0gMzY1OwotICAgIG8ucHJvcGVydHkzNjYgPSAz
NjY7Ci0gICAgby5wcm9wZXJ0eTM2NyA9IDM2NzsKLSAgICBvLnByb3BlcnR5MzY4ID0gMzY4Owot
ICAgIG8ucHJvcGVydHkzNjkgPSAzNjk7Ci0gICAgby5wcm9wZXJ0eTM3MCA9IDM3MDsKLSAgICBv
LnByb3BlcnR5MzcxID0gMzcxOwotICAgIG8ucHJvcGVydHkzNzIgPSAzNzI7Ci0gICAgby5wcm9w
ZXJ0eTM3MyA9IDM3MzsKLSAgICBvLnByb3BlcnR5Mzc0ID0gMzc0OwotICAgIG8ucHJvcGVydHkz
NzUgPSAzNzU7Ci0gICAgby5wcm9wZXJ0eTM3NiA9IDM3NjsKLSAgICBvLnByb3BlcnR5Mzc3ID0g
Mzc3OwotICAgIG8ucHJvcGVydHkzNzggPSAzNzg7Ci0gICAgby5wcm9wZXJ0eTM3OSA9IDM3OTsK
LSAgICBvLnByb3BlcnR5MzgwID0gMzgwOwotICAgIG8ucHJvcGVydHkzODEgPSAzODE7Ci0gICAg
by5wcm9wZXJ0eTM4MiA9IDM4MjsKLSAgICBvLnByb3BlcnR5MzgzID0gMzgzOwotICAgIG8ucHJv
cGVydHkzODQgPSAzODQ7Ci0gICAgby5wcm9wZXJ0eTM4NSA9IDM4NTsKLSAgICBvLnByb3BlcnR5
Mzg2ID0gMzg2OwotICAgIG8ucHJvcGVydHkzODcgPSAzODc7Ci0gICAgby5wcm9wZXJ0eTM4OCA9
IDM4ODsKLSAgICBvLnByb3BlcnR5Mzg5ID0gMzg5OwotICAgIG8ucHJvcGVydHkzOTAgPSAzOTA7
Ci0gICAgby5wcm9wZXJ0eTM5MSA9IDM5MTsKLSAgICBvLnByb3BlcnR5MzkyID0gMzkyOwotICAg
IG8ucHJvcGVydHkzOTMgPSAzOTM7Ci0gICAgby5wcm9wZXJ0eTM5NCA9IDM5NDsKLSAgICBvLnBy
b3BlcnR5Mzk1ID0gMzk1OwotICAgIG8ucHJvcGVydHkzOTYgPSAzOTY7Ci0gICAgby5wcm9wZXJ0
eTM5NyA9IDM5NzsKLSAgICBvLnByb3BlcnR5Mzk4ID0gMzk4OwotICAgIG8ucHJvcGVydHkzOTkg
PSAzOTk7Ci0gICAgby5wcm9wZXJ0eTQwMCA9IDQwMDsKLSAgICBvLnByb3BlcnR5NDAxID0gNDAx
OwotICAgIG8ucHJvcGVydHk0MDIgPSA0MDI7Ci0gICAgby5wcm9wZXJ0eTQwMyA9IDQwMzsKLSAg
ICBvLnByb3BlcnR5NDA0ID0gNDA0OwotICAgIG8ucHJvcGVydHk0MDUgPSA0MDU7Ci0gICAgby5w
cm9wZXJ0eTQwNiA9IDQwNjsKLSAgICBvLnByb3BlcnR5NDA3ID0gNDA3OwotICAgIG8ucHJvcGVy
dHk0MDggPSA0MDg7Ci0gICAgby5wcm9wZXJ0eTQwOSA9IDQwOTsKLSAgICBvLnByb3BlcnR5NDEw
ID0gNDEwOwotICAgIG8ucHJvcGVydHk0MTEgPSA0MTE7Ci0gICAgby5wcm9wZXJ0eTQxMiA9IDQx
MjsKLSAgICBvLnByb3BlcnR5NDEzID0gNDEzOwotICAgIG8ucHJvcGVydHk0MTQgPSA0MTQ7Ci0g
ICAgby5wcm9wZXJ0eTQxNSA9IDQxNTsKLSAgICBvLnByb3BlcnR5NDE2ID0gNDE2OwotICAgIG8u
cHJvcGVydHk0MTcgPSA0MTc7Ci0gICAgby5wcm9wZXJ0eTQxOCA9IDQxODsKLSAgICBvLnByb3Bl
cnR5NDE5ID0gNDE5OwotICAgIG8ucHJvcGVydHk0MjAgPSA0MjA7Ci0gICAgby5wcm9wZXJ0eTQy
MSA9IDQyMTsKLSAgICBvLnByb3BlcnR5NDIyID0gNDIyOwotICAgIG8ucHJvcGVydHk0MjMgPSA0
MjM7Ci0gICAgby5wcm9wZXJ0eTQyNCA9IDQyNDsKLSAgICBvLnByb3BlcnR5NDI1ID0gNDI1Owot
ICAgIG8ucHJvcGVydHk0MjYgPSA0MjY7Ci0gICAgby5wcm9wZXJ0eTQyNyA9IDQyNzsKLSAgICBv
LnByb3BlcnR5NDI4ID0gNDI4OwotICAgIG8ucHJvcGVydHk0MjkgPSA0Mjk7Ci0gICAgby5wcm9w
ZXJ0eTQzMCA9IDQzMDsKLSAgICBvLnByb3BlcnR5NDMxID0gNDMxOwotICAgIG8ucHJvcGVydHk0
MzIgPSA0MzI7Ci0gICAgby5wcm9wZXJ0eTQzMyA9IDQzMzsKLSAgICBvLnByb3BlcnR5NDM0ID0g
NDM0OwotICAgIG8ucHJvcGVydHk0MzUgPSA0MzU7Ci0gICAgby5wcm9wZXJ0eTQzNiA9IDQzNjsK
LSAgICBvLnByb3BlcnR5NDM3ID0gNDM3OwotICAgIG8ucHJvcGVydHk0MzggPSA0Mzg7Ci0gICAg
by5wcm9wZXJ0eTQzOSA9IDQzOTsKLSAgICBvLnByb3BlcnR5NDQwID0gNDQwOwotICAgIG8ucHJv
cGVydHk0NDEgPSA0NDE7Ci0gICAgby5wcm9wZXJ0eTQ0MiA9IDQ0MjsKLSAgICBvLnByb3BlcnR5
NDQzID0gNDQzOwotICAgIG8ucHJvcGVydHk0NDQgPSA0NDQ7Ci0gICAgby5wcm9wZXJ0eTQ0NSA9
IDQ0NTsKLSAgICBvLnByb3BlcnR5NDQ2ID0gNDQ2OwotICAgIG8ucHJvcGVydHk0NDcgPSA0NDc7
Ci0gICAgby5wcm9wZXJ0eTQ0OCA9IDQ0ODsKLSAgICBvLnByb3BlcnR5NDQ5ID0gNDQ5OwotICAg
IG8ucHJvcGVydHk0NTAgPSA0NTA7Ci0gICAgby5wcm9wZXJ0eTQ1MSA9IDQ1MTsKLSAgICBvLnBy
b3BlcnR5NDUyID0gNDUyOwotICAgIG8ucHJvcGVydHk0NTMgPSA0NTM7Ci0gICAgby5wcm9wZXJ0
eTQ1NCA9IDQ1NDsKLSAgICBvLnByb3BlcnR5NDU1ID0gNDU1OwotICAgIG8ucHJvcGVydHk0NTYg
PSA0NTY7Ci0gICAgby5wcm9wZXJ0eTQ1NyA9IDQ1NzsKLSAgICBvLnByb3BlcnR5NDU4ID0gNDU4
OwotICAgIG8ucHJvcGVydHk0NTkgPSA0NTk7Ci0gICAgby5wcm9wZXJ0eTQ2MCA9IDQ2MDsKLSAg
ICBvLnByb3BlcnR5NDYxID0gNDYxOwotICAgIG8ucHJvcGVydHk0NjIgPSA0NjI7Ci0gICAgby5w
cm9wZXJ0eTQ2MyA9IDQ2MzsKLSAgICBvLnByb3BlcnR5NDY0ID0gNDY0OwotICAgIG8ucHJvcGVy
dHk0NjUgPSA0NjU7Ci0gICAgby5wcm9wZXJ0eTQ2NiA9IDQ2NjsKLSAgICBvLnByb3BlcnR5NDY3
ID0gNDY3OwotICAgIG8ucHJvcGVydHk0NjggPSA0Njg7Ci0gICAgby5wcm9wZXJ0eTQ2OSA9IDQ2
OTsKLSAgICBvLnByb3BlcnR5NDcwID0gNDcwOwotICAgIG8ucHJvcGVydHk0NzEgPSA0NzE7Ci0g
ICAgby5wcm9wZXJ0eTQ3MiA9IDQ3MjsKLSAgICBvLnByb3BlcnR5NDczID0gNDczOwotICAgIG8u
cHJvcGVydHk0NzQgPSA0NzQ7Ci0gICAgby5wcm9wZXJ0eTQ3NSA9IDQ3NTsKLSAgICBvLnByb3Bl
cnR5NDc2ID0gNDc2OwotICAgIG8ucHJvcGVydHk0NzcgPSA0Nzc7Ci0gICAgby5wcm9wZXJ0eTQ3
OCA9IDQ3ODsKLSAgICBvLnByb3BlcnR5NDc5ID0gNDc5OwotICAgIG8ucHJvcGVydHk0ODAgPSA0
ODA7Ci0gICAgby5wcm9wZXJ0eTQ4MSA9IDQ4MTsKLSAgICBvLnByb3BlcnR5NDgyID0gNDgyOwot
ICAgIG8ucHJvcGVydHk0ODMgPSA0ODM7Ci0gICAgby5wcm9wZXJ0eTQ4NCA9IDQ4NDsKLSAgICBv
LnByb3BlcnR5NDg1ID0gNDg1OwotICAgIG8ucHJvcGVydHk0ODYgPSA0ODY7Ci0gICAgby5wcm9w
ZXJ0eTQ4NyA9IDQ4NzsKLSAgICBvLnByb3BlcnR5NDg4ID0gNDg4OwotICAgIG8ucHJvcGVydHk0
ODkgPSA0ODk7Ci0gICAgby5wcm9wZXJ0eTQ5MCA9IDQ5MDsKLSAgICBvLnByb3BlcnR5NDkxID0g
NDkxOwotICAgIG8ucHJvcGVydHk0OTIgPSA0OTI7Ci0gICAgby5wcm9wZXJ0eTQ5MyA9IDQ5MzsK
LSAgICBvLnByb3BlcnR5NDk0ID0gNDk0OwotICAgIG8ucHJvcGVydHk0OTUgPSA0OTU7Ci0gICAg
by5wcm9wZXJ0eTQ5NiA9IDQ5NjsKLSAgICBvLnByb3BlcnR5NDk3ID0gNDk3OwotICAgIG8ucHJv
cGVydHk0OTggPSA0OTg7Ci0gICAgby5wcm9wZXJ0eTQ5OSA9IDQ5OTsKLSAgICBvLnByb3BlcnR5
NTAwID0gNTAwOwotICAgIG8ucHJvcGVydHk1MDEgPSA1MDE7Ci0gICAgby5wcm9wZXJ0eTUwMiA9
IDUwMjsKLSAgICBvLnByb3BlcnR5NTAzID0gNTAzOwotICAgIG8ucHJvcGVydHk1MDQgPSA1MDQ7
Ci0gICAgby5wcm9wZXJ0eTUwNSA9IDUwNTsKLSAgICBvLnByb3BlcnR5NTA2ID0gNTA2OwotICAg
IG8ucHJvcGVydHk1MDcgPSA1MDc7Ci0gICAgby5wcm9wZXJ0eTUwOCA9IDUwODsKLSAgICBvLnBy
b3BlcnR5NTA5ID0gNTA5OwotICAgIG8ucHJvcGVydHk1MTAgPSA1MTA7Ci0gICAgby5wcm9wZXJ0
eTUxMSA9IDUxMTsKLSAgICBvLnByb3BlcnR5NTEyID0gNTEyOwotICAgIG8ucHJvcGVydHk1MTMg
PSA1MTM7Ci0gICAgby5wcm9wZXJ0eTUxNCA9IDUxNDsKLSAgICBvLnByb3BlcnR5NTE1ID0gNTE1
OwotICAgIG8ucHJvcGVydHk1MTYgPSA1MTY7Ci0gICAgby5wcm9wZXJ0eTUxNyA9IDUxNzsKLSAg
ICBvLnByb3BlcnR5NTE4ID0gNTE4OwotICAgIG8ucHJvcGVydHk1MTkgPSA1MTk7Ci0gICAgby5w
cm9wZXJ0eTUyMCA9IDUyMDsKLSAgICBvLnByb3BlcnR5NTIxID0gNTIxOwotICAgIG8ucHJvcGVy
dHk1MjIgPSA1MjI7Ci0gICAgby5wcm9wZXJ0eTUyMyA9IDUyMzsKLSAgICBvLnByb3BlcnR5NTI0
ID0gNTI0OwotICAgIG8ucHJvcGVydHk1MjUgPSA1MjU7Ci0gICAgby5wcm9wZXJ0eTUyNiA9IDUy
NjsKLSAgICBvLnByb3BlcnR5NTI3ID0gNTI3OwotICAgIG8ucHJvcGVydHk1MjggPSA1Mjg7Ci0g
ICAgby5wcm9wZXJ0eTUyOSA9IDUyOTsKLSAgICBvLnByb3BlcnR5NTMwID0gNTMwOwotICAgIG8u
cHJvcGVydHk1MzEgPSA1MzE7Ci0gICAgby5wcm9wZXJ0eTUzMiA9IDUzMjsKLSAgICBvLnByb3Bl
cnR5NTMzID0gNTMzOwotICAgIG8ucHJvcGVydHk1MzQgPSA1MzQ7Ci0gICAgby5wcm9wZXJ0eTUz
NSA9IDUzNTsKLSAgICBvLnByb3BlcnR5NTM2ID0gNTM2OwotICAgIG8ucHJvcGVydHk1MzcgPSA1
Mzc7Ci0gICAgby5wcm9wZXJ0eTUzOCA9IDUzODsKLSAgICBvLnByb3BlcnR5NTM5ID0gNTM5Owot
ICAgIG8ucHJvcGVydHk1NDAgPSA1NDA7Ci0gICAgby5wcm9wZXJ0eTU0MSA9IDU0MTsKLSAgICBv
LnByb3BlcnR5NTQyID0gNTQyOwotICAgIG8ucHJvcGVydHk1NDMgPSA1NDM7Ci0gICAgby5wcm9w
ZXJ0eTU0NCA9IDU0NDsKLSAgICBvLnByb3BlcnR5NTQ1ID0gNTQ1OwotICAgIG8ucHJvcGVydHk1
NDYgPSA1NDY7Ci0gICAgby5wcm9wZXJ0eTU0NyA9IDU0NzsKLSAgICBvLnByb3BlcnR5NTQ4ID0g
NTQ4OwotICAgIG8ucHJvcGVydHk1NDkgPSA1NDk7Ci0gICAgby5wcm9wZXJ0eTU1MCA9IDU1MDsK
LSAgICBvLnByb3BlcnR5NTUxID0gNTUxOwotICAgIG8ucHJvcGVydHk1NTIgPSA1NTI7Ci0gICAg
by5wcm9wZXJ0eTU1MyA9IDU1MzsKLSAgICBvLnByb3BlcnR5NTU0ID0gNTU0OwotICAgIG8ucHJv
cGVydHk1NTUgPSA1NTU7Ci0gICAgby5wcm9wZXJ0eTU1NiA9IDU1NjsKLSAgICBvLnByb3BlcnR5
NTU3ID0gNTU3OwotICAgIG8ucHJvcGVydHk1NTggPSA1NTg7Ci0gICAgby5wcm9wZXJ0eTU1OSA9
IDU1OTsKLSAgICBvLnByb3BlcnR5NTYwID0gNTYwOwotICAgIG8ucHJvcGVydHk1NjEgPSA1NjE7
Ci0gICAgby5wcm9wZXJ0eTU2MiA9IDU2MjsKLSAgICBvLnByb3BlcnR5NTYzID0gNTYzOwotICAg
IG8ucHJvcGVydHk1NjQgPSA1NjQ7Ci0gICAgby5wcm9wZXJ0eTU2NSA9IDU2NTsKLSAgICBvLnBy
b3BlcnR5NTY2ID0gNTY2OwotICAgIG8ucHJvcGVydHk1NjcgPSA1Njc7Ci0gICAgby5wcm9wZXJ0
eTU2OCA9IDU2ODsKLSAgICBvLnByb3BlcnR5NTY5ID0gNTY5OwotICAgIG8ucHJvcGVydHk1NzAg
PSA1NzA7Ci0gICAgby5wcm9wZXJ0eTU3MSA9IDU3MTsKLSAgICBvLnByb3BlcnR5NTcyID0gNTcy
OwotICAgIG8ucHJvcGVydHk1NzMgPSA1NzM7Ci0gICAgby5wcm9wZXJ0eTU3NCA9IDU3NDsKLSAg
ICBvLnByb3BlcnR5NTc1ID0gNTc1OwotICAgIG8ucHJvcGVydHk1NzYgPSA1NzY7Ci0gICAgby5w
cm9wZXJ0eTU3NyA9IDU3NzsKLSAgICBvLnByb3BlcnR5NTc4ID0gNTc4OwotICAgIG8ucHJvcGVy
dHk1NzkgPSA1Nzk7Ci0gICAgby5wcm9wZXJ0eTU4MCA9IDU4MDsKLSAgICBvLnByb3BlcnR5NTgx
ID0gNTgxOwotICAgIG8ucHJvcGVydHk1ODIgPSA1ODI7Ci0gICAgby5wcm9wZXJ0eTU4MyA9IDU4
MzsKLSAgICBvLnByb3BlcnR5NTg0ID0gNTg0OwotICAgIG8ucHJvcGVydHk1ODUgPSA1ODU7Ci0g
ICAgby5wcm9wZXJ0eTU4NiA9IDU4NjsKLSAgICBvLnByb3BlcnR5NTg3ID0gNTg3OwotICAgIG8u
cHJvcGVydHk1ODggPSA1ODg7Ci0gICAgby5wcm9wZXJ0eTU4OSA9IDU4OTsKLSAgICBvLnByb3Bl
cnR5NTkwID0gNTkwOwotICAgIG8ucHJvcGVydHk1OTEgPSA1OTE7Ci0gICAgby5wcm9wZXJ0eTU5
MiA9IDU5MjsKLSAgICBvLnByb3BlcnR5NTkzID0gNTkzOwotICAgIG8ucHJvcGVydHk1OTQgPSA1
OTQ7Ci0gICAgby5wcm9wZXJ0eTU5NSA9IDU5NTsKLSAgICBvLnByb3BlcnR5NTk2ID0gNTk2Owot
ICAgIG8ucHJvcGVydHk1OTcgPSA1OTc7Ci0gICAgby5wcm9wZXJ0eTU5OCA9IDU5ODsKLSAgICBv
LnByb3BlcnR5NTk5ID0gNTk5OwotICAgIG8ucHJvcGVydHk2MDAgPSA2MDA7Ci0gICAgby5wcm9w
ZXJ0eTYwMSA9IDYwMTsKLSAgICBvLnByb3BlcnR5NjAyID0gNjAyOwotICAgIG8ucHJvcGVydHk2
MDMgPSA2MDM7Ci0gICAgby5wcm9wZXJ0eTYwNCA9IDYwNDsKLSAgICBvLnByb3BlcnR5NjA1ID0g
NjA1OwotICAgIG8ucHJvcGVydHk2MDYgPSA2MDY7Ci0gICAgby5wcm9wZXJ0eTYwNyA9IDYwNzsK
LSAgICBvLnByb3BlcnR5NjA4ID0gNjA4OwotICAgIG8ucHJvcGVydHk2MDkgPSA2MDk7Ci0gICAg
by5wcm9wZXJ0eTYxMCA9IDYxMDsKLSAgICBvLnByb3BlcnR5NjExID0gNjExOwotICAgIG8ucHJv
cGVydHk2MTIgPSA2MTI7Ci0gICAgby5wcm9wZXJ0eTYxMyA9IDYxMzsKLSAgICBvLnByb3BlcnR5
NjE0ID0gNjE0OwotICAgIG8ucHJvcGVydHk2MTUgPSA2MTU7Ci0gICAgby5wcm9wZXJ0eTYxNiA9
IDYxNjsKLSAgICBvLnByb3BlcnR5NjE3ID0gNjE3OwotICAgIG8ucHJvcGVydHk2MTggPSA2MTg7
Ci0gICAgby5wcm9wZXJ0eTYxOSA9IDYxOTsKLSAgICBvLnByb3BlcnR5NjIwID0gNjIwOwotICAg
IG8ucHJvcGVydHk2MjEgPSA2MjE7Ci0gICAgby5wcm9wZXJ0eTYyMiA9IDYyMjsKLSAgICBvLnBy
b3BlcnR5NjIzID0gNjIzOwotICAgIG8ucHJvcGVydHk2MjQgPSA2MjQ7Ci0gICAgby5wcm9wZXJ0
eTYyNSA9IDYyNTsKLSAgICBvLnByb3BlcnR5NjI2ID0gNjI2OwotICAgIG8ucHJvcGVydHk2Mjcg
PSA2Mjc7Ci0gICAgby5wcm9wZXJ0eTYyOCA9IDYyODsKLSAgICBvLnByb3BlcnR5NjI5ID0gNjI5
OwotICAgIG8ucHJvcGVydHk2MzAgPSA2MzA7Ci0gICAgby5wcm9wZXJ0eTYzMSA9IDYzMTsKLSAg
ICBvLnByb3BlcnR5NjMyID0gNjMyOwotICAgIG8ucHJvcGVydHk2MzMgPSA2MzM7Ci0gICAgby5w
cm9wZXJ0eTYzNCA9IDYzNDsKLSAgICBvLnByb3BlcnR5NjM1ID0gNjM1OwotICAgIG8ucHJvcGVy
dHk2MzYgPSA2MzY7Ci0gICAgby5wcm9wZXJ0eTYzNyA9IDYzNzsKLSAgICBvLnByb3BlcnR5NjM4
ID0gNjM4OwotICAgIG8ucHJvcGVydHk2MzkgPSA2Mzk7Ci0gICAgby5wcm9wZXJ0eTY0MCA9IDY0
MDsKLSAgICBvLnByb3BlcnR5NjQxID0gNjQxOwotICAgIG8ucHJvcGVydHk2NDIgPSA2NDI7Ci0g
ICAgby5wcm9wZXJ0eTY0MyA9IDY0MzsKLSAgICBvLnByb3BlcnR5NjQ0ID0gNjQ0OwotICAgIG8u
cHJvcGVydHk2NDUgPSA2NDU7Ci0gICAgby5wcm9wZXJ0eTY0NiA9IDY0NjsKLSAgICBvLnByb3Bl
cnR5NjQ3ID0gNjQ3OwotICAgIG8ucHJvcGVydHk2NDggPSA2NDg7Ci0gICAgby5wcm9wZXJ0eTY0
OSA9IDY0OTsKLSAgICBvLnByb3BlcnR5NjUwID0gNjUwOwotICAgIG8ucHJvcGVydHk2NTEgPSA2
NTE7Ci0gICAgby5wcm9wZXJ0eTY1MiA9IDY1MjsKLSAgICBvLnByb3BlcnR5NjUzID0gNjUzOwot
ICAgIG8ucHJvcGVydHk2NTQgPSA2NTQ7Ci0gICAgby5wcm9wZXJ0eTY1NSA9IDY1NTsKLSAgICBv
LnByb3BlcnR5NjU2ID0gNjU2OwotICAgIG8ucHJvcGVydHk2NTcgPSA2NTc7Ci0gICAgby5wcm9w
ZXJ0eTY1OCA9IDY1ODsKLSAgICBvLnByb3BlcnR5NjU5ID0gNjU5OwotICAgIG8ucHJvcGVydHk2
NjAgPSA2NjA7Ci0gICAgby5wcm9wZXJ0eTY2MSA9IDY2MTsKLSAgICBvLnByb3BlcnR5NjYyID0g
NjYyOwotICAgIG8ucHJvcGVydHk2NjMgPSA2NjM7Ci0gICAgby5wcm9wZXJ0eTY2NCA9IDY2NDsK
LSAgICBvLnByb3BlcnR5NjY1ID0gNjY1OwotICAgIG8ucHJvcGVydHk2NjYgPSA2NjY7Ci0gICAg
by5wcm9wZXJ0eTY2NyA9IDY2NzsKLSAgICBvLnByb3BlcnR5NjY4ID0gNjY4OwotICAgIG8ucHJv
cGVydHk2NjkgPSA2Njk7Ci0gICAgby5wcm9wZXJ0eTY3MCA9IDY3MDsKLSAgICBvLnByb3BlcnR5
NjcxID0gNjcxOwotICAgIG8ucHJvcGVydHk2NzIgPSA2NzI7Ci0gICAgby5wcm9wZXJ0eTY3MyA9
IDY3MzsKLSAgICBvLnByb3BlcnR5Njc0ID0gNjc0OwotICAgIG8ucHJvcGVydHk2NzUgPSA2NzU7
Ci0gICAgby5wcm9wZXJ0eTY3NiA9IDY3NjsKLSAgICBvLnByb3BlcnR5Njc3ID0gNjc3OwotICAg
IG8ucHJvcGVydHk2NzggPSA2Nzg7Ci0gICAgby5wcm9wZXJ0eTY3OSA9IDY3OTsKLSAgICBvLnBy
b3BlcnR5NjgwID0gNjgwOwotICAgIG8ucHJvcGVydHk2ODEgPSA2ODE7Ci0gICAgby5wcm9wZXJ0
eTY4MiA9IDY4MjsKLSAgICBvLnByb3BlcnR5NjgzID0gNjgzOwotICAgIG8ucHJvcGVydHk2ODQg
PSA2ODQ7Ci0gICAgby5wcm9wZXJ0eTY4NSA9IDY4NTsKLSAgICBvLnByb3BlcnR5Njg2ID0gNjg2
OwotICAgIG8ucHJvcGVydHk2ODcgPSA2ODc7Ci0gICAgby5wcm9wZXJ0eTY4OCA9IDY4ODsKLSAg
ICBvLnByb3BlcnR5Njg5ID0gNjg5OwotICAgIG8ucHJvcGVydHk2OTAgPSA2OTA7Ci0gICAgby5w
cm9wZXJ0eTY5MSA9IDY5MTsKLSAgICBvLnByb3BlcnR5NjkyID0gNjkyOwotICAgIG8ucHJvcGVy
dHk2OTMgPSA2OTM7Ci0gICAgby5wcm9wZXJ0eTY5NCA9IDY5NDsKLSAgICBvLnByb3BlcnR5Njk1
ID0gNjk1OwotICAgIG8ucHJvcGVydHk2OTYgPSA2OTY7Ci0gICAgby5wcm9wZXJ0eTY5NyA9IDY5
NzsKLSAgICBvLnByb3BlcnR5Njk4ID0gNjk4OwotICAgIG8ucHJvcGVydHk2OTkgPSA2OTk7Ci0g
ICAgby5wcm9wZXJ0eTcwMCA9IDcwMDsKLSAgICBvLnByb3BlcnR5NzAxID0gNzAxOwotICAgIG8u
cHJvcGVydHk3MDIgPSA3MDI7Ci0gICAgby5wcm9wZXJ0eTcwMyA9IDcwMzsKLSAgICBvLnByb3Bl
cnR5NzA0ID0gNzA0OwotICAgIG8ucHJvcGVydHk3MDUgPSA3MDU7Ci0gICAgby5wcm9wZXJ0eTcw
NiA9IDcwNjsKLSAgICBvLnByb3BlcnR5NzA3ID0gNzA3OwotICAgIG8ucHJvcGVydHk3MDggPSA3
MDg7Ci0gICAgby5wcm9wZXJ0eTcwOSA9IDcwOTsKLSAgICBvLnByb3BlcnR5NzEwID0gNzEwOwot
ICAgIG8ucHJvcGVydHk3MTEgPSA3MTE7Ci0gICAgby5wcm9wZXJ0eTcxMiA9IDcxMjsKLSAgICBv
LnByb3BlcnR5NzEzID0gNzEzOwotICAgIG8ucHJvcGVydHk3MTQgPSA3MTQ7Ci0gICAgby5wcm9w
ZXJ0eTcxNSA9IDcxNTsKLSAgICBvLnByb3BlcnR5NzE2ID0gNzE2OwotICAgIG8ucHJvcGVydHk3
MTcgPSA3MTc7Ci0gICAgby5wcm9wZXJ0eTcxOCA9IDcxODsKLSAgICBvLnByb3BlcnR5NzE5ID0g
NzE5OwotICAgIG8ucHJvcGVydHk3MjAgPSA3MjA7Ci0gICAgby5wcm9wZXJ0eTcyMSA9IDcyMTsK
LSAgICBvLnByb3BlcnR5NzIyID0gNzIyOwotICAgIG8ucHJvcGVydHk3MjMgPSA3MjM7Ci0gICAg
by5wcm9wZXJ0eTcyNCA9IDcyNDsKLSAgICBvLnByb3BlcnR5NzI1ID0gNzI1OwotICAgIG8ucHJv
cGVydHk3MjYgPSA3MjY7Ci0gICAgby5wcm9wZXJ0eTcyNyA9IDcyNzsKLSAgICBvLnByb3BlcnR5
NzI4ID0gNzI4OwotICAgIG8ucHJvcGVydHk3MjkgPSA3Mjk7Ci0gICAgby5wcm9wZXJ0eTczMCA9
IDczMDsKLSAgICBvLnByb3BlcnR5NzMxID0gNzMxOwotICAgIG8ucHJvcGVydHk3MzIgPSA3MzI7
Ci0gICAgby5wcm9wZXJ0eTczMyA9IDczMzsKLSAgICBvLnByb3BlcnR5NzM0ID0gNzM0OwotICAg
IG8ucHJvcGVydHk3MzUgPSA3MzU7Ci0gICAgby5wcm9wZXJ0eTczNiA9IDczNjsKLSAgICBvLnBy
b3BlcnR5NzM3ID0gNzM3OwotICAgIG8ucHJvcGVydHk3MzggPSA3Mzg7Ci0gICAgby5wcm9wZXJ0
eTczOSA9IDczOTsKLSAgICBvLnByb3BlcnR5NzQwID0gNzQwOwotICAgIG8ucHJvcGVydHk3NDEg
PSA3NDE7Ci0gICAgby5wcm9wZXJ0eTc0MiA9IDc0MjsKLSAgICBvLnByb3BlcnR5NzQzID0gNzQz
OwotICAgIG8ucHJvcGVydHk3NDQgPSA3NDQ7Ci0gICAgby5wcm9wZXJ0eTc0NSA9IDc0NTsKLSAg
ICBvLnByb3BlcnR5NzQ2ID0gNzQ2OwotICAgIG8ucHJvcGVydHk3NDcgPSA3NDc7Ci0gICAgby5w
cm9wZXJ0eTc0OCA9IDc0ODsKLSAgICBvLnByb3BlcnR5NzQ5ID0gNzQ5OwotICAgIG8ucHJvcGVy
dHk3NTAgPSA3NTA7Ci0gICAgby5wcm9wZXJ0eTc1MSA9IDc1MTsKLSAgICBvLnByb3BlcnR5NzUy
ID0gNzUyOwotICAgIG8ucHJvcGVydHk3NTMgPSA3NTM7Ci0gICAgby5wcm9wZXJ0eTc1NCA9IDc1
NDsKLSAgICBvLnByb3BlcnR5NzU1ID0gNzU1OwotICAgIG8ucHJvcGVydHk3NTYgPSA3NTY7Ci0g
ICAgby5wcm9wZXJ0eTc1NyA9IDc1NzsKLSAgICBvLnByb3BlcnR5NzU4ID0gNzU4OwotICAgIG8u
cHJvcGVydHk3NTkgPSA3NTk7Ci0gICAgby5wcm9wZXJ0eTc2MCA9IDc2MDsKLSAgICBvLnByb3Bl
cnR5NzYxID0gNzYxOwotICAgIG8ucHJvcGVydHk3NjIgPSA3NjI7Ci0gICAgby5wcm9wZXJ0eTc2
MyA9IDc2MzsKLSAgICBvLnByb3BlcnR5NzY0ID0gNzY0OwotICAgIG8ucHJvcGVydHk3NjUgPSA3
NjU7Ci0gICAgby5wcm9wZXJ0eTc2NiA9IDc2NjsKLSAgICBvLnByb3BlcnR5NzY3ID0gNzY3Owot
ICAgIG8ucHJvcGVydHk3NjggPSA3Njg7Ci0gICAgby5wcm9wZXJ0eTc2OSA9IDc2OTsKLSAgICBv
LnByb3BlcnR5NzcwID0gNzcwOwotICAgIG8ucHJvcGVydHk3NzEgPSA3NzE7Ci0gICAgby5wcm9w
ZXJ0eTc3MiA9IDc3MjsKLSAgICBvLnByb3BlcnR5NzczID0gNzczOwotICAgIG8ucHJvcGVydHk3
NzQgPSA3NzQ7Ci0gICAgby5wcm9wZXJ0eTc3NSA9IDc3NTsKLSAgICBvLnByb3BlcnR5Nzc2ID0g
Nzc2OwotICAgIG8ucHJvcGVydHk3NzcgPSA3Nzc7Ci0gICAgby5wcm9wZXJ0eTc3OCA9IDc3ODsK
LSAgICBvLnByb3BlcnR5Nzc5ID0gNzc5OwotICAgIG8ucHJvcGVydHk3ODAgPSA3ODA7Ci0gICAg
by5wcm9wZXJ0eTc4MSA9IDc4MTsKLSAgICBvLnByb3BlcnR5NzgyID0gNzgyOwotICAgIG8ucHJv
cGVydHk3ODMgPSA3ODM7Ci0gICAgby5wcm9wZXJ0eTc4NCA9IDc4NDsKLSAgICBvLnByb3BlcnR5
Nzg1ID0gNzg1OwotICAgIG8ucHJvcGVydHk3ODYgPSA3ODY7Ci0gICAgby5wcm9wZXJ0eTc4NyA9
IDc4NzsKLSAgICBvLnByb3BlcnR5Nzg4ID0gNzg4OwotICAgIG8ucHJvcGVydHk3ODkgPSA3ODk7
Ci0gICAgby5wcm9wZXJ0eTc5MCA9IDc5MDsKLSAgICBvLnByb3BlcnR5NzkxID0gNzkxOwotICAg
IG8ucHJvcGVydHk3OTIgPSA3OTI7Ci0gICAgby5wcm9wZXJ0eTc5MyA9IDc5MzsKLSAgICBvLnBy
b3BlcnR5Nzk0ID0gNzk0OwotICAgIG8ucHJvcGVydHk3OTUgPSA3OTU7Ci0gICAgby5wcm9wZXJ0
eTc5NiA9IDc5NjsKLSAgICBvLnByb3BlcnR5Nzk3ID0gNzk3OwotICAgIG8ucHJvcGVydHk3OTgg
PSA3OTg7Ci0gICAgby5wcm9wZXJ0eTc5OSA9IDc5OTsKLSAgICBvLnByb3BlcnR5ODAwID0gODAw
OwotICAgIG8ucHJvcGVydHk4MDEgPSA4MDE7Ci0gICAgby5wcm9wZXJ0eTgwMiA9IDgwMjsKLSAg
ICBvLnByb3BlcnR5ODAzID0gODAzOwotICAgIG8ucHJvcGVydHk4MDQgPSA4MDQ7Ci0gICAgby5w
cm9wZXJ0eTgwNSA9IDgwNTsKLSAgICBvLnByb3BlcnR5ODA2ID0gODA2OwotICAgIG8ucHJvcGVy
dHk4MDcgPSA4MDc7Ci0gICAgby5wcm9wZXJ0eTgwOCA9IDgwODsKLSAgICBvLnByb3BlcnR5ODA5
ID0gODA5OwotICAgIG8ucHJvcGVydHk4MTAgPSA4MTA7Ci0gICAgby5wcm9wZXJ0eTgxMSA9IDgx
MTsKLSAgICBvLnByb3BlcnR5ODEyID0gODEyOwotICAgIG8ucHJvcGVydHk4MTMgPSA4MTM7Ci0g
ICAgby5wcm9wZXJ0eTgxNCA9IDgxNDsKLSAgICBvLnByb3BlcnR5ODE1ID0gODE1OwotICAgIG8u
cHJvcGVydHk4MTYgPSA4MTY7Ci0gICAgby5wcm9wZXJ0eTgxNyA9IDgxNzsKLSAgICBvLnByb3Bl
cnR5ODE4ID0gODE4OwotICAgIG8ucHJvcGVydHk4MTkgPSA4MTk7Ci0gICAgby5wcm9wZXJ0eTgy
MCA9IDgyMDsKLSAgICBvLnByb3BlcnR5ODIxID0gODIxOwotICAgIG8ucHJvcGVydHk4MjIgPSA4
MjI7Ci0gICAgby5wcm9wZXJ0eTgyMyA9IDgyMzsKLSAgICBvLnByb3BlcnR5ODI0ID0gODI0Owot
ICAgIG8ucHJvcGVydHk4MjUgPSA4MjU7Ci0gICAgby5wcm9wZXJ0eTgyNiA9IDgyNjsKLSAgICBv
LnByb3BlcnR5ODI3ID0gODI3OwotICAgIG8ucHJvcGVydHk4MjggPSA4Mjg7Ci0gICAgby5wcm9w
ZXJ0eTgyOSA9IDgyOTsKLSAgICBvLnByb3BlcnR5ODMwID0gODMwOwotICAgIG8ucHJvcGVydHk4
MzEgPSA4MzE7Ci0gICAgby5wcm9wZXJ0eTgzMiA9IDgzMjsKLSAgICBvLnByb3BlcnR5ODMzID0g
ODMzOwotICAgIG8ucHJvcGVydHk4MzQgPSA4MzQ7Ci0gICAgby5wcm9wZXJ0eTgzNSA9IDgzNTsK
LSAgICBvLnByb3BlcnR5ODM2ID0gODM2OwotICAgIG8ucHJvcGVydHk4MzcgPSA4Mzc7Ci0gICAg
by5wcm9wZXJ0eTgzOCA9IDgzODsKLSAgICBvLnByb3BlcnR5ODM5ID0gODM5OwotICAgIG8ucHJv
cGVydHk4NDAgPSA4NDA7Ci0gICAgby5wcm9wZXJ0eTg0MSA9IDg0MTsKLSAgICBvLnByb3BlcnR5
ODQyID0gODQyOwotICAgIG8ucHJvcGVydHk4NDMgPSA4NDM7Ci0gICAgby5wcm9wZXJ0eTg0NCA9
IDg0NDsKLSAgICBvLnByb3BlcnR5ODQ1ID0gODQ1OwotICAgIG8ucHJvcGVydHk4NDYgPSA4NDY7
Ci0gICAgby5wcm9wZXJ0eTg0NyA9IDg0NzsKLSAgICBvLnByb3BlcnR5ODQ4ID0gODQ4OwotICAg
IG8ucHJvcGVydHk4NDkgPSA4NDk7Ci0gICAgby5wcm9wZXJ0eTg1MCA9IDg1MDsKLSAgICBvLnBy
b3BlcnR5ODUxID0gODUxOwotICAgIG8ucHJvcGVydHk4NTIgPSA4NTI7Ci0gICAgby5wcm9wZXJ0
eTg1MyA9IDg1MzsKLSAgICBvLnByb3BlcnR5ODU0ID0gODU0OwotICAgIG8ucHJvcGVydHk4NTUg
PSA4NTU7Ci0gICAgby5wcm9wZXJ0eTg1NiA9IDg1NjsKLSAgICBvLnByb3BlcnR5ODU3ID0gODU3
OwotICAgIG8ucHJvcGVydHk4NTggPSA4NTg7Ci0gICAgby5wcm9wZXJ0eTg1OSA9IDg1OTsKLSAg
ICBvLnByb3BlcnR5ODYwID0gODYwOwotICAgIG8ucHJvcGVydHk4NjEgPSA4NjE7Ci0gICAgby5w
cm9wZXJ0eTg2MiA9IDg2MjsKLSAgICBvLnByb3BlcnR5ODYzID0gODYzOwotICAgIG8ucHJvcGVy
dHk4NjQgPSA4NjQ7Ci0gICAgby5wcm9wZXJ0eTg2NSA9IDg2NTsKLSAgICBvLnByb3BlcnR5ODY2
ID0gODY2OwotICAgIG8ucHJvcGVydHk4NjcgPSA4Njc7Ci0gICAgby5wcm9wZXJ0eTg2OCA9IDg2
ODsKLSAgICBvLnByb3BlcnR5ODY5ID0gODY5OwotICAgIG8ucHJvcGVydHk4NzAgPSA4NzA7Ci0g
ICAgby5wcm9wZXJ0eTg3MSA9IDg3MTsKLSAgICBvLnByb3BlcnR5ODcyID0gODcyOwotICAgIG8u
cHJvcGVydHk4NzMgPSA4NzM7Ci0gICAgby5wcm9wZXJ0eTg3NCA9IDg3NDsKLSAgICBvLnByb3Bl
cnR5ODc1ID0gODc1OwotICAgIG8ucHJvcGVydHk4NzYgPSA4NzY7Ci0gICAgby5wcm9wZXJ0eTg3
NyA9IDg3NzsKLSAgICBvLnByb3BlcnR5ODc4ID0gODc4OwotICAgIG8ucHJvcGVydHk4NzkgPSA4
Nzk7Ci0gICAgby5wcm9wZXJ0eTg4MCA9IDg4MDsKLSAgICBvLnByb3BlcnR5ODgxID0gODgxOwot
ICAgIG8ucHJvcGVydHk4ODIgPSA4ODI7Ci0gICAgby5wcm9wZXJ0eTg4MyA9IDg4MzsKLSAgICBv
LnByb3BlcnR5ODg0ID0gODg0OwotICAgIG8ucHJvcGVydHk4ODUgPSA4ODU7Ci0gICAgby5wcm9w
ZXJ0eTg4NiA9IDg4NjsKLSAgICBvLnByb3BlcnR5ODg3ID0gODg3OwotICAgIG8ucHJvcGVydHk4
ODggPSA4ODg7Ci0gICAgby5wcm9wZXJ0eTg4OSA9IDg4OTsKLSAgICBvLnByb3BlcnR5ODkwID0g
ODkwOwotICAgIG8ucHJvcGVydHk4OTEgPSA4OTE7Ci0gICAgby5wcm9wZXJ0eTg5MiA9IDg5MjsK
LSAgICBvLnByb3BlcnR5ODkzID0gODkzOwotICAgIG8ucHJvcGVydHk4OTQgPSA4OTQ7Ci0gICAg
by5wcm9wZXJ0eTg5NSA9IDg5NTsKLSAgICBvLnByb3BlcnR5ODk2ID0gODk2OwotICAgIG8ucHJv
cGVydHk4OTcgPSA4OTc7Ci0gICAgby5wcm9wZXJ0eTg5OCA9IDg5ODsKLSAgICBvLnByb3BlcnR5
ODk5ID0gODk5OwotICAgIG8ucHJvcGVydHk5MDAgPSA5MDA7Ci0gICAgby5wcm9wZXJ0eTkwMSA9
IDkwMTsKLSAgICBvLnByb3BlcnR5OTAyID0gOTAyOwotICAgIG8ucHJvcGVydHk5MDMgPSA5MDM7
Ci0gICAgby5wcm9wZXJ0eTkwNCA9IDkwNDsKLSAgICBvLnByb3BlcnR5OTA1ID0gOTA1OwotICAg
IG8ucHJvcGVydHk5MDYgPSA5MDY7Ci0gICAgby5wcm9wZXJ0eTkwNyA9IDkwNzsKLSAgICBvLnBy
b3BlcnR5OTA4ID0gOTA4OwotICAgIG8ucHJvcGVydHk5MDkgPSA5MDk7Ci0gICAgby5wcm9wZXJ0
eTkxMCA9IDkxMDsKLSAgICBvLnByb3BlcnR5OTExID0gOTExOwotICAgIG8ucHJvcGVydHk5MTIg
PSA5MTI7Ci0gICAgby5wcm9wZXJ0eTkxMyA9IDkxMzsKLSAgICBvLnByb3BlcnR5OTE0ID0gOTE0
OwotICAgIG8ucHJvcGVydHk5MTUgPSA5MTU7Ci0gICAgby5wcm9wZXJ0eTkxNiA9IDkxNjsKLSAg
ICBvLnByb3BlcnR5OTE3ID0gOTE3OwotICAgIG8ucHJvcGVydHk5MTggPSA5MTg7Ci0gICAgby5w
cm9wZXJ0eTkxOSA9IDkxOTsKLSAgICBvLnByb3BlcnR5OTIwID0gOTIwOwotICAgIG8ucHJvcGVy
dHk5MjEgPSA5MjE7Ci0gICAgby5wcm9wZXJ0eTkyMiA9IDkyMjsKLSAgICBvLnByb3BlcnR5OTIz
ID0gOTIzOwotICAgIG8ucHJvcGVydHk5MjQgPSA5MjQ7Ci0gICAgby5wcm9wZXJ0eTkyNSA9IDky
NTsKLSAgICBvLnByb3BlcnR5OTI2ID0gOTI2OwotICAgIG8ucHJvcGVydHk5MjcgPSA5Mjc7Ci0g
ICAgby5wcm9wZXJ0eTkyOCA9IDkyODsKLSAgICBvLnByb3BlcnR5OTI5ID0gOTI5OwotICAgIG8u
cHJvcGVydHk5MzAgPSA5MzA7Ci0gICAgby5wcm9wZXJ0eTkzMSA9IDkzMTsKLSAgICBvLnByb3Bl
cnR5OTMyID0gOTMyOwotICAgIG8ucHJvcGVydHk5MzMgPSA5MzM7Ci0gICAgby5wcm9wZXJ0eTkz
NCA9IDkzNDsKLSAgICBvLnByb3BlcnR5OTM1ID0gOTM1OwotICAgIG8ucHJvcGVydHk5MzYgPSA5
MzY7Ci0gICAgby5wcm9wZXJ0eTkzNyA9IDkzNzsKLSAgICBvLnByb3BlcnR5OTM4ID0gOTM4Owot
ICAgIG8ucHJvcGVydHk5MzkgPSA5Mzk7Ci0gICAgby5wcm9wZXJ0eTk0MCA9IDk0MDsKLSAgICBv
LnByb3BlcnR5OTQxID0gOTQxOwotICAgIG8ucHJvcGVydHk5NDIgPSA5NDI7Ci0gICAgby5wcm9w
ZXJ0eTk0MyA9IDk0MzsKLSAgICBvLnByb3BlcnR5OTQ0ID0gOTQ0OwotICAgIG8ucHJvcGVydHk5
NDUgPSA5NDU7Ci0gICAgby5wcm9wZXJ0eTk0NiA9IDk0NjsKLSAgICBvLnByb3BlcnR5OTQ3ID0g
OTQ3OwotICAgIG8ucHJvcGVydHk5NDggPSA5NDg7Ci0gICAgby5wcm9wZXJ0eTk0OSA9IDk0OTsK
LSAgICBvLnByb3BlcnR5OTUwID0gOTUwOwotICAgIG8ucHJvcGVydHk5NTEgPSA5NTE7Ci0gICAg
by5wcm9wZXJ0eTk1MiA9IDk1MjsKLSAgICBvLnByb3BlcnR5OTUzID0gOTUzOwotICAgIG8ucHJv
cGVydHk5NTQgPSA5NTQ7Ci0gICAgby5wcm9wZXJ0eTk1NSA9IDk1NTsKLSAgICBvLnByb3BlcnR5
OTU2ID0gOTU2OwotICAgIG8ucHJvcGVydHk5NTcgPSA5NTc7Ci0gICAgby5wcm9wZXJ0eTk1OCA9
IDk1ODsKLSAgICBvLnByb3BlcnR5OTU5ID0gOTU5OwotICAgIG8ucHJvcGVydHk5NjAgPSA5NjA7
Ci0gICAgby5wcm9wZXJ0eTk2MSA9IDk2MTsKLSAgICBvLnByb3BlcnR5OTYyID0gOTYyOwotICAg
IG8ucHJvcGVydHk5NjMgPSA5NjM7Ci0gICAgby5wcm9wZXJ0eTk2NCA9IDk2NDsKLSAgICBvLnBy
b3BlcnR5OTY1ID0gOTY1OwotICAgIG8ucHJvcGVydHk5NjYgPSA5NjY7Ci0gICAgby5wcm9wZXJ0
eTk2NyA9IDk2NzsKLSAgICBvLnByb3BlcnR5OTY4ID0gOTY4OwotICAgIG8ucHJvcGVydHk5Njkg
PSA5Njk7Ci0gICAgby5wcm9wZXJ0eTk3MCA9IDk3MDsKLSAgICBvLnByb3BlcnR5OTcxID0gOTcx
OwotICAgIG8ucHJvcGVydHk5NzIgPSA5NzI7Ci0gICAgby5wcm9wZXJ0eTk3MyA9IDk3MzsKLSAg
ICBvLnByb3BlcnR5OTc0ID0gOTc0OwotICAgIG8ucHJvcGVydHk5NzUgPSA5NzU7Ci0gICAgby5w
cm9wZXJ0eTk3NiA9IDk3NjsKLSAgICBvLnByb3BlcnR5OTc3ID0gOTc3OwotICAgIG8ucHJvcGVy
dHk5NzggPSA5Nzg7Ci0gICAgby5wcm9wZXJ0eTk3OSA9IDk3OTsKLSAgICBvLnByb3BlcnR5OTgw
ID0gOTgwOwotICAgIG8ucHJvcGVydHk5ODEgPSA5ODE7Ci0gICAgby5wcm9wZXJ0eTk4MiA9IDk4
MjsKLSAgICBvLnByb3BlcnR5OTgzID0gOTgzOwotICAgIG8ucHJvcGVydHk5ODQgPSA5ODQ7Ci0g
ICAgby5wcm9wZXJ0eTk4NSA9IDk4NTsKLSAgICBvLnByb3BlcnR5OTg2ID0gOTg2OwotICAgIG8u
cHJvcGVydHk5ODcgPSA5ODc7Ci0gICAgby5wcm9wZXJ0eTk4OCA9IDk4ODsKLSAgICBvLnByb3Bl
cnR5OTg5ID0gOTg5OwotICAgIG8ucHJvcGVydHk5OTAgPSA5OTA7Ci0gICAgby5wcm9wZXJ0eTk5
MSA9IDk5MTsKLSAgICBvLnByb3BlcnR5OTkyID0gOTkyOwotICAgIG8ucHJvcGVydHk5OTMgPSA5
OTM7Ci0gICAgby5wcm9wZXJ0eTk5NCA9IDk5NDsKLSAgICBvLnByb3BlcnR5OTk1ID0gOTk1Owot
ICAgIG8ucHJvcGVydHk5OTYgPSA5OTY7Ci0gICAgby5wcm9wZXJ0eTk5NyA9IDk5NzsKLSAgICBv
LnByb3BlcnR5OTk4ID0gOTk4OwotICAgIG8ucHJvcGVydHk5OTkgPSA5OTk7Ci0gICAgby5wcm9w
ZXJ0eTEwMDAgPSAxMDAwOwotfQotCi1mdW5jdGlvbiB0ZXN0MygpIHsKLSAgICBmdW5jdGlvbiBG
b28oKSB7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxID0gMTsKLSAgICAgICAgdGhpcy5wcm9wZXJ0
eTIgPSAyOwotICAgICAgICB0aGlzLnByb3BlcnR5MyA9IDM7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk0ID0gNDsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTUgPSA1OwotICAgICAgICB0aGlzLnByb3Bl
cnR5NiA9IDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3ID0gNzsKLSAgICAgICAgdGhpcy5wcm9w
ZXJ0eTggPSA4OwotICAgICAgICB0aGlzLnByb3BlcnR5OSA9IDk7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkxMCA9IDEwOwotICAgICAgICB0aGlzLnByb3BlcnR5MTEgPSAxMTsKLSAgICAgICAgdGhp
cy5wcm9wZXJ0eTEyID0gMTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMyA9IDEzOwotICAgICAg
ICB0aGlzLnByb3BlcnR5MTQgPSAxNDsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTE1ID0gMTU7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkxNiA9IDE2OwotICAgICAgICB0aGlzLnByb3BlcnR5MTcgPSAx
NzsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTE4ID0gMTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkx
OSA9IDE5OwotICAgICAgICB0aGlzLnByb3BlcnR5MjAgPSAyMDsKLSAgICAgICAgdGhpcy5wcm9w
ZXJ0eTIxID0gMjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMiA9IDIyOwotICAgICAgICB0aGlz
LnByb3BlcnR5MjMgPSAyMzsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTI0ID0gMjQ7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkyNSA9IDI1OwotICAgICAgICB0aGlzLnByb3BlcnR5MjYgPSAyNjsKLSAg
ICAgICAgdGhpcy5wcm9wZXJ0eTI3ID0gMjc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyOCA9IDI4
OwotICAgICAgICB0aGlzLnByb3BlcnR5MjkgPSAyOTsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTMw
ID0gMzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMSA9IDMxOwotICAgICAgICB0aGlzLnByb3Bl
cnR5MzIgPSAzMjsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTMzID0gMzM7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkzNCA9IDM0OwotICAgICAgICB0aGlzLnByb3BlcnR5MzUgPSAzNTsKLSAgICAgICAg
dGhpcy5wcm9wZXJ0eTM2ID0gMzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNyA9IDM3OwotICAg
ICAgICB0aGlzLnByb3BlcnR5MzggPSAzODsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTM5ID0gMzk7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MCA9IDQwOwotICAgICAgICB0aGlzLnByb3BlcnR5NDEg
PSA0MTsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTQyID0gNDI7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk0MyA9IDQzOwotICAgICAgICB0aGlzLnByb3BlcnR5NDQgPSA0NDsKLSAgICAgICAgdGhpcy5w
cm9wZXJ0eTQ1ID0gNDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NiA9IDQ2OwotICAgICAgICB0
aGlzLnByb3BlcnR5NDcgPSA0NzsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTQ4ID0gNDg7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk0OSA9IDQ5OwotICAgICAgICB0aGlzLnByb3BlcnR5NTAgPSA1MDsK
LSAgICAgICAgdGhpcy5wcm9wZXJ0eTUxID0gNTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MiA9
IDUyOwotICAgICAgICB0aGlzLnByb3BlcnR5NTMgPSA1MzsKLSAgICAgICAgdGhpcy5wcm9wZXJ0
eTU0ID0gNTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NSA9IDU1OwotICAgICAgICB0aGlzLnBy
b3BlcnR5NTYgPSA1NjsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTU3ID0gNTc7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk1OCA9IDU4OwotICAgICAgICB0aGlzLnByb3BlcnR5NTkgPSA1OTsKLSAgICAg
ICAgdGhpcy5wcm9wZXJ0eTYwID0gNjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MSA9IDYxOwot
ICAgICAgICB0aGlzLnByb3BlcnR5NjIgPSA2MjsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTYzID0g
NjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NCA9IDY0OwotICAgICAgICB0aGlzLnByb3BlcnR5
NjUgPSA2NTsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTY2ID0gNjY7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk2NyA9IDY3OwotICAgICAgICB0aGlzLnByb3BlcnR5NjggPSA2ODsKLSAgICAgICAgdGhp
cy5wcm9wZXJ0eTY5ID0gNjk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MCA9IDcwOwotICAgICAg
ICB0aGlzLnByb3BlcnR5NzEgPSA3MTsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTcyID0gNzI7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk3MyA9IDczOwotICAgICAgICB0aGlzLnByb3BlcnR5NzQgPSA3
NDsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTc1ID0gNzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3
NiA9IDc2OwotICAgICAgICB0aGlzLnByb3BlcnR5NzcgPSA3NzsKLSAgICAgICAgdGhpcy5wcm9w
ZXJ0eTc4ID0gNzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3OSA9IDc5OwotICAgICAgICB0aGlz
LnByb3BlcnR5ODAgPSA4MDsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTgxID0gODE7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk4MiA9IDgyOwotICAgICAgICB0aGlzLnByb3BlcnR5ODMgPSA4MzsKLSAg
ICAgICAgdGhpcy5wcm9wZXJ0eTg0ID0gODQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NSA9IDg1
OwotICAgICAgICB0aGlzLnByb3BlcnR5ODYgPSA4NjsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTg3
ID0gODc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4OCA9IDg4OwotICAgICAgICB0aGlzLnByb3Bl
cnR5ODkgPSA4OTsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTkwID0gOTA7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk5MSA9IDkxOwotICAgICAgICB0aGlzLnByb3BlcnR5OTIgPSA5MjsKLSAgICAgICAg
dGhpcy5wcm9wZXJ0eTkzID0gOTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NCA9IDk0OwotICAg
ICAgICB0aGlzLnByb3BlcnR5OTUgPSA5NTsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTk2ID0gOTY7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NyA9IDk3OwotICAgICAgICB0aGlzLnByb3BlcnR5OTgg
PSA5ODsKLSAgICAgICAgdGhpcy5wcm9wZXJ0eTk5ID0gOTk7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkxMDAgPSAxMDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMDEgPSAxMDE7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkxMDIgPSAxMDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMDMgPSAxMDM7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkxMDQgPSAxMDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMDUg
PSAxMDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMDYgPSAxMDY7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkxMDcgPSAxMDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMDggPSAxMDg7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkxMDkgPSAxMDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMTAgPSAxMTA7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMTEgPSAxMTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkx
MTIgPSAxMTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMTMgPSAxMTM7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkxMTQgPSAxMTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMTUgPSAxMTU7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkxMTYgPSAxMTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMTcgPSAx
MTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMTggPSAxMTg7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkxMTkgPSAxMTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMjAgPSAxMjA7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkxMjEgPSAxMjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMjIgPSAxMjI7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkxMjMgPSAxMjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMjQg
PSAxMjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMjUgPSAxMjU7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkxMjYgPSAxMjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMjcgPSAxMjc7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkxMjggPSAxMjg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMjkgPSAxMjk7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMzAgPSAxMzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkx
MzEgPSAxMzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMzIgPSAxMzI7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkxMzMgPSAxMzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMzQgPSAxMzQ7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkxMzUgPSAxMzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMzYgPSAx
MzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMzcgPSAxMzc7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkxMzggPSAxMzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxMzkgPSAxMzk7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkxNDAgPSAxNDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNDEgPSAxNDE7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkxNDIgPSAxNDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNDMg
PSAxNDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNDQgPSAxNDQ7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkxNDUgPSAxNDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNDYgPSAxNDY7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkxNDcgPSAxNDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNDggPSAxNDg7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNDkgPSAxNDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkx
NTAgPSAxNTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNTEgPSAxNTE7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkxNTIgPSAxNTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNTMgPSAxNTM7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkxNTQgPSAxNTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNTUgPSAx
NTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNTYgPSAxNTY7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkxNTcgPSAxNTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNTggPSAxNTg7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkxNTkgPSAxNTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNjAgPSAxNjA7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkxNjEgPSAxNjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNjIg
PSAxNjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNjMgPSAxNjM7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkxNjQgPSAxNjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNjUgPSAxNjU7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkxNjYgPSAxNjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNjcgPSAxNjc7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNjggPSAxNjg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkx
NjkgPSAxNjk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNzAgPSAxNzA7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkxNzEgPSAxNzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNzIgPSAxNzI7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkxNzMgPSAxNzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNzQgPSAx
NzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNzUgPSAxNzU7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkxNzYgPSAxNzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNzcgPSAxNzc7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkxNzggPSAxNzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxNzkgPSAxNzk7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkxODAgPSAxODA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxODEg
PSAxODE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxODIgPSAxODI7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkxODMgPSAxODM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxODQgPSAxODQ7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkxODUgPSAxODU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxODYgPSAxODY7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkxODcgPSAxODc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkx
ODggPSAxODg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxODkgPSAxODk7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkxOTAgPSAxOTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxOTEgPSAxOTE7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkxOTIgPSAxOTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxOTMgPSAx
OTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxOTQgPSAxOTQ7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkxOTUgPSAxOTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxOTYgPSAxOTY7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkxOTcgPSAxOTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkxOTggPSAxOTg7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkxOTkgPSAxOTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMDAg
PSAyMDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMDEgPSAyMDE7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkyMDIgPSAyMDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMDMgPSAyMDM7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkyMDQgPSAyMDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMDUgPSAyMDU7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMDYgPSAyMDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHky
MDcgPSAyMDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMDggPSAyMDg7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkyMDkgPSAyMDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMTAgPSAyMTA7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkyMTEgPSAyMTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMTIgPSAy
MTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMTMgPSAyMTM7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkyMTQgPSAyMTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMTUgPSAyMTU7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkyMTYgPSAyMTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMTcgPSAyMTc7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkyMTggPSAyMTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMTkg
PSAyMTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMjAgPSAyMjA7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkyMjEgPSAyMjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMjIgPSAyMjI7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkyMjMgPSAyMjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMjQgPSAyMjQ7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMjUgPSAyMjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHky
MjYgPSAyMjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMjcgPSAyMjc7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkyMjggPSAyMjg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMjkgPSAyMjk7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkyMzAgPSAyMzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMzEgPSAy
MzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMzIgPSAyMzI7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkyMzMgPSAyMzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMzQgPSAyMzQ7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkyMzUgPSAyMzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMzYgPSAyMzY7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkyMzcgPSAyMzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMzgg
PSAyMzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyMzkgPSAyMzk7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkyNDAgPSAyNDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNDEgPSAyNDE7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkyNDIgPSAyNDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNDMgPSAyNDM7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNDQgPSAyNDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHky
NDUgPSAyNDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNDYgPSAyNDY7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkyNDcgPSAyNDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNDggPSAyNDg7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkyNDkgPSAyNDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNTAgPSAy
NTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNTEgPSAyNTE7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkyNTIgPSAyNTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNTMgPSAyNTM7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkyNTQgPSAyNTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNTUgPSAyNTU7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkyNTYgPSAyNTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNTcg
PSAyNTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNTggPSAyNTg7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkyNTkgPSAyNTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNjAgPSAyNjA7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkyNjEgPSAyNjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNjIgPSAyNjI7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNjMgPSAyNjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHky
NjQgPSAyNjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNjUgPSAyNjU7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkyNjYgPSAyNjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNjcgPSAyNjc7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkyNjggPSAyNjg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNjkgPSAy
Njk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNzAgPSAyNzA7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkyNzEgPSAyNzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNzIgPSAyNzI7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkyNzMgPSAyNzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNzQgPSAyNzQ7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkyNzUgPSAyNzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNzYg
PSAyNzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNzcgPSAyNzc7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkyNzggPSAyNzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyNzkgPSAyNzk7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkyODAgPSAyODA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyODEgPSAyODE7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkyODIgPSAyODI7Ci0gICAgICAgIHRoaXMucHJvcGVydHky
ODMgPSAyODM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyODQgPSAyODQ7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkyODUgPSAyODU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyODYgPSAyODY7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkyODcgPSAyODc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyODggPSAy
ODg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyODkgPSAyODk7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkyOTAgPSAyOTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyOTEgPSAyOTE7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkyOTIgPSAyOTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyOTMgPSAyOTM7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkyOTQgPSAyOTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyOTUg
PSAyOTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyOTYgPSAyOTY7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkyOTcgPSAyOTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkyOTggPSAyOTg7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkyOTkgPSAyOTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMDAgPSAzMDA7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMDEgPSAzMDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkz
MDIgPSAzMDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMDMgPSAzMDM7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkzMDQgPSAzMDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMDUgPSAzMDU7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkzMDYgPSAzMDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMDcgPSAz
MDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMDggPSAzMDg7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkzMDkgPSAzMDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMTAgPSAzMTA7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkzMTEgPSAzMTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMTIgPSAzMTI7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkzMTMgPSAzMTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMTQg
PSAzMTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMTUgPSAzMTU7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkzMTYgPSAzMTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMTcgPSAzMTc7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkzMTggPSAzMTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMTkgPSAzMTk7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMjAgPSAzMjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkz
MjEgPSAzMjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMjIgPSAzMjI7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkzMjMgPSAzMjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMjQgPSAzMjQ7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkzMjUgPSAzMjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMjYgPSAz
MjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMjcgPSAzMjc7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkzMjggPSAzMjg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMjkgPSAzMjk7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkzMzAgPSAzMzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMzEgPSAzMzE7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkzMzIgPSAzMzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMzMg
PSAzMzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMzQgPSAzMzQ7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkzMzUgPSAzMzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMzYgPSAzMzY7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkzMzcgPSAzMzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMzggPSAzMzg7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkzMzkgPSAzMzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkz
NDAgPSAzNDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNDEgPSAzNDE7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkzNDIgPSAzNDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNDMgPSAzNDM7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkzNDQgPSAzNDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNDUgPSAz
NDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNDYgPSAzNDY7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkzNDcgPSAzNDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNDggPSAzNDg7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkzNDkgPSAzNDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNTAgPSAzNTA7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkzNTEgPSAzNTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNTIg
PSAzNTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNTMgPSAzNTM7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkzNTQgPSAzNTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNTUgPSAzNTU7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkzNTYgPSAzNTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNTcgPSAzNTc7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNTggPSAzNTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkz
NTkgPSAzNTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNjAgPSAzNjA7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkzNjEgPSAzNjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNjIgPSAzNjI7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkzNjMgPSAzNjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNjQgPSAz
NjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNjUgPSAzNjU7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkzNjYgPSAzNjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNjcgPSAzNjc7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkzNjggPSAzNjg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNjkgPSAzNjk7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkzNzAgPSAzNzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNzEg
PSAzNzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNzIgPSAzNzI7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkzNzMgPSAzNzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNzQgPSAzNzQ7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkzNzUgPSAzNzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNzYgPSAzNzY7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNzcgPSAzNzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkz
NzggPSAzNzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzNzkgPSAzNzk7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkzODAgPSAzODA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzODEgPSAzODE7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHkzODIgPSAzODI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzODMgPSAz
ODM7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzODQgPSAzODQ7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHkzODUgPSAzODU7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzODYgPSAzODY7Ci0gICAgICAgIHRo
aXMucHJvcGVydHkzODcgPSAzODc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzODggPSAzODg7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHkzODkgPSAzODk7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzOTAg
PSAzOTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzOTEgPSAzOTE7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkzOTIgPSAzOTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzOTMgPSAzOTM7Ci0gICAgICAg
IHRoaXMucHJvcGVydHkzOTQgPSAzOTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzOTUgPSAzOTU7
Ci0gICAgICAgIHRoaXMucHJvcGVydHkzOTYgPSAzOTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHkz
OTcgPSAzOTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHkzOTggPSAzOTg7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHkzOTkgPSAzOTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MDAgPSA0MDA7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk0MDEgPSA0MDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MDIgPSA0
MDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MDMgPSA0MDM7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk0MDQgPSA0MDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MDUgPSA0MDU7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk0MDYgPSA0MDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MDcgPSA0MDc7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk0MDggPSA0MDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MDkg
PSA0MDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MTAgPSA0MTA7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk0MTEgPSA0MTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MTIgPSA0MTI7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk0MTMgPSA0MTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MTQgPSA0MTQ7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MTUgPSA0MTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0
MTYgPSA0MTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MTcgPSA0MTc7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk0MTggPSA0MTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MTkgPSA0MTk7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk0MjAgPSA0MjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MjEgPSA0
MjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MjIgPSA0MjI7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk0MjMgPSA0MjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MjQgPSA0MjQ7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk0MjUgPSA0MjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MjYgPSA0MjY7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk0MjcgPSA0Mjc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0Mjgg
PSA0Mjg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MjkgPSA0Mjk7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk0MzAgPSA0MzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MzEgPSA0MzE7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk0MzIgPSA0MzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MzMgPSA0MzM7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MzQgPSA0MzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0
MzUgPSA0MzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MzYgPSA0MzY7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk0MzcgPSA0Mzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0MzggPSA0Mzg7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk0MzkgPSA0Mzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NDAgPSA0
NDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NDEgPSA0NDE7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk0NDIgPSA0NDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NDMgPSA0NDM7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk0NDQgPSA0NDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NDUgPSA0NDU7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk0NDYgPSA0NDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NDcg
PSA0NDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NDggPSA0NDg7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk0NDkgPSA0NDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NTAgPSA0NTA7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk0NTEgPSA0NTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NTIgPSA0NTI7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NTMgPSA0NTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0
NTQgPSA0NTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NTUgPSA0NTU7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk0NTYgPSA0NTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NTcgPSA0NTc7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk0NTggPSA0NTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NTkgPSA0
NTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NjAgPSA0NjA7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk0NjEgPSA0NjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NjIgPSA0NjI7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk0NjMgPSA0NjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NjQgPSA0NjQ7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk0NjUgPSA0NjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NjYg
PSA0NjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NjcgPSA0Njc7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk0NjggPSA0Njg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NjkgPSA0Njk7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk0NzAgPSA0NzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NzEgPSA0NzE7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NzIgPSA0NzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0
NzMgPSA0NzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NzQgPSA0NzQ7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk0NzUgPSA0NzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NzYgPSA0NzY7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk0NzcgPSA0Nzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NzggPSA0
Nzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0NzkgPSA0Nzk7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk0ODAgPSA0ODA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0ODEgPSA0ODE7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk0ODIgPSA0ODI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0ODMgPSA0ODM7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk0ODQgPSA0ODQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0ODUg
PSA0ODU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0ODYgPSA0ODY7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk0ODcgPSA0ODc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0ODggPSA0ODg7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk0ODkgPSA0ODk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0OTAgPSA0OTA7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk0OTEgPSA0OTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0
OTIgPSA0OTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0OTMgPSA0OTM7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk0OTQgPSA0OTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0OTUgPSA0OTU7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk0OTYgPSA0OTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0OTcgPSA0
OTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk0OTggPSA0OTg7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk0OTkgPSA0OTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MDAgPSA1MDA7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk1MDEgPSA1MDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MDIgPSA1MDI7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk1MDMgPSA1MDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MDQg
PSA1MDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MDUgPSA1MDU7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk1MDYgPSA1MDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MDcgPSA1MDc7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk1MDggPSA1MDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MDkgPSA1MDk7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MTAgPSA1MTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1
MTEgPSA1MTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MTIgPSA1MTI7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk1MTMgPSA1MTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MTQgPSA1MTQ7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk1MTUgPSA1MTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MTYgPSA1
MTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MTcgPSA1MTc7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk1MTggPSA1MTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MTkgPSA1MTk7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk1MjAgPSA1MjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MjEgPSA1MjE7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk1MjIgPSA1MjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MjMg
PSA1MjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MjQgPSA1MjQ7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk1MjUgPSA1MjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MjYgPSA1MjY7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk1MjcgPSA1Mjc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MjggPSA1Mjg7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MjkgPSA1Mjk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1
MzAgPSA1MzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MzEgPSA1MzE7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk1MzIgPSA1MzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MzMgPSA1MzM7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk1MzQgPSA1MzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MzUgPSA1
MzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MzYgPSA1MzY7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk1MzcgPSA1Mzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1MzggPSA1Mzg7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk1MzkgPSA1Mzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NDAgPSA1NDA7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk1NDEgPSA1NDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NDIg
PSA1NDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NDMgPSA1NDM7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk1NDQgPSA1NDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NDUgPSA1NDU7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk1NDYgPSA1NDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NDcgPSA1NDc7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NDggPSA1NDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1
NDkgPSA1NDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NTAgPSA1NTA7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk1NTEgPSA1NTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NTIgPSA1NTI7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk1NTMgPSA1NTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NTQgPSA1
NTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NTUgPSA1NTU7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk1NTYgPSA1NTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NTcgPSA1NTc7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk1NTggPSA1NTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NTkgPSA1NTk7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk1NjAgPSA1NjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NjEg
PSA1NjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NjIgPSA1NjI7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk1NjMgPSA1NjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NjQgPSA1NjQ7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk1NjUgPSA1NjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NjYgPSA1NjY7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NjcgPSA1Njc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1
NjggPSA1Njg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NjkgPSA1Njk7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk1NzAgPSA1NzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NzEgPSA1NzE7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk1NzIgPSA1NzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NzMgPSA1
NzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NzQgPSA1NzQ7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk1NzUgPSA1NzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NzYgPSA1NzY7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk1NzcgPSA1Nzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1NzggPSA1Nzg7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk1NzkgPSA1Nzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1ODAg
PSA1ODA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1ODEgPSA1ODE7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk1ODIgPSA1ODI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1ODMgPSA1ODM7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk1ODQgPSA1ODQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1ODUgPSA1ODU7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk1ODYgPSA1ODY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1
ODcgPSA1ODc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1ODggPSA1ODg7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk1ODkgPSA1ODk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1OTAgPSA1OTA7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk1OTEgPSA1OTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1OTIgPSA1
OTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1OTMgPSA1OTM7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk1OTQgPSA1OTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1OTUgPSA1OTU7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk1OTYgPSA1OTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1OTcgPSA1OTc7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk1OTggPSA1OTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk1OTkg
PSA1OTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MDAgPSA2MDA7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk2MDEgPSA2MDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MDIgPSA2MDI7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk2MDMgPSA2MDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MDQgPSA2MDQ7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MDUgPSA2MDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2
MDYgPSA2MDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MDcgPSA2MDc7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk2MDggPSA2MDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MDkgPSA2MDk7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk2MTAgPSA2MTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MTEgPSA2
MTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MTIgPSA2MTI7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk2MTMgPSA2MTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MTQgPSA2MTQ7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk2MTUgPSA2MTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MTYgPSA2MTY7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk2MTcgPSA2MTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MTgg
PSA2MTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MTkgPSA2MTk7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk2MjAgPSA2MjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MjEgPSA2MjE7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk2MjIgPSA2MjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MjMgPSA2MjM7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MjQgPSA2MjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2
MjUgPSA2MjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MjYgPSA2MjY7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk2MjcgPSA2Mjc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MjggPSA2Mjg7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk2MjkgPSA2Mjk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MzAgPSA2
MzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MzEgPSA2MzE7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk2MzIgPSA2MzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MzMgPSA2MzM7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk2MzQgPSA2MzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MzUgPSA2MzU7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk2MzYgPSA2MzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2Mzcg
PSA2Mzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2MzggPSA2Mzg7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk2MzkgPSA2Mzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NDAgPSA2NDA7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk2NDEgPSA2NDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NDIgPSA2NDI7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NDMgPSA2NDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2
NDQgPSA2NDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NDUgPSA2NDU7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk2NDYgPSA2NDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NDcgPSA2NDc7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk2NDggPSA2NDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NDkgPSA2
NDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NTAgPSA2NTA7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk2NTEgPSA2NTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NTIgPSA2NTI7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk2NTMgPSA2NTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NTQgPSA2NTQ7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk2NTUgPSA2NTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NTYg
PSA2NTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NTcgPSA2NTc7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk2NTggPSA2NTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NTkgPSA2NTk7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk2NjAgPSA2NjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NjEgPSA2NjE7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NjIgPSA2NjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2
NjMgPSA2NjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NjQgPSA2NjQ7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk2NjUgPSA2NjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NjYgPSA2NjY7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk2NjcgPSA2Njc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NjggPSA2
Njg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NjkgPSA2Njk7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk2NzAgPSA2NzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NzEgPSA2NzE7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk2NzIgPSA2NzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NzMgPSA2NzM7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk2NzQgPSA2NzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NzUg
PSA2NzU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NzYgPSA2NzY7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk2NzcgPSA2Nzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2NzggPSA2Nzg7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk2NzkgPSA2Nzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2ODAgPSA2ODA7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk2ODEgPSA2ODE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2
ODIgPSA2ODI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2ODMgPSA2ODM7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk2ODQgPSA2ODQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2ODUgPSA2ODU7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk2ODYgPSA2ODY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2ODcgPSA2
ODc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2ODggPSA2ODg7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk2ODkgPSA2ODk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2OTAgPSA2OTA7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk2OTEgPSA2OTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2OTIgPSA2OTI7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk2OTMgPSA2OTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2OTQg
PSA2OTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2OTUgPSA2OTU7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk2OTYgPSA2OTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2OTcgPSA2OTc7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk2OTggPSA2OTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk2OTkgPSA2OTk7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MDAgPSA3MDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3
MDEgPSA3MDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MDIgPSA3MDI7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk3MDMgPSA3MDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MDQgPSA3MDQ7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk3MDUgPSA3MDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MDYgPSA3
MDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MDcgPSA3MDc7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk3MDggPSA3MDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MDkgPSA3MDk7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk3MTAgPSA3MTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MTEgPSA3MTE7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk3MTIgPSA3MTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MTMg
PSA3MTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MTQgPSA3MTQ7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk3MTUgPSA3MTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MTYgPSA3MTY7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk3MTcgPSA3MTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MTggPSA3MTg7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MTkgPSA3MTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3
MjAgPSA3MjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MjEgPSA3MjE7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk3MjIgPSA3MjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MjMgPSA3MjM7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk3MjQgPSA3MjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MjUgPSA3
MjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MjYgPSA3MjY7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk3MjcgPSA3Mjc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MjggPSA3Mjg7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk3MjkgPSA3Mjk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MzAgPSA3MzA7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk3MzEgPSA3MzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MzIg
PSA3MzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MzMgPSA3MzM7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk3MzQgPSA3MzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MzUgPSA3MzU7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk3MzYgPSA3MzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MzcgPSA3Mzc7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk3MzggPSA3Mzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3
MzkgPSA3Mzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NDAgPSA3NDA7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk3NDEgPSA3NDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NDIgPSA3NDI7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk3NDMgPSA3NDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NDQgPSA3
NDQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NDUgPSA3NDU7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk3NDYgPSA3NDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NDcgPSA3NDc7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk3NDggPSA3NDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NDkgPSA3NDk7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk3NTAgPSA3NTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NTEg
PSA3NTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NTIgPSA3NTI7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk3NTMgPSA3NTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NTQgPSA3NTQ7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk3NTUgPSA3NTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NTYgPSA3NTY7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NTcgPSA3NTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3
NTggPSA3NTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NTkgPSA3NTk7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk3NjAgPSA3NjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NjEgPSA3NjE7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk3NjIgPSA3NjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NjMgPSA3
NjM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NjQgPSA3NjQ7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk3NjUgPSA3NjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NjYgPSA3NjY7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk3NjcgPSA3Njc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NjggPSA3Njg7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk3NjkgPSA3Njk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NzAg
PSA3NzA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NzEgPSA3NzE7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk3NzIgPSA3NzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NzMgPSA3NzM7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk3NzQgPSA3NzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NzUgPSA3NzU7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NzYgPSA3NzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3
NzcgPSA3Nzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3NzggPSA3Nzg7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk3NzkgPSA3Nzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3ODAgPSA3ODA7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk3ODEgPSA3ODE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3ODIgPSA3
ODI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3ODMgPSA3ODM7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk3ODQgPSA3ODQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3ODUgPSA3ODU7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk3ODYgPSA3ODY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3ODcgPSA3ODc7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk3ODggPSA3ODg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3ODkg
PSA3ODk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3OTAgPSA3OTA7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk3OTEgPSA3OTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3OTIgPSA3OTI7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk3OTMgPSA3OTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3OTQgPSA3OTQ7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk3OTUgPSA3OTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3
OTYgPSA3OTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3OTcgPSA3OTc7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk3OTggPSA3OTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk3OTkgPSA3OTk7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk4MDAgPSA4MDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MDEgPSA4
MDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MDIgPSA4MDI7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk4MDMgPSA4MDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MDQgPSA4MDQ7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk4MDUgPSA4MDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MDYgPSA4MDY7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk4MDcgPSA4MDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MDgg
PSA4MDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MDkgPSA4MDk7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk4MTAgPSA4MTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MTEgPSA4MTE7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk4MTIgPSA4MTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MTMgPSA4MTM7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MTQgPSA4MTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4
MTUgPSA4MTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MTYgPSA4MTY7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk4MTcgPSA4MTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MTggPSA4MTg7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk4MTkgPSA4MTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MjAgPSA4
MjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MjEgPSA4MjE7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk4MjIgPSA4MjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MjMgPSA4MjM7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk4MjQgPSA4MjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MjUgPSA4MjU7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk4MjYgPSA4MjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4Mjcg
PSA4Mjc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MjggPSA4Mjg7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk4MjkgPSA4Mjk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MzAgPSA4MzA7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk4MzEgPSA4MzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MzIgPSA4MzI7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MzMgPSA4MzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4
MzQgPSA4MzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MzUgPSA4MzU7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk4MzYgPSA4MzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MzcgPSA4Mzc7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk4MzggPSA4Mzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4MzkgPSA4
Mzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NDAgPSA4NDA7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk4NDEgPSA4NDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NDIgPSA4NDI7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk4NDMgPSA4NDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NDQgPSA4NDQ7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk4NDUgPSA4NDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NDYg
PSA4NDY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NDcgPSA4NDc7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk4NDggPSA4NDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NDkgPSA4NDk7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk4NTAgPSA4NTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NTEgPSA4NTE7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NTIgPSA4NTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4
NTMgPSA4NTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NTQgPSA4NTQ7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk4NTUgPSA4NTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NTYgPSA4NTY7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk4NTcgPSA4NTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NTggPSA4
NTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NTkgPSA4NTk7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk4NjAgPSA4NjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NjEgPSA4NjE7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk4NjIgPSA4NjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NjMgPSA4NjM7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk4NjQgPSA4NjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NjUg
PSA4NjU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NjYgPSA4NjY7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk4NjcgPSA4Njc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NjggPSA4Njg7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk4NjkgPSA4Njk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NzAgPSA4NzA7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NzEgPSA4NzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4
NzIgPSA4NzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NzMgPSA4NzM7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk4NzQgPSA4NzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NzUgPSA4NzU7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk4NzYgPSA4NzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NzcgPSA4
Nzc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4NzggPSA4Nzg7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk4NzkgPSA4Nzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4ODAgPSA4ODA7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk4ODEgPSA4ODE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4ODIgPSA4ODI7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk4ODMgPSA4ODM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4ODQg
PSA4ODQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4ODUgPSA4ODU7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk4ODYgPSA4ODY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4ODcgPSA4ODc7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk4ODggPSA4ODg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4ODkgPSA4ODk7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk4OTAgPSA4OTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4
OTEgPSA4OTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4OTIgPSA4OTI7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk4OTMgPSA4OTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4OTQgPSA4OTQ7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk4OTUgPSA4OTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4OTYgPSA4
OTY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4OTcgPSA4OTc7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk4OTggPSA4OTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk4OTkgPSA4OTk7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk5MDAgPSA5MDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MDEgPSA5MDE7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk5MDIgPSA5MDI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MDMg
PSA5MDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MDQgPSA5MDQ7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk5MDUgPSA5MDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MDYgPSA5MDY7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk5MDcgPSA5MDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MDggPSA5MDg7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MDkgPSA5MDk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5
MTAgPSA5MTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MTEgPSA5MTE7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk5MTIgPSA5MTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MTMgPSA5MTM7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk5MTQgPSA5MTQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MTUgPSA5
MTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MTYgPSA5MTY7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk5MTcgPSA5MTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MTggPSA5MTg7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk5MTkgPSA5MTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MjAgPSA5MjA7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk5MjEgPSA5MjE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MjIg
PSA5MjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MjMgPSA5MjM7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk5MjQgPSA5MjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MjUgPSA5MjU7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk5MjYgPSA5MjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MjcgPSA5Mjc7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MjggPSA5Mjg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5
MjkgPSA5Mjk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MzAgPSA5MzA7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk5MzEgPSA5MzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MzIgPSA5MzI7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk5MzMgPSA5MzM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MzQgPSA5
MzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MzUgPSA5MzU7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk5MzYgPSA5MzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MzcgPSA5Mzc7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk5MzggPSA5Mzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5MzkgPSA5Mzk7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk5NDAgPSA5NDA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NDEg
PSA5NDE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NDIgPSA5NDI7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk5NDMgPSA5NDM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NDQgPSA5NDQ7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk5NDUgPSA5NDU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NDYgPSA5NDY7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NDcgPSA5NDc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5
NDggPSA5NDg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NDkgPSA5NDk7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk5NTAgPSA5NTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NTEgPSA5NTE7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk5NTIgPSA5NTI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NTMgPSA5
NTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NTQgPSA5NTQ7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk5NTUgPSA5NTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NTYgPSA5NTY7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk5NTcgPSA5NTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NTggPSA5NTg7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk5NTkgPSA5NTk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NjAg
PSA5NjA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NjEgPSA5NjE7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk5NjIgPSA5NjI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NjMgPSA5NjM7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk5NjQgPSA5NjQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NjUgPSA5NjU7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NjYgPSA5NjY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5
NjcgPSA5Njc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NjggPSA5Njg7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk5NjkgPSA5Njk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NzAgPSA5NzA7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk5NzEgPSA5NzE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NzIgPSA5
NzI7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NzMgPSA5NzM7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk5NzQgPSA5NzQ7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NzUgPSA5NzU7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk5NzYgPSA5NzY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5NzcgPSA5Nzc7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk5NzggPSA5Nzg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5Nzkg
PSA5Nzk7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5ODAgPSA5ODA7Ci0gICAgICAgIHRoaXMucHJv
cGVydHk5ODEgPSA5ODE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5ODIgPSA5ODI7Ci0gICAgICAg
IHRoaXMucHJvcGVydHk5ODMgPSA5ODM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5ODQgPSA5ODQ7
Ci0gICAgICAgIHRoaXMucHJvcGVydHk5ODUgPSA5ODU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5
ODYgPSA5ODY7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5ODcgPSA5ODc7Ci0gICAgICAgIHRoaXMu
cHJvcGVydHk5ODggPSA5ODg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5ODkgPSA5ODk7Ci0gICAg
ICAgIHRoaXMucHJvcGVydHk5OTAgPSA5OTA7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5OTEgPSA5
OTE7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5OTIgPSA5OTI7Ci0gICAgICAgIHRoaXMucHJvcGVy
dHk5OTMgPSA5OTM7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5OTQgPSA5OTQ7Ci0gICAgICAgIHRo
aXMucHJvcGVydHk5OTUgPSA5OTU7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5OTYgPSA5OTY7Ci0g
ICAgICAgIHRoaXMucHJvcGVydHk5OTcgPSA5OTc7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5OTgg
PSA5OTg7Ci0gICAgICAgIHRoaXMucHJvcGVydHk5OTkgPSA5OTk7Ci0gICAgICAgIHRoaXMucHJv
cGVydHkxMDAwID0gMTAwMDsKLSAgICB9Ci0gICAgbmV3IEZvbygpOwotfQotCi10ZXN0MSgpOwot
dGVzdDIoKTsKLXRlc3QzKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>