<?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>218583</bug_id>
          
          <creation_ts>2020-11-04 13:00:43 -0800</creation_ts>
          <short_desc>REGRESSION(r269349): ARM64 only crash (ARM64E works)</short_desc>
          <delta_ts>2020-11-04 13:03:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>218143</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1704571</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-11-04 13:00:43 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/269349 broke the build:
ARM64 only crash (ARM64E works)

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>1704572</commentid>
    <comment_count>1</comment_count>
      <attachid>413199</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-11-04 13:00:52 -0800</bug_when>
    <thetext>Created attachment 413199
REVERT of r269349

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 revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert 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>1704573</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 13:03:45 -0800</bug_when>
    <thetext>Ah, I already found the issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413199</attachid>
            <date>2020-11-04 13:00:52 -0800</date>
            <delta_ts>2020-11-04 13:03:56 -0800</delta_ts>
            <desc>REVERT of r269349</desc>
            <filename>bug-218583-20201104210051.patch</filename>
            <type>text/plain</type>
            <size>165210</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Mzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NDY5NDA1NjA4MTczZThjMWFmN2ViOWU4NGM5ZjEwNWU1MjE3NGZmLi4yMDhlZmYyZTlkZTkxOGIy
ZGIyZjJkZGRhYjQ1NmVmZGE1YWExNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMC0xMS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjkzNDkgYW5kIHIyNjkz
NTMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg1
ODMKKworICAgICAgICBBUk02NCBvbmx5IGNyYXNoIChBUk02NEUgd29ya3MpCisKKyAgICAgICAg
UmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiW0pTQ10gQWRkIEpJVENhZ2Ugc3VwcG9y
dCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE0
MworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjY5MzQ5CisKKyAg
ICAgICAgIlVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBmb3IgQVJNNjRFIGRlYnVnIGJ1aWxkIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTQzCisgICAg
ICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNjkzNTMKKwogMjAyMC0xMS0w
MyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGJ1aWxkIGZpeCBmb3IgQVJNNjRFIGRlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQyZmM2NjY5OTY1Y2I5
YzA1MGIzNjQ0NDY0MTFiNjQ1N2NmMDg0MWIuLjk3NTk4YWZjZTFhMGM0NzgxN2I0MGVjOWE0MmQz
N2FkMDljZGFlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTEtMDQgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjY5MzQ5IGFuZCByMjY5MzUzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NTgzCisKKyAgICAgICAgQVJNNjQgb25seSBjcmFzaCAoQVJN
NjRFIHdvcmtzKQorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIltK
U0NdIEFkZCBKSVRDYWdlIHN1cHBvcnQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI2OTM0OQorCisgICAgICAgICJVbnJldmlld2VkLCBidWlsZCBmaXggZm9yIEFS
TTY0RSBkZWJ1ZyBidWlsZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODE0MworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMjY5MzUzCisKIDIwMjAtMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggMzhhZTZjZTExYTg5YmIyY2E2NTdjNThjZjgyZDdlNDc1MThh
OTk1MS4uMWQxZGNhNjc3OWYwOGZiODJjODVmYjYyYzRjM2ZjOWU4MjE2MzhhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODcyLDcgKzg3Miw2IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKICAgICBydW50aW1lL0Z1
enplckFnZW50LmgKLSAgICBydW50aW1lL0dhdGUuaAogICAgIHJ1bnRpbWUvR2VuZXJpY09mZnNl
dC5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAogICAgIHJ1bnRpbWUvR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDVlOGU1NDM2YWI5OGQwZDk1MjdmY2E1NTljNDlhYTgxNzRjMGM0OGUuLmE4OTIzMTFiNTJj
NzAwMmE2MTg2MGJiMzRkZjUyMTI1ZmQ1MmU3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xODUzLDcgKzE4NTMsNiBAQAogCQlFMzZCNzY3MDIyRjhENjE5MDBEMDk4MTggLyog
V2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JF
bnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVh
dGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1
NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3ku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzcx
MTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc1MEND
ODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3NTBDQzcyNTAyRTg3RTAw
NkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLzsgfTsKIAkJRTM3OTRFNzYx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MzUwMDkyMzkwRDkzNzAw
MzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKQEAgLTUwNjMsNyArNTA2Miw2IEBACiAJCUUz
NkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29u
Y3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVuY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEw
IC8qIEdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2F0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50
bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFs
eXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI4Myw3ICs3MjgxLDYgQEAK
IAkJCQlFMzNBOTQ5MjIyNTUzMjI5MDBENDJCMDYgLyogRnV6emVyQWdlbnQuaCAqLywKIAkJCQlD
RUNGQUQzNTIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuY3BwICovLAogCQkJ
CUNFQ0ZBRDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovLAotCQkJ
CUUzNzExOTkxMjUzRkE4N0UwMEJBNjlBMCAvKiBHYXRlLmggKi8sCiAJCQkJNzBCNzkxODUxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJ
CTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcCAqLywKQEAgLTk3MDUsNyArOTcwMiw2IEBACiAJCQkJNjJEMkQzOTAxQURG
MTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUz
M0E5NDk3MjI1NTMyMzMwMEQ0MkIwNiAvKiBGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0VDRkFEMzYyMzcyREFEMDAwMjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNz
ZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8q
IEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAppbmRleCBlNGYy
NmFiNDY2ZTJmYjUwNTY3MDI4OTJlZTNhYmFjNzY1Yjc3ZDA1Li5iM2NlMTc3OTJkMDE2N2Y0ZWM3
YmVjY2E0ZmRlODVjNDVjYmIxMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAKQEAgLTI2LDE0ICsyNiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uTGlzdC5oIgogCi0jaW5jbHVk
ZSAiR2F0ZS5oIgotI2luY2x1ZGUgIkxMSW50RGF0YS5oIgotI2luY2x1ZGUgIk9wY29kZS5oIgot
Ci0jaWYgRU5BQkxFKEpJVF9DQUdFKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdl
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIExhenlOZXZlckRlc3Ry
b3llZDxKSVRPcGVyYXRpb25MaXN0PiBqaXRPcGVyYXRpb25MaXN0OwpAQCAtNTMsMjIgKzQ1LDE4
IEBAIHZvaWQgSklUT3BlcmF0aW9uTGlzdDo6aW5pdGlhbGl6ZSgpCiAjaWYgRU5BQkxFKEpJVF9P
UEVSQVRJT05fVkFMSURBVElPTikKIHN0YXRpYyBTVVBQUkVTU19BU0FOIEFMV0FZU19JTkxJTkUg
dm9pZCBhZGRQb2ludGVycyhIYXNoTWFwPHZvaWQqLCB2b2lkKj4mIG1hcCwgY29uc3QgdWludHB0
cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0cl90
KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKIHsKLSNp
ZiBFTkFCTEUoSklUX0NBR0UpCi0gICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgewotICAg
ICAgICBKU0NfSklUX0NBR0VEX1BPSU5URVJfUkVHSVNUUkFUSU9OKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9FTkFCTEVEKSB7Ci0g
ICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50
ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgewotICAgICAgICAgICAgdm9pZCogY29kZVB0ciA9IHJl
bW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVudCkpOwotICAgICAgICAg
ICAgaWYgKGNvZGVQdHIpCi0gICAgICAgICAgICAgICAgbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRh
Z05hdGl2ZUNvZGVQdHJJbXBsPEhvc3RGdW5jdGlvblB0clRhZz4oY29kZVB0cikpOworICAgIGZv
ciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50ICE9IGVuZEhv
c3Q7ICsrY3VycmVudCkgeworICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRh
ZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7CisgICAgICAgIGlmIChjb2RlUHRyKSB7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRp
dmVDb2RlUHRySW1wbDxIb3N0RnVuY3Rpb25QdHJUYWc+KGNvZGVQdHIpKTsKKyAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChjb25z
dCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdpbk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3Bl
cmF0aW9uczsgKytjdXJyZW50KSB7Ci0gICAgICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3Zl
Q29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Ci0gICAgICAgICAgICBp
ZiAoY29kZVB0cikKLSAgICAgICAgICAgICAgICBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0
aXZlQ29kZVB0ckltcGw8T3BlcmF0aW9uUHRyVGFnPihjb2RlUHRyKSk7CisgICAgfQorICAgIGZv
ciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9
IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkgeworICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVt
b3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7CisgICAgICAgIGlm
IChjb2RlUHRyKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwg
V1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxPcGVyYXRpb25QdHJUYWc+KGNvZGVQdHIpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIH0KICAgICB9CiB9
CkBAIC04NSw1NiArNzMsNiBAQCB2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRl
cnNJbkphdmFTY3JpcHRDb3JlKCkKICNlbmRpZgogfQogCi12b2lkIEpJVE9wZXJhdGlvbkxpc3Q6
OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKQotewotI2lmIEVOQUJM
RShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10gewotCi0jZGVmaW5lIExMSU5U
X09QKG5hbWUpIFwKLSAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSkpLCBcCi0gICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
KG5hbWUpKSwgXAotICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMzJD
b2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lKSksCi0KLSNkZWZpbmUgTExJTlRf
UkVUVVJOX0xPQ0FUSU9OKG5hbWUsIC4uLikgXAotICAgIExMSU5UX09QKG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pCi0KLSAgICAgICAgY29uc3QgdWludHB0cl90IG9wZXJhdGlvbnNbXSA9IHsKLSAg
ICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpLAot
ICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUpKSwKLSAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjaykpLAotICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6Omdl
dENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2spKSwKLSAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9ldmFsX3By
b2xvZ3VlKSksCi0gICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0
Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkp
LAotICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSks
Ci0gICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSkpLAotICAgICAg
ICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzKSksCi0gICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4obGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkpLAotICAg
ICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24pKSwKLSAg
ICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpKSwKLSAg
ICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxs
X3RyYW1wb2xpbmUpKSwKLSAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJh
bXBvbGluZSkpLAotICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6Omdl
dENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJv
bV9sb29wX2hpbnQpKSwKLQotICAgICAgICAgICAgTExJTlRfT1Aob3BfY2F0Y2gpCi0gICAgICAg
ICAgICBMTElOVF9PUChsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkKLQotICAgICAgICAgICAg
TExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2dldF9ieV9pZCkKLSAgICAgICAgICAgIExMSU5UX1JF
VFVSTl9MT0NBVElPTihvcF9nZXRfYnlfdmFsKQotICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG9wX3B1dF9ieV9pZCkKLSAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihv
cF9wdXRfYnlfdmFsKQotCi0gICAgICAgICAgICBKU0NfSlNfR0FURV9PUENPREVTKExMSU5UX1JF
VFVSTl9MT0NBVElPTikKLSAgICAgICAgICAgIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhMTElOVF9S
RVRVUk5fTE9DQVRJT04pCi0gICAgICAgIH07Ci0gICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQo
KSkKLSAgICAgICAgICAgIGFkZFBvaW50ZXJzKGppdE9wZXJhdGlvbkxpc3QtPm1fdmFsaWRhdGVk
T3BlcmF0aW9ucywgbnVsbHB0ciwgbnVsbHB0ciwgb3BlcmF0aW9ucywgb3BlcmF0aW9ucyArIFdU
Rl9BUlJBWV9MRU5HVEgob3BlcmF0aW9ucykpOwotI3VuZGVmIExMSU5UX1JFVFVSTl9MT0NBVElP
TgotICAgIH0pOwotI2VuZGlmCi19Ci0KLQogdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0
ZVBvaW50ZXJzSW5FbWJlZGRlcihjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWlu
dHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3Qg
dWludHB0cl90KiBlbmRPcGVyYXRpb25zKQogewogICAgIFVOVVNFRF9QQVJBTShiZWdpbkhvc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRp
b25MaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaAppbmRleCA1ZDdmODU2NWQ1Y2VhMzM0MjM2YTNkYmJkMWQzMzE5ZDU0ZTE4NzRjLi4wOTg0
OTNmNTBiMmFkMzNjZDFkOTc1NzRhMjgzZTlmZjhiOTY4MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaApAQCAtMzcsMTcgKzM3
LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSklUT3BlcmF0aW9uTGlzdCYgaW5zdGFuY2UoKTsK
ICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKLSAgICB2b2lkKiBtYXAodm9pZCogcG9p
bnRlcikgY29uc3QKKyAgICB2b2lkKiBjb250YWlucyh2b2lkKiBwb2ludGVyKSBjb25zdAogICAg
IHsKLSNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQotICAgICAgICByZXR1cm4g
bV92YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsKLSNl
bHNlCisgICAgICAgIGlmIGNvbnN0ZXhwcihBU1NFUlRfRU5BQkxFRCkKKyAgICAgICAgICAgIHJl
dHVybiBtX3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikp
OwogICAgICAgICByZXR1cm4gcG9pbnRlcjsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyB2
b2lkIHBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlKCk7Ci0gICAgc3RhdGljIHZvaWQg
cG9wdWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmVGb3JMTEludCgpOwogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoY29uc3Qg
dWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWlu
dHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucyk7
CiAKQEAgLTU3LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFN
KGZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQotICAgICAg
ICBBU1NFUlQoZnVuY3Rpb24sICFPcHRpb25zOjp1c2VKSVQoKSB8fCBKSVRPcGVyYXRpb25MaXN0
OjppbnN0YW5jZSgpLm1hcChiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSkpOworICAgICAg
ICBBU1NFUlQoZnVuY3Rpb24sICFPcHRpb25zOjp1c2VKSVQoKSB8fCBKSVRPcGVyYXRpb25MaXN0
OjppbnN0YW5jZSgpLmNvbnRhaW5zKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7CiAj
ZW5kaWYKICAgICB9CiAKQEAgLTY1LDcgKzYyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
VU5VU0VEX1BBUkFNKGZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFU
SU9OKQotICAgICAgICBBU1NFUlQoIU9wdGlvbnM6OnVzZUpJVCgpIHx8IEpJVE9wZXJhdGlvbkxp
c3Q6Omluc3RhbmNlKCkubWFwKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7CisgICAg
ICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklUKCkgfHwgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFu
Y2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSkpOwogI2VuZGlmCiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oCmluZGV4IDRjOWE5ZWJhNGI2NGY0MWMxMGU5NDRkZjI0MzhhNmZkZWEx
N2JhNTUuLjQ1YjRiM2I0Njk2ODU1MmQ3ZGFjOTc4OGFmZjZjZjBiNDNkYjI2YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCkBAIC0zMzkyLDEyICszMzkyLDYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5i
cih0YXJnZXQpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdl
dCwgUHRyVGFnKQotICAgIHsKLSAgICAgICAgbW92ZSh0YXJnZXQsIGdldENhY2hlZERhdGFUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyKGRhdGFU
ZW1wUmVnaXN0ZXIpOwotICAgIH0KLQogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3Ms
IFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAwOWMwMjZiMWI5
Mjg3YzNhYzRmYzYwZjU0Y2Y3MmExZWQ3MjIyNWI4Li4zOWVhMTUxMTQ3NjFhMDBlMDAwNTAzMTAw
YmU3NmJkZTQ0YTJmOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0zMiw5ICszMiw2IEBACiAjaW5jbHVk
ZSAiQVJNNjRFQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXJBUk02NC5oIgotI2lmIEVOQUJMRShKSVRfQ0FHRSkKLSNpbmNsdWRlIDxX
ZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgotI2VuZGlmCiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC0xMTMsMjggKzExMCwyMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIEludmFsaWRHUFIgID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4oLTEpOwog
CiAgICAgZW51bSBjbGFzcyBDYWxsU2lnbmF0dXJlVHlwZSB7Ci0gICAgICAgIEpJVENhbGwsCi0g
ICAgICAgIE5hdGl2ZUNhbGwsCi0gICAgfTsKLQotICAgIGVudW0gY2xhc3MgSnVtcFNpZ25hdHVy
ZVR5cGUgewotICAgICAgICBKSVRKdW1wLAotICAgICAgICBOYXRpdmVKdW1wLAorICAgICAgICBD
RnVuY3Rpb25DYWxsLAorICAgICAgICBPdGhlckNhbGwKICAgICB9OwogCiAgICAgdGVtcGxhdGU8
Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFRydXN0
ZWRQdHIoUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsKLSAgICAgICAgVU5V
U0VEX1BBUkFNKHR5cGUpOwogICAgICAgICBBU1NFUlQodGFnR1BSICE9IGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBwb2ludGVyTGFiZWwgPSBtX2Fzc2VtYmxlci5s
YWJlbCgpOwogICAgICAgICBtb3ZlV2l0aEZpeGVkV2lkdGgoVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAg
aW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSNpZiBFTkFCTEUoSklUX0NBR0UpCi0gICAg
ICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKLSAgICAgICAgICAgIEpTQ19KSVRfQ0FH
RURfQ0FMTCh0eXBlLCBkYXRhVGVtcFJlZ2lzdGVyLCB0YWdHUFIpOwotICAgICAgICB9IGVsc2UK
LSNlbmRpZgorICAgICAgICBpZiAodHlwZSA9PSBDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9u
Q2FsbCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFheihkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIoZGF0YVRlbXBSZWdp
c3RlciwgdGFnR1BSKTsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgY2FsbExhYmVsID0gbV9hc3Nl
bWJsZXIubGFiZWwoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVyTGFiZWwsIEFSTTY0
QXNzZW1ibGVyOjpnZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhjYWxsTGFiZWwsIHBvaW50ZXJM
YWJlbCkgPT0gUkVQQVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lOVEVSKTsKQEAgLTE0Myw1MyArMTMy
LDUxIEBAIHB1YmxpYzoKIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFB0clRhZyB0YWcp
CiAgICAgewotICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0g
Tm9QdHJUYWcpOwotICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxl
clR5cGU6OkpJVCk7CisgICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCisgICAgICAgICAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YWcpOworICAgICAgICBpZiAodGFnID09
IENGdW5jdGlvblB0clRhZykKKyAgICAgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxs
U2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbD4oKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1t
NjQodGFnKSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKLSAgICAgICAgaWYgKGNhbGxlZVR5cGUodGFn
KSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCi0gICAgICAgICAgICByZXR1cm4gY2FsbFRydXN0
ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkpJVENhbGw+KEFSTTY0UmVnaXN0ZXJzOjpscik7Ci0g
ICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2Fs
bD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENh
bGxTaWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewot
ICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNh
bGw+KHRhZ0dQUik7CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJl
VHlwZTo6T3RoZXJDYWxsPih0YWdHUFIpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPENhbGxTaWdu
YXR1cmVUeXBlIHR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGxSZWdpc3RlcihSZWdp
c3RlcklEIHRhcmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsK
LSAgICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwogICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRh
cmdldEdQUik7CiAgICAgICAgIGludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7Ci0jaWYgRU5B
QkxFKEpJVF9DQUdFKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7Ci0gICAg
ICAgICAgICBKU0NfSklUX0NBR0VEX0NBTEwodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOwotICAg
ICAgICB9IGVsc2UKLSNlbmRpZgorICAgICAgICBpZiAodHlwZSA9PSBDYWxsU2lnbmF0dXJlVHlw
ZTo6Q0Z1bmN0aW9uQ2FsbCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFheih0YXJnZXRH
UFIpOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYih0YXJnZXRH
UFIsIHRhZ0dQUik7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCksIENh
bGw6Ok5vbmUpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVy
SUQgdGFyZ2V0R1BSLCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBD
RnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKLSAgICAgICAgQVNTRVJUKGNhbGxl
clR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOworICAgICAgICBpZiAodGFnID09
IE5vUHRyVGFnKQorICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwo
dGFyZ2V0R1BSLCB0YWcpOworICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlv
bkNhbGw+KHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIEFSTTY0
UmVnaXN0ZXJzOjpscik7Ci0gICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2Fs
bGVlVHlwZTo6SklUKQotICAgICAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0
dXJlVHlwZTo6SklUQ2FsbD4odGFyZ2V0R1BSLCBBUk02NFJlZ2lzdGVyczo6bHIpOwotICAgICAg
ICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJn
ZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8
Q2FsbFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4odGFyZ2V0R1BSLCBBUk02NFJlZ2lzdGVyczo6
bHIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFy
Z2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsUmVn
aXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgdGFnR1BSKTsK
KyAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxs
Pih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNh
bGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRh
ZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKLSAgICAgICAgQVNTRVJU
KGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOworICAgICAgICBpZiAo
dGFnID09IE5vUHRyVGFnKQorICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmNhbGwoYWRkcmVzcywgdGFnKTsKKwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgcmV0dXJuIGNhbGwo
ZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKICAgICB9CkBAIC0yMTAsMTI5ICsxOTcsOTAgQEAgcHVi
bGljOgogCiAgICAgQUxXQVlTX0lOTElORSBKdW1wIGp1bXAoKSB7IHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpqdW1wKCk7IH0KIAotICAgIHRlbXBsYXRlPEp1bXBTaWduYXR1cmVUeXBlIHR5
cGU+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGZhckp1bXBSZWdpc3RlcihSZWdpc3RlcklEIHRh
cmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQotICAgIHsKLSAgICAgICAg
VU5VU0VEX1BBUkFNKHR5cGUpOwotICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQUik7
Ci0jaWYgRU5BQkxFKEpJVF9DQUdFKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgp
KSB7Ci0gICAgICAgICAgICBKU0NfSklUX0NBR0VEX0ZBUl9KVU1QKHR5cGUsIHRhcmdldEdQUiwg
dGFnR1BSKTsKLSAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJyYWIodGFyZ2V0R1BSLCB0YWdHUFIpOwotICAgIH0KLQotICAgIHZvaWQgZmFySnVtcChSZWdp
c3RlcklEIHRhcmdldEdQUiwgUHRyVGFnIHRhZykKKyAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJ
RCB0YXJnZXQsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBBU1NFUlQodGFnICE9IENGdW5j
dGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOwotICAgICAgICBBU1NFUlQoY2FsbGVyVHlw
ZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CisgICAgICAgIGlmICh0YWcgPT0gTm9Q
dHJUYWcpCisgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcCh0
YXJnZXQsIHRhZyk7CiAKICAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOwog
ICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2
ZXJzaXR5R1BSKTsKLSAgICAgICAgaWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVU
eXBlOjpKSVQpCi0gICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6
OkpJVEp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpOYXRpdmVKdW1wPih0YXJn
ZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGZhckp1bXAodGFyZ2V0LCBkaXZlcnNpdHlH
UFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRy
VGFnIHRhZykKKyAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQg
dGFnKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFn
ICE9IE5vUHRyVGFnKTsKLSAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdD
YWxsZXJUeXBlOjpKSVQpOwotICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBk
aXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKLSAgICAgICAgbW92ZSh0YXJnZXQsIHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykg
PT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQotICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1
bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6
TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBBU1NFUlQodGFn
ICE9IHRhcmdldCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0LCB0YWcpOwogICAg
IH0KIAotICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldEdQUiwgUmVnaXN0ZXJJRCB0
YWdHUFIpCisgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAg
ICB7Ci0gICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKLSAgICAgICAgZmFySnVt
cFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7
Ci0gICAgfQorICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQorICAgICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKIAotICAgIHZvaWQg
ZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BSKQotICAgIHsKKyAgICAg
ICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICBSZWdpc3RlcklEIHRh
cmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAg
ICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAgICAgICBSZWdpc3RlcklEIGRp
dmVyc2l0eUdQUiA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
OwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgZmFySnVtcFJl
Z2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7Cisg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAgIG1f
YXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAgIHZv
aWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCisgICAgdm9p
ZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCiAgICAgewogICAgICAg
ICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAgICAg
ICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJn
ZXRHUFIpOwotICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1
bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRH
UFIsIHRhZyk7CiAgICAgfQogCi0gICAgdm9pZCBmYXJKdW1wKEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHRhZ0dQUikKKyAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJl
c3MsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgQVNTRVJU
KHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAgICAgIGxvYWQ2NChBZGRyZXNzKHRhcmdldEdQUiks
IHRhcmdldEdQUik7Ci0gICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6
SklUSnVtcD4odGFyZ2V0R1BSLCB0YWdHUFIpOwotICAgIH0KKyAgICAgICAgaWYgKHRhZyA9PSBO
b1B0clRhZykKKyAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1w
KGFkZHJlc3MsIHRhZyk7CiAKLSAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJU
YWcgdGFnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYg
dGFnICE9IE5vUHRyVGFnKTsKLSAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpOworICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRh
Zyk7CiAgICAgICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBs
b2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFn
KSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgaWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQpCi0gICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVy
ZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpOYXRpdmVKdW1w
Pih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFy
Z2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5k
ZXggYWRkcmVzcywgUHRyVGFnIHRhZykKKyAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJl
c3MsIFJlZ2lzdGVySUQgdGFnKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rp
b25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKLSAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUo
dGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRhcmdl
dEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAg
ICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwogICAg
ICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
NjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgaWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQ
dHJUYWdDYWxsZWVUeXBlOjpKSVQpCi0gICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNp
Z25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpOYXRp
dmVKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIG1fYXNzZW1ibGVyLmJy
YWIodGFyZ2V0R1BSLCB0YWcpOwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0YWcgIT0g
Q0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7Ci0gICAgICAgIEFTU0VSVChjYWxs
ZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKKyAgICAgICAgaWYgKHRhZyA9
PSBOb1B0clRhZykKKyAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJK
dW1wKGFkZHJlc3MsIHRhZyk7CisKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRD
YWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQgZGl2ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0
R1BSKTsKICAgICAgICAgbG9hZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgaWYg
KGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCi0gICAgICAgICAgICBm
YXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgZGl2
ZXJzaXR5R1BSKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1
bXBTaWduYXR1cmVUeXBlOjpOYXRpdmVKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgIH0K
KworICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0
YWcpCisgICAgeworICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJn
ZXRHUFIpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdl
dEdQUik7CisgICAgICAgIGxvYWQ2NChBZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0YWcpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCByZXQoKQogICAgIHsKLSNpZiBFTkFCTEUoSklUX0NBR0UpCi0gICAg
ICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKLSAgICAgICAgICAgIEpTQ19KSVRfQ0FH
RURfUkVUKCk7Ci0gICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICBtX2Fzc2VtYmxl
ci5yZXRhYigpOworICAgICAgICBtX2Fzc2VtYmxlci5yZXRhYigpOwogICAgIH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKaW5kZXggMmM5YjhmZjgwOTUxNmViMDc3NDRiZGZmODI2NzdhMGM2YzRmZGYxZS4uMGM3
NTk3YmFmNjQyNjY0OTk2MzRhNTk4MDE3YmZiNjRjMzE2YTU2NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTE3
MTksMTIgKzE3MTksNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KHRhcmdldCk7
CiAgICAgfQogCi0gICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcp
Ci0gICAgewotICAgICAgICBtb3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgIH0KLQogICAgIC8vIEFkZHJl
c3MgaXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRv
CiAgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5o
CmluZGV4IGFkYWQ1NGNiMDI2MTdkMTE5NzFiYjI0NWUwYTAzZjRkOGRhZGZiNWUuLmU2M2FiNDc1
NWZmOGExYjA2OTdjY2Q3M2I2MjIwMjJkNmVjMDE5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjAwNCwxMyAr
MjAwNCw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCi0g
ICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAg
ICAgICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5qcihNSVBTUmVnaXN0ZXJzOjp0OSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwotICAg
IH0KLQogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAg
ICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggNzZkZGI1
NzY5NGRhMjRmNGFlODA1YjA0OTNiNDJhOGU2NDJmMzA3ZS4uMjhmYWUyZTcyZjI1NjU3ZTYxMzMw
NWYyMDAzZGZjYmVhNWVlY2E5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjc1MCwxMiArMjc1
MCw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuam1wX3IodGFyZ2V0KTsKICAgICB9
CiAKLSAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKLSAgICB7
Ci0gICAgICAgIG1vdmUodGFyZ2V0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmptcF9yKHNjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICB9Ci0KICAgICAvLyBBZGRyZXNz
IGlzIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bwog
ICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAwNTdiMzA3
OGMyYjdlODY5MzkzMmI5MDVmMTk0ZDNmNzdiNDY0MThiLi4yZmVkMTgyZTQ1N2Y3NDY2MjY1ZjY1
YjE0YzU5NDMxZjIzZTg0YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0MDMsNyArMTQwMyw2IEBAIG9wIDpsbGludF9pbnRlcm5h
bF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmUKIG9wIDpsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9j
b25zdHJ1Y3RfdHJhbXBvbGluZQogb3AgOmNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVk
X2NhbGxfdHJhbXBvbGluZQogb3AgOmNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZQotb3Ag
Om5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lCiBvcCA6ZnV6emVyX3JldHVybl9lYXJseV9mcm9t
X2xvb3BfaGludAogb3AgOmxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJuX3ZhbHVlCiBvcCA6bGxp
bnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbgpAQCAtMTQyMCw0MCArMTQxOSw2IEBAIG9wIDpv
cF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9n
dWUKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCi1vcCA6b3BfY2FsbF9zbG93
X3JldHVybl9sb2NhdGlvbgotb3AgOm9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbgot
b3AgOm9wX2l0ZXJhdG9yX29wZW5fc2xvd19yZXR1cm5fbG9jYXRpb24KLW9wIDpvcF9pdGVyYXRv
cl9uZXh0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uCi1vcCA6b3BfdGFpbF9jYWxsX3JldHVybl9sb2Nh
dGlvbgotb3AgOm9wX3RhaWxfY2FsbF9zbG93X3JldHVybl9sb2NhdGlvbgotb3AgOm9wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93X3JldHVybl9sb2NhdGlvbgotb3AgOm9wX3RhaWxf
Y2FsbF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCi1vcCA6b3BfY2FsbF9ldmFsX3Nsb3df
cmV0dXJuX2xvY2F0aW9uCi0KLW9wIDpqc190cmFtcG9saW5lX29wX2NhbGwKLW9wIDpqc190cmFt
cG9saW5lX29wX3RhaWxfY2FsbAotb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0Ci1vcCA6
anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0Ci1vcCA6anNfdHJhbXBvbGluZV9vcF9pdGVy
YXRvcl9vcGVuCi1vcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsX3Nsb3cKLW9wIDpqc190cmFtcG9s
aW5lX29wX3RhaWxfY2FsbF9zbG93Ci1vcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xv
dwotb3AgOmpzX3RyYW1wb2xpbmVfb3BfY2FsbF92YXJhcmdzX3Nsb3cKLW9wIDpqc190cmFtcG9s
aW5lX29wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3cKLW9wIDpqc190cmFtcG9saW5lX29wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93Ci1vcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1
Y3RfdmFyYXJnc19zbG93Ci1vcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdwotb3Ag
OmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dF9zbG93Ci1vcCA6anNfdHJhbXBvbGluZV9v
cF9pdGVyYXRvcl9vcGVuX3Nsb3cKLW9wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnCi1vcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVja190YWcKLW9wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWcKLW9wIDpqc190cmFtcG9saW5lX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnCi1vcCA6d2FzbV90cmFt
cG9saW5lX3dhc21fY2FsbAotb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzCi1v
cCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdAotb3AgOndhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzCi0KIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxwZXJz
CiAKIGJlZ2luX3NlY3Rpb24gOldhc20sCkBAIC0xNDY4LDExICsxNDMzLDYgQEAgYXV0b2dlbmVy
YXRlX3dhc21fb3Bjb2RlcwogCiBvcCA6dGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQog
Ci1vcCA6Y2FsbF9yZXR1cm5fbG9jYXRpb24KLW9wIDpjYWxsX25vX3Rsc19yZXR1cm5fbG9jYXRp
b24KLW9wIDpjYWxsX2luZGlyZWN0X3JldHVybl9sb2NhdGlvbgotb3AgOmNhbGxfaW5kaXJlY3Rf
bm9fdGxzX3JldHVybl9sb2NhdGlvbgotCiAjIEZJWE1FOiBXYXNtIGFuZCBKUyBMTEludCBzaG91
bGQgc2hhcmUgY29tbW9uIG9wY29kZXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMzY1NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKaW5kZXggYjA2MTUwZmNjZjRjN2RkYTVlNTFjYzVmYWQ2M2NkMzExZDE4MjM3
My4uZDE1MDNiZjAzODQ3YTY0ODUzMzkxMTI3NzY4ZDcwMjUwZTg5YTUzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzIwLDcgKzMyMCw2
IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBsbGludF9oYW5kbGVfdW5jYXVn
aHRfZXhjZXB0aW9uOgogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRf
Y2FsbF90cmFtcG9saW5lOgogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5l
OgotICAgIGNhc2Ugbm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmU6CiAgICAgY2FzZSBmdXp6ZXJf
cmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50OgogICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9y
ZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlv
bjoKQEAgLTMzMiw0MCArMzMxLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChP
cGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNl
IG9wX2dldF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Jl
dHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uOgot
ICAgIGNhc2Ugb3BfY2FsbF9zbG93X3JldHVybl9sb2NhdGlvbjoKLSAgICBjYXNlIG9wX2NvbnN0
cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbjoKLSAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fc2xv
d19yZXR1cm5fbG9jYXRpb246Ci0gICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3Nsb3dfcmV0dXJu
X2xvY2F0aW9uOgotICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3JldHVybl9sb2NhdGlvbjoKLSAgICBj
YXNlIG9wX3RhaWxfY2FsbF9zbG93X3JldHVybl9sb2NhdGlvbjoKLSAgICBjYXNlIG9wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93X3JldHVybl9sb2NhdGlvbjoKLSAgICBjYXNlIG9w
X3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgotICAgIGNhc2Ugb3BfY2Fs
bF9ldmFsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9wcm9s
b2d1ZToKICAgICBjYXNlIHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzOgotICAgIGNhc2Ug
anNfdHJhbXBvbGluZV9vcF9jYWxsOgotICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF90YWlsX2Nh
bGw6Ci0gICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdDoKLSAgICBjYXNlIGpzX3Ry
YW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dDoKLSAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfaXRl
cmF0b3Jfb3BlbjoKLSAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbF9zbG93OgotICAgIGNh
c2UganNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfc2xvdzoKLSAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfb3BfY29uc3RydWN0X3Nsb3c6Ci0gICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfdmFy
YXJnc19zbG93OgotICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfdmFyYXJnc19z
bG93OgotICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHNfc2xvdzoKLSAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xv
dzoKLSAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbF9ldmFsX3Nsb3c6Ci0gICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25leHRfc2xvdzoKLSAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfb3BfaXRlcmF0b3Jfb3Blbl9zbG93OgotICAgIGNhc2UganNfdHJhbXBvbGluZV9sbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZzoKLSAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdGFnOgotICAgIGNhc2UganNf
dHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3VudGFn
OgotICAgIGNhc2UganNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrX3RhZzoKLSAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGw6Ci0gICAg
Y2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3RsczoKLSAgICBjYXNlIHdhc21fdHJh
bXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Q6Ci0gICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX2luZGlyZWN0X25vX3RsczoKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAg
ICAgfQogICAgIHJldHVybiBDYW5ub3RDb21waWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDlkMjFiNWIx
NjRlZmJhNGMyZWIzMTJiYTUwYjNkNmYzYzdjNjU3MDUuLmRkNjY2ZmFhODNlODM1MDllNjViMDc1
NTc2MjJmMDhhOTQ5NDIxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTEzOCwyMSArMTM4LDIxIEBAIHZv
aWQgaGFuZGxlRXhpdENvdW50cyhWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JF
eGl0QmFzZSYgZXhpdCkKICAgICBkb25lQWRqdXN0aW5nLmxpbmsoJmppdCk7CiB9CiAKLXN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgQnl0ZWNvZGVJbmRleCBjYWxsQnl0
ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIHRydWVDYWxsZXJDYWxsS2luZCwgYm9v
bCYgY2FsbGVySXNMTEludCkKK01hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBj
YWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBCeXRl
Y29kZUluZGV4IGNhbGxCeXRlY29kZUluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQgdHJ1ZUNh
bGxlckNhbGxLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50KQogewogICAgIGNhbGxlcklzTExJbnQg
PSBPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgYmFzZWxpbmVDb2RlQmxvY2tGb3JD
YWxsZXItPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rOwogCiAgICAgaWYg
KGNhbGxCeXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkgewogICAgICAgICBpZiAoIWNhbGxlcklz
TExJbnQpCiAgICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+bV9oYXNMaW5r
ZWRPU1JFeGl0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIExMSW50OjpjaGVja3BvaW50T1NSRXhp
dEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJu
IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJv
bV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IGp1bXBUYXJnZXQ7CiAKICAgICBjb25zdCBJbnN0cnVjdGlv
biYgY2FsbEluc3RydWN0aW9uID0gKmJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5pbnN0cnVj
dGlvbnMoKS5hdChjYWxsQnl0ZWNvZGVJbmRleCkucHRyKCk7CiAgICAgaWYgKGNhbGxlcklzTExJ
bnQpIHsKLSNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIExMSW50OjpyZXR1cm5M
b2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5fbG9jYXRpb24sIGNhbGxJbnN0cnVjdGlvbi53aWR0
aCgpKS5jb2RlKCkKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIChjYWxsSW5z
dHJ1Y3Rpb24uaXNXaWRlMTYoKSA/IExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpTRW50cnlQdHJU
YWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pIDogKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUzMigp
ID8gTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9s
b2NhdGlvbikgOiBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJu
X2xvY2F0aW9uKSkpCiAKICAgICAgICAgc3dpdGNoICh0cnVlQ2FsbGVyQ2FsbEtpbmQpIHsKICAg
ICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6IHsKQEAgLTQwNCw5ICs0MDQsOSBAQCB2
b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJ
bnN0cnVjdGlvbiA9ICpjb2RlQmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29k
ZUluZGV4KS5wdHIoKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGRlc3RpbmF0aW9uOwogICAgICAgICBpZiAoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50T1NSRXhpdFRyYW1w
b2xpbmVUaHVuaygpLmNvZGUoKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6Omdl
dENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKTsK
ICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6Om5vcm1hbE9T
UkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCk7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9
IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiAK
ICAgICAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpIHsKICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmY3VycmVudEluc3RydWN0aW9uKSwg
R1BSSW5mbzo6cmVnVDIpOwpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRv
VGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0
KQogICAgICAgICBCeXRlY29kZUluZGV4IGV4aXRJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgoKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGRlc3RpbmF0aW9uOwogICAgICAgICBpZiAoZXhpdEluZGV4LmNoZWNrcG9pbnQoKSkKLSAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGlu
ZVRodW5rKCkuY29kZSgpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29k
ZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChjb2RlQmxvY2tGb3JFeGl0LT5ieXRlY29k
ZUluZGV4Rm9yRXhpdChleGl0SW5kZXgpID09IGV4aXRJbmRleCk7CiAgICAgICAgICAgICBkZXN0
aW5hdGlvbiA9IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGVNYXAoKS5maW5kKGV4aXRJbmRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uaAppbmRleCBkYmEwZmUzMjJiZjg4MWM5NWMyMmRiODUwNjE2MjQyMDRhNmFhYzk0Li4z
OTExNGVhNjc3MDAyYTk4MmYyZWI4MWU3ZDI4Zjg2ZjIyOGY2ZDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM5
LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBoYW5kbGVF
eGl0Q291bnRzKFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQg
cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYp
Owogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBP
U1JFeGl0QmFzZSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxl
clJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2Rl
SW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5k
LCBib29sJiBjYWxsZXJJc0xMSW50KTsKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsZWVTYXZl
U2xvdChJbmxpbmVDYWxsRnJhbWUqLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBHUFJS
ZWcgY2FsbGVlU2F2ZSk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4
IDliZTY0YmJkZjBmMjhmZDU3NGE0MjU4ODRjZDUzNDFkZjFhNjY0YTAuLmZmOWE4YWZkMDU5NDVj
MjliOTc4YzFmZjNjZjk3YTIyMmJiNGI5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtNDgsMTggKzQ4LDYgQEAKICNpbmNs
dWRlIDxtYWNoL21hY2guaD4KICNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgogCi0jaWYgRU5B
QkxFKEpJVF9DQUdFKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25z
Lmg+Ci0jZWxzZSAvLyBFTkFCTEUoSklUX0NBR0UpCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBN
QVBfRVhFQ1VUQUJMRV9GT1JfSklUIE1BUF9KSVQKLSNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9S
X0pJVF9XSVRIX0pJVF9DQUdFIE1BUF9KSVQKLSNlbHNlIC8vIE9TKERBUldJTikKLSNkZWZpbmUg
TUFQX0VYRUNVVEFCTEVfRk9SX0pJVCAwCi0jZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRf
V0lUSF9KSVRfQ0FHRSAwCi0jZW5kaWYgLy8gT1MoREFSV0lOKQotI2VuZGlmIC8vIEVOQUJMRShK
SVRfQ0FHRSkKLQogZXh0ZXJuICJDIiB7CiAgICAgLyogUm91dGluZSBtYWNoX3ZtX3JlbWFwICov
CiAjaWZkZWYgbWlnX2V4dGVybmFsCkBAIC0xNTEsOCArMTM5LDggQEAgdm9pZCBFeGVjdXRhYmxl
QWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogICAgICAgICBjb25zdGV4
cHIgc2l6ZV90IHNpemUgPSAxOwogICAgICAgICBjb25zdGV4cHIgaW50IHByb3RlY3Rpb24gPSBQ
Uk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDOworICAgICAgICBjb25zdGV4cHIgaW50
IGZsYWdzID0gTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiB8IE1BUF9KSVQ7CiAgICAgICAgIGNvbnN0
ZXhwciBpbnQgZmQgPSBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXM7Ci0gICAgICAgIGludCBm
bGFncyA9IE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCAoT3B0aW9uczo6dXNlSklUQ2FnZSgpID8g
TUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIDogTUFQX0VYRUNVVEFCTEVfRk9S
X0pJVCk7CiAgICAgICAgIHZvaWQqIGFsbG9jYXRpb24gPSBtbWFwKG51bGxwdHIsIHNpemUsIHBy
b3RlY3Rpb24sIGZsYWdzLCBmZCwgMCk7CiAgICAgICAgIGNvbnN0IHZvaWQqIGV4ZWN1dGFibGVN
ZW1vcnlBbGxvY2F0aW9uRmFpbHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlv
biAhPSBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUsICJXZSBzaG91bGQgbm90IGhh
dmUgYWxsb2NhdGVkIGV4ZWN1dGFibGUgbWVtb3J5IGJlZm9yZSBkaXNhYmxpbmcgdGhlIEpJVC4i
KTsKQEAgLTMzNiw5ICszMjQsOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKSVRSZXNlcnZhdGlv
biBpbml0aWFsaXplSklUUGFnZVJlc2VydmF0aW9uKCkKICAgICAgICAgLy8gVGhpcyBtYWtlcyB0
aGUgZm9sbG93aW5nIEpJVCBjb2RlIGxvZ2dpbmcgYnJva2VuIGFuZCBzb21lIG9mIEpJVCBjb2Rl
IGlzIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkuCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgcHJv
YmxlbSwgd2UgdXNlIGNvbW1pdHRlZCByZXNlcnZhdGlvbiBpZiB3ZSBuZWVkIHBlcmYgSklURHVt
cCBsb2dnaW5nLgogICAgICAgICBpZiAoT3B0aW9uczo6bG9nSklUQ29kZUZvclBlcmYoKSkKLSAg
ICAgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3Vh
cmRQYWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhF
Q1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4g
UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRp
b25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklU
QUJMRSwgdHJ1ZSk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVz
ZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29k
ZVBhZ2VzLCBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUsIE9wdGlvbnM6OnVzZUpJVENh
Z2UoKSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVXaXRoR3VhcmRQ
YWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VU
QUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlKTsKICAgICB9OwogCiAgICAgcmVzZXJ2YXRpb24ucGFn
ZVJlc2VydmF0aW9uID0gdHJ5Q3JlYXRlUGFnZVJlc2VydmF0aW9uKHJlc2VydmF0aW9uLnNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3N2MxNjk2YTUxNmE4
NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi43NGRhZTIyNmY1NDViN2FhYWYzNDc4NzQ0MzM2NDI3MDAx
NWJkMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDY1LDEwICs0NjUs
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9u
UmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dz
KQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BS
MCA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBYODZS
ZWdpc3RlcnM6OmVheDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRjaEdQ
UjAgPSBYODZSZWdpc3RlcnM6OmVheDsKLSNpZiAhT1MoV0lORE9XUykKLSAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyB3YXNtU2NyYXRjaEdQUjEgPSBYODZSZWdpc3RlcnM6OnIxMDsKLSNlbmRp
ZgogCiAgICAgLy8gRklYTUU6IEkgYmVsaWV2ZSB0aGF0IGFsbCB1c2VzIG9mIHRoaXMgYXJlIGRl
YWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQganVzdCBjYXVzZXMgdGhlIHNjcmF0Y2gKICAgICAvLyBy
ZWdpc3RlciBhbGxvY2F0b3IgdG8gc2VsZWN0IGEgZGlmZmVyZW50IHJlZ2lzdGVyIGFuZCBwb3Rl
bnRpYWxseSBzcGlsbCB0aGluZ3MuIEl0IHdvdWxkIGJlIGJldHRlcgpAQCAtNjM4LDcgKzYzNCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBBUk02NFJl
Z2lzdGVyczo6eDIyOyAvLyBVc2VkIGJ5IEZUTCBvbmx5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgcmVnQ1M0ID0gQVJNNjRSZWdpc3RlcnM6OngyMzsgLy8gVXNlZCBieSBGVEwgb25seQog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7
IC8vIFVzZWQgYnkgRlRMIG9ubHkKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYg
PSBBUk02NFJlZ2lzdGVyczo6eDI1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NT
NiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjU7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzcgPSBBUk02NFJlZ2lzdGVyczo6eDI2OwogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7IC8vIG51bWJl
clRhZwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOSA9IEFSTTY0UmVnaXN0ZXJz
Ojp4Mjg7IC8vIG5vdENlbGxNYXNrCkBAIC02NTgsOCArNjU0LDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IEFSTTY0
UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWRO
b25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjppcDA7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJNNjRSZWdp
c3RlcnM6Ong5OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMSA9
IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBkaXJlY3Qs
IHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBkaXJlY3Rs
eSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmlu
ZGV4IGM0NTM0NmU5MDRhOWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjguLjE4ZTVmZmVlOWNh
MzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2RlKCkKIHZv
aWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAobV9jYWxs
TGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5
KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+Y2Fs
bFJldHVybkxvY2F0aW9uKCksICIsIGJjIyIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCku
Ynl0ZWNvZGVJbmRleCgpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fz
c2VtYmx5KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2lu
KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAzNjI3MjU1
MTRjMTBjOGE5MjJkNWYwMzIwNWZjOTMyM2QwZTU3YmMyLi43MWRkOTgwMjhmNDdlOTk3ZTUyNTMw
MGI3YzBkNmFhYjljYmYyYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxNSArNDQsMTMgQEAgaW5saW5lIHZvaWQgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFnVHlw
ZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAo
IU9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgewotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNO
b25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBwb2ludGVy
R1BSKTsKLSAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihUR0ludmFsaWRQb2ludGVyKTsKLSAg
ICAgICAgaXNOb25aZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5wdXNoVG9TYXZlKHBvaW50
ZXJHUFIpOwotICAgICAgICBqaXQudW50YWdQdHIodGFnLCBwb2ludGVyR1BSKTsKLSAgICAgICAg
aml0LmxvYWQ4KHBvaW50ZXJHUFIsIHBvaW50ZXJHUFIpOwotICAgICAgICBqaXQucG9wVG9SZXN0
b3JlKHBvaW50ZXJHUFIpOwotICAgIH0KKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJv
ID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsK
KyAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRHSW52YWxpZFBvaW50ZXIpOworICAgIGlzTm9uWmVy
by5saW5rKCZqaXQpOworICAgIGppdC5wdXNoVG9TYXZlKHBvaW50ZXJHUFIpOworICAgIGppdC51
bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOworICAgIGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2lu
dGVyR1BSKTsKKyAgICBqaXQucG9wVG9SZXN0b3JlKHBvaW50ZXJHUFIpOwogfQogCiAvLyBXZSB3
aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGwsIGJ1dCB0
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggZDhlOTQ0
MzM2N2Y1MGM4NDljNjgxMDE3MDY5ODA1MTg2MGYxMzY3Mi4uNjJkY2E4ZmYyOWRlNTA4MTAyYTNi
NjAzNDAyNzdiYzdiMGQyNTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKQEAgLTMwLDEzICszMCwxMiBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKLSNpbmNsdWRlICJM
TEludFBDUmFuZ2VzLmgiCi0jaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJPcGNv
ZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNfQVNTRVJU
KGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkKIAorCiBu
YW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTUwLDIyICs0OSwxMiBAQCBl
eHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAogI2VuZGlm
IC8vICFFTkFCTEUoQ19MT09QKQogCi0jaWYgRU5BQkxFKEpJVF9DQUdFKQotZXh0ZXJuICJDIiB2
b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOwotZXh0ZXJuICJDIiB2b2lk
IHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7Ci1leHRlcm4gIkMiIHZvaWQgdGFpbENh
bGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKLWV4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpTRW50
cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7Ci1leHRlcm4gIkMiIHZvaWQgZXhjZXB0aW9uSGFu
ZGxlclRyYW1wb2xpbmUodm9pZCk7Ci1leHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxMSW50VHJh
bXBvbGluZSh2b2lkKTsKLSNlbmRpZgotCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lmIEVOQUJM
RShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVOQUJMRShD
X0xPT1ApCi0KICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwLCAm
Z19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxpbnQub3Bj
b2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTgzLDEzMiArNzIs
NiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNlcHRp
b25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
OwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ld
ID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KLQotICAgIEpJ
VE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQo
KTsKLQotI2lmIEVOQUJMRShKSVRfQ0FHRSkKLSAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgp
KQotICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKLQotI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFnKSBcCi0g
ICAgZG8geyBcCi0gICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCi0gICAgICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAotICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVm
MzI7IFwKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKLSAgICAgICAgICAgIGNv
ZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRy
PENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1lKSk7
IFwKLSAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmsocmV0
YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6
OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAotICAgICAgICAgICAgY29kZVJl
ZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5j
dGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1l
ICJfd2lkZTMyIikpOyBcCi0gICAgICAgIH0gZWxzZSB7IFwKLSAgICAgICAgICAgIGNvZGVSZWY4
LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3Ry
YW1wb2xpbmVfIyNuYW1lKSk7IFwKLSAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoTExJ
bnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9saW5l
XyMjbmFtZSkpOyBcCi0gICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50OjpnZXRX
aWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUp
KTsgXAotICAgICAgICB9IFwKLSAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7IFwKLSAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2Lmdl
dCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCi0gICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9
IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAotICAgIH0gd2hp
bGUgKDApOwotCi0gICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dBVEUpCi0K
LSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0KLSNkZWZpbmUgSU5JVElBTElaRV9XQVNNX0dBVEUo
bmFtZSwgdGFnKSBcCi0gICAgZG8geyBcCi0gICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4
OyBcCi0gICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAotICAgICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+PiBjb2RlUmVmMzI7IFwKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwK
LSAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5rKHJldGFn
Q29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9u
KSksIHRhZywgI25hbWUpKTsgXAotICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChjcmVh
dGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVy
YXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYiKSk7IFwK
LSAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVuayhyZXRh
Z0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6
Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9s
b2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCi0gICAgICAgIH0gZWxzZSB7IFwK
LSAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAotICAgICAgICAgICAg
Y29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAotICAgICAgICAgICAgY29kZVJl
ZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgZ19q
c2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSld
ID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKLSAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFt
ZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
OyBcCi0gICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsgXAotICAgIH0gd2hpbGUgKDApOwotCi0gICAgSlNDX1dBU01fR0FURV9P
UENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQotCi0gICAgewotICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwotICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlSklUKCkpCi0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVh
dGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0
aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQdHJUYWcs
ICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRy
PHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50cnlU
b0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKLSAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0
ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCldID0g
Y29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICB9Ci0gICAgewot
ICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUKCkpCi0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhy
ZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPih2bUVu
dHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5VG9OYXRp
dmUiKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNy
ZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0
clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZSkp
KSk7Ci0gICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKLSAgICB9Ci0gICAgewotICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2Rl
UmVmOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCi0gICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJs
ZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOwotICAgICAgICBnX2pz
Y0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0YWlsQ2Fs
bEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKLSAgICB9Ci0gICAgewotICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwotICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCi0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChj
cmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRk
cmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKLSAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dGFp
bENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29k
ZVJlZjsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQotICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7Ci0gICAgICAgIGdfanNjQ29u
ZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2VwdGlvbkhh
bmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAg
fQotICAgIHsKLSAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKLSAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVCgpKQotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0dXJuRnJv
bUxMSW50R2F0ZVRodW5rKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQq
LCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZyb21MTElu
dFRyYW1wb2xpbmUpKSkpOwotICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYuZ2V0KCku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAgfQotCi0gICAgaWYgKE9wdGlvbnM6OnVz
ZUpJVCgpKSB7Ci0gICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRodW5rKCku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAgICAgIGdfanNjQ29uZmlnLmxsaW50Lmdh
dGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9IGVudHJ5
T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6d2Fz
bU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKLSAgICB9Ci0KLSNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RIVU5L
UyhuYW1lKSBcCi0gICAgZG8geyBcCi0gICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0NvZGVSZWY7
IFwKLSAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCi0gICAgICAgIGlmIChP
cHRpb25zOjp1c2VKSVQoKSkgeyBcCi0gICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0cnVjdCh0
YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlv
blB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCi0gICAgICAgICAgICB1bnRhZ0NvZGVS
ZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9u
UHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBcCi0gICAg
ICAgIH0gZWxzZSB7IFwKLSAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExMSW50Ojpn
ZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUjI190
YWcpKTsgXAotICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6Z2V0Q29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNfdW50YWcp
KTsgXAotICAgICAgICB9IFwKLSAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdldCgpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCi0gICAgICAgIGdfanNjQ29uZmlnLmxsaW50Lmdh
dGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1bnRhZ0Nv
ZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKLSAgICB9IHdoaWxlICgw
KTsKLQotICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spOwotICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVO
S1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Ci0jZW5kaWYgLy8g
RU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCAwNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1
NmIwZGY0ZTMxZmVhMjgxOTA1Li5jYjQ0NWY1ZTkyY2U1MjY0ZTI3MzY1OWNkMDg3MDU0NjNlM2Rj
MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0yMDQsOTMg
KzIwNCw2IEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlvblB0
cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQotCi1pbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCi17Ci0jaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSAgICByZXR1cm4gZ19qc2NDb25maWcubGxpbnQu
b3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKLSNlbHNlCi0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PE9wY29kZT4oaWQpOwotI2VuZGlmCi19Ci0KLWlubGluZSBPcGNvZGUgZ2V0T3Bjb2RlV2lk
ZTE2KFdhc21PcGNvZGVJRCBpZCkKLXsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVT
KQotICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVtT3Bjb2Rl
SURzICsgaWRdOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaWQpOwotICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIE9wY29kZSBnZXRPcGNvZGVX
aWRlMzIoV2FzbU9wY29kZUlEIGlkKQotewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09E
RVMpCi0gICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltudW1PcGNv
ZGVJRHMgKyBpZF07Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpZCk7Ci0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZTxQdHJUYWcgdGFnPgot
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRyKFdhc21P
cGNvZGVJRCBvcGNvZGVJRCkKLXsKLSAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7Ci0gICAgYWRkcmVzcyA9IHJldGFnQ29kZVB0
cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKLSAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNzKTsKLX0K
LQotdGVtcGxhdGU8UHRyVGFnIHRhZz4KLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0gICAg
dm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdpZGUxNihv
cGNvZGVJRCkpOwotICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcsIHRh
Zz4oYWRkcmVzcyk7Ci0gICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+OjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Ci19Ci0KLXRlbXBsYXRlPFB0clRhZyB0
YWc+Ci1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdpZGUzMkNv
ZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQotewotICAgIHZvaWQqIGFkZHJlc3MgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKLSAgICBhZGRy
ZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOwotICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKGFkZHJlc3MpOwotfQotCi10ZW1wbGF0ZTxQdHJUYWcgdGFnPgotQUxXQVlTX0lOTElORSBM
TEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKLXsKLSNp
ZiBDT01QSUxFUihNU1ZDKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29kZT4o
Z2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4ob3Bj
b2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOwotI2VuZGlmCi19Ci0KLXRlbXBs
YXRlPFB0clRhZyB0YWc+Ci1BTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZDb2RlRnVu
Y3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQotewotI2lmIENPTVBJTEVSKE1TVkMpCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2RlUHRyPHRh
Zz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJRCku
dGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGU8UHRy
VGFnIHRhZz4KLUFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlvblB0
cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihvcGNv
ZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0jZWxzZQotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50ZW1wbGF0
ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKLSNlbmRpZgotfQotCi0jZW5kaWYKLQogI2Vsc2UKIEFM
V0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggYzFhMjhmMGE0
OWU1MWM4NTRhZDM2MWJlNWRiMGU4MTgzZTk0NGYzMC4uNmQ2ZDI0OWZhNjM0ZmQ3ZGU1NmI5YzE1
ZTM4NDFhM2YyYjlmMTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDIyICszNSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgewogCi0jaWYgRU5BQkxFKEpJVF9DQUdFKQotZXh0ZXJuICJDIiB2b2lk
IGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKLWV4dGVybiAiQyIgdm9pZCBqc1Ry
YW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7Ci1leHRlcm4gIkMiIHZvaWQganNU
cmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOwotZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGlu
ZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOwotZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBv
bGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7Ci1leHRlcm4gIkMiIHZvaWQg
anNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQpOwotZXh0
ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1By
b2xvZ3VlKHZvaWQpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgotc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGluZShQdHJU
eXBlIGFkZHJlc3MpCi17Ci0gICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2
b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOwotfQotI2Vu
ZGlmCi0KIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVC
bG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxvY2stPnNw
ZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtODgsMjIgKzcyLDE0IEBAIHN0YXRpYyB2b2lkIHNldEZ1
bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3RhdGljIERp
cmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotI2lmIEVOQUJMRShK
SVRfQ0FHRSkKLSAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShlbnRyeXBv
aW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSksIGVudHJ5
cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQcm9s
b2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0
dHJpYnV0ZTo6U2hhcmVkKTsKLSNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVj
dEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKLSNlbmRpZgogICAgICAgICB9KTsKICAgICAgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
Ci0jaWYgRU5BQkxFKEpJVF9DQUdFKQotICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJlY3RK
SVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZv
ckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRl
clRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKLSNlbHNlCiAgICAgICAg
ICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFn
PihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwgSklU
VHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7
Ci0jZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtl
UmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTI3LDExICsxMDMsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0aXZl
SklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotI2lmIEVOQUJMRShKSVRfQ0FHRSkKLSAg
ICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpz
VHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEludHJp
bnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOwotI2Vs
c2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRy
eVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmss
IEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQp
OwotI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmpp
dENvZGUpKTsKIH0KQEAgLTE1NCwxMSArMTI2LDcgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVu
dHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJVENvZGUq
IGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSNpZiBFTkFCTEUoSklUX0NBR0UpCi0gICAgICAgIGpp
dENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xp
bmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6
Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKLSNlbHNlCiAg
ICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJ
bnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsK
LSNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRD
b2RlKSk7CiB9CkBAIC0xODEsMTEgKzE0OSw3IEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dy
YW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVKSVRD
b2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0jaWYgRU5BQkxFKEpJVF9DQUdFKQotICAgICAg
ICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFt
cG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywg
SW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7
Ci0jZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJlZjxK
U0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5cGU6Oklu
dGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0
cmlidXRlOjpTaGFyZWQpOwotI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE5NiwzNCArMTYwLDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBv
aW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBnZXRIb3N0
Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAgIHJldHVy
biBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9nZXRfaG9zdF9jYWxsX3Jl
dHVybl92YWx1ZSk7Ci19Ci0KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBm
dXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5cG9pbnQoKQotewotI2lmIEVOQUJMRShK
SVQpCi0gICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQotICAgICAgICByZXR1cm4gZnV6emVyUmV0
dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpOwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0gICAg
cmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGZ1enplcl9yZXR1cm5fZWFy
bHlfZnJvbV9sb29wX2hpbnQpOwotfQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0
clRhZz4gZ2VuZXJpY1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplIHNpemUpCi17Ci0j
aWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCi0gICAgICAgIHJldHVy
biBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhzaXplKTsKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQot
ICAgIHN3aXRjaCAoc2l6ZSkgewotICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93OgotICAgICAg
ICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpOwotICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lkZTE2OgotICAgICAgICByZXR1
cm4gTExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpOwotICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lkZTMyOgotICAgICAgICByZXR1
cm4gTExJbnQ6OmdldFdpZGUzMkNvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOwogfQogCiB2b2lkIHNldEVudHJ5cG9pbnQo
Q29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmgKaW5kZXggMjVlZTgyM2FlOWNiY2VhZWE1Y2RkOTU4YmM4MmI0ZTk4Yjg0
N2I4OS4uNDNlYjI4NjQwODY1Nzg1NmQwYjliMWQyZGE3NjFjODQ4NDFkYmZkOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaApAQCAtMjYsNyArMjYs
NiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKLSNpbmNsdWRlICJP
cGNvZGVTaXplLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw3ICs0MSw1IEBAIHZvaWQg
c2V0RW50cnlwb2ludChDb2RlQmxvY2sqKTsKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZv
cihDb2RlQmxvY2sqKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KCk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50KCk7
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBvaW50
RW50cnlwb2ludChPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3
NzI4OTc1NzVkY2UyN2IxYWE2YjM1NGUzMTNkMmZhZWFjYjc5YTU5Li5iYmExMjBhN2M1NTg1OGYz
NzdlNzliYjQyOWY1OWQ3OThlMTYzNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBpbmxpbmUgSlNWYWx1
ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkgeyByZXR1cgogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExfRU5E
X0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCi0gICAgTExJTlRf
UkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIEpTRW50cnlTbG93UGF0aFB0
clRhZz4oY2FsbFRhcmdldCkpLCAoY2FsbEZyYW1lKSkKKyAgICBMTElOVF9SRVRVUk5fVFdPKChy
ZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgU2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwg
KGNhbGxGcmFtZSkpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhnbG9iYWxPYmplY3QsIGV4
Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogX19jdF9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDY3LDcgKzQ2Nyw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9vcEhpbnRF
eGVjdXRpb25Db3VudGVyKHBjKTsKICAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50RXhl
Y3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKICAgICAgICAgaWYgKCpwdHIgPj0gT3B0
aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCi0gICAgICAgICAgICBM
TElOVF9SRVRVUk5fVFdPKExMSW50OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5
cG9pbnQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbEZyYW1lLT50b3BPZkZyYW1l
KCkpOworICAgICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhMTEludDo6Z2V0Q29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KS5leGVjdXRhYmxl
QWRkcmVzcygpLCBjYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CiAgICAgfQogICAgIAogICAgIApA
QCAtMTk0NSw3ICsxOTQ1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0
cnVjdF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RWYXJhcmdz
PihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29uc3RydWN0LCBTZXRBcmd1bWVudHNXaXRoOjpPYmpl
Y3QpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5
cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50KQog
ewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIGlubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uCiAgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGJ5
dGVjb2RlLm1fYXJnYyk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxGcmFt
ZSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKLSAgICBjYWxsZWVGcmFtZS0+c2V0UmV0
dXJuUEMocmV0dXJuUG9pbnQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIGNhbGxl
ZUZyYW1lLT5zZXRSZXR1cm5QQyhyZXR1cm5Qb2ludC5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAg
ICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwogICAgIGNhbGxGcmFtZS0+c2V0
Q3VycmVudFZQQyhwYyk7CiAgICAgCkBAIC0xOTcwLDE3ICsxOTcwLDE3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0
IEluc3RydWN0aW9uCiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9l
dmFsKQogewotICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6
Z2VuZXJpY1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplOjpOYXJyb3cpKTsKKyAgICBy
ZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldENvZGVQdHI8SlNF
bnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKIH0KIAogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMTYpCiB7Ci0gICAgcmV0dXJuIGNv
bW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRy
eXBvaW50KE9wY29kZVNpemU6OldpZGUxNikpOworICAgIHJldHVybiBjb21tb25DYWxsRXZhbChj
YWxsRnJhbWUsIHBjLCBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfY2FsbF9ldmFsX3dpZGUzMikKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2Fs
bEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6
ZTo6V2lkZTMyKSk7CisgICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExM
SW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpCkBA
IC0yMjY1LDExICsyMjY1LDggQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRjaFRv
TmV4dEluc3RydWN0aW9uKFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sKIAogICAgIGlmIChP
cHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0g
SklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiog
bmV4dFBDID0gcGMubmV4dCgpLnB0cigpOwotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQobmV4dFBDLCBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVu
aygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQobmV4dFBDLCBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihub3Jt
YWxfb3NyX2V4aXRfdHJhbXBvbGluZSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotI2Vu
ZGlmCisgICAgICAgIGF1dG8gbmV4dEJ5dGVjb2RlID0gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRy
eVB0clRhZz4oKnBjLm5leHQoKS5wdHIoKSk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
bmV4dFBDLCBuZXh0Qnl0ZWNvZGUuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
CmluZGV4IGRjZTk5ZTczYjM0OGFlZjUxMzhlZDQ3ZjA2MDE1NmQxMTgzM2NlYmUuLjc4NTM2MGY0
ODc2MDcxYWZkNjRhZDFjZmUxYmE4YmVhODM4YWIzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcApAQCAtNDAsMjcgKzQwLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICNpZiBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKEpJVF9DQUdFKQotCi0jZGVmaW5l
IEpTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKG5hbWUpIFwKLSAgICBKU0NfQU5OT1RB
VEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0XyMjbmFtZSwgbmFtZSkKLQotI2RlZmluZSBKU0Nf
QU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTl9XSVRIX0RFQ0xBUkUobmFtZSkgXAotICAgIGV4
dGVybiAiQyIgdm9pZCBuYW1lKHZvaWQpOyBcCi0gICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJ
T04oX0pJVFRhcmdldF8jI25hbWUsIG5hbWUpCi0KLUpTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BF
UkFUSU9OKGppdENhZ2VQdHJHYXRlQWZ0ZXIpOwotSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVS
QVRJT04odm1FbnRyeVRvSmF2YVNjcmlwdCk7Ci1KU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJB
VElPTih2bUVudHJ5VG9OYXRpdmUpOwotSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04o
dm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcik7Ci1KU0NfQU5OT1RBVEVfTExJTlRfSklUX09Q
RVJBVElPTih2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpOwotSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVB
ZnRlcik7Ci1KU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcik7Ci1KU0NfQU5OT1RBVEVfTExJTlRfSklU
X09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdH
YXRlQWZ0ZXIpOwotSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcik7Ci0KLSNlbmRpZgotCiBu
YW1lc3BhY2UgTExJbnQgewogCiAvLyBUaGVzZSB0aHVua3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNl
IG9mIG5lYXJDYWxsIHVzZWQgb24gSklUZWQgY29kZS4KQEAgLTczLDcgKzUyLDcgQEAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKExMSW50
Q29kZSB0YXJnZXQsIGNvbnMKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAKLSAgICBhc3Nl
cnRJc1RhZ2dlZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOworICAgIGFzc2VydElzVGFn
Z2VkV2l0aDxKU0VudHJ5UHRyVGFnPih0YXJnZXQpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxp
bmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKQEAgLTgxLDUzICs2MCwxNiBA
QCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oTExJbnRDb2RlIHRhcmdldCwgY29ucwogICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBz
Y3JhdGNoID0gSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwOwogI2VuZGlmCiAgICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwgc2NyYXRjaCk7Ci0gICAgaml0LmZh
ckp1bXAoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuZmFySnVtcChzY3JhdGNo
LCBKU0VudHJ5UHRyVGFnKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcs
ICJMTEludCAlcyB0aHVuayIsIHRodW5rS2luZCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsK
IH0KIAogdGVtcGxhdGU8UHRyVGFnIHRhZz4KIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hh
ciAqdGh1bmtLaW5kKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzx0YWc+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGNvZGVJRCksIHRo
dW5rS2luZCk7Ci19Ci0KLXRlbXBsYXRlPFB0clRhZyB0YWc+Ci1zdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZShPcGNvZGVJRCBv
cGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQotewotICAgIEpTSW50ZXJmYWNlSklUIGpp
dDsKLQotICAgIExMSW50Q29kZSB0YXJnZXQgPSBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQpOwotICAgIGFzc2VydElzVGFnZ2VkV2l0aDxPcGVyYXRp
b25QdHJUYWc+KHRhcmdldCk7Ci0KLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgQ0NhbGxI
ZWxwZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2ggPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZlbnRpb24o
KS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOwotI2Vsc2UKLSAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lz
dGVySUQgc2NyYXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdUMDsKLSNlbmRpZgotICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJ
bW1QdHIodGFyZ2V0KSwgc2NyYXRjaCk7Ci0gICAgaml0LmZhckp1bXAoc2NyYXRjaCwgT3BlcmF0
aW9uUHRyVGFnKTsKLQotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTElu
dCAlcyBqdW1wIHRvIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsKLX0KLQotdGVtcGxhdGU8
UHRyVGFnIHRhZz4KLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQoTExJbnRDb2RlIHRhcmdldCwgY29uc3QgY2hh
ciAqdGh1bmtLaW5kKQotewotICAgIEpTSW50ZXJmYWNlSklUIGppdDsKLSAgICBhc3NlcnRJc1Rh
Z2dlZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOwotICAgIGppdC5mYXJKdW1wKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyByZXR1cm4gcG9pbnQgdGh1
bmsiLCB0aHVua0tpbmQpOwotfQotCi10ZW1wbGF0ZTxQdHJUYWcgdGFnPgotc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvTExJbnRSZXR1cm5Q
b2ludChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQotewotICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQ8dGFnPihMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQpLCB0aHVua0tpbmQp
OworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzx0YWc+KExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3Bjb2RlSUQpLCB0aHVua0tpbmQpOwogfQogCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDYWxsRW50cnlU
aHVuaygpCkBAIC0xMzUsNyArNzcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0
clRhZz4gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9s
b2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAgIH0pOwogICAgIHJldHVy
biBjb2RlUmVmOwogfQpAQCAtMTQ1LDcgKzg3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpT
RW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVuaygpCiAgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+
IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpKTsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRh
Zz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBj
b25zdHJ1Y3QiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xNTUsNyAr
OTcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JD
YWxsQXJpdHlDaGVja1RodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewot
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3Vl
PEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAiZnVu
Y3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpKTsKKyAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNo
ZWNrIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTY1LDcgKzEwNyw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0
cnVjdEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
LSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1
ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
LCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIikpOworICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNv
bnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVm
OwogfQpAQCAtMTc1LDcgKzExNyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBldmFsRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
LSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1
ZTxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZhbCIpKTsKKyAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4o
bGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVS
ZWY7CiB9CkBAIC0xODUsNyArMTI3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1By
b2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9ncmFtIikp
OworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0Vu
dHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAicHJvZ3JhbSIpKTsKICAgICB9KTsK
ICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTE5NSw3ICsxMzcsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKQogICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxpbnRfbW9kdWxl
X3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJvZ3JhbSIpKTsKKyAgICAgICAgY29kZVJlZi5j
b25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfbW9k
dWxlX3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJvZ3JhbSIpKTsKICAgICB9KTsKICAgICBy
ZXR1cm4gY29kZVJlZjsKIH0KQEAgLTIwNyw5ICsxNDksOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
CiAgICAgICAgIGlmIChXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpJVFRodW5r
UHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7Cisg
ICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKSVRU
aHVua1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xv
Z3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICAgICAgY29kZVJlZi5j
b25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdhc21fZnVu
Y3Rpb25fcHJvbG9ndWVfbm9fdGxzLCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0yNzUsNyArMjE3LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6
ZSBzaXplKQogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKICAgICAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2giKSk7CisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9wX2NhdGNoKSwg
Im9wX2NhdGNoIikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVSZWY7CiAgICAg
fQpAQCAtMjgzLDcgKzIyNSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICAgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wX2NhdGNoKSwgIm9wX2NhdGNoMTYiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6
Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2Nh
dGNoMTYiKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBA
IC0yOTEsNyArMjMzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQogICAgICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPj4gY29kZVJlZjsKICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bf
Y2F0Y2gpLCAib3BfY2F0Y2gzMiIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRX
aWRlMzJDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2gz
MiIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2RlUmVmOwogICAgIH0KQEAgLTMw
MCwyODkgKzI0Miw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICByZXR1cm4geyB9Owog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBv
aW50VGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQotewotICAgIHN3aXRjaCAoc2l6ZSkgewotICAgIGNh
c2UgT3Bjb2RlU2l6ZTo6TmFycm93OiB7Ci0gICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwotICAgICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKLSAgICAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvTExJbnRSZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTEludDo6Z2V0Q29k
ZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQp
LCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQiKSk7Ci0gICAgICAgIH0pOwotICAgICAgICBy
ZXR1cm4gY29kZVJlZjsKLSAgICB9Ci0gICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6IHsKLSAg
ICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4+IGNvZGVSZWY7Ci0gICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OwotICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJldHVyblBvaW50
PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVy
bl9wb2ludDE2IikpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGNvZGVSZWY7Ci0gICAg
fQotICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lkZTMyOiB7Ci0gICAgICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVm
OwotICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKLSAgICAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvTExJbnRSZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTElu
dDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJp
Y19yZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQzMiIpKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybiBjb2RlUmVmOwotICAgIH0KLSAgICB9Ci0gICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRU
aHVuaygpCi17Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4oZnV6
emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCwgImZ1enplcl9yZXR1cm5fZWFybHlfZnJv
bV9sb29wX2hpbnQiKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNvZGVSZWY7Ci19Ci0KLSNpZiBF
TkFCTEUoSklUX0NBR0UpCi0KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IGNyZWF0ZUpTR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0
IGNoYXIqIG5hbWUpCi17Ci0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLQotICAgIGppdC5jYWxsKEdQ
UkluZm86OnJlZ1QzLCB0YWcpOwotICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihwb2ludGVyKSwgR1BSSW5mbzo6cmVnVDMpOwotICAgIGppdC5mYXJKdW1wKEdQUkluZm86
OnJlZ1QzLCBPcGVyYXRpb25QdHJUYWcpOwotCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5h
bWUpOwotfQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBj
cmVhdGVXYXNtR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIq
IG5hbWUpCi17Ci0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLQotICAgIGppdC5jYWxsKEdQUkluZm86
Ondhc21TY3JhdGNoR1BSMCwgdGFnKTsKLSAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSk7Ci0gICAgaml0LmZh
ckp1bXAoR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIxLCBPcGVyYXRpb25QdHJUYWcpOwotCi0gICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50
ICVzIHdhc20gY2FsbCBnYXRlIHRodW5rIiwgbmFtZSk7Ci19Ci0KLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcgdGFn
KQotewotICAgIENDYWxsSGVscGVycyBqaXQ7Ci0KLSAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6
YXJndW1lbnRHUFIyLCBBUk02NFJlZ2lzdGVyczo6bHIpOwotICAgIGppdC5mYXJKdW1wKEdQUklu
Zm86OnJlZ1QwLCB0YWcpOwotCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7Ci19Ci0KLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGxvb3BPU1JFbnRyeUdh
dGVUaHVuaygpCi17Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewot
ICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OwotCi0gICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgSlNFbnRyeVB0clRhZyk7Ci0KLSAgICAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImxvb3Ag
T1NSIGVudHJ5IHRodW5rIikpOwotICAgIH0pOwotICAgIHJldHVybiBjb2RlUmVmOwotfQotCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5
R2F0ZVRodW5rKCkKLXsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwotICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
Ci0gICAgICAgIENDYWxsSGVscGVycyBqaXQ7Ci0KLSAgICAgICAgaml0LnVudGFnUmV0dXJuQWRk
cmVzcygpOwotICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50
cnlQdHJUYWcpOwotCi0gICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQpOwotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJlbnRyeSBPU1IgZW50cnkgdGh1bmsiKSk7
Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNvZGVSZWY7Ci19Ci0KLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHdhc21PU1JFbnRyeUdhdGVUaHVuaygpCi17Ci0gICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBDQ2FsbEhlbHBl
cnMgaml0OwotCi0gICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICAgICAgaml0
LmZhckp1bXAoR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCBXYXNtRW50cnlQdHJUYWcpOwotCi0g
ICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAg
ICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcsICJ3YXNtIE9TUiBlbnRyeSB0aHVuayIpKTsKLSAgICB9KTsKLSAgICBy
ZXR1cm4gY29kZVJlZjsKLX0KLQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpCi17Ci0gICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKLSAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OwotCi0g
ICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFn
KTsKLQotICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiZXhjZXB0aW9uIGhhbmRsZXIgdGh1bmsiKSk7Ci0gICAg
fSk7Ci0gICAgcmV0dXJuIGNvZGVSZWY7Ci19Ci0KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpCi17Ci0gICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPj4gY29kZVJlZjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
LSAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBDQ2FsbEhlbHBlcnMg
aml0OwotCi0gICAgICAgIGppdC5yZXQoKTsKLQotICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAicmV0dXJuRnJv
bUxMSW50IHRodW5rIikpOwotICAgIH0pOwotICAgIHJldHVybiBjb2RlUmVmOwotfQotCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0YWdHYXRlVGh1bmsodm9p
ZCogcG9pbnRlcikKLXsKLSAgICBDQ2FsbEhlbHBlcnMgaml0OwotCi0gICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMywgQVJNNjRS
ZWdpc3RlcnM6OmxyKTsKLSAgICBqaXQuc3RvcmVQdHIoQVJNNjRSZWdpc3RlcnM6OmxyLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpKTsKLSAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJl
Z1QzKTsKLSAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsK
LQotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJ0YWcgdGh1bmsiKTsKLX0KLQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gdW50YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikKLXsKLSAgICBDQ2FsbEhlbHBl
cnMgaml0OwotCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCA4KSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKLSAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OnJlZ1QzKTsKLSAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDMs
IEFSTTY0UmVnaXN0ZXJzOjpscik7Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgaml0LmZhckp1bXAoR1BSSW5m
bzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7Ci0KLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKLX0KLQotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCkK
LXsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIEND
YWxsSGVscGVycyBqaXQ7Ci0gICAgICAgIEpTQ19KSVRfQ0FHRV9DT01QSUxFX0lNUEwoaml0KTsK
LSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgImppdENhZ2VQdHIgdGh1bmsiKSk7Ci0gICAgfSk7Ci0gICAgcmV0
dXJuIGNvZGVSZWY7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCi0KLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5r
KCkKLXsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQ8SlNFbnRy
eVB0clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUsICJub3JtYWxfb3NyX2V4aXRfdHJh
bXBvbGluZSB0aHVuayIpKTsKLSAgICB9KTsKLSAgICByZXR1cm4gY29kZVJlZjsKLX0KLQotI2lm
IEVOQUJMRShERkdfSklUKQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKQotewotICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVm
OwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwotICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvTExJbnRSZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9l
eGl0X3RyYW1wb2xpbmUsICJjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUgdGh1bmsiKSk7
Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNvZGVSZWY7Ci19Ci0KLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xp
bmVUaHVuaygpCi17Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJldHVyblBvaW50
PEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJh
bXBvbGluZSwgImNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGlu
ZSB0aHVuayIpKTsKLSAgICB9KTsKLSAgICByZXR1cm4gY29kZVJlZjsKLX0KLQotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQg
b3Bjb2RlSUQsIE9wY29kZVNpemUgc2l6ZSkKLXsKLSNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FU
SU9OKG5hbWUpIFwKLSAgICBjYXNlIG5hbWUjI19yZXR1cm5fbG9jYXRpb246IHsgXAotICAgICAg
ICBzd2l0Y2ggKHNpemUpIHsgXAotICAgICAgICBjYXNlIE9wY29kZVNpemU6Ok5hcnJvdzogeyBc
Ci0gICAgICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsgXAotICAgICAgICAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7IFwKLSAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7IFwKLSAgICAgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6OmdldENvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pLCAgI25h
bWUgIl9yZXR1cm5fbG9jYXRpb24gdGh1bmsiKSk7IFwKLSAgICAgICAgICAgIH0pOyBcCi0gICAg
ICAgICAgICByZXR1cm4gY29kZVJlZjsgXAotICAgICAgICB9IFwKLSAgICAgICAgY2FzZSBPcGNv
ZGVTaXplOjpXaWRlMTY6IHsgXAotICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7IFwKLSAgICAg
ICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCi0gICAgICAgICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCi0gICAgICAgICAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJldHVyblBvaW50PEpTRW50cnlQdHJU
YWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihuYW1l
IyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJfcmV0dXJuX2xvY2F0aW9uMTYgdGh1bmsiKSk7
IFwKLSAgICAgICAgICAgIH0pOyBcCi0gICAgICAgICAgICByZXR1cm4gY29kZVJlZjsgXAotICAg
ICAgICB9IFwKLSAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMzI6IHsgXAotICAgICAgICAg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4+IGNvZGVSZWY7IFwKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OyBcCi0gICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCi0g
ICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9M
TEludFJldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgI25hbWUgIl9y
ZXR1cm5fbG9jYXRpb24zMiB0aHVuayIpKTsgXAotICAgICAgICAgICAgfSk7IFwKLSAgICAgICAg
ICAgIHJldHVybiBjb2RlUmVmOyBcCi0gICAgICAgIH0gXAotICAgICAgICB9IFwKLSAgICAgICAg
cmV0dXJuIHsgfTsgXAotICAgIH0KLQotICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICBMTElO
VF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCkKLSAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
aXRlcmF0b3Jfb3BlbikKLSAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3JfbmV4
dCkKLSAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0KQotICAgIExMSU5UX1JF
VFVSTl9MT0NBVElPTihvcF9jYWxsX3ZhcmFyZ3Nfc2xvdykKLSAgICBMTElOVF9SRVRVUk5fTE9D
QVRJT04ob3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdykKLSAgICBMTElOVF9SRVRVUk5fTE9DQVRJ
T04ob3BfZ2V0X2J5X2lkKQotICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRfYnlfdmFs
KQotICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfaWQpCi0gICAgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX3B1dF9ieV92YWwpCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci19Ci0K
LSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBMTEludAogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKaW5kZXggMDcxNTczZjc3
ZGFkZjY5MDcxMDgxNWVkODFhN2I5ZDNiMGU0OGNmZi4uMDM2OGNlOWEyZGEwNjA0ZjQzNzI0NTJl
ZTEyZjg3YzRlNjM4ZGIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgKQEAgLTQwLDE5ICs0MCw2IEBAIGV4dGVybiAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVl
IHZtRW50cnlUb05hdGl2ZSh2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOwogfQogCi0jaWYg
RU5BQkxFKEpJVF9DQUdFKQotZXh0ZXJuICJDIiB7Ci0gICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFm
dGVyKHZvaWQpOwotICAgIHZvaWQgdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcih2b2lkKTsK
LSAgICB2b2lkIHZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcih2b2lkKTsKLQotICAgIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcih2b2lkKTsKLSAg
ICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKHZv
aWQpOwotICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1Vu
dGFnR2F0ZUFmdGVyKHZvaWQpOwotICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcih2b2lkKTsKLX0KLSNlbmRpZgotCiBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgdm1FbnRyeVRvV2FzbSh2b2lkKiBjb2RlLCBWTSogdm0sIFByb3RvQ2FsbEZy
YW1lKiBmcmFtZSkKIHsKICAgICBhdXRvIGNsb2JiZXJpemVWYWxpZGF0b3IgPSBtYWtlU2NvcGVF
eGl0KFsmXSB7CkBAIC03MiwzMiArNTksMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVUaHVuaygpOwotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludFRodW5rKE9w
Y29kZVNpemUpOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJl
dHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGNhbGxUb1Rocm93VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvblRo
dW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFu
ZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVKU0dhdGVUaHVuayh2b2lkKiwgUHRyVGFn
LCBjb25zdCBjaGFyKik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPiBjcmVhdGVXYXNtR2F0ZVRodW5rKHZvaWQqLCBQdHJUYWcsIGNvbnN0IGNoYXIqKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxs
R2F0ZShQdHJUYWcpOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz4gbG9vcE9TUkVudHJ5R2F0ZVRodW5rKCk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZl
VG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCk7Ci1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKTsK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGV4Y2VwdGlvbkhh
bmRsZXJHYXRlVGh1bmsoKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdW50YWdHYXRlVGh1bmsodm9pZCopOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdGFnR2F0ZVRodW5rKHZvaWQqKTsK
LQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG5vcm1hbE9TUkV4aXRUcmFt
cG9saW5lVGh1bmsoKTsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0RnJvbUlu
bGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4gcmV0dXJuTG9jYXRpb25UaHVuayhPcGNvZGVJRCwgT3Bjb2RlU2l6ZSk7Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gd2FzbUZ1bmN0aW9uRW50cnlUaHVuaygpOwogI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCAxNTVkNWU2NDU5NzZkYmRkYWI1Y2JiMDM2MzY4NTliZTM2
NWVjYWJhLi45ZTNjZGU5OTA0YzEwMmJlZWVmNDdiMTRmMzVmZjY5NTE2OWZhOTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0yNTYsMTIgKzI1Niw5IEBAIGNvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNv
bnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51CiBjb25zdCBCeXRl
Y29kZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRhZwogY29uc3QgSlNFbnRyeVB0clRh
ZyA9IGNvbnN0ZXhwciBKU0VudHJ5UHRyVGFnCiBjb25zdCBIb3N0RnVuY3Rpb25QdHJUYWcgPSBj
b25zdGV4cHIgSG9zdEZ1bmN0aW9uUHRyVGFnCi1jb25zdCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcg
PSBjb25zdGV4cHIgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCi1jb25zdCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgPSBjb25zdGV4cHIgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCiBjb25zdCBFeGNlcHRpb25I
YW5kbGVyUHRyVGFnID0gY29uc3RleHByIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKLWNvbnN0IFlh
cnJFbnRyeVB0clRhZyA9IGNvbnN0ZXhwciBZYXJyRW50cnlQdHJUYWcKIGNvbnN0IE5vUHRyVGFn
ID0gY29uc3RleHByIE5vUHRyVGFnCi0gCitjb25zdCBTbG93UGF0aFB0clRhZyA9IGNvbnN0ZXhw
ciBTbG93UGF0aFB0clRhZwogCiAjIFNvbWUgcmVnaXN0ZXIgY29udmVudGlvbnMuCiAjIC0gV2Ug
dXNlIGEgcGFpciBvZiByZWdpc3RlcnMgdG8gcmVwcmVzZW50IHRoZSBQQzogb25lIHJlZ2lzdGVy
IGZvciB0aGUKQEAgLTEwMjksNyArMTAyNiw3IEBAIG1hY3JvIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBlbmQKIGVuZAogCi1tYWNybyBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQor
bWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgbWFj
cm8gZGVmaW5lTmFycm93KCkKICAgICAgICAgaWYgbm90IENfTE9PUF9XSU4KICAgICAgICAgICAg
IF8lb3Bjb2RlTmFtZSVfcmV0dXJuX2xvY2F0aW9uOgpAQCAtMTA1MSw4MiArMTA0OCwzMiBAQCBt
YWNybyBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5l
TmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmluZVdpZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBl
bmQKIAotaWYgQVJNNjRFCi0gICAgZ2xvYmFsIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVja1VudGFnR2F0ZUFmdGVyCi0gICAgZ2xvYmFsIF9sbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcgotICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyCi0gICAgZ2xvYmFsIF9sbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyCi1lbmQKLQogbWFj
cm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxs
UHRyVGFnKQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNsb29wQ2FsbEpT
RnVuY3Rpb24gY2FsbGVlCi0gICAgZWxzaWYgQVJNNjRFCi0gICAgICAgIG1hY3JvIGNhbGxOYXJy
b3coKQotICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJSkgKiBQdHJT
aXplLCBhMgotICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIGNh
bGxQdHJUYWcKLSAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKLSAgICAg
ICAgICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcKLSAgICAgICAgZW5kCi0KLSAgICAgICAgbWFjcm8g
Y2FsbFdpZGUxNigpCi0gICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUl
X3dpZGUxNikgKiBQdHJTaXplLCBhMgotICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZyAjIGNhbGxQdHJUYWcKLSAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNv
ZGVOYW1lJV93aWRlMTY6Ci0gICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRyVGFnCi0gICAgICAg
IGVuZAotCi0gICAgICAgIG1hY3JvIGNhbGxXaWRlMzIoKQotICAgICAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMzIpICogUHRyU2l6ZSwgYTIKLSAgICAgICAgICAg
IGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBjYWxsUHRyVGFnCi0gICAgICAgICAg
ICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgotICAgICAgICAgICAgY2FsbCB0
MywgY2FsbFB0clRhZwotICAgICAgICBlbmQKLQotICAgICAgICBtb3ZlIGNhbGxlZSwgdDMKLSAg
ICAgICAgc2l6ZShjYWxsTmFycm93LCBjYWxsV2lkZTE2LCBjYWxsV2lkZTMyLCBtYWNybyAoZ2Vu
KSBnZW4oKSBlbmQpCiAgICAgZWxzZQogICAgICAgICBjYWxsIGNhbGxlZSwgY2FsbFB0clRhZwot
ICAgICAgICBpZiBBUk12NyBvciBNSVBTCi0gICAgICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGlu
IEFSTXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCi0gICAgICAg
ICAgICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdlbmVyYXRlcyBhIHNldCBvZiBpbnN0cnVj
dGlvbnMKLSAgICAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJl
c3VsdGluZyBpbiB1bmV4cGVjdGVkCi0gICAgICAgICAgICAjIGNyYXNoZXMuCi0gICAgICAgICAg
ICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICAgICAgICAgIGRpc3BhdGNoQWZ0
ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCkKLSAgICAgICAgZW5kCiAgICAgZW5kCi0gICAgZGVmaW5lUmV0dXJu
TGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKLSAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxs
KCkKLSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiAKLSAgICBpZiBub3QgQVJNNjRF
CisgICAgaWYgQVJNdjcgb3IgTUlQUwogICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFSTXY3
IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCiAgICAgICAgICMgZm9y
IHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0IG9mIGluc3RydWN0aW9ucwogICAg
ICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5l
eHBlY3RlZAogICAgICAgICAjIGNyYXNoZXMuCi0gICAgICAgIG1hY3JvIGxhYmVsTmFycm93KCkK
LSAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKLSAgICAgICAgZW5kCi0K
LSAgICAgICAgbWFjcm8gbGFiZWxXaWRlMTYoKQotICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVf
JW9wY29kZU5hbWUlX3dpZGUxNjoKLSAgICAgICAgZW5kCi0KLSAgICAgICAgbWFjcm8gbGFiZWxX
aWRlMzIoKQotICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoK
LSAgICAgICAgZW5kCi0gICAgICAgIHNpemUobGFiZWxOYXJyb3csIGxhYmVsV2lkZTE2LCBsYWJl
bFdpZGUzMiwgbWFjcm8gKGdlbikgZ2VuKCkgZW5kKQotICAgICAgICBjcmFzaCgpCisgICAgICAg
IHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQorICAgICAgICBkaXNwYXRjaEFmdGVyQ2Fs
bChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rl
ciwgZGlzcGF0Y2gpCiAgICAgZW5kCisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29k
ZU5hbWUsIHNpemUpCisgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCisgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogZW5kCiAKLW1hY3JvIHByZXBhcmVGb3JSZWd1bGFy
Q2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBjYWxsUHRyVGFnKQorbWFj
cm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2Fs
bFB0clRhZykKICAgICBhZGRwIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogZW5kCiAKICMgc3Ag
cG9pbnRzIHRvIHRoZSBuZXcgZnJhbWUKLW1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUs
IHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZv
clRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBy
ZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCiAKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdGVtcDIKQEAgLTExNjIsNyArMTEw
OSw4IEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVt
cDMsIHRlbXA0LCBjYWxsUHRyVGFnKQogICAgIGVuZAogCiAgICAgaWYgQVJNNjRFCi0gICAgICAg
IGFkZHAgMTYsIGNmciwgdGVtcDQKKyAgICAgICAgYWRkcCAxNiwgY2ZyLCB0ZW1wMworICAgICAg
ICB1bnRhZ1JldHVybkFkZHJlc3MgdGVtcDMKICAgICBlbmQKIAogICAgIHN1YnAgdGVtcDIsIHRl
bXAxCkBAIC0xMTgyLDE0ICsxMTMwLDcgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxl
ZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcpCiAgICAgZW5kCiAKICAg
ICBtb3ZlIHRlbXAxLCBzcAotICAgIGlmIEFSTTY0RQotICAgICAgICBtb3ZlIHRlbXA0LCBhMgot
ICAgICAgICBtb3ZlIGNhbGxlZSwgYTAKLSAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4
cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnRhaWxD
YWxsJWNhbGxQdHJUYWclKSAqIFB0clNpemUsIGExCi0gICAgICAgIGptcCBbYTFdLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcgIyAlY2FsbFB0clRhZyUKLSAgICBlbHNlCi0gICAgICAgIGptcCBjYWxs
ZWUsIGNhbGxQdHJUYWcKLSAgICBlbmQKKyAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCiBlbmQK
IAogbWFjcm8gc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKQEAgLTEyMDMsMTYgKzExNDQs
MTYgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHUKICAgICAgICAgbWFjcm8gKGNhbGxlZSwgY2Fs
bGVlRnJhbWVQdHIpCiAgICAgICAgICAgICBidHB6IGNhbGxlZUZyYW1lUHRyLCAuZG9udFVwZGF0
ZVNQCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAotICAgICAgICAgICAgcHJl
cGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQor
ICAgICAgICAgICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRh
ZykKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlv
biglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIEpTRW50cnlTbG93UGF0aFB0
clRhZykKKyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywg
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBlbmQKIAog
bWFjcm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTmFtZSwgc2l6ZSkKICAgICBj
cmFzaCgpICMgV2UgZG9uJ3QgcmVhY2ggdGhpcyBpbiBzdHJhaWdodCBsaW5lIGNvZGUuIFdlIG9u
bHkgcmVhY2ggaXQgdmlhIHJldHVybmluZyB0byB0aGUgY29kZSBiZWxvdyB3aGVuIHJlY29uc3Ry
dWN0aW5nIHN0YWNrIGZyYW1lcyBkdXJpbmcgT1NSIGV4aXQuCiAKLSAgICBkZWZpbmVSZXR1cm5M
YWJlbChvcE5hbWUsIHNpemUpCisgICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wTmFtZSwg
c2l6ZSkKIAogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIGxvYWRpIExM
SW50UmV0dXJuUENbY2ZyXSwgUEMKQEAgLTE0MTAsNiArMTM1MSw3IEBAIGVuZAogIyBpbiB0MS4g
TWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCiBtYWNybyBwcm9sb2d1ZShjb2Rl
QmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgp
CiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1Iu
CisgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQog
CiAgICAgaWYgVFJBQ0lORwpAQCAtMTQzNywyNSArMTM3OSwxNiBAQCBtYWNybyBwcm9sb2d1ZShj
b2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1Bh
dGgpCiAgICAgICAgIGJ0cHogcjAsIC5yZWNvdmVyCiAgICAgICAgIG1vdmUgY2ZyLCBzcCAjIHJl
c3RvcmUgdGhlIHByZXZpb3VzIHNwCiAgICAgICAgICMgcG9wIHRoZSBjYWxsZXJGcmFtZSBzaW5j
ZSB3ZSB3aWxsIGp1bXAgdG8gYSBmdW5jdGlvbiB0aGF0IHdhbnRzIHRvIHNhdmUgaXQKLSAgICAg
ICAgaWYgQVJNNjQKLSAgICAgICAgICAgIHBvcCBsciwgY2ZyCi0gICAgICAgIGVsc2lmIEFSTTY0
RQotICAgICAgICAgICAgIyB1bnRhZ1JldHVybkFkZHJlc3Mgd2lsbCBiZSBwZXJmb3JtZWQgaW4g
R2F0ZTo6ZW50cnlPU1JFbnRyeS4KKyAgICAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCiAgICAgICAg
ICAgICBwb3AgbHIsIGNmcgorICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAg
ICAgIGVsc2lmIEFSTXY3IG9yIE1JUFMKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgICAg
IHBvcCBscgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3AgY2ZyCiAgICAgICAgIGVuZAot
Ci0gICAgICAgIGlmIEFSTTY0RQotICAgICAgICAgICAgbW92ZSByMCwgYTAKLSAgICAgICAgICAg
IGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFw
ICsgKGNvbnN0ZXhwciBHYXRlOjplbnRyeU9TUkVudHJ5KSAqIFB0clNpemUsIGEyCi0gICAgICAg
ICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKLSAgICAgICAgZW5k
CisgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZwogICAgIC5yZWNvdmVyOgogICAgICAgICBu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0MSkKICAgICAuY29udGludWU6CkBAIC0xNTYxLDEy
ICsxNDk0LDcgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVz
VXNlZEJ5TExJbnQoKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgaWYgQVJNNjRF
Ci0gICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25m
aWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJbnQpICogUHRyU2l6ZSwg
YTIKLSAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZwotICAgIGVsc2UKLSAg
ICAgICAgcmV0Ci0gICAgZW5kCisgICAgcmV0CiBlbmQKIAogIyBUaGlzIGJyZWFrIGluc3RydWN0
aW9uIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBzeW50aGVzaXplZCBsbGludFBDUmFuZ2VTdGFydCBs
YWJlbApAQCAtMTU5NywxOSArMTUyNSw2IEBAIGVsc2UKIGVuZAogICAgIGRvVk1FbnRyeShtYWtl
SG9zdEZ1bmN0aW9uQ2FsbCkKIAotaWYgQVJNNjQgb3IgQVJNNjRFCi0gICAgZ2xvYmFsIF92bUVu
dHJ5VG9ZYXJySklUQWZ0ZXIKLWVuZAotZ2xvYmFsIF92bUVudHJ5VG9ZYXJySklUCi1fdm1FbnRy
eVRvWWFyckpJVDoKLSAgICBmdW5jdGlvblByb2xvZ3VlKCkKLWlmIEFSTTY0IG9yIEFSTTY0RQot
ICAgIGptcCB0NSwgWWFyckVudHJ5UHRyVGFnCi0gICAgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcjoK
LWVuZAotICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQotICAgIHJldAotCiAKIGlmIG5vdCAoQ19MT09Q
IG9yIENfTE9PUF9XSU4pCiAgICAgIyB2b2lkIHNhbml0aXplU3RhY2tGb3JWTUltcGwoVk0qIHZt
KQpAQCAtMTY1NSw3MSArMTU3MCw2IEBAIGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAg
ICAgICAgIHJldAogZW5kCiAKLWlmIEFSTTY0RQotICAgICMgdm9pZCogaml0Q2FnZVB0cih2b2lk
KiBwb2ludGVyLCB1aW50cHRyX3QgdGFnKQotICAgIGVtaXQgIi5nbG9ibCBfaml0Q2FnZVB0ciIK
LSAgICBlbWl0ICJfaml0Q2FnZVB0cjoiCi0gICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKLSAg
ICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dh
dGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmppdENhZ2VQdHIpICogUHRyU2l6ZSwgdDIKLSAgICAg
ICAgam1wIFt0Ml0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZwotICAgICAgICBnbG9iYWwgX2ppdENh
Z2VQdHJHYXRlQWZ0ZXIKLSAgICAgICAgX2ppdENhZ2VQdHJHYXRlQWZ0ZXI6Ci0gICAgICAgIHJl
dAotCi0gICAgZ2xvYmFsIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lCi0gICAgX3RhaWxDYWxs
SlNFbnRyeVRyYW1wb2xpbmU6Ci0gICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBhMgotICAgICAg
ICBqbXAgYTAsIEpTRW50cnlQdHJUYWcKLQotICAgIGdsb2JhbCBfdGFpbENhbGxKU0VudHJ5U2xv
d1BhdGhUcmFtcG9saW5lCi0gICAgX3RhaWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZToK
LSAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIGEyCi0gICAgICAgIGptcCBhMCwgSlNFbnRyeVNs
b3dQYXRoUHRyVGFnCi0KLSAgICBnbG9iYWwgX2V4Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lCi0g
ICAgX2V4Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lOgotICAgICAgICBqbXAgYTAsIEV4Y2VwdGlv
bkhhbmRsZXJQdHJUYWcKLQotICAgIGdsb2JhbCBfcmV0dXJuRnJvbUxMSW50VHJhbXBvbGluZQot
ICAgIF9yZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5lOgotICAgICAgICByZXQKLQotICAgIGdsb2Jh
bCBfanNUcmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlCi0gICAgX2pzVHJhbXBvbGluZVByb2dyYW1Q
cm9sb2d1ZToKLSAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAotICAgICAgICBqbXAgX2xsaW50
X3Byb2dyYW1fcHJvbG9ndWUKLQotICAgIGdsb2JhbCBfanNUcmFtcG9saW5lTW9kdWxlUHJvZ3Jh
bVByb2xvZ3VlCi0gICAgX2pzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZToKLSAgICAg
ICAgdGFnUmV0dXJuQWRkcmVzcyBzcAotICAgICAgICBqbXAgX2xsaW50X21vZHVsZV9wcm9ncmFt
X3Byb2xvZ3VlCi0KLSAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZQotICAgIF9q
c1RyYW1wb2xpbmVFdmFsUHJvbG9ndWU6Ci0gICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKLSAg
ICAgICAgam1wIF9sbGludF9ldmFsX3Byb2xvZ3VlCi0KLSAgICBnbG9iYWwgX2pzVHJhbXBvbGlu
ZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlCi0gICAgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2Fs
bFByb2xvZ3VlOgotICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCi0gICAgICAgIGptcCBfbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUKLQotICAgIGdsb2JhbCBfanNUcmFtcG9saW5l
RnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZQotICAgIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZv
ckNvbnN0cnVjdFByb2xvZ3VlOgotICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCi0gICAgICAg
IGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZQotCi0gICAgZ2xvYmFs
IF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrUHJvbG9ndWUKLSAgICBfanNU
cmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlOgotICAgICAgICB0YWdS
ZXR1cm5BZGRyZXNzIHNwCi0gICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2sKLQotICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RB
cml0eUNoZWNrUHJvbG9ndWUKLSAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RB
cml0eUNoZWNrUHJvbG9ndWU6Ci0gICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKLSAgICAgICAg
am1wIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrCi1lbmQKLQogaWYg
Q19MT09QIG9yIENfTE9PUF9XSU4KICAgICAjIER1bW15IGVudHJ5IHBvaW50IHRoZSBDIExvb3Ag
dXNlcyB0byBpbml0aWFsaXplLgogICAgIF9sbGludF9lbnRyeToKQEAgLTE4NzQsMzAgKzE3MjQs
MjEgQEAgZW5kKQogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFj
cm8gKCkKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0
aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQotICAgIGZ1bmN0aW9u
QXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9u
Rm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFy
aXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVj
aykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDAp
CiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAorCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0
eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCi0gICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2lu
LCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVj
ayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlD
aGVjaykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6
YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCi0jIE5lZWQgdGhlc2Ugc3R1YiBsYWJl
bHMgdG8gbWFrZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrX3VudGFnIGV0Yy4gTExJbnQgaGVscGVyIG9wY29kZXMuCi1fanNfdHJhbXBvbGluZV9sbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZ193aWRlMTY6Ci1fanNfdHJhbXBv
bGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZ193aWRlMzI6Ci1f
anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWdfd2lk
ZTE2OgotX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tf
dGFnX3dpZGUzMjoKLV9qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2tfdW50YWdfd2lkZTE2OgotX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRhZ193aWRlMzI6Ci1fanNfdHJhbXBvbGluZV9s
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZ193aWRlMTY6Ci1fanNf
dHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZ193
aWRlMzI6Ci0gICAgY3Jhc2goKQogCiAjIFZhbHVlLXJlcHJlc2VudGF0aW9uLXNwZWNpZmljIGNv
ZGUuCiBpZiBKU1ZBTFVFNjQKQEAgLTIyNjgsNyArMjEwOSw3IEBAIGVuZCkKIAogX2xsaW50X29w
X2NhbGxfZXZhbDoKICAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCi0gICAgICAgIG9wX2NhbGxf
ZXZhbCwKKyAgICAgICAgb3BfY2FsbF9ldmFsX25hcnJvdywKICAgICAgICAgbmFycm93LAogICAg
ICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNybyAoKSBkaXNwYXRjaE9wKG5hcnJvdywgb3Bf
Y2FsbF9ldmFsKSBlbmQsCkBAIC0yMjc3LDcgKzIxMTgsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFs
OgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICBzbG93UGF0aEZvckNvbW1vbkNh
bGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbCwKKyAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUxNiwK
ICAgICAgICAgd2lkZTE2LAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNybyAoKSBk
aXNwYXRjaE9wKHdpZGUxNiwgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0yMjg2LDcgKzIxMjcsNyBA
QCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRl
MzI6CiAgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2YWwsCisg
ICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCiAgICAgICAgIHdpZGUzMiwKICAgICAgICAgT3BD
YWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRlMzIsIG9wX2NhbGxfZXZh
bCkgZW5kLApAQCAtMjM3MSwxMyArMjIxMiw3IEBAIG9wKGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJv
bV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKIAogICAgICAgICByZXN0b3JlU3Rh
dGVBZnRlckNDYWxsKCkKICAgICAgICAgYnJhbmNoSWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zy
b21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCi0gICAgICAgIGlmIEFSTTY0RQotICAgICAgICAgICAg
bW92ZSByMSwgYTAKLSAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50cnkp
ICogUHRyU2l6ZSwgYTIKLSAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcgIyBKU0VudHJ5UHRyVGFnCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGptcCByMSwgSlNF
bnRyeVB0clRhZwotICAgICAgICBlbmQKKyAgICAgICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCiAg
ICAgZWxzZQogICAgICAgICBub3RTdXBwb3J0ZWQoKQogICAgIGVuZApAQCAtMjM5NCwyMyArMjIy
OSwxMiBAQCBvcChjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUsIG1hY3JvICgpCiAgICAg
ICAgIGNDYWxsMihfbGxpbnRfc2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQpCiAgICAgICAg
IHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQogICAgICAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxp
bnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKLSAgICAgICAgaWYgQVJNNjRFCi0g
ICAgICAgICAgICBtb3ZlIHIxLCBhMAotICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25z
dGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxv
b3BPU1JFbnRyeSkgKiBQdHJTaXplLCBhMgotICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
am1wIHIxLCBKU0VudHJ5UHRyVGFnCi0gICAgICAgIGVuZAorICAgICAgICBqbXAgcjEsIEpTRW50
cnlQdHJUYWcKICAgICBlbHNlCiAgICAgICAgIG5vdFN1cHBvcnRlZCgpCiAgICAgZW5kCiBlbmQp
CiAKLW9wKG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lLCBtYWNybyAoKQotICAgIGRpc3BhdGNo
KDApCi1lbmQpCi0KLQogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4g
dGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hv
dWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0
CiAjIGFzIG11Y2guCkBAIC0yNDU1LDE4ICsyMjc5LDQgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9s
b2d1ZV9ub190bHMsIG1hY3JvICgpCiAgICAgY3Jhc2goKQogZW5kKQogCi1fd2FzbV90cmFtcG9s
aW5lX3dhc21fY2FsbDoKLV93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3RsczoKLV93YXNt
X3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgotX3dhc21fdHJhbXBvbGluZV93YXNtX2Nh
bGxfaW5kaXJlY3Rfbm9fdGxzOgotX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfd2lkZTE2Ogot
X3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUxNjoKLV93YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUxNjoKLV93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxs
X2luZGlyZWN0X25vX3Rsc193aWRlMTY6Ci1fd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF93aWRl
MzI6Ci1fd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNfd2lkZTMyOgotX3dhc21fdHJh
bXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfd2lkZTMyOgotX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3dpZGUzMjoKLSAgICBjcmFzaCgpCi0KIGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQppbmRleCA4ZTczMzdkNzYyMjc0NWEwOTZmMGVmMjRlYzA0NDAzYTY2YzZkOGU2Li42
MjZhNDY4MTdiMTUzYjNkNTQ2NDdjM2Q4MmMxYjQ3NDlmZTYyNjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtNjg2LDcgKzY4Niw3IEBAIGVuZAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnBy
ZXRlcgogCiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQg
cHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgotbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKG9wY29k
ZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1BhdGgpCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9u
ZUxhYmVsLCBzbG93UGF0aCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBh
cmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKICAgICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCkBAIC03
NTcsMTQgKzc1Nyw2IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhvcGNvZGVOYW1lLCBkb25l
TGFiZWwsIHNsb3dQYXRoKQogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQ
b2ludGVyW3QxXSwgUEIKICAgICBtb3ZlIDAsIFBDCiAgICAgam1wIGRvbmVMYWJlbAotCi0gICAg
IyBJdCBpcyByZXF1aXJlZCBpbiBBUk12NyBhbmQgTUlQcyBiZWNhdXNlIGdsb2JhbCBsYWJlbCBk
ZWZpbml0aW9ucwotICAgICMgZm9yIHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0
IG9mIGluc3RydWN0aW9ucwotICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24s
IHJlc3VsdGluZyBpbiB1bmV4cGVjdGVkCi0gICAgIyBjcmFzaGVzLgotICAgIF9qc190cmFtcG9s
aW5lXyVvcGNvZGVOYW1lJV91bnRhZzoKLSAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVf
dGFnOgotICAgIGNyYXNoKCkKIGVuZAogCiAjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucwpA
QCAtMjEyMyw3ICsyMTE1LDcgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0
aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKICAgICBzdG9yZWkg
dDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBz
dG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQogICAgIG1vdmUgdDMsIHNwCi0g
ICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisg
ICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKICAgICBj
YWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5
UHRyVGFnKQogCiAub3BDYWxsU2xvdzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNTM0ZTBkZjNkZTMwMDA2MmY3
NWYxNWNiZTUxMzY0OWE3ZGFhN2EwZC4uYWExNTcyM2M2NDBmMmQ3N2VhOGE3ZmU4OGE5OGJhZWE4
NmQyYjliOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTMwMCwyNSArMzAwLDE1IEBAIG1hY3JvIGRvVk1FbnRy
eShtYWtlQ2FsbCkKICAgICByZXQKIGVuZAogCisKICMgYTAsIGEyLCB0MywgdDQKIG1hY3JvIG1h
a2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKICAg
ICBhZGRwIDE2LCBzcAogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNsb29w
Q2FsbEpTRnVuY3Rpb24gZW50cnkKLSAgICBlbHNpZiBBUk02NEUKLSAgICAgICAgbW92ZSBlbnRy
eSwgdDMKLSAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnZtRW50cnlUb0phdmFTY3JpcHQpICog
UHRyU2l6ZSwgYTIKLSAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpT
RW50cnlQdHJUYWcKLSAgICAgICAgZ2xvYmFsIF92bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGlu
ZQotICAgICAgICBfdm1FbnRyeVRvSmF2YVNjcmlwdFRyYW1wb2xpbmU6Ci0gICAgICAgIGNhbGwg
dDMsIEpTRW50cnlQdHJUYWcKICAgICBlbHNlCiAgICAgICAgIGNhbGwgZW50cnksIEpTRW50cnlQ
dHJUYWcKICAgICBlbmQKLSAgICBpZiBBUk02NEUKLSAgICAgICAgZ2xvYmFsIF92bUVudHJ5VG9K
YXZhU2NyaXB0R2F0ZUFmdGVyCi0gICAgICAgIF92bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVy
OgotICAgIGVuZAogICAgIHN1YnAgMTYsIHNwCiBlbmQKIApAQCAtMzM2LDIwICszMjYsOSBAQCBt
YWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0
ZW1wMikKICAgICAgICAgc3VicCAzMiwgc3AKICAgICAgICAgY2FsbCB0ZW1wMSwgSG9zdEZ1bmN0
aW9uUHRyVGFnCiAgICAgICAgIGFkZHAgMzIsIHNwCi0gICAgZWxzaWYgQVJNNjRFCi0gICAgICAg
IG1vdmUgdGVtcDEsIHQzCi0gICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp2bUVudHJ5VG9OYXRp
dmUpICogUHRyU2l6ZSwgYTIKLSAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRh
ZyAjIEhvc3RGdW5jdGlvblB0clRhZwotICAgICAgICBnbG9iYWwgX3ZtRW50cnlUb05hdGl2ZVRy
YW1wb2xpbmUKLSAgICAgICAgX3ZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmU6Ci0gICAgICAgIGNh
bGwgdDMsIEhvc3RGdW5jdGlvblB0clRhZwogICAgIGVsc2UKICAgICAgICAgY2FsbCB0ZW1wMSwg
SG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZW5kCi0gICAgaWYgQVJNNjRFCi0gICAgICAgIGdsb2Jh
bCBfdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyCi0gICAgICAgIF92bUVudHJ5VG9OYXRpdmVHYXRl
QWZ0ZXI6Ci0gICAgZW5kCiBlbmQKIAogb3AobGxpbnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlv
biwgbWFjcm8gKCkKQEAgLTQ1MiwxNCArNDMxLDggQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZv
ckxvb3AoKQogICAgICAgICAgICAgbW92ZSBQQywgYTEKICAgICAgICAgICAgIGNDYWxsMihfbGxp
bnRfbG9vcF9vc3IpCiAgICAgICAgICAgICBidHB6IHIwLCAucmVjb3ZlcgotCiAgICAgICAgICAg
ICBtb3ZlIHIxLCBzcAotICAgICAgICAgICAgaWYgQVJNNjRFCi0gICAgICAgICAgICAgICAgbGVh
cCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAo
Y29uc3RleHByIEdhdGU6Omxvb3BPU1JFbnRyeSkgKiBQdHJTaXplLCBhMgotICAgICAgICAgICAg
ICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCi0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCi0gICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZwogICAgICAgICAu
cmVjb3ZlcjoKICAgICAgICAgICAgIGxvYWRQQygpCiAgICAgICAgIGVuZCkKQEAgLTY3Miw3ICs2
NDUsNyBAQCBlbmQKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAKICMgRXhw
ZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxl
YXZlcyBiZWhpbmQuCi1tYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2sob3Bjb2RlTmFtZSwgZG9uZUxh
YmVsLCBzbG93UGF0aCkKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQ
YXRoKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
c1tjZnJdLCB0MAogICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0s
IGRvbmVMYWJlbAogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKQEAgLTcwOSwxNSArNjgyLDkg
QEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKG9wY29kZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1Bh
dGgpCiAKIC5ub0V4dHJhU2xvdDoKICAgICBpZiBBUk02NEUKLSAgICAgICAgbGVhcCBKU0NDb25m
aWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHBy
IEdhdGU6OiVvcGNvZGVOYW1lJVVudGFnKSAqIFB0clNpemUsIHQzCi0gICAgICAgIGptcCBbdDNd
LCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKLSAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5h
bWUlX3VudGFnOgogICAgICAgICBsb2FkcCA4W2Nmcl0sIGxyCiAgICAgICAgIGFkZHAgMTYsIGNm
ciwgdDMKICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQzCi0gICAgICAgIF8lb3Bjb2RlTmFt
ZSVVbnRhZ0dhdGVBZnRlcjoKLSAgICBlbHNlCi0gICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNv
ZGVOYW1lJV91bnRhZzoKICAgICBlbmQKIAogICAgIC8vIE1vdmUgZnJhbWUgdXAgdDEgc2xvdHMK
QEAgLTc0NSwxNSArNzEyLDkgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKG9wY29kZU5hbWUs
IGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgYmFkZGlueiAxLCB0MiwgLmZpbGxMb29wCiAKICAg
ICBpZiBBUk02NEUKLSAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJVRhZykg
KiBQdHJTaXplLCB0MwotICAgICAgICBqbXAgW3QzXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCi0g
ICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV90YWc6CiAgICAgICAgIGFkZHAgMTYs
IGNmciwgdDEKICAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyB0MQogICAgICAgICBzdG9yZXAgbHIs
IDhbY2ZyXQotICAgICAgICBfJW9wY29kZU5hbWUlVGFnR2F0ZUFmdGVyOgotICAgIGVsc2UKLSAg
ICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKICAgICBlbmQKIAogLmNvbnRp
bnVlOgpAQCAtMjIxNCwxNSArMjE3NSw5IEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwg
c2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAgICAg
c3RvcmVQQygpCiAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBh
eWxvYWRPZmZzZXRbdDNdCiAgICAgbW92ZSB0Mywgc3AKLSAgICBpZiBBUk02NEUKLSAgICAgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVD
b2RlVGFyZ2V0W3Q1XSwgdDAKLSAgICAgICAgcHJlcGFyZUNhbGwodDAsIHQyLCB0MywgdDQsIHQx
LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAotICAgICAgICBjYWxs
VGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCB0MCwgSlNFbnRyeVB0clRhZykK
LSAgICBlbHNlCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIHQxLCBK
U0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6
ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRp
c3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGlu
ZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQotICAgIGVuZAorICAgIHByZXBhcmVDYWxs
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRh
cmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgY2FsbFRhcmdldEZ1bmN0
aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKwogLm9w
Q2FsbFNsb3c6CiAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xv
d1BhdGgsIHByZXBhcmVDYWxsKQogZW5kCkBAIC0yMjkwLDcgKzIyNDUsNyBAQCBsbGludE9wV2l0
aFJldHVybihvcF90b19wcm9wZXJ0eV9rZXksIE9wVG9Qcm9wZXJ0eUtleSwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0YwogZW5kKQogCiAKLWNvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybyAo
KSBlbmQsIG1hY3JvIChzaXplKQorY29tbW9uT3AobGxpbnRfb3BfY2F0Y2gsIG1hY3JvKCkgZW5k
LCBtYWNybyAoc2l6ZSkKICAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJ
VCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCiAgICAgIyBtYWNoaW5lIGNvZGUgcmV0
dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KICAg
ICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3df
dHJhbXBvbGluZSkuCkBAIC0yMzU1LDEzICsyMzEwLDcgQEAgb3AobGxpbnRfdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11
bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgogICAgIGxvYWRwIENhbGxlZVtjZnJd
LCB0MQogICAgIGNvbnZlcnRDYWxsZWVUb1ZNKHQxKQotICAgIGlmIEFSTTY0RQotICAgICAgICBs
b2FkcCBWTTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBhMAotICAgICAgICBsZWFwIEpT
Q0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25z
dGV4cHIgR2F0ZTo6ZXhjZXB0aW9uSGFuZGxlcikgKiBQdHJTaXplLCBhMQotICAgICAgICBqbXAg
W2ExXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgRXhjZXB0aW9uSGFuZGxlclB0clRhZwotICAg
IGVsc2UKLSAgICAgICAgam1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0sIEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWcKLSAgICBlbmQKKyAgICBqbXAgVk06OnRhcmdldE1hY2hpbmVQQ0Zv
clRocm93W3QxXSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZwogZW5kKQogCiAKQEAgLTMwNjksMyAr
MzAxOCw0IEBAIG9wKGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsIG1hY3JvICgp
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgZG9SZXR1
cm4oKQogZW5kKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2Vi
QXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFz
bQppbmRleCBhOWRhOGJhZGU2NzdjNjAzMzQ0YmJmZDY0MjYwOTg1YTg5MzQ2MDQ2Li5iOTMyMjEz
NDgzNDJlOWFhODg4ODMyZDVjN2JhZDE2NjQ3YWNiNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTEzOSwxMiArMTM5LDggQEAgbWFjcm8gY2hl
Y2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKGNvZGVCbG9ja1JlZ2lzdGVyKQogCiAgICAgICAgICAg
ICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICAgICAgICAgIHJlc3RvcmVDYWxs
ZXJQQ0FuZENGUigpCi0gICAgICAgICAgICBpZiBBUk02NEUKLSAgICAgICAgICAgICAgICBsZWFw
IEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChj
b25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVudHJ5KSAqIFB0clNpemUsIHdzMQotICAgICAgICAgICAg
ICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCi0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFn
Ci0gICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAorICAg
ICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCiAgICAgICAgIC5yZWNvdmVyOgogICAg
ICAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIoY29kZUJsb2NrUmVnaXN0ZXIpCiAg
ICAgICAgIGVuZCkKQEAgLTE2MywxNCArMTU5LDkgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZv
ckxvb3AoKQogICAgICAgICAgICAgYnRweiByMSwgLnJlY292ZXIKICAgICAgICAgICAgIHJlc3Rv
cmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgICAgICAgICAgcmVzdG9yZUNhbGxlclBDQW5k
Q0ZSKCkKKyAgICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAogICAgICAgICAgICAgbW92
ZSByMCwgYTAKLSAgICAgICAgICAgIGlmIEFSTTY0RQotICAgICAgICAgICAgICAgIG1vdmUgcjEs
IHdzMAotICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zm
c2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp3YXNtT1NSRW50cnkpICog
UHRyU2l6ZSwgd3MxCi0gICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBXYXNtRW50cnlQdHJUYWcKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBqbXAgcjEsIFdhc21FbnRyeVB0clRhZwotICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBq
bXAgcjEsIFdhc21FbnRyeVB0clRhZwogICAgICAgICAucmVjb3ZlcjoKICAgICAgICAgICAgIGxv
YWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAg
ICAgIGVuZCkKQEAgLTI2Miw2ICsyNTMsNyBAQCBlbmQKIAogbWFjcm8gd2FzbVByb2xvZ3VlKGNv
ZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlKQogICAgICMg
U2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHRh
Z1JldHVybkFkZHJlc3Mgc3AKICAgICBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKICAgICBwcmVz
ZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgbG9hZFdhc21JbnN0YW5jZSgpCkBAIC00
NjQsMTIgKzQ1Niw3IEBAIGVuZAogbWFjcm8gZG9SZXR1cm4oKQogICAgIHJlc3RvcmVDYWxsZWVT
YXZlc1VzZWRCeVdhc20oKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgaWYgQVJN
NjRFCi0gICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0ND
b25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJbnQpICogUHRyU2l6
ZSwgd3MwCi0gICAgICAgIGptcCBbd3MwXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCi0gICAgZWxz
ZQotICAgICAgICByZXQKLSAgICBlbmQKKyAgICByZXQKIGVuZAogCiAjIEVudHJ5IHBvaW50CkBA
IC01MTAsMTMgKzQ5Nyw3IEBAIG9wKHdhc21fdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGlu
ZSwgbWFjcm8gKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxv
YWRPZmZzZXRbY2ZyXSwgYTMKICAgICBjQ2FsbDQoX3Nsb3dfcGF0aF93YXNtX3Rocm93X2V4Y2Vw
dGlvbikKIAotICAgIGlmIEFSTTY0RQotICAgICAgICBtb3ZlIHIwLCBhMAotICAgICAgICBsZWFw
IEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChj
b25zdGV4cHIgR2F0ZTo6ZXhjZXB0aW9uSGFuZGxlcikgKiBQdHJTaXplLCBhMQotICAgICAgICBq
bXAgW2ExXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgRXhjZXB0aW9uSGFuZGxlclB0clRhZwot
ICAgIGVsc2UKLSAgICAgICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCi0gICAgZW5k
CisgICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCiBlbmQpCiAKICMgRGlzYWJsZSB3
aWRlIHZlcnNpb24gb2YgbmFycm93LW9ubHkgb3Bjb2RlcwpAQCAtNzI0LDM4ICs3MDUsNyBAQCBt
YWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgc2xvd1BhdGgsIHN0b3JlV2FzbUluc3RhbmNl
KQogICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBhZGRwIENhbGxlckZyYW1lQW5kUENT
aXplLCBzcAotCi0gICAgICAgICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0
LCBzaXplKQotICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxOYXJyb3coKQotICAgICAgICAgICAg
ICAgICAgICBpZiBBUk02NEUKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmln
ICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBH
YXRlOjolb3Bjb2RlTmFtZSUpICogUHRyU2l6ZSwgd3MxCi0gICAgICAgICAgICAgICAgICAgICAg
ICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRh
ZwotICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJh
bXBvbGluZV8lb3Bjb2RlTmFtZSU6Ci0gICAgICAgICAgICAgICAgICAgIGNhbGwgd3MwLCBKU0Vu
dHJ5U2xvd1BhdGhQdHJUYWcKLSAgICAgICAgICAgICAgICBlbmQKLQotICAgICAgICAgICAgICAg
IG1hY3JvIGNhbGxXaWRlMTYoKQotICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTE2
KSAqIFB0clNpemUsIHdzMQotICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKLSAgICAgICAgICAgICAg
ICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5h
bWUlX3dpZGUxNjoKLSAgICAgICAgICAgICAgICAgICAgY2FsbCB3czAsIEpTRW50cnlTbG93UGF0
aFB0clRhZwotICAgICAgICAgICAgICAgIGVuZAotCi0gICAgICAgICAgICAgICAgbWFjcm8gY2Fs
bFdpZGUzMigpCi0gICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQotICAgICAgICAgICAgICAg
ICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZp
Z0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMzIpICogUHRyU2l6
ZSwgd3MxCi0gICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0
ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRhZwotICAgICAgICAgICAgICAgICAgICBlbmQK
LSAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMy
OgotICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCi0g
ICAgICAgICAgICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBzaXplKGNhbGxOYXJyb3csIGNh
bGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKLSAgICAgICAgICAg
ICAgICBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQotICAgICAgICAgICAgZW5k
KQorICAgICAgICAgICAgY2FsbCB3czAsIFNsb3dQYXRoUHRyVGFnCiAKICAgICAgICAgICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB3czEKICAgICAgICAgICAgIGxvYWRpIFdhc206OkZ1bmN0aW9u
Q29kZUJsb2NrOjptX251bUNhbGxlZUxvY2Fsc1t3czFdLCB3czEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggZmY1N2I2YTQ4YWU5NzU1YjRjMTA1NDg1NDNk
NzU5ZjQ0MzYyNzg3MS4uZjllNTczMmZhZjE0YjA4MDliYzJiYjZjMTliMWM4MDJjNTlmODMwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKQEAgLTM3LDQ1ICsz
NywzOCBAQCByZXF1aXJlICJyaXNjIgogIwogIyBHUFIgY29udmVudGlvbnMsIHRvIG1hdGNoIHRo
ZSBiYXNlbGluZSBKSVQ6CiAjCi0jICB4MCAgPT4gdDAsIGEwLCB3YTAsIHIwCi0jICB4MSAgPT4g
dDEsIGExLCB3YTEsIHIxCi0jICB4MiAgPT4gdDIsIGEyLCB3YTIKLSMgIHgzICA9PiB0MywgYTMs
IHdhMwotIyAgeDQgID0+IHQ0LCBhNCwgd2E0Ci0jICB4NSAgPT4gdDUsIGE1LCB3YTUKLSMgIHg2
ICA9PiB0NiwgYTYsIHdhNgotIyAgeDcgID0+IHQ3LCBhNywgd2E3Ci0jICB4OCAgPT4gd3MwCi0j
ICB4OSAgPT4gd3MxCisjICB4MCAgPT4gdDAsIGEwLCByMAorIyAgeDEgID0+IHQxLCBhMSwgcjEK
KyMgIHgyICA9PiB0MiwgYTIKKyMgIHgzICA9PiB0MywgYTMKKyMgIHg0ICA9PiB0NAorIyAgeDUg
ID0+IHQ1CiAjIHgxMyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDE2ICA9PiAg
ICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTcgID0+ICAgICAgICAgICAgICAgICAgKHNj
cmF0Y2gpCi0jIHgyNSAgPT4gICAgICAgICAgICAgY3NyNiAobWV0YWRhdGFUYWJsZSkKLSMgeDI2
ICA9PiAgICAgICAgICAgICBjc3I3IChQQikKLSMgeDI3ICA9PiAgICAgICAgICAgICBjc3I4IChu
dW1iZXJUYWcpCi0jIHgyOCAgPT4gICAgICAgICAgICAgY3NyOSAobm90Q2VsbE1hc2spCisjIHgy
NiAgPT4gICAgICAgICAgICAgY3NyMCAoUEIpCisjIHgyNyAgPT4gICAgICAgICAgICAgY3NyMSAo
bnVtYmVyVGFnKQorIyB4MjggID0+ICAgICAgICAgICAgIGNzcjIgKG5vdENlbGxNYXNrKQogIyB4
MjkgID0+IGNmcgogIyAgc3AgID0+IHNwCiAjICBsciAgPT4gbHIKICMKICMgRlBSIGNvbnZlbnRp
b25zLCB0byBtYXRjaCB0aGUgYmFzZWxpbmUgSklUOgogIwotIyAgcTAgID0+IGZ0MCwgZmEwLCB3
ZmEwLCBmcgotIyAgcTEgID0+IGZ0MSwgZmExLCB3ZmExCi0jICBxMiAgPT4gZnQyLCBmYTIsIHdm
YTIKLSMgIHEzICA9PiBmdDMsIGZhMywgd2ZhMwotIyAgcTQgID0+IGZ0NCwgICAgICB3ZmE0ICAg
ICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxNSAgPT4gZnQ1LCAgICAgIHdmYTUgICAg
ICAgICAgKHVudXNlZCBpbiBiYXNlbGluZSkKLSMgIHE2ICA9PiAgICAgICAgICAgd2ZhNiAgICAg
ICAgICAodW51c2VkIGluIGJhc2VsaW5lKQotIyAgcTcgID0+ICAgICAgICAgICB3ZmE3ICAgICAg
ICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxOCAgPT4gY3NmcjAgICAgICAgICAgICAgICAg
ICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jICBxOSAgPT4gY3NmcjEgICAgICAgICAgICAg
ICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExMCAgPT4gY3NmcjIgICAgICAgICAg
ICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExMSAgPT4gY3NmcjMgICAgICAg
ICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExMiAgPT4gY3NmcjQgICAg
ICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExMyAgPT4gY3NmcjUg
ICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExNCAgPT4gY3Nm
cjYgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExNSAgPT4g
Y3NmcjcgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjICBxMCAg
PT4gZnQwLCBmYTAsIGZyCisjICBxMSAgPT4gZnQxLCBmYTEKKyMgIHEyICA9PiBmdDIsIGZhMgor
IyAgcTMgID0+IGZ0MywgZmEzCisjICBxNCAgPT4gZnQ0ICAgICAgICAgICh1bnVzZWQgaW4gYmFz
ZWxpbmUpCisjICBxNSAgPT4gZnQ1ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjICBx
OCAgPT4gY3NmcjAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyAgcTkgID0+IGNz
ZnIxICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTEwICA9PiBjc2ZyMiAgICAg
ICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjIHExMSAgPT4gY3NmcjMgICAgICAgIChPbmx5
IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTIgID0+IGNzZnI0ICAgICAgICAoT25seSB0aGUgbG93
ZXIgNjQgYml0cykKKyMgcTEzICA9PiBjc2ZyNSAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJp
dHMpCisjIHExNCAgPT4gY3NmcjYgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBx
MTUgID0+IGNzZnI3ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKICMgcTMxICA9PiBz
Y3JhdGNoCiAKIGRlZiBhcm02NEdQUk5hbWUobmFtZSwga2luZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9taXBzLnJiCmluZGV4IDEzNzM2YWQ5Yjc2ZmYzZGNhOWMzMTIyMzdhYzlj
NGMxZDhjNjE3ZDAuLjQxYjhiOWZhN2I5ZDllNTMzNTY2YmYyZDBhMThlYTA4NzQ3ZjBkNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgpAQCAtNjgxLDcgKzY4MSwx
NyBAQCBkZWYgbWlwc0FkZFBJQ0NvZGUobGlzdCkKICAgICAgICAgfCBub2RlIHwKICAgICAgICAg
bXlMaXN0IDw8IG5vZGUKICAgICAgICAgaWYgbm9kZS5pc19hPyBMYWJlbAotICAgICAgICAgICAg
bXlMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJwaWNoZHIiLCBbTUlQ
U19DQUxMX1JFR10pCisgICAgICAgICAgICAjIEZJWE1FOiBbSlNDXSBjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUgaXMgYSByZXR1cm4gbG9jYXRpb24KKyAg
ICAgICAgICAgICMgYW5kIHdlIHNob3VsZCBuYW1lIGl0IHByb3Blcmx5LgorICAgICAgICAgICAg
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjM2CisgICAgICAg
ICAgICBpZiBub2RlLm5hbWUgPX4gL14uKl9yZXR1cm5fbG9jYXRpb24oPzpfKD86d2lkZTE2fHdp
ZGUzMikpPyQvIG9yIG5vZGUubmFtZS5zdGFydF93aXRoPygiX2NoZWNrcG9pbnRfb3NyX2V4aXRf
ZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSIpIG9yIG5vZGUubmFtZS5zdGFydF93aXRoPygi
X2Z1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQiKQorICAgICAgICAgICAgICAgICMg
V2UgbmVlZCB0byBoYXZlIGEgc3BlY2lhbCBjYXNlIGZvciByZXR1cm4gbG9jYXRpb24gbGFiZWxz
IGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzCisgICAgICAgICAgICAgICAgIyByZWFjaGVkIGZyb20g
YSBgcmV0YCBpbnN0cnVjdGlvbi4gSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHByb3BlciByZWNv
bmZpZ3VyZSBgJGdwYAorICAgICAgICAgICAgICAgICMgdXNpbmcgYCRyYWAgaW5zdGVhZCBvZiB1
c2luZyBgJHQ5YC4KKyAgICAgICAgICAgICAgICBteUxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgInBpY2hkciIsIFtNSVBTX1JFVFVSTl9BRERSRVNTX1JFR10pCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbXlMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sICJwaWNoZHIiLCBbTUlQU19DQUxMX1JFR10pCisgICAgICAgICAgICBl
bmQKICAgICAgICAgZW5kCiAgICAgfQogICAgIG15TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2F0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWQwMjcxMjhjYWIxZjk5
ZWJiMjRjN2RmYjI5OGEzYjI3ODQ5NDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUuaAorKysg
L2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLSNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQotCi0jZGVmaW5lIEpTQ19VVElMSVRZX0dB
VEVTKHYpIFwKLSAgICB2KGppdENhZ2VQdHIsIE5vUHRyVGFnKSBcCi0gICAgdih0YWlsQ2FsbEpT
RW50cnlQdHJUYWcsIE5vUHRyVGFnKSBcCi0gICAgdih0YWlsQ2FsbEpTRW50cnlTbG93UGF0aFB0
clRhZywgTm9QdHJUYWcpIFwKLSAgICB2KGxvb3BPU1JFbnRyeSwgTm9QdHJUYWcpIFwKLSAgICB2
KGVudHJ5T1NSRW50cnksIE5vUHRyVGFnKSBcCi0gICAgdih3YXNtT1NSRW50cnksIE5vUHRyVGFn
KSBcCi0gICAgdihleGNlcHRpb25IYW5kbGVyLCBOb1B0clRhZykgXAotICAgIHYocmV0dXJuRnJv
bUxMSW50LCBOb1B0clRhZykgXAotICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2tVbnRhZywgTm9QdHJUYWcpIFwKLSAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrVGFnLCBOb1B0clRhZykgXAotICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVja1VudGFnLCBOb1B0clRhZykgXAotICAgIHYobGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZywgTm9QdHJUYWcpIFwKLSAgICB2KHZtRW50cnlU
b0phdmFTY3JpcHQsIEpTRW50cnlQdHJUYWcpIFwKLSAgICB2KHZtRW50cnlUb05hdGl2ZSwgSG9z
dEZ1bmN0aW9uUHRyVGFnKSBcCi0KLSNkZWZpbmUgSlNDX0pTX0dBVEVfT1BDT0RFUyh2KSBcCi0g
ICAgdihvcF9jYWxsLCBKU0VudHJ5UHRyVGFnKSBcCi0gICAgdihvcF90YWlsX2NhbGwsIEpTRW50
cnlQdHJUYWcpIFwKLSAgICB2KG9wX2NvbnN0cnVjdCwgSlNFbnRyeVB0clRhZykgXAotICAgIHYo
b3BfaXRlcmF0b3JfbmV4dCwgSlNFbnRyeVB0clRhZykgXAotICAgIHYob3BfaXRlcmF0b3Jfb3Bl
biwgSlNFbnRyeVB0clRhZykgXAotICAgIHYob3BfY2FsbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQ
dHJUYWcpIFwKLSAgICB2KG9wX3RhaWxfY2FsbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcp
IFwKLSAgICB2KG9wX2NvbnN0cnVjdF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKLSAg
ICB2KG9wX2NhbGxfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKLSAgICB2
KG9wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAotICAg
IHYob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0
clRhZykgXAotICAgIHYob3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnKSBcCi0gICAgdihvcF9jYWxsX2V2YWxfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
KSBcCi0gICAgdihvcF9pdGVyYXRvcl9uZXh0X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykg
XAotICAgIHYob3BfaXRlcmF0b3Jfb3Blbl9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwK
LQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotI2RlZmluZSBKU0NfV0FTTV9HQVRFX09QQ09E
RVModikgXAotICAgIHYod2FzbV9jYWxsLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKLSAgICB2
KHdhc21fY2FsbF9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAotICAgIHYod2FzbV9j
YWxsX2luZGlyZWN0LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKLSAgICB2KHdhc21fY2FsbF9p
bmRpcmVjdF9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAotCi0jZWxzZQotI2RlZmlu
ZSBKU0NfV0FTTV9HQVRFX09QQ09ERVModikKLSNlbmRpZgotCi1lbnVtIGNsYXNzIEdhdGUgOiB1
aW50OF90IHsKLSNkZWZpbmUgSlNDX0RFRklORV9HQVRFX0VOVU0oZ2F0ZU5hbWUsIHRhZykgZ2F0
ZU5hbWUsCi0jZGVmaW5lIEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTShnYXRlTmFtZSwgdGFn
KSBnYXRlTmFtZSwgZ2F0ZU5hbWUjI193aWRlMTYsIGdhdGVOYW1lIyNfd2lkZTMyLAotICAgIEpT
Q19VVElMSVRZX0dBVEVTKEpTQ19ERUZJTkVfR0FURV9FTlVNKQotICAgIEpTQ19KU19HQVRFX09Q
Q09ERVMoSlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKQotICAgIEpTQ19XQVNNX0dBVEVfT1BD
T0RFUyhKU0NfREVGSU5FX09QQ09ERV9HQVRFX0VOVU0pCi0jdW5kZWYgSlNDX0RFRklORV9HQVRF
X0VOVU0KLX07Ci0KLSNkZWZpbmUgSlNDX0NPVU5UKGdhdGVOYW1lLCB0YWcpICsgMQotI2RlZmlu
ZSBKU0NfT1BDT0RFX0NPVU5UKGdhdGVOYW1lLCB0YWcpICsgMwotc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBudW1iZXJPZkdhdGVzID0gKEpTQ19VVElMSVRZX0dBVEVTKEpTQ19DT1VOVCkpICsg
KEpTQ19KU19HQVRFX09QQ09ERVMoSlNDX09QQ09ERV9DT1VOVCkpICsgKEpTQ19XQVNNX0dBVEVf
T1BDT0RFUyhKU0NfT1BDT0RFX0NPVU5UKSk7Ci0jdW5kZWYgSlNDX0NPVU5UCi0jdW5kZWYgSlND
X09QQ09ERV9DT1VOVAotI2Vsc2UKLS8vIEtlZXAgaXQgbm9uLXplcm8gdG8gbWFrZSBKU0NDb25m
aWcncyBhcnJheSBub3QgWzBdLgotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkdh
dGVzID0gMTsKLSNlbmRpZgotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NDb25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCmluZGV4IDdmOTZlYzUyZWQyMWFmZGUzM2RhMTMwZGI3ZGQ0Njk0ZWM2MTk4ZDcuLjVh
NDczMTdjNjJhNWViYTY2NjY3NTczNWY3NzQwMzUwMGM2ODBiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiR2F0ZS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUg
Ik9wdGlvbnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1dURkNvbmZpZy5oPgpAQCAtOTMsNyArOTIs
NiBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFtudW1PcGNvZGVJ
RHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUxNltu
dW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1h
cFdpZGUzMltudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKLSAgICAgICAgY29uc3Qg
dm9pZCogZ2F0ZU1hcFtudW1iZXJPZkdhdGVzXTsKICAgICB9IGxsaW50OwogCiAjaWYgQ1BVKEFS
TTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCkBAIC0xMTksNyArMTE3LDYgQEAgZXh0
ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSBDb25maWcgZ19qc2NDb25maWc7CiBjb25zdGV4cHIg
c2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwID0gb2Zmc2V0b2YoSlNDOjpDb25maWcs
IGxsaW50Lm9wY29kZU1hcCk7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bj
b2RlTWFwV2lkZTE2ID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdpZGUx
Nik7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwV2lkZTMyID0g
b2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdpZGUzMik7Ci1jb25zdGV4cHIg
c2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBs
bGludC5nYXRlTWFwKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwCmluZGV4IDZhNzNmMzRhYWEwOGYwODkzYjlhNTAy
MzIwMWE4YjEyMmMzYmNlZjguLmE5NDE2MzRiZmZkYTdhNDYzMTU2YzQ1OTA2Zjc3NDliZWEyMjZh
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcApAQCAt
MjgsMTIgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogCi0jaWYgRU5BQkxFKEpJ
VF9DQUdFKQotI2luY2x1ZGUgPG1hY2hpbmUvY3B1X2NhcGFiaWxpdGllcy5oPgotI2luY2x1ZGUg
PHN5cy9tbWFuLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNl
IEpTQyB7CiAKICNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAg
LTQxLDEwICszNSw4IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIGNvbnN0IGNoYXIqIHRhZ0Zv
clB0cihjb25zdCB2b2lkKiBwdHIpCiB7CiAjZGVmaW5lIFJFVFVSTl9OQU1FX0lGX1RBR19NQVRD
SEVTKHRhZywgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgXAotICAgIGlmIChjYWxsZXJUeXBlICE9
IFB0clRhZ0NhbGxlclR5cGU6OkpJVCB8fCBjYWxsZWVUeXBlICE9IFB0clRhZ0NhbGxlZVR5cGU6
Ok5hdGl2ZSkgeyBcCi0gICAgICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2RlUHRySW1wbDxXVEY6
OlB0clRhZ0FjdGlvbjo6Tm9Bc3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0cikp
KSBcCi0gICAgICAgICAgICByZXR1cm4gI3RhZzsgXAotICAgIH0KKyAgICBpZiAocHRyID09IFdU
Rjo6dGFnQ29kZVB0ckltcGw8V1RGOjpQdHJUYWdBY3Rpb246Ok5vQXNzZXJ0LCBKU0M6OnRhZz4o
cmVtb3ZlQ29kZVB0clRhZyhwdHIpKSkgXAorICAgICAgICByZXR1cm4gI3RhZzsKICAgICBGT1Jf
RUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTKQogI3VuZGVmIFJFVFVS
Tl9OQU1FX0lGX1RBR19NQVRDSEVTCiAgICAgcmV0dXJuIG51bGxwdHI7IC8vIE1hdGNoaW5nIHRh
ZyBub3QgZm91bmQuCkBAIC02OSwzMiArNjEsNCBAQCB2b2lkIGluaXRpYWxpemVQdHJUYWdMb29r
dXAoKQogCiAjZW5kaWYgLy8gQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcp
CiAKLSNpZiBDUFUoQVJNNjRFKQotCi1QdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFn
IHRhZykKLXsKLSNkZWZpbmUgUkVUVVJOX1BUUlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBl
LCBjYWxsZXJUeXBlKSBjYXNlIF90YWdOYW1lOiByZXR1cm4gY2FsbGVyVHlwZTsKLSAgICBzd2l0
Y2ggKHRhZykgewotICAgICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQ
RSkKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZl
OwotICAgIH0KLSN1bmRlZiBSRVRVUk5fUFRSVEFHX1RZUEUKLSAgICByZXR1cm4gUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlOwotfQotCi1QdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFn
IHRhZykKLXsKLSNkZWZpbmUgUkVUVVJOX1BUUlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBl
LCBjYWxsZXJUeXBlKSBjYXNlIF90YWdOYW1lOiByZXR1cm4gY2FsbGVlVHlwZTsKLSAgICBzd2l0
Y2ggKHRhZykgewotICAgICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQ
RSkKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZl
OwotICAgIH0KLSN1bmRlZiBSRVRVUk5fUFRSVEFHX1RZUEUKLSAgICByZXR1cm4gUHRyVGFnQ2Fs
bGVlVHlwZTo6TmF0aXZlOwotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCmluZGV4IDQ2NDViMDVjOTczNjUx
N2U3YWE1MDQ5YmU4NzZlZTQ4YjJlODIxOGYuLmRmOGI0MDIyNjZlMGUwMjAxOWFmMzVmNjhlOTFm
YWE3OGJlNzkzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q1B0clRhZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5o
CkBAIC0yNyw1MyArMjcsNDYgQEAKIAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNp
bmNsdWRlIDx3dGYvUHRyVGFnLmg+Ci0jaWYgRU5BQkxFKEpJVF9DQUdFKQotI2luY2x1ZGUgPFdl
YktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShK
SVRfQ0FHRSkKLWV4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogaml0Q2FnZVB0cih2
b2lkKiBwb2ludGVyLCB1aW50cHRyX3QgdGFnKTsKLSNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogdXNpbmcgUHRyVGFnID0gV1RGOjpQdHJUYWc7CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX1BU
UlRBRyh2KSBcCi0gICAgLyogQ2FsbGVlOk5hdGl2ZSBDYWxsZXI6Tm9uZSAqLyBcCisgICAgLyog
TmF0aXZlIE5vbmUgKi8gXAogICAgIHYoRE9NSklURnVuY3Rpb25QdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRGlzYXNzZW1i
bHlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9u
ZSkgXAogICAgIHYoUHV0VmFsdWVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRy
VGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAotICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOk5vbmUgKi8g
XAorICAgIC8qIEpJVCBOb25lICovIFwKICAgICB2KEIzQ29tcGlsYXRpb25QdHJUYWcsIFB0clRh
Z0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRXhlY3V0
YWJsZU1lbW9yeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBl
OjpOb25lKSBcCiAgICAgdihMaW5rQnVmZmVyUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQs
IFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKLSAgICB2KFlhcnI4Qml0UHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKLSAgICB2KFlhcnIxNkJp
dFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBc
Ci0gICAgdihZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQ
dHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCi0gICAgdihZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAotICAgIC8q
IENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5hdGl2ZSAqLyBcCisgICAgLyogTmF0aXZlIE5hdGl2ZSAq
LyBcCiAgICAgdihCeXRlY29kZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlUHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJv
YmVFeGVjdXRvclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJU
eXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlU3RhY2tJbml0aWFsaXphdGlvbkZ1bmN0aW9u
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2
ZSkgXAotICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOk5hdGl2ZSAqLyBcCisgICAgdihTbG93UGF0
aFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRp
dmUpIFwKKyAgICAvKiBKSVQgTmF0aXZlICovIFwKICAgICB2KE5hdGl2ZVRvSklUR2F0ZVB0clRh
ZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAg
ICB2KFlhcnJFbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJU
eXBlOjpOYXRpdmUpIFwKLSAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpKSVQgKi8gXAorICAg
IC8qIE5hdGl2ZSBKSVQgKi8gXAogICAgIHYoSG9zdEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoT3BlcmF0aW9u
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkg
XAotICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOkpJVCAqLyBcCisgICAgdihKSVRUb05hdGl2ZUdh
dGVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KSBcCisgICAgLyogSklUIEpJVCAqLyBcCiAgICAgdihFeGNlcHRpb25IYW5kbGVyUHRyVGFnLCBQ
dHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSklU
VGh1bmtQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KSBcCiAgICAgdihKSVRTdHViUm91dGluZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQ
dHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpTRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihKU0VudHJ5U2xvd1Bh
dGhQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBc
CiAgICAgdihKU0ludGVybmFsUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0Nh
bGxlclR5cGU6OkpJVCkgXAogICAgIHYoSlNTd2l0Y2hQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFbnRyeVB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9TUkV4
aXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBc
CiAgICAgdihXYXNtRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2Fs
bGVyVHlwZTo6SklUKSBcCisgICAgdihZYXJyOEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6
SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKKyAgICB2KFlhcnIxNkJpdFB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKKyAgICB2KFlhcnJN
YXRjaE9ubHk4Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAorICAgIHYoWWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVU
eXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoWWFyckJhY2t0cmFja1B0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKIAog
I2RlZmluZSBKU0NfREVDTEFSRV9QVFJUQUcobmFtZSwgdHlwZSwgdGFyZ2V0KSBXVEZfREVDTEFS
RV9QVFJUQUcobmFtZSkKQEAgLTExNSwyNiArMTA4LDE4IEBAIEZPUl9FQUNIX0pTQ19QVFJUQUco
SlNDX0RFQ0xBUkVfUFRSVEFHKQogI3ByYWdtYSB3YXJuaW5nKHBvcCkKICNlbmRpZgogCi1KU19F
WFBPUlRfUFJJVkFURSBQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFnKTsKLUpTX0VY
UE9SVF9QUklWQVRFIFB0clRhZ0NhbGxlZVR5cGUgY2FsbGVlVHlwZShQdHJUYWcpOwotCiB0ZW1w
bGF0ZTxQdHJUYWcgdGFnLCBQdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUsIFB0clRhZ0NhbGxl
clR5cGUgY2FsbGVyVHlwZSwgdHlwZW5hbWUgUHRyVHlwZT4KIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFB0clR5cGUgdGFnSlNDQ29kZVB0ckltcGwoUHRyVHlwZSBwdHIpCiB7CiAgICAgc3RhdGljX2Fz
c2VydChjYWxsZXJUeXBlID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgaWYgY29uc3Rl
eHByIChjYWxsZWVUeXBlID09IFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSkgewotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlv
blB0clRhZyk7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykK
LSAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRPcGVy
YXRpb24ocHRyKTsKLSAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rp
b25QdHJUYWcpCi0gICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2Vy
dElzSG9zdEZ1bmN0aW9uKHB0cik7Ci0jaWYgRU5BQkxFKEpJVF9DQUdFKQotICAgICAgICBpZiAo
T3B0aW9uczo6dXNlSklUQ2FnZSgpKQotICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQ
dHJUeXBlPihKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLm1hcChiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHB0cikpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJUeXBlPihqaXRDYWdlUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyKSwgdGFnKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVF9D
QUdFKQorICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyAhPSBKSVRUb05hdGl2ZUdhdGVQdHJUYWcp
IHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8fCB0
YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodGFn
ID09IE9wZXJhdGlvblB0clRhZykKKyAgICAgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0Ojpp
bnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7CisgICAgICAgICAgICBlbHNlIGlm
IGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKKyAgICAgICAgICAgICAgICBK
SVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9uKHB0cik7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8dGFn
PihwdHIpOwogfQpAQCAtMTQ0LDYyICsxMjksMTcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgUHRy
VHlwZSB1bnRhZ0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3Nl
cnQoY2FsbGVyVHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhw
ciAoY2FsbGVlVHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgc3Rh
dGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25Q
dHJUYWcpOwotICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0g
ICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0
aW9uKHB0cik7Ci0gICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9u
UHRyVGFnKQotICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0hvc3RGdW5jdGlvbihwdHIpOwotI2lmIEVOQUJMRShKSVRfQ0FHRSkKLSAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0d2lz
ZV9jYXN0PFB0clR5cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkubWFwKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4ocHRyKSkpID09IHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gcmVtb3ZlQ29k
ZVB0clRhZyhwdHIpOworICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyAhPSBKSVRUb05hdGl2ZUdh
dGVQdHJUYWcpIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0
clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKKyAgICAgICAgICAgIGlmIGNvbnN0
ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykKKyAgICAgICAgICAgICAgICBKSVRPcGVyYXRp
b25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7CisgICAgICAgICAg
ICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKKyAgICAgICAg
ICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9u
KHB0cik7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7Ci0gICAgICAgICAgICBQdHJUeXBlIHJlbW92ZWQgPSByZW1vdmVDb2RlUHRy
VGFnKHB0cik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgodGFnSlNDQ29kZVB0ckltcGw8
dGFnLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBlPihyZW1vdmVkKSkgPT0gcHRyKTsKLSAgICAgICAg
ICAgIHJldHVybiByZW1vdmVkOwotICAgICAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdF
KQogICAgIH0KICAgICByZXR1cm4gV1RGOjp1bnRhZ05hdGl2ZUNvZGVQdHJJbXBsPHRhZz4ocHRy
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KLWlubGluZSBQdHJUeXBlIHRhZ0Nv
ZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9pZCog
c3RhY2tQb2ludGVyKQotewotICAgIEFTU0VSVChwdHIpOwotICAgIFVOVVNFRF9QQVJBTShzdGFj
a1BvaW50ZXIpOwotI2lmIEVOQUJMRShKSVRfQ0FHRSkKLSAgICBpZiAoT3B0aW9uczo6dXNlSklU
Q2FnZSgpKQotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KEpTQ19KSVRfQ0FH
RShiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciksIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0YWNr
UG9pbnRlcikpKTsKLSNlbmRpZgotI2lmIENQVShBUk02NEUpCi0gICAgcmV0dXJuIHB0cmF1dGhf
c2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9j
b2RlLCBzdGFja1BvaW50ZXIpOwotI2Vsc2UKLSAgICByZXR1cm4gcHRyOwotI2VuZGlmCi19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+Ci1pbmxpbmUgUHRyVHlwZSB1bnRhZ0NvZGVQdHJX
aXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9pZCogc3RhY2tQ
b2ludGVyKQotewotICAgIEFTU0VSVChwdHIpOwotICAgIFVOVVNFRF9QQVJBTShzdGFja1BvaW50
ZXIpOwotI2lmIEVOQUJMRShKSVRfQ0FHRSkKLSAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgp
KSB7Ci0gICAgICAgIFB0clR5cGUgdW5jYWdlZCA9IHJlbW92ZUNvZGVQdHJUYWcocHRyKTsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxs
KHVuY2FnZWQsIHN0YWNrUG9pbnRlcikgPT0gcHRyKTsKLSAgICAgICAgcmV0dXJuIHVuY2FnZWQ7
Ci0gICAgfQotI2VuZGlmCi0jaWYgQ1BVKEFSTTY0RSkKLSAgICByZXR1cm4gX19idWlsdGluX3B0
cmF1dGhfYXV0aChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIHN0YWNr
UG9pbnRlcik7Ci0jZWxzZQotICAgIHJldHVybiBwdHI7Ci0jZW5kaWYKLX0KLQogI2lmIENQVShB
Uk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogdm9pZCBpbml0aWFsaXplUHRyVGFn
TG9va3VwKCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWF0Y2hSZXN1bHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVz
dWx0LmgKaW5kZXggZjMwNWU0YTE2NGQwMWZmYjFmODFjNzllYjVlNDlmMDQ1YjgxODVkZi4uYWRk
MjY0ZTkwOTc1YjI2NWZkNWJlMTBmMjYzMmZkNzVlMjg2YzgxYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCkBAIC0zNCwxMCArMzQsNyBAQCBzdHJ1Y3Qg
TWF0Y2hSZXN1bHQ7CiAjaWYgQ1BVKEFERFJFU1MzMikKIHVzaW5nIEVuY29kZWRNYXRjaFJlc3Vs
dCA9IHVpbnQ2NF90OwogI2Vsc2UKLXN0cnVjdCBFbmNvZGVkTWF0Y2hSZXN1bHQgewotICAgIHNp
emVfdCBzdGFydDsKLSAgICBzaXplX3QgZW5kOwotfTsKK3VzaW5nIEVuY29kZWRNYXRjaFJlc3Vs
dCA9IE1hdGNoUmVzdWx0OwogI2VuZGlmCiAKIHN0cnVjdCBNYXRjaFJlc3VsdCB7CkBAIC01OSwx
MiArNTYsNiBAQCBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAgICAgICAsIGVuZChiaXR3aXNlX2Nh
c3Q8TWF0Y2hSZXN1bHQ+KG1hdGNoKS5lbmQpCiAgICAgewogICAgIH0KLSNlbHNlCi0gICAgQUxX
QVlTX0lOTElORSBNYXRjaFJlc3VsdChFbmNvZGVkTWF0Y2hSZXN1bHQgbWF0Y2gpCi0gICAgICAg
IDogc3RhcnQobWF0Y2guc3RhcnQpCi0gICAgICAgICwgZW5kKG1hdGNoLmVuZCkKLSAgICB7Ci0g
ICAgfQogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBNYXRjaFJlc3VsdCBmYWls
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCA5NTg5
ODljOTIzYTRmYWNiZjY1NzVjZGRmOWYxMmVkNWVhZTE4ZjI4Li4wZDJmNWFjZjc5Y2RmNTc0OThl
NmE3M2MwNjcyZDZkZDRiZjg4NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcApAQCAtNTAsMTEgKzUwLDYgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoSklUX0NBR0UpCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25z
L0pJVENhZ2VBZGRpdGlvbnMuaD4KLSNpbmNsdWRlIDxtYWNoaW5lL2NwdV9jYXBhYmlsaXRpZXMu
aD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAg
LTM5Nyw3ICszOTIsNiBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQWxsSklUT3B0aW9ucygpCiAgICAg
T3B0aW9uczo6dXNlT01HSklUKCkgPSBmYWxzZTsKICAgICBPcHRpb25zOjp1c2VET01KSVQoKSA9
IGZhbHNlOwogICAgIE9wdGlvbnM6OnVzZVJlZ0V4cEpJVCgpID0gZmFsc2U7Ci0gICAgT3B0aW9u
czo6dXNlSklUQ2FnZSgpID0gZmFsc2U7CiB9CiAKIHZvaWQgT3B0aW9uczo6cmVjb21wdXRlRGVw
ZW5kZW50T3B0aW9ucygpCkBAIC0xMTIwLDEwICsxMTE0LDQgQEAgYm9vbCBPcHRpb25SZWFkZXI6
Ok9wdGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotI2lmIEVOQUJMRShKSVRfQ0FHRSkgJiYgZGVmaW5lZChfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTUwMDAwCi1ib29sIGNhblVzZUpJVENhZ2UoKSB7IHJldHVybiBKU0NfSklUX0NBR0Vf
VkVSU0lPTigpOyB9Ci0jZWxzZQotYm9vbCBjYW5Vc2VKSVRDYWdlKCkgeyByZXR1cm4gZmFsc2U7
IH0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDIyNWUyMjQ4M2QwOWFjMjAzYmNiZWZlNWNiYThk
NzUyZjBhZmUwNzIuLmJlODU5ZWE5MWRjYWU4YzIyNzE5MDNlYTNiMDFmNmNkMGQ1MWY1OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNDMsOCAr
NDMsNiBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IHRy
dWU7CiBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNl
OwogI2VuZGlmCiAKLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwotCiAv
LyBIb3cgZG8gSlNDIFZNIG9wdGlvbnMgd29yaz8KIC8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PQogLy8gVGhlIEZPUl9FQUNIX0pTQ19PUFRJT04oKSBtYWNybyBiZWxvdyBkZWZpbmVzIGEg
bGlzdCBvZiBhbGwgSlNDIG9wdGlvbnMgaW4gdXNlLApAQCAtNTIyLDcgKzUyMCw2IEBAIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoVW5zaWduZWQsIHNlZWRG
b3JMSUNNRnV6emVyLCA0MjQyNDIsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoRG91YmxlLCBh
bGxvd0hvaXN0aW5nTElDTVByb2JhYmlsaXR5LCAwLjUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IHYoQm9vbCwgZXhwb3NlQ3VzdG9tU2V0dGVyc09uR2xvYmFsT2JqZWN0Rm9yVGVzdGluZywgZmFs
c2UsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoQm9vbCwgdXNlSklUQ2FnZSwgY2FuVXNlSklU
Q2FnZSgpLCBOb3JtYWwsIG51bGxwdHIpIFwKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAg
ICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRo
cy5jcHAKaW5kZXggOTA2MjExMjFhODFlMzFiNTIxNzViNTk3ZDliYzQxMjY0ODY3NjMzYS4uOWM0
YjU5NTQ2ZTZmOTYwYWI3NThlM2E1M2YyYjYxZGJiNjc0YzIxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZp
bmUgV0FTTV9DQUxMX1JFVFVSTih0YXJnZXRJbnN0YW5jZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdl
dFRhZykgZG8geyBcCi0gICAgICAgIFdBU01fUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxU
YXJnZXRUYWcsIEpTRW50cnlTbG93UGF0aFB0clRhZz4oY2FsbFRhcmdldCkpLCB0YXJnZXRJbnN0
YW5jZSk7IFwKKyAgICAgICAgV0FTTV9SRVRVUk5fVFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdl
dFRhZywgU2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwgdGFyZ2V0SW5zdGFuY2UpOyBcCiAg
ICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgQ09ERV9CTE9DSygpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggOTRkMzAyYWVhZmQ1MTZhNWIzZmM3ZjRiZjVm
Nzk1YTNmNTZjYTc2Ny4uMjJiZjY2ZDhjODIyZGE5MWUwMzE4MDZhMmY2OWQzNmU0YmQ4ZjdiZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTQwLDEwICs0MCw2IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKLSNpZiBDUFUoQVJNNjQpCi1K
U0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0X3ZtRW50cnlUb1lhcnJKSVRBZnRl
ciwgdm1FbnRyeVRvWWFyckpJVEFmdGVyKTsKLSNlbmRpZgotCiBNYXRjaGluZ0NvbnRleHRIb2xk
ZXI6Ok1hdGNoaW5nQ29udGV4dEhvbGRlcihWTSYgdm0sIFlhcnJDb2RlQmxvY2sqIHlhcnJDb2Rl
QmxvY2ssIE1hdGNoRnJvbSBtYXRjaEZyb20pCiAgICAgOiBtX3ZtKHZtKQogewpAQCAtMzc1MCw3
ICszNzQ2LDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHB1c2goWDg2UmVnaXN0ZXJzOjpl
Y3gpOwogI2VuZGlmCiAjZWxpZiBDUFUoQVJNNjQpCisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mo
KTsKICAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpIHsKKyAgICAgICAgICAgIHB1
c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwogICAgICAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoMHgxMDAwMCksIHN1cHBsZW1lbnRhcnlQbGFuZXNCYXNlKTsKICAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4ZDgwMCksIGxlYWRpbmdTdXJyb2dhdGVUYWcp
OwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHhkYzAwKSwgdHJhaWxpbmdTdXJyb2dh
dGVUYWcpOwpAQCAtMzgwNSw3ICszODAzLDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAg
ICBwb3AoWDg2UmVnaXN0ZXJzOjplYngpOwogICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnAp
OwogI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICAvLyBEbyBub3RoaW5nCisgICAgICAgIGlmICht
X2RlY29kZVN1cnJvZ2F0ZVBhaXJzKQorICAgICAgICAgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKICNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBw
b3AoQVJNUmVnaXN0ZXJzOjpyOCk7CiAgICAgICAgIHBvcChBUk1SZWdpc3RlcnM6OnI2KTsKQEAg
LTM4MTQsMTMgKzM4MTMsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbGlmIENQVShNSVBTKQogICAg
ICAgICAvLyBEbyBub3RoaW5nCiAjZW5kaWYKLQotI2lmIENQVShBUk02NCkKLSAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVy
YXRpb25QdHJUYWc+KCZ2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpKSwgcmVnVDApOwotICAgICAgICBm
YXJKdW1wKHJlZ1QwLCBPcGVyYXRpb25QdHJUYWcpOwotI2Vsc2UKICAgICAgICAgcmV0KCk7Ci0j
ZW5kaWYKICAgICB9CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApp
bmRleCAxNWI3YmQ2YTI2ZmY2ZTRiMDAxMjEyOTg5ZThmZGNlZWE1YTRiOGFiLi42NjQyOGUwNjYz
ZjMzMjA5MTc3ODFkYmI5ZDBjNzMwZDJiNmQ2ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5oCkBAIC03Niw5ICs3Niw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLWV4dGVy
biAiQyIgRW5jb2RlZE1hdGNoUmVzdWx0IHZtRW50cnlUb1lhcnJKSVQoY29uc3Qgdm9pZCogaW5w
dXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGlu
Z0NvbnRleHRIb2xkZXIqIG1hdGNoaW5nQ29udGV4dCwgY29uc3Qgdm9pZCogY29kZVB0cik7Ci1l
eHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvWWFyckpJVEFmdGVyKHZvaWQpOwotCiBjbGFzcyBZYXJy
Q29kZUJsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShZYXJyQ29kZUJsb2NrKTsKQEAgLTExMiw0MSArMTA5LDI1IEBAIHB1YmxpYzoK
ICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYg
bWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhCaXRDb2RlKCkpOwot
I2lmIENQVShBUk02NCkKLSAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHZtRW50cnlUb1lhcnJK
SVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgJm1hdGNoaW5nQ29udGV4dCwgcmV0YWdD
b2RlUHRyPFlhcnI4Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVmOC5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpKTsKLSNlbHNlCiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1
bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZTgsIFlhcnI4Qml0UHRyVGFnPihtX3JlZjguY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1h
dGNoaW5nQ29udGV4dCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0
ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENvZGUoKSk7Ci0jaWYgQ1BVKEFSTTY0KQotICAgICAg
ICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0
aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFycjE2Qml0UHRyVGFn
LCBZYXJyRW50cnlQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7
Ci0jZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFy
ckpJVENvZGUxNiwgWWFycjE2Qml0UHRyVGFnPihtX3JlZjE2LmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBtYXRjaGluZ0NvbnRleHQpKTsK
LSNlbmRpZgogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgTENoYXIqIGlu
cHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBNYXRjaGluZ0NvbnRleHRIb2xk
ZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZU1h
dGNoT25seSgpKTsKLSNpZiBDUFUoQVJNNjQpCi0gICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2
bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCAmbWF0Y2hpbmdD
b250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25seThCaXRQdHJUYWcsIFlhcnJFbnRyeVB0
clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSkpOwotI2Vsc2UK
ICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2Rl
TWF0Y2hPbmx5OCwgWWFyck1hdGNoT25seThCaXRQdHJUYWc+KG1fbWF0Y2hPbmx5OC5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNo
aW5nQ29udGV4dCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShj
b25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE1hdGNo
aW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGhhczE2Qml0Q29kZU1hdGNoT25seSgpKTsKLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICByZXR1
cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVs
bHB0ciwgJm1hdGNoaW5nQ29udGV4dCwgcmV0YWdDb2RlUHRyPFlhcnJNYXRjaE9ubHkxNkJpdFB0
clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21hdGNoT25seTE2LmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpKSkpOwotI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0
aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5MTYsIFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4o
bV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBs
ZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOwotI2VuZGlmCiAgICAgfQogCiAjaWYg
RU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT1NBbGxv
Y2F0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKaW5kZXggMjY4OGE0ZWZkZjgx
N2RiN2FmNjY2OTg3NWRmMjNhNzk4OTM2YWExNC4uNzcxMzYyYjkyYTJlNTIyOTM5ODRlMTE2NTFi
ZDJhOTM5M2Q5ODNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICAvLyByZWxlYXNlRGVjb21taXR0ZWQgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lv
biBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1l
bW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBkZWNvbW1pdHRlZCBzdGF0ZS4gcmVzZXJ2
ZVVuY29tbWl0dGVkIHJldHVybnMgdG8KICAgICAvLyB5b3UgbWVtb3J5IHRoYXQgaXMgemVyb2Vk
LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVk
KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29s
IGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlLCBib29sIGlu
Y2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBi
b29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVk
ZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7CiAKICAgICAvLyBUaGVzZSBtZXRo
b2RzIGFyZSBzeW1tZXRyaWM7IHRoZXkgY29tbWl0IG9yIGRlY29tbWl0IGEgcmVnaW9uIG9mIFZN
ICh1bmNvbW1pdHRlZCBWTSBzaG91bGQKQEAgLTU1LDI3ICs1NSwyNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRl
cyBWTSBpbiBhbiBjb21taXR0ZWQgc3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNo
b3VsZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJl
c2VydmF0aW9uLAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEg
Y29tbWl0dGVkIHN0YXRlLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVz
ZXJ2ZUFuZENvbW1pdChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxl
ID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBm
YWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtu
b3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwg
Ym9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgZGVjb21t
aXRBbmRSZWxlYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVhc2UsIGFi
b3ZlIC0gaG93ZXZlciByYXRoZXIgdGhhbgogICAgIC8vIGNvbW1pdHRpbmcvZGVjb21taXR0aW5n
IHRoZSBlbnRpcmUgcmVnaW9uIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBhbGxvdyBhIHN1YnJlZ2lv
biB0byBiZQogICAgIC8vIHNwZWNpZmllZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0
U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4
ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2Vy
dmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3Jp
dGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFsbG9j
YXRlIGFuIGV4aXN0aW5nLCBjb21taXR0ZWQgYWxsb2NhdGlvbi4KICAgICAvLyBUaGUgcHJpb3Ig
YWxsb2NhdGlvbiBtdXN0IGJlIGZ1bGx5IGNvbWl0dGVkLCBhbmQgdGhlIG5ldyBzaXplIHdpbGwg
YWxzbyBiZSBmdWxseSBjb21taXR0ZWQuCiAgICAgLy8gVGhpcyBpbnRlcmZhY2UgaXMgcHJvdmlk
ZWQgc2luY2UgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIG9wdGltaXplIHRoaXMgb3BlcmF0aW9uIG9u
IHNvbWUgcGxhdGZvcm1zLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQq
IHJlYWxsb2NhdGVDb21taXR0ZWQoVCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwg
VXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFi
bGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgVCog
cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBV
c2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlKTsKIAogICAgIC8vIEhpbnQgdG8gdGhlIE9TIHRoYXQgYW4gYWRkcmVzcyByYW5n
ZSBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgYWNjZXNzZWQgYW55dGltZSBzb29uLgogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbih2b2lkKiwg
c2l6ZV90KTsKIH07CiAKLWlubGluZSB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1p
dChzaXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBVc2FnZSB1c2FnZSwgYm9v
bCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGppdENhZ2VFbmFibGVkKQoraW5saW5l
IHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwg
c2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1
dGFibGUpCiB7Ci0gICAgdm9pZCogYmFzZSA9IHJlc2VydmVVbmNvbW1pdHRlZChyZXNlcnZlU2l6
ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCk7CisgICAgdm9p
ZCogYmFzZSA9IHJlc2VydmVVbmNvbW1pdHRlZChyZXNlcnZlU2l6ZSwgdXNhZ2UsIHdyaXRhYmxl
LCBleGVjdXRhYmxlKTsKICAgICBjb21taXQoYmFzZSwgY29tbWl0U2l6ZSwgd3JpdGFibGUsIGV4
ZWN1dGFibGUpOwogICAgIHJldHVybiBiYXNlOwogfQpAQCAtODYsOSArODYsOSBAQCBpbmxpbmUg
dm9pZCBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIHJlbGVhc2VCYXNlLCBz
aXplX3QgcmVsZWFzZVNpegogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQqIE9T
QWxsb2NhdG9yOjpyZWFsbG9jYXRlQ29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXpl
LCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0
YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkKK2lubGluZSBUKiBPU0FsbG9jYXRvcjo6cmVhbGxv
Y2F0ZUNvbW1pdHRlZChUKiBvbGRCYXNlLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUs
IFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCiB7Ci0gICAgdm9p
ZCogbmV3QmFzZSA9IHJlc2VydmVBbmRDb21taXQobmV3U2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBl
eGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHJlc2VydmVB
bmRDb21taXQobmV3U2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKICAgICBtZW1j
cHkobmV3QmFzZSwgb2xkQmFzZSwgc3RkOjptaW4ob2xkU2l6ZSwgbmV3U2l6ZSkpOwogICAgIGRl
Y29tbWl0QW5kUmVsZWFzZShvbGRCYXNlLCBvbGRTaXplKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VCo+KG5ld0Jhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0
aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAppbmRleCA0OTRiZjA1ZTAw
MTcxNTM4NTFlYjEwYTU1MzNjMjJmYzY1Y2I3NzJlLi5hMmFlZTg4NGU5ODY0Y2Q5MzIxYTZiNDk0
ZTllNjk4ODI0NDMxMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRp
b24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaApAQCAtNTUsNyArNTUs
MTIgQEAgbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUg
UGFnZUJsb2NrIHsKIHB1YmxpYzoKLSAgICBQYWdlUmVzZXJ2YXRpb24oKSA9IGRlZmF1bHQ7Cisg
ICAgUGFnZVJlc2VydmF0aW9uKCkKKyAgICAgICAgOiBtX2NvbW1pdHRlZCgwKQorICAgICAgICAs
IG1fd3JpdGFibGUoZmFsc2UpCisgICAgICAgICwgbV9leGVjdXRhYmxlKGZhbHNlKQorICAgIHsK
KyAgICB9CiAKICAgICB1c2luZyBQYWdlQmxvY2s6OmJhc2U7CiAgICAgdXNpbmcgUGFnZUJsb2Nr
OjpzaXplOwpAQCAtODgsMjIgKzkzLDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29t
bWl0dGVkOwogICAgIH0KIAotICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZShzaXpl
X3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25V
c2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29s
IGppdENhZ2VFbmFibGVkID0gZmFsc2UpCisgICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNl
cnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6
VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFs
c2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAg
IHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBmYWxzZSks
IHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpOworICAg
ICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0
ZWQoc2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKSwgc2l6ZSwgd3JpdGFibGUsIGV4
ZWN1dGFibGUsIGZhbHNlKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlv
biByZXNlcnZlV2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1
c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBi
b29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKQorICAg
IHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXpl
LCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBi
b29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UpCiAgICAgewogICAg
ICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVz
ZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplICsgcGFnZVNpemUo
KSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUp
LCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpOworICAg
ICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0
ZWQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRy
dWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMoc2l6ZV90
IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNh
Z2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBq
aXRDYWdlRW5hYmxlZCA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2
ZUFuZENvbW1pdFdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2Ug
dXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxp
Z25lZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6
OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1
dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZh
dGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIs
IHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVj
dXRhYmxlLCB0cnVlKTsKICAgICB9CiAKICAgICB2b2lkIGRlYWxsb2NhdGUoKQpAQCAtMTIyLDcg
KzEyNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUGFnZVJlc2VydmF0aW9u
KHZvaWQqIGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUs
IGJvb2wsIGJvb2wgaGFzR3VhcmRQYWdlcykKKyAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFz
ZSwgc2l6ZV90IHNpemUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBoYXNH
dWFyZFBhZ2VzKQogICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplLCBoYXNHdWFyZFBhZ2Vz
KQogICAgICAgICAsIG1fY29tbWl0dGVkKDApCiAgICAgICAgICwgbV93cml0YWJsZSh3cml0YWJs
ZSkKQEAgLTEzMCw5ICsxMzUsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBzaXpl
X3QgbV9jb21taXR0ZWQgeyAwIH07Ci0gICAgYm9vbCBtX3dyaXRhYmxlIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1fZXhlY3V0YWJsZSB7IGZhbHNlIH07CisgICAgc2l6ZV90IG1fY29tbWl0dGVkOwor
ICAgIGJvb2wgbV93cml0YWJsZTsKKyAgICBib29sIG1fZXhlY3V0YWJsZTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDc2YWQyMzU5YTFhN2IzNGVmODk5ZDQyYjJlYzZlNGQx
MGIzZGMyOGQuLjBkNjY2NDE3ODZlYmU5NDY3YWUwNTk2ZDUwNzdhMTYwNTk3ZTgwN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtODg4LDEwICs4ODgsMTAgQEAKICNlcnJvciAiRU5BQkxF
KFdITFNMX0NPTVBJTEVSKSByZXF1aXJlcyBFTkFCTEUoV0VCR1BVKSIKICNlbmRpZgogCi0jaWYg
T1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAmJiAoKFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYm
IENQVShBUk02NEUpKSkKLSNkZWZpbmUgRU5BQkxFX0pJVF9DQUdFIDEKKyNpZiBDUFUoQVJNNjQp
ICYmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQogI2VuZGlmCiAK
LSNpZiBPUyhEQVJXSU4pICYmIENQVShBRERSRVNTNjQpICYmIEVOQUJMRShKSVQpICYmIChFTkFC
TEUoSklUX0NBR0UpIHx8IEFTU0VSVF9FTkFCTEVEKQorI2lmIE9TKERBUldJTikgJiYgRU5BQkxF
KEpJVCkgJiYgQVNTRVJUX0VOQUJMRUQKICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJT05fVkFM
SURBVElPTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IGZjZTllZGExMzNjOWJiMzE2
NzBlMzJlOWRmM2EwN2E0YTJkYzM4Y2QuLjIyZjQ2MmIyYTY0ZGFiZjhjMDg0OWE5MjBkZWFiZDlh
MWMxZTViZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApAQCAtMzA4LDcgKzMwOCwzIEBACiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCAxMTAwMDApCiAjZGVmaW5lIFVTRV9DVEZPTlRHRVRBRFZBTkNFU19XT1JLQVJP
VU5EIDEKICNlbmRpZgotCi0jaWYgQ1BVKEFSTTY0KSAmJiBDUFUoQUREUkVTUzY0KQotI2RlZmlu
ZSBVU0VfSlVNUF9JU0xBTkRTIDEKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UHRyVGFnLmggYi9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaAppbmRleCBhYzkyZWMzMTk0ZGZhYzg0
YzE1M2ZiNjZmYWZlZWEzY2U5NjA0ZjRkLi41YTQyMTcxMTFkNWZhOTEyMTc2MGEyNDIxZTAyMGI1
ZjFkZWI3OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QdHJUYWcuaApAQCAtMzQ0LDcgKzM0NCw2IEBAIGJvb2wgaXNUYWdnZWRXaXRo
KFB0clR5cGUgdmFsdWUpCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnLCB0eXBlbmFtZSBQdHJUeXBlPgog
dm9pZCBhc3NlcnRJc1RhZ2dlZFdpdGgoUHRyVHlwZSB2YWx1ZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0odmFsdWUpOwogICAgIFdURl9QVFJUQUdfQVNTRVJUKFB0clRhZ0FjdGlvbjo6RGVidWdBc3Nl
cnQsIHZhbHVlLCB0YWcsIGlzVGFnZ2VkV2l0aDx0YWc+KHZhbHVlKSk7CiB9CiAKQEAgLTQ1MCw2
ICs0NDksMjAgQEAgaW5saW5lIFQqIHJldGFnQXJyYXlQdHIoVCogcHRyLCBzaXplX3Qgb2xkTGVu
Z3RoLCBzaXplX3QgbmV3TGVuZ3RoKQogICAgIHJldHVybiBwdHJhdXRoX2F1dGhfYW5kX3Jlc2ln
bihwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEsIG9sZExlbmd0aCwgcHRy
YXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfZGF0YSwgbmV3TGVuZ3RoKTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgUHRyVHlwZT4KK2lubGluZSBQdHJUeXBlIHRhZ0NvZGVQdHJXaXRoU3RhY2tQ
b2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9pZCogc3RhY2tQb2ludGVyKQor
eworICAgIEFTU0VSVChwdHIpOworICAgIHJldHVybiBwdHJhdXRoX3NpZ25fdW5hdXRoZW50aWNh
dGVkKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0
PFB0clRhZz4oc3RhY2tQb2ludGVyKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+
CitpbmxpbmUgUHRyVHlwZSB1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQ
dHJUeXBlIHB0ciwgY29uc3Qgdm9pZCogc3RhY2tQb2ludGVyKQoreworICAgIEFTU0VSVChwdHIp
OworICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9hdXRoKHB0ciwgcHRyYXV0aF9rZXlfcHJv
Y2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2ludGVyKSk7
Cit9CisKIHRlbXBsYXRlIDxQdHJUYWcgdGFnLCB0eXBlbmFtZSBJbnRUeXBlPgogaW5saW5lIElu
dFR5cGUgdGFnSW50KEludFR5cGUgcHRySW50KQogewpAQCAtNTA3LDYgKzUyMCwxMiBAQCBpbmxp
bmUgVCogcmV0YWdBcnJheVB0cihUKiBwdHIsIHNpemVfdCwgc2l6ZV90KQogICAgIHJldHVybiBw
dHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4KK2lubGluZSBQdHJUeXBl
IHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qg
dm9pZCopIHsgcmV0dXJuIHB0cjsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+
CitpbmxpbmUgUHRyVHlwZSB1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQ
dHJUeXBlIHB0ciwgY29uc3Qgdm9pZCopIHsgcmV0dXJuIHB0cjsgfQorCiB0ZW1wbGF0ZSA8UHRy
VGFnLCB0eXBlbmFtZSBJbnRUeXBlPgogaW5saW5lIEludFR5cGUgdGFnSW50KEludFR5cGUgcHRy
SW50KQogewpAQCAtNTUzLDcgKzU3Miw5IEBAIHVzaW5nIFdURjo6cmV0YWdBcnJheVB0cjsKIHVz
aW5nIFdURjo6cmVtb3ZlQXJyYXlQdHJUYWc7CiAKIHVzaW5nIFdURjo6dGFnQ29kZVB0cjsKK3Vz
aW5nIFdURjo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsOwogdXNpbmcgV1RG
Ojp1bnRhZ0NvZGVQdHI7Cit1c2luZyBXVEY6OnVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJG
b3JKSVRDYWxsOwogdXNpbmcgV1RGOjpyZXRhZ0NvZGVQdHI7CiB1c2luZyBXVEY6OnJlbW92ZUNv
ZGVQdHJUYWc7CiB1c2luZyBXVEY6OnRhZ0NGdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgv
T1NBbGxvY2F0b3JQT1NJWC5jcHAKaW5kZXggNmNlZmQyZWUyZDMxMDVjMmQ0MDQ4NWY2OTY1ZmVi
YTg4NDViNDMzZS4uNDQ1NDA1OWM1MTVkMmE0MTJiNDMyZDA3MTQ2Y2Y2ZjAxMWQ0NzYwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKQEAgLTMxLDI3ICszMSwx
NCBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9j
ay5oPgogCi0jaWYgRU5BQkxFKEpJVF9DQUdFKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9K
SVRDYWdlQWRkaXRpb25zLmg+Ci0jZWxzZSAvLyBFTkFCTEUoSklUX0NBR0UpCi0jaWYgT1MoREFS
V0lOKQotI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUIE1BUF9KSVQKLSNkZWZpbmUgTUFQ
X0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIE1BUF9KSVQKLSNlbHNlIC8vIE9TKERB
UldJTikKLSNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCAwCi0jZGVmaW5lIE1BUF9FWEVD
VVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSAwCi0jZW5kaWYgLy8gT1MoREFSV0lOKQotI2Vu
ZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKLQogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQqIE9TQWxs
b2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9v
bCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGppdENhZ2VFbmFibGVkLCBib29sIGlu
Y2x1ZGVzR3VhcmRQYWdlcykKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQo
c2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxl
LCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKIHsKICNpZiBPUyhMSU5VWCkKICAgICBVTlVTRURf
UEFSQU0odXNhZ2UpOwogICAgIFVOVVNFRF9QQVJBTSh3cml0YWJsZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGV4ZWN1dGFibGUpOwotICAgIFVOVVNFRF9QQVJBTShqaXRDYWdlRW5hYmxlZCk7CiAgICAg
VU5VU0VEX1BBUkFNKGluY2x1ZGVzR3VhcmRQYWdlcyk7CiAKICAgICB2b2lkKiByZXN1bHQgPSBt
bWFwKDAsIGJ5dGVzLCBQUk9UX05PTkUsIE1BUF9OT1JFU0VSVkUgfCBNQVBfUFJJVkFURSB8IE1B
UF9BTk9OLCAtMSwgMCk7CkBAIC01OSw3ICs0Niw3IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNl
cnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwK
ICAgICAgICAgQ1JBU0goKTsKICAgICBtYWR2aXNlKHJlc3VsdCwgYnl0ZXMsIE1BRFZfRE9OVE5F
RUQpOwogI2Vsc2UKLSAgICB2b2lkKiByZXN1bHQgPSByZXNlcnZlQW5kQ29tbWl0KGJ5dGVzLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBpbmNsdWRlc0d1YXJk
UGFnZXMpOworICAgIHZvaWQqIHJlc3VsdCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdl
LCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaW5jbHVkZXNHdWFyZFBhZ2VzKTsKICNpZiBIQVZFKE1B
RFZfRlJFRV9SRVVTRSkKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIC8vIFRvIHN1cHBvcnQg
dGhlICJyZXNlcnZlIHRoZW4gY29tbWl0IiBtb2RlbCwgd2UgaGF2ZSB0byBpbml0aWFsbHkgZGVj
b21taXQuCkBAIC03Miw3ICs1OSw3IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21t
aXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXpl
X3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJv
b2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQordm9pZCogT1NBbGxv
Y2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3
cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKIHsKICAg
ICAvLyBBbGwgUE9TSVggcmVzZXJ2YXRpb25zIHN0YXJ0IG91dCBsb2dpY2FsbHkgY29tbWl0dGVk
LgogICAgIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEOwpAQCAtODMsMTQgKzcwLDggQEAgdm9p
ZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2Fn
ZSwgYm9vbCB3cml0YWJsZSwgYm8KIAogICAgIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwgTUFQ
X0FOT047CiAjaWYgT1MoREFSV0lOKQotICAgIGlmIChleGVjdXRhYmxlKSB7Ci0gICAgICAgIGlm
IChqaXRDYWdlRW5hYmxlZCkKLSAgICAgICAgICAgIGZsYWdzIHw9IE1BUF9FWEVDVVRBQkxFX0ZP
Ul9KSVRfV0lUSF9KSVRfQ0FHRTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmxhZ3MgfD0g
TUFQX0VYRUNVVEFCTEVfRk9SX0pJVDsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShq
aXRDYWdlRW5hYmxlZCk7CisgICAgaWYgKGV4ZWN1dGFibGUpCisgICAgICAgIGZsYWdzIHw9IE1B
UF9KSVQ7CiAjZW5kaWYKIAogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0
b3JXaW4uY3BwCmluZGV4IDZkNTJjNjYyZGYwNmY5NDgxYTkzMzVhN2VkMmI0NTE0MzY2NDY0ZGIu
LjlkNmMwYWE3NDExMzZjYzhhODQ2ZDA0MTJhOTIxYmRhMmFjMzhiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL09TQWxsb2NhdG9yV2luLmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgaW5saW5lIERX
T1JEIHByb3RlY3Rpb24oYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQogICAgICAgICAo
d3JpdGFibGUgPyBQQUdFX1JFQURXUklURSA6IFBBR0VfUkVBRE9OTFkpOwogfQogCi12b2lkKiBP
U0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wg
d3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKK3ZvaWQqIE9TQWxsb2NhdG9y
OjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwg
Ym9vbCBleGVjdXRhYmxlLCBib29sKQogewogICAgIHZvaWQqIHJlc3VsdCA9IFZpcnR1YWxBbGxv
YyhudWxscHRyLCBieXRlcywgTUVNX1JFU0VSVkUsIHByb3RlY3Rpb24od3JpdGFibGUsIGV4ZWN1
dGFibGUpKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCogT1NBbGxv
Y2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRh
YmxlLCBib29sIGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkKiBPU0FsbG9jYXRvcjo6
cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29s
IGV4ZWN1dGFibGUsIGJvb2wsIGJvb2wpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENv
bW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUs
IGJvb2wpCiB7CiAgICAgdm9pZCogcmVzdWx0ID0gVmlydHVhbEFsbG9jKG51bGxwdHIsIGJ5dGVz
LCBNRU1fUkVTRVJWRSB8IE1FTV9DT01NSVQsIHByb3RlY3Rpb24od3JpdGFibGUsIGV4ZWN1dGFi
bGUpKTsKICAgICBpZiAoIXJlc3VsdCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>