<?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>151734</bug_id>
          
          <creation_ts>2015-12-01 17:33:17 -0800</creation_ts>
          <short_desc>REGRESSION(r192914): JSC tests for this change are failing on 32 and 64-bit bots (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2015-12-01 17:37:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150792</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>1145479</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-01 17:33:17 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/192914 broke the build:
JSC tests for this change are failing on 32 and 64-bit bots (Requested by ryanhaddad on #webkit).

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

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145482</commentid>
    <comment_count>2</comment_count>
      <attachid>266417</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-01 17:37:35 -0800</bug_when>
    <thetext>Comment on attachment 266417
ROLLOUT of r192914

Clearing flags on attachment: 266417

Committed r192935: &lt;http://trac.webkit.org/changeset/192935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145483</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-01 17:37:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266417</attachid>
            <date>2015-12-01 17:34:08 -0800</date>
            <delta_ts>2015-12-01 17:37:35 -0800</delta_ts>
            <desc>ROLLOUT of r192914</desc>
            <filename>bug-151734-20151201173345.patch</filename>
            <type>text/plain</type>
            <size>322188</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NWI3MGNmMDMwMmE0YWZlNWRhZDcwZDhkNTZjYzA2MGMyOWM3ZmIyLi44NGUwMDA5NTk0NDgzOWM5
YWU4MWMzNTU3NDY0YzNkNzJjODExY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0xMi0wMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5MjkxNC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTczNAorCisgICAg
ICAgIEpTQyB0ZXN0cyBmb3IgdGhpcyBjaGFuZ2UgYXJlIGZhaWxpbmcgb24gMzIgYW5kIDY0LWJp
dCBib3RzCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKwor
ICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIltFUzZdIEltcGxlbWVudCBM
TEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQKKyAgICAgICAgZW5h
YmxlIHRoaXMgZmVhdHVyZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDc5MgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xOTI5MTQKKwogMjAxNS0xMi0wMSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cG90dGVyODhAZ21h
aWwuY29tPgogCiAgICAgICAgIFtKU0NdIHN1cHBvcnQgQ292ZXJJbml0aWFsaXplZE5hbWUgaW4g
bmVzdGVkIEFzc2lnbm1lbnRQYXR0ZXJucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwMWVmYWY4MzQ4Y2IwYjlmMjM0M2U0Njdh
NWUwODRmOWE3OTUwMTkzLi42NTlkODg3MmI2YjIzMWE5NzdiNTQwZWQ5YjUyZDFiNDRhNGE1M2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTEyLTAxICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTky
OTE0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NzM0CisKKyAgICAgICAgSlNDIHRlc3RzIGZvciB0aGlzIGNoYW5nZSBhcmUgZmFpbGluZyBvbiAz
MiBhbmQgNjQtYml0IGJvdHMKKyAgICAgICAgKFJlcXVlc3RlZCBieSByeWFuaGFkZGFkIG9uICN3
ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW0VTNl0g
SW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZAor
ICAgICAgICBlbmFibGUgdGhpcyBmZWF0dXJlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzE5MjkxNAorCiAyMDE1LTEyLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBTdHJpbmcgYW5kIEF0b21pY1N0cmlu
ZyBhbiBleGlzdGluZ0hhc2goKSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFlYTIwZjYwODMwM2U2
NDlkOTkyYzQyZGUwMTk1MjQwZjI3ZjBiZTcuLjQzZWNkZGRjMmU4MTQ0N2VhOGQ4NDkzYTUyZWQ1
ZTExMTgzYmZkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0xMi0wMSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE5MjkxNC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTczNAorCisgICAgICAgIEpTQyB0ZXN0cyBmb3IgdGhpcyBjaGFu
Z2UgYXJlIGZhaWxpbmcgb24gMzIgYW5kIDY0LWJpdCBib3RzCisgICAgICAgIChSZXF1ZXN0ZWQg
YnkgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6
CisKKyAgICAgICAgIltFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBF
UzYgR2VuZXJhdG9ycyBhbmQKKyAgICAgICAgZW5hYmxlIHRoaXMgZmVhdHVyZSIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTI5MTQKKwogMjAxNS0xMi0wMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtTVkcgLT4g
T1RGIENvbnZlcnRlcl0gRm9yY2UgVW5pdHNQZXJFbSB0byAxMDAwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggYjMxNmRhMWUxOTQzNWFkOTQ1MGIxMmQ1NzRmZTY1NDVlOWJhODU2ZC4uMzgzN2FkMGIxODFh
OTQzMTQ0YWIzNjdjZmQwOTNhZDQ0MmEyNzEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE1LTEyLTAxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTkyOTE0LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNzM0CisKKyAgICAgICAg
SlNDIHRlc3RzIGZvciB0aGlzIGNoYW5nZSBhcmUgZmFpbGluZyBvbiAzMiBhbmQgNjQtYml0IGJv
dHMKKyAgICAgICAgKFJlcXVlc3RlZCBieSByeWFuaGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW0VTNl0gSW1wbGVtZW50IExMSW50
L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZAorICAgICAgICBlbmFibGUg
dGhpcyBmZWF0dXJlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUwNzkyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5
MjkxNAorCiAyMDE1LTEyLTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBF
UzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMyM2Ri
M2ZmNTFkMzk5YjE3MWU3OTc0MGNlNzJjMzg3OGQxNWQ3Y2UuLmM2ODIzMWE2MWI5MTg0ZjY1Mzdh
ZmQyNTg0ZDQzZWNlODg0MDQwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0x
Mi0wMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5MjkxNC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTczNAorCisgICAgICAgIEpTQyB0ZXN0cyBmb3Ig
dGhpcyBjaGFuZ2UgYXJlIGZhaWxpbmcgb24gMzIgYW5kIDY0LWJpdCBib3RzCisgICAgICAgIChS
ZXF1ZXN0ZWQgYnkgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBj
aGFuZ2VzZXQ6CisKKyAgICAgICAgIltFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBw
b3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQKKyAgICAgICAgZW5hYmxlIHRoaXMgZmVhdHVyZSIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5Mgor
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTI5MTQKKwogMjAxNS0x
Mi0wMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBXS09yaWdpbkRhdGFNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHRSZWYuY3BwCmluZGV4IDJmMzc0MjMwMDk3YjUwODI1ODNmODQ0MjdiOTI1NzkzN2QzMDkzMDcu
LjNiN2I3NmJmM2E0NDRjOTIxYmU5NzNjNTc2YzE5ZjY5MmU4ZDIzMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBi
b29sIHBhcnNlU2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJF
cnJvciYgZXJyb3IpCiB7CiAgICAgcmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2Rl
PigKICAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCisgICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLCAKICAgICAgICAgZXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggN2VlZWNmZTQwOTMyOTcwOTZjYzM5OGM1MmRmYjM4NmVmMGQ2NGJiMC4uY2Fl
M2NkMmQ2ZTQwMmFiYzdlNWQxNWQ3MmJjMDQxYTNhOWM3YzQwYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtNTc2LDEwICs1NzYsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
UlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
CiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuY3BwCi0gICAgcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKLSAgICBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCi0gICAgcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3Bw
CiAgICAgcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBAIC02MTksNyArNjE1LDYgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAK
ICAgICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAotICAgIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKICAgICBydW50aW1l
L0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC03NTUs
NyArNzUwLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAotICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJv
dG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNw
cAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9J
bnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMjE1LDcgKzEyMDksNiBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCi0gICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9i
dWlsdGlucy9HbG9iYWxPYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRp
bnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKaW5kZXggMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1
Zi4uZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwog
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5B
QkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9T
WU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFY
OwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOworRU5BQkxF
X0VTNl9HRU5FUkFUT1JTID0gOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9U
RU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5U
QVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc2OGViYWE2
Mjk3NzJmNmRlZDc5OGE3ZTZkN2Y4MWRlZTBlYjZlODMuLjM3NThhMzYzNjRkOTdjMzU4M2M5MTZm
M2YzZDk4NWE0ODc3ZjkyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC04NCw3ICs4NCw2IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMg
PSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMg
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIFwK
LSAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgXAog
ICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcyBcCiAgICAgJChK
YXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmpz
IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5qcyBcCkBAIC0xMjAsNyArMTE5LDYgQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAg
IERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAg
RXJyb3JQcm90b3R5cGUubHV0LmggXAotICAgIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBcCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIFwKICAgICBJbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDYyZDIxZDI5Mjk2YWMw
M2MwYjFmNDY0MmJhMTdlYjY4YzBmNTE0Y2MuLjlhMjA2YTA3YzJiNTUyOWVkYmFiMDNkOWZhZjBm
NGRlODY0OGM0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAt
NzU4LDEwICs3NTgsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIiAvPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
clByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdl
dHRlclNldHRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXElk
ZW50aWZpZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbmRl
eGluZ1R5cGUuY3BwIiAvPgpAQCAtODAxLDcgKzc5Nyw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGVNYXRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQuY3BwIiAvPgpAQCAtOTUyLDcgKzk0Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVQcm90
b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRl
dGVjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEluamVjdGVkU2NyaXB0U291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgi
IC8+CkBAIC0xNTI3LDcgKzE1MjEsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFy
c2VyXFBhcnNlclRva2Vucy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2Vy
XFJlc3VsdFR5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3Vy
Y2VDb2RlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29k
ZUtleS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3Zp
ZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlk
ZXJDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmgiIC8+CkBAIC0xNjE0LDExICsxNjA3LDYgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUHJvdG90eXBlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpc01vZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljT2Zmc2V0LmgiIC8+CkBAIC0xNjc4LDcg
KzE2NjYsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0MzJB
cnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0NjRB
cnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9u
LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IGI5MDBhZjAzZTllNjU1YjlhODQ1ZTRlYWFhMWQxZDcxZDhhYjQ1OTUuLjk1
MWMzYzVjMTQ3ODk1YTdlNTI3MjcxMmQ2ZDE4ODU0M2EzMjJhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTY2OSwxOCArNjY5LDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5j
cHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZyYW1lLmNwcCI+Ci0g
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAiPgotICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBl
LmNwcCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc2Miw5
ICs3NTAsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9u
LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAiPgotICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2Mzks
OSArMjYyNCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29k
ZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZUtleS5oIj4KLSAgICAg
IDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCI+CiAgICAgICA8RmlsdGVyPnBh
cnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjg0MywyMSArMjgyNSw2IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCI+Ci0gICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIj4KLSAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIj4KLSAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCI+Ci0gICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpc01vZGUuaCI+Ci0gICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2V0UHV0SW5mby5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjk2Myw5ICsyOTMwLDYgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmgiPgotICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTR2xvYmFsT2JqZWN0LmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zMzMwLDkgKzMyOTQsNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIj4K
ICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcR2VuZXJh
dG9yUHJvdG90eXBlLmx1dC5oIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSGVhZGVyRGV0ZWN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVk
IFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMzM5YjM0MDRhOGI2OWU2NjljYmEyY2JlOTdhMTA4ZWRmOWM1YTI1Zi4uNjhi
OTUwMjJkMTU2N2U1YjFmZTUxMDNjOGI0NDk3OGQ5NWQxOWZjZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyMDgsMTkgKzEyMDgsNiBAQAogCQk3MDlGQjg2QjFBRTMzNUM2MDAz
OUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5jcHAgKi87IH07CiAJCTcwOUZCODZDMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjBBOUQxMUE5QjY2
NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxh
Z3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3
MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUy
IC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
ODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLzsgfTsKLQkJNzBCNzkx
OTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgKi87IH07Ci0JCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
ICovOyB9OwotCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5
MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODkxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07Ci0JCTcwQjc5MTk5MUMwMjRBMjkw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk3MEI3OTE5QTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThCMUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5MTlCMUMwMjRBNDYwMDI0ODFFMiAv
KiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1
bmN0aW9uLmNwcCAqLzsgfTsKLQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJh
dG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBCNzkxOUQx
QzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFF
MiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJh
dG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAg
Ki87IH07CiAJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDgx
QjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5
IC8qIExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi87
IH07CkBAIC0zMzAwLDIwICszMjg3LDYgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8q
IFdlYWtTZXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2Vha1NldFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcw
OUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVy
YXRvckZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODQxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4
NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VuZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5
MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JUaGlzTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5j
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxOEQxQzAy
NDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VDb2RlS2V5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0
b3JQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBH
ZW5lcmF0b3JQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5
MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBEQzNFMDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJh
dG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEl0
ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBEQzNF
MDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50QXNzZW1ibHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNDMsNyArNTExNiw2IEBACiAJCQkJOTk2QjczMDgx
QkQ5RkEyQzAwMzMxQjg0IC8qIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlCQ0QyMDNF
NzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk5OTZCNzMw
OTFCRDlGQTJDMDAzMzFCODQgLyogRXJyb3JQcm90b3R5cGUubHV0LmggKi8sCi0JCQkJNzBCNzkx
OTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk2
NTE0RjIxODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVjb2Rlcy5hc20gKi8sCiAJCQkJQTUx
M0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCiAJCQkJ
QTVFQTcxMEQxOUY2REY4MTAwOThGNUVDIC8qIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oICovLApAQCAtNTI3Miw3ICs1MjQ0LDYgQEAKIAkJCQk4NjlFQkNCNjBFOEM2RDRB
MDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovLAogCQkJCTBGOEYyQjlEMTczMDZDOEIwMDdEQkRB
NSAvKiBTb3VyY2VDb2RlLmNwcCAqLywKIAkJCQk2NUU4NjZFRTBERDU5QUZBMDBBMkIyQTEgLyog
U291cmNlQ29kZS5oICovLAotCQkJCTcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VD
b2RlS2V5LmggKi8sCiAJCQkJMEY0OTNBRjgxNkQwQ0FEMTAwODQ1MDhCIC8qIFNvdXJjZVByb3Zp
ZGVyLmNwcCAqLywKIAkJCQk2NUU4NjZFRDBERDU5QUZBMDBBMkIyQTEgLyogU291cmNlUHJvdmlk
ZXIuaCAqLywKIAkJCQlFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJD
YWNoZS5jcHAgKi8sCkBAIC01NDAyLDE1ICs1MzczLDYgQEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdE
MDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4RDFBREYxMDNG
MDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQzOEUxQURGMTAz
RjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKLQkJCQk3MEI3OTE4MzFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovLAotCQkJCTcwQjc5MTg0MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAotCQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKLQkJCQk3MEI3OTE4
NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAot
CQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5jcHAgKi8sCi0JCQkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmggKi8sCi0JCQkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvclByb3RvdHlwZS5jcHAgKi8sCi0JCQkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvclByb3RvdHlwZS5oICovLAotCQkJCTcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JUaGlzTW9kZS5oICovLAogCQkJCTBGRTA1MDExMUFBOTA5MTEwMEQzM0IzMyAvKiBH
ZW5lcmljQXJndW1lbnRzLmggKi8sCiAJCQkJMEZFMDUwMTIxQUE5MDkxMTAwRDMzQjMzIC8qIEdl
bmVyaWNBcmd1bWVudHNJbmxpbmVzLmggKi8sCiAJCQkJMEZFMDUwMTMxQUE5MDkxMTAwRDMzQjMz
IC8qIEdlbmVyaWNPZmZzZXQuaCAqLywKQEAgLTU1MTAsOCArNTQ3Miw2IEBACiAJCQkJRjY5MkE4
NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1
NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAw
OTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8sCi0JCQkJNzBCNzkxOEMxQzAyNDQ2MjAw
MjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAotCQkJCTcwQjc5MThEMUMwMjQ0
NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QzMxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2
QzQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3Iu
aCAqLywKIAkJCQkwRjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCAqLywKQEAgLTY2MjYsNyArNjU4Niw2IEBACiAJCQkJ
QTc1RUU5QjAxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oICovLAogCQkJCTQxREVB
MTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAqLywKIAkJCQlBN0E5NzlDNDE4
QkU4RDlFMDAyQzM3MzMgLyogRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8sCi0JCQkJNzBCNzkxOEYx
QzAyNDRFQzAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1
QTFCNjVEOUEzMDA5REIxRUYgLyogR2xvYmFsT2JqZWN0LmpzICovLAogCQkJCUUzNUUwMzYxMUI3
QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8sCiAJ
CQkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
LmpzICovLApAQCAtNzA0Myw3ICs3MDAyLDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1
MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRF
RjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQw
MkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTcw
Qjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MDk0LDcgKzcwNTIsNiBAQAogCQkJCTBGNTBBRjNDMTkz
RThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNzkwODU2MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTk5MUMwMjRBMjkwMDI0
ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5N0Ey
MTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhB
MzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNzMxNiw3ICs3Mjcz
LDYgQEAKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5z
cGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2
ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTkxMUMwMjRBMTMw
MDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQjE3
QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFG
M0MxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QThBRjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAt
NzM0NCw3ICs3MzAwLDYgQEAKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0
b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQy
OTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDEzMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3OTE5
NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNDBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2
YVNjcmlwdENvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDg4LDcgKzc0
NDMsNiBAQAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5
bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0
NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3
OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVj
dG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
VHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzUyNSw3ICs3NDc5LDYg
QEAKIAkJCQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxl
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTJF
QTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRTM5MTM1NTFCNzk0RjhBMDBFREFGNzEgLyogTGl2ZU9iamVjdERhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFMzkxMzU2MUI3OTRGOEYwMEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03Njk5LDcgKzc2NTIsNiBAQAogCQkJCUE1NUQ5M0E2MTg1MDEyQTgw
MDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENG
MkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8q
IFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEy
ODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc3MzIsNyAr
NzY4NCw2IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OEUxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJs
b2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUzMTNCMTM0RkYwQTYwMEFGQURC
NSAvKiBTdHJvbmcuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFF
MiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIyODYxNDM3
RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDREUz
QUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdF
NEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC04NzU0LDcgKzg3MDUsNiBAQAogCQkJCUExQjlFMjNEMUI0RTBENjcwMEJDN0ZFRCAvKiBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkQxQjRE
QzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUyIC8qIEpT
R2VuZXJhdG9yRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENzExQjREQzE0
MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMUQ3OTJGRTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODc4MSw3ICs4NzMxLDYg
QEAKIAkJCQkwRjc2NkQyODE1QThDQzFFMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMkIxNUE4Q0MzODAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDIzODkwMUJFMThDM0MwMDUxNDczNyAv
KiBKSVRTdWJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTQxQzAyNEEy
ODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkM3MTJFMjE3Q0Q4NzkxMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2QzQxMDdF
QzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
ODkxOSw3ICs4ODY4LDYgQEAKIAkJCQkxNDJENkYwODEzNTM5QTI4MDBCMDJFODYgLyogTWFya2Vk
QmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREExMzlGNEJFMjAwNDkxMDMxIC8q
IE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjExMTM1MzlBNDEwMEIw
MkU4NiAvKiBNYXJrU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTgxQzAyNEEy
OTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MzQwQTQ4NDFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjM3MzA4QzFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDQ2OURERjEwN0VDN0U3MDA2NTA0NDYgLyogTWF0aE9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTkwNjgsNyArOTAxNiw2IEBACiAJCQkJMEZGNDI3NDUxNThFQkU5
MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4tYXR0LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0
NjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRlbC5jIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4uYyBpbiBTb3VyY2VzICov
LAotCQkJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0MjczMjE1OEVCRDU4MDA0Q0I5RkYgLyog
VURpczg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NkYyNzk0MTVGMTND
OTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDE0MkU1NTFCNzk3M0MwMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC05MDc3LDcgKzkwMjQsNiBAQAogCQkJCTc5RUUwQkZGMUI0QUZC
ODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIwQzI1OTFBODAxM0FCMDBEQTMy
MjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERG
OTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTU5MzJBNzE4M0M1
QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApp
bmRleCBhOWU2OWJlYTZlZWFlNTc4YjkyZDk4OWUxZTg5MTkxYTMzNDg5OWVmLi44MTZiNGE1ZDMw
YjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtODIsNyArODIs
NyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFs
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4g
c291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBzb3VyY2UucHJv
dmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9n
cmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmll
cigpLCBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Qs
IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBl
cnJvciwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yLAogICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSwgY29uc3RydWN0b3JLaW5kKTsKIAogICAgIGlmICghcHJvZ3JhbSkgewpAQCAtMTE1LDcg
KzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50
ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgfQogICAgIG1ldGFkYXRhLT5v
dmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1teVREWlZhcmlh
YmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRh
dGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwg
ZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOworICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3Ry
dWN0QWJpbGl0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkp
OwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVlKHZtLCBqc1N0cmluZygmdm0s
IG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYmJjMzUzNGFlMDUyZjRkNmZhMjVi
ZGU3MDNjOTNkM2E3OTVlMTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gMjUuMy4zLjMgR2VuZXJhdG9yUmVz
dW1lICggZ2VuZXJhdG9yLCB2YWx1ZSApCi0vLyAyNS4zLjMuNCBHZW5lcmF0b3JSZXN1bWVBYnJ1
cHQoZ2VuZXJhdG9yLCBhYnJ1cHRDb21wbGV0aW9uKQotZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1l
KGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQotewotICAgICJ1c2Ugc3RyaWN0IjsK
LQotICAgIC8vIEdlbmVyYXRvclN0YXRlLgotICAgIGNvbnN0IENvbXBsZXRlZCA9IC0xOwotICAg
IGNvbnN0IEV4ZWN1dGluZyA9IC0yOwotCi0gICAgLy8gUmVzdW1lTW9kZS4KLSAgICBjb25zdCBO
b3JtYWxNb2RlID0gMDsKLSAgICBjb25zdCBSZXR1cm5Nb2RlID0gMTsKLSAgICBjb25zdCBUaHJv
d01vZGUgPSAyOwotCi0gICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZTsK
LSAgICBsZXQgZG9uZSA9IGZhbHNlOwotICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5lZDsKLQotICAg
IGlmICh0eXBlb2Ygc3RhdGUgIT09ICdudW1iZXInKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOwotCi0gICAgaWYgKHN0YXRlID09
PSBFeGVjdXRpbmcpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMg
ZXhlY3V0aW5nIik7Ci0KLSAgICBpZiAoc3RhdGUgPT09IENvbXBsZXRlZCkgewotICAgICAgICBp
ZiAocmVzdW1lTW9kZSA9PT0gVGhyb3dNb2RlKQotICAgICAgICAgICAgdGhyb3cgc2VudFZhbHVl
OwotCi0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICBpZiAocmVzdW1lTW9kZSA9PT0gUmV0
dXJuTW9kZSkKLSAgICAgICAgICAgIHZhbHVlID0gc2VudFZhbHVlOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gRXhl
Y3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNh
bGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUs
IHJlc3VtZU1vZGUpOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUg
PT09IEV4ZWN1dGluZykgewotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3Rh
dGUgPSBDb21wbGV0ZWQ7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuQGdl
bmVyYXRvclN0YXRlID0gQ29tcGxldGVkOwotICAgICAgICAgICAgdGhyb3cgZXJyb3I7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHsgZG9uZSwgdmFsdWUgfTsKLX0KLQotZnVuY3Rpb24g
bmV4dCh2YWx1ZSkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICByZXR1cm4gQGdlbmVyYXRv
clJlc3VtZSh0aGlzLCB2YWx1ZSwgLyogTm9ybWFsTW9kZSAqLyAwKTsKLX0KLQotZnVuY3Rpb24g
cmV0dXJuKHZhbHVlKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIHJldHVybiBAZ2VuZXJh
dG9yUmVzdW1lKHRoaXMsIHZhbHVlLCAvKiBSZXR1cm5Nb2RlICovIDEpOwotfQotCi1mdW5jdGlv
biB0aHJvdyhleGNlcHRpb24pCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgcmV0dXJuIEBn
ZW5lcmF0b3JSZXN1bWUodGhpcywgZXhjZXB0aW9uLCAvKiBUaHJvd01vZGUgKi8gMik7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwCmluZGV4IDU5NjA2NGM0MDY4MjQ5NzgwODljNDY0M2YxYzNkZmJkMDUzNGI5OWYuLjU0
ZGZkMTY4Y2E2MDBlYmVmMTM1ODA0MzJjNzdlMjVhZDQ0NGFkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC01
OSw3ICs1OSw2IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAg
IGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgogICAgIGNh
c2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDQzZDcw
MTI0MTk2ZGQzNjJjYzY0NGY5M2EyMWY5ZjgxZTg3YmIzNWMuLmY2Yzg5YTlkNGFkMmY2Mzc4NTg3
MzQ3MDE2NTEzYjE0NzMwZTUzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTkwLDggKzkwLDYgQEAKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3N3aXRjaF9zdHJpbmciLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19mdW5jIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9LAotICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJsZW5ndGgi
IDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Fycm93X2Z1bmNfZXhwIiwg
Imxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxlbmd0
aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVuZ3Ro
IiA6IDkgfSwKQEAgLTEzMiw5ICsxMzAsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCi0gICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
Z2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDcyMjhiMDMzMzY2YzdhNjdiNTEwNDg4ZGZlNDVm
M2RkM2NmYTQzMTUuLmM3N2FiZWFhMjkyMDllMzI5OTEzY2Q5NGNmYWQ3NTE1MTliZDk5ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBCeXRlY29kZUJh
c2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0CiAvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGlj
aCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBl
eGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5j
dG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0
b3ImIGRlZikKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBj
b25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUg
dGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3Qg
dXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2lj
YWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYg
dGhlIHNhbWUKQEAgLTExNiwxOSArMTE2LDE5IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAg
ICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2Un
ZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAg
ICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29k
ZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAg
ICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAg
ICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwog
ICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAg
IGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5
dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRS
ZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAg
dXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKLQor
ICAgICAgICAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50
IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIg
YmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5
dGVjb2RlLgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxl
ckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewpAQCAtMTM4LDEwICsxMzgsMTAg
QEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3Rh
dGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVj
b2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNl
dCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAgICAgICAgICAgb3V0
LnNldChiaXRJbmRleCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGUKICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9j
aywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwg
b3V0KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7CkBAIC0xODAsNyArMTgwLDcgQEAg
c3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2MKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpy
dW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsKICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAgICB1bnNpZ25l
ZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fs
czsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVyczsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jh
c2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxp
dmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
bV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAg
ICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAg
IH0KQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAg
ICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICAg
ICAgICAgIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyBmb3IgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKG91dC5nZXQoaW5kZXgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRl
eCBmZTAyNmZhYWY5ZWNiOTIyNGFlM2RhYTBjYTYyNTVhNWY5YWZhZWMzLi5jYmI4OTQ4NmUxNGMw
NWYyODQ3NGNmZDJhYmRhNzRlOTEwY2EyOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9
IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtNzEsOCAr
NzEsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9q
ZXFfbnVsbDoKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBj
YXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfaW5jOiB7CiAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjYsNyArMTI1
LDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZ2V0
X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6
CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6Ci0gICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9f
aW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBA
IC0xNTUsNyArMTUzLDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAg
IGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9u
ZXdfZnVuYzoKLSAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dl
dF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAg
ICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpAQCAtMjM3LDIyICsyMzQsNiBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBsYXN0QXJnICsgaSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0gICAg
ICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsg
aW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1l
cmdlUG9pbnRCbG9jayA9IG51bGxwdHI7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBpZiAoc3Vj
Y2Vzc29yLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNl
dCkgewotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NF
UlQobWVyZ2VQb2ludEJsb2NrKTsKLSAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZvckVh
Y2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2Nh
bCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBi
cmVhazsKQEAgLTI2MCw3ICsyNDEsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQor
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwog
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKQEAgLTI3NSw3ICsyNTYsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
YwogICAgIGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2FsbDoKICAgICBjYXNlIG9wX3Rocm93OgogICAg
IGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNl
IG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzM2
LDggKzMxNiw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9uZXdfcmVn
ZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6Ci0g
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6Ci0gICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3Bf
Y2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CkBAIC00MTQsMTUg
KzM5Miw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGNvZGVCbG9jay0+bV9udW1WYXJzOyBpLS07KQogICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSku
b2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEp
OwotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZd
KHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkp
OwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB9CisgICAgfSB9CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCAwYWI3ODFjZTc1YzdmN2EwNzgwNmIwMGZjYjEyNTc2YmY5NTU2
MzY5Li45ZTEzODZlM2QzMmQ2MWRiYTlmODE5Y2VjOTdhNzAwMjNjOWI4ZjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTg1LDcgKzU4NSw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAg
ICAgIjogJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXM7ICVkIHBhcmFtZXRlcihzKTsgJWQg
Y2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKSIsCiAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSksCiAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJbnN0cnVj
dGlvbikpLAotICAgICAgICBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlTG9jYWxzLCBtX251
bVZhcnMpOworICAgICAgICBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBt
X251bVZhcnMpOwogICAgIGlmIChuZWVkc0FjdGl2YXRpb24oKSAmJiBjb2RlVHlwZSgpID09IEZ1
bmN0aW9uQ29kZSkKICAgICAgICAgb3V0LnByaW50ZigiOyBsZXhpY2FsIGVudmlyb25tZW50IGlu
IHIlZCIsIGFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICBvdXQucHJpbnRmKCJc
biIpOwpAQCAtNjgwLDE4ICs2ODAsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQpCiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKICAgICB9CiAKLSAgICBpZiAobV9yYXJlRGF0YSAm
JiAhbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgb3V0LnByaW50ZigiXG5MaXZlIENhbGxlZSBMb2NhbHM6XG4iKTsKLSAgICAgICAgdW5z
aWduZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpXTsK
LSAgICAgICAgICAgIG91dC5wcmludGYoIiAgbGl2ZSUxdSA9ICIsIGkpOwotICAgICAgICAgICAg
bGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiXG4iKTsKLSAgICAg
ICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKTsKLSAgICB9Ci0KICAgICBvdXQucHJpbnRmKCJcbiIpOwog
fQogCkBAIC0xMzE1LDE0ICsxMzAzLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgK
ICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogewotICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAibmV3X2dlbmVyYXRvcl9mdW5jIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
IGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwg
ZjApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdf
YXJyb3dfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzQwLDE0ICsx
MzIwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6IHsKLSAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0
b3JfZnVuY19leHAiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKICAgICAg
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBD
YWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xNTM2LDI3ICsxNTA4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdI
b29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVM
b2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVn
aXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAo
b3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAg
ICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAg
ICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvciku
ZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91
dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAg
ICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBs
aW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xNzIxLDcgKzE2NzIsNyBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tU
YWcsIENvZGVCbG9jawogICAgIDogSlNDZWxsKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9nbG9i
YWxPYmplY3Qob3RoZXIubV9nbG9iYWxPYmplY3QpCiAgICAgLCBtX2hlYXAob3RoZXIubV9oZWFw
KQotICAgICwgbV9udW1DYWxsZWVMb2NhbHMob3RoZXIubV9udW1DYWxsZWVMb2NhbHMpCisgICAg
LCBtX251bUNhbGxlZVJlZ2lzdGVycyhvdGhlci5tX251bUNhbGxlZVJlZ2lzdGVycykKICAgICAs
IG1fbnVtVmFycyhvdGhlci5tX251bVZhcnMpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Iob3RoZXIu
bV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKQEAg
LTE3NzgsNyArMTcyOSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJlRGF0
YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVy
czsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJl
RGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSBvdGhl
ci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAgICAKICAg
ICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0xNzg5LDcgKzE3MzksNyBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dAogICAgIDogSlNDZWxsKCp2bSwgc3RydWN0dXJlKQogICAg
ICwgbV9nbG9iYWxPYmplY3Qoc2NvcGUtPmdsb2JhbE9iamVjdCgpLT52bSgpLCB0aGlzLCBzY29w
ZS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgLCBtX2hlYXAoJm1fZ2xvYmFsT2JqZWN0LT52bSgpLmhl
YXApCi0gICAgLCBtX251bUNhbGxlZUxvY2Fscyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxs
ZWVMb2NhbHMpCisgICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnMpCiAgICAgLCBtX251bVZhcnModW5saW5rZWRDb2RlQmxvY2st
Pm1fbnVtVmFycykKICAgICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVCbG9jay0+aXND
b25zdHJ1Y3RvcigpKQogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKQEAgLTE5
NTksOSArMTkwOSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAg
dGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0
PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVu
dHM7CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4K
LSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVm
Q291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsg
KSB7CkBAIC0yMjUwLDE1ICsyMTk3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4Owot
ICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlm
IChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVP
ZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTIyNzAsMjAgKzIyMDgsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEY6Om1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAg
IC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNo
IGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3Bf
cmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50
ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0
IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxp
dmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwot
ICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9u
bHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAg
Ly8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1p
dHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1v
cmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMjMwNyw3ICsyMjMx
LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
V2ViQXNzZW1ibHlFeGVjdXRhYmxlKiBvd25lckUKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVy
ZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgdGhpcywgZ2xvYmFs
T2JqZWN0KQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFwKQotICAgICwg
bV9udW1DYWxsZWVMb2NhbHMoMCkKKyAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKDApCiAgICAg
LCBtX251bVZhcnMoMCkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1fc2hv
dWxkQWx3YXlzQmVJbmxpbmVkKGZhbHNlKQpAQCAtMzEzNCw3ICszMDU4LDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1f
cmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5z
aHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2Ug
ZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVk
IHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDEwNiw3ICs0MDI5LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAKICAgICBGYXN0Qml0VmVjdG9yIGxpdmVBdEhl
YWQgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KDApOwogICAgIAot
ICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbnVt
Q2FsbGVlTG9jYWxzKSkgeworICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkgewogICAgICAgICBiZWdpblZhbGlk
YXRpb25EaWRGYWlsKCk7CiAgICAgICAgIGRhdGFMb2coIiAgICBXcm9uZyBudW1iZXIgb2YgYml0
cyBpbiByZXN1bHQhXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIFJlc3VsdDogIiwgbGl2ZUF0
SGVhZCwgIlxuIik7CkBAIC00MTE0LDcgKzQwMzcsNyBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRh
dGUoKQogICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgIH0KICAgICAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX251bUNhbGxlZUxvY2FsczsgaS0tOykgeworICAgIGZvciAodW5z
aWduZWQgaSA9IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyBpLS07KSB7CiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChsaXZlQXRIZWFkLmdldChpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IDNjYmU3NWM0OTc4MTAxOTM4ODBjM2E1YjFiOTk1OTMwNTAw
YWE5OTAuLmMxZGYxODdjMTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUyZDgyZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTY5LDcgKzY5LDYgQEAK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8d3RmL0JhZy5oPgotI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTQyLDggKzE0MSw2IEBAIHB1YmxpYzoKICAg
ICBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQog
ICAgIHZvaWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOwogCi0gICAgaW50IG51bUNh
bGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9Ci0KICAgICBp
bnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1QYXJhbWV0ZXJzOyB9
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMpOyB9CiAKQEAgLTY1Nywx
OCArNjU0LDYgQEAgcHVibGljOgogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNo
SnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4g
bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmlu
Z0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVB
U0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKLSAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMg
YXQgeWllbGQgcG9pbnRzLgotICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0gICAgRmFzdEJpdFZlY3RvciYgbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLQogICAgIEV2YWxDb2RlQ2FjaGUmIGV2
YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAgLTg3
MCw3ICs4NTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgcmVtYWluaW5n
IG1lbWJlcnMgcHJpdmF0ZS4KIAogICAgIGludCBtX251bUxvY2FsUmVnaXN0ZXJzRm9yQ2FsbGVl
U2F2ZXM7Ci0gICAgaW50IG1fbnVtQ2FsbGVlTG9jYWxzOworICAgIGludCBtX251bUNhbGxlZVJl
Z2lzdGVyczsKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDog
MTsKICAgICAKQEAgLTkxNSw4ICs5MDAsNiBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxTaW1w
bGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1
bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCi0gICAgICAgIFZlY3RvcjxGYXN0
Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwotCiAgICAgICAgIEV2YWxDb2Rl
Q2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDgzNzAzY2ZhOTIyY2M2MjcxMjg1ZjU5
MzhlMmE4MjBmOGJlZGIwNzAuLjYyNTIxZmM2NTI4YzVhMmU3ZDRlYWY0Mzg1OGMwNmNlZTdjN2Fl
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNh
Y2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUu
aApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNvdXJjZUNvZGVLZXku
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NSwyOSArNDQsMjMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsQ29kZUNhY2hlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEV2YWxFeGVjdXRhYmxlKiB0cnlHZXQoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNv
dXJjZUNvZGUmIGV2YWxTb3VyY2UsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBKU1Njb3BlKiBz
Y29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4
dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwg
c2NvcGUpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOwotICAg
ICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJp
bmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KHNvdXJjZUNvZGVLZXkpLmdldCgpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBp
ZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKS5nZXQo
KTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBF
dmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNl
Q29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxl
KiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENv
bnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2Us
IEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25t
ZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlh
Ymxlc1VuZGVyVERaKHNjb3BlLCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgICAgICBFdmFs
RXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMs
IGV2YWxTb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUsICZ2YXJpYWJsZXNVbmRl
clREWik7CisgICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UoZXZhbFNvdXJjZSksIGluU3RyaWN0
Q29udGV4dCwgdGhpc1REWk1vZGUsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgICAgICBp
ZiAoIWV2YWxFeGVjdXRhYmxlKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5T
dHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBt
YXhDYWNoZUVudHJpZXMpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWluU3RyaWN0Q29udGV4
dCk7Ci0gICAgICAgICAgICAgICAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5KGV2YWxTb3Vy
Y2UsIFN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIHRoaXNURFpNb2Rl
KTsKLSAgICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChzb3VyY2VDb2RlS2V5LCBXcml0ZUJh
cnJpZXI8RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29u
dGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVF
bnRyaWVzKQorICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3VyY2UuaW1wbCgp
LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gZXZhbEV4ZWN1dGFi
bGU7CiAgICAgICAgIH0KQEAgLTg3LDE3ICs4MCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBzY29w
ZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVjdCgpIHx8IHNjb3BlLT5pc1ZhclNjb3BlKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBp
blN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNj
b3BlKQorICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmlj
dENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2YWwoKSBpcyBjYWxsZWQgYW5kIGl0IGhhcyBhY2Nl
c3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBjYW4ndCBzb3VuZGx5IGNhY2hlIGl0LgogICAgICAg
ICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5IGhhcyBhY2Nlc3MgdG8gdGhlICJ2YXIiIHNjb3Bl
LCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAgICAgICAgICAgIHJldHVybiAhaW5TdHJpY3RDb250
ZXh0IAotICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJjZS5s
ZW5ndGgoKSkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpCisg
ICAgICAgICAgICAgICAgJiYgZXZhbFNvdXJjZS5sZW5ndGgoKSA8IE9wdGlvbnM6Om1heGltdW1F
dmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoKCkgCiAgICAgICAgICAgICAgICAgJiYgaXNDYWNoZWFi
bGVTY29wZShzY29wZSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhD
YWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNlQ29kZUtl
eSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPiwgU291cmNlQ29kZUtleUhhc2gsIFNvdXJj
ZUNvZGVLZXlIYXNoVHJhaXRzPiBFdmFsQ2FjaGVNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8U3RyaW5nSW1wbD4sIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4+IEV2YWxD
YWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hlTWFwIG1fY2FjaGVNYXA7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCAy
NjAyYmU3YzRmYmVjZTlkZWE1MDIxOGZlMTRiNTY1MWZiNDdiOGJkLi45MjE0NGY4OWZiZDQ1MGZl
ODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMjYsMjggKzI2LDIxIEBACiAjaWZuZGVmIEV4
ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhlY3V0YWJsZUluZm9faAogCi0jaW5jbHVkZSAiR2Vu
ZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRp
b24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCi0vLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUlu
Zm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNF
dmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlz
TW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZh
dGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3Rv
ciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVl
ZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwg
bV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihp
c0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVu
Y3Rpb24pCi0gICAgICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ2VuZXJhdG9yVGhpc01vZGUpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1fc3VwZXJCaW5k
aW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQotICAgICAgICAsIG1fcGFy
c2VNb2RlKHBhcnNlTW9kZSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVu
Y3Rpb24pCiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwotICAgICAgICBBU1NFUlQobV9zdXBl
ckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwotICAgICAg
ICBBU1NFUlQobV9nZW5lcmF0b3JUaGlzTW9kZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2Vu
ZXJhdG9yVGhpc01vZGUpKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNBY3RpdmF0aW9uOyB9CkBAIC01NSwxMCArNDgsOCBAQCBzdHJ1
Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQotICAgIEdlbmVyYXRvclRoaXNNb2Rl
IGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9y
VGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2lu
ZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcp
OyB9Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
c2VNb2RlOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QXJyb3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0
aW9uIDogMTsKQEAgLTY2LDEwICs1Nyw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc1N0
cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5z
aWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7Ci0gICAgdW5zaWduZWQgbV9nZW5lcmF0b3JU
aGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVu
c2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKLSAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1v
ZGU7CisgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVj
aXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IDJiYmYzMTM0NDU2YTlhZTUyYTYxOTI4YmM0YWUwNzEz
NWVhNjFlM2MuLmQ2MGZkZjdkM2NmMzYwZTNlYzE2OTg3NzlhYmU2YjllYjkwNmQ1MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwCkBAIC01NCw3ICs1NCw2IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2Fz
ZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3Jl
YXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJl
bHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IG9wX3N3aXRjaF9pbW06CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA4N2U4MjMzZjFmZTNhOGJlYzQwMjMwZDI5OGIw
OWU2ZGZmOWEzODk2Li5jMTE0YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sKIFVubGlu
a2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDb2RlVHlwZSBjb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCiAgICAg
OiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1WYXJzKDApCi0gICAgLCBtX251bUNh
bGxlZUxvY2FscygwKQorICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnMoMCkKICAgICAsIG1fbnVt
UGFyYW1ldGVycygwKQogICAgICwgbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0UmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCkBAIC02NSwxMiArNjUsMTAgQEAgVW5saW5rZWRDb2RlQmxv
Y2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVU
eXBlIGNvZGUKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkK
LSAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2Vu
ZXJhdG9yVGhpc01vZGUoKSkpCi0gICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaW5mby5zdXBlckJpbmRpbmcoKSkpCisgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpbmZv
LmlzQXJyb3dGdW5jdGlvbigpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNv
dW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKLSAgICAsIG1fcGFyc2VNb2RlKGlu
Zm8ucGFyc2VNb2RlKCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX2NvZGVUeXBlKGNv
ZGVUeXBlKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3VudCgwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBiY2EyYzA0YWNh
NDM4MjkyMTc1Njk1OGJhYTY4ZGIzMGU4ZjEzNWMwLi5mYTUxNGMxNTZhN2NiN2NlZjc0YTlmMTAw
MDE2NWI4NjFmMGY4M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNvZGVU
eXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Np
b25SYW5nZUluZm8uaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUg
IkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgpAQCAtNDIsNyArNDEsNiBAQAogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlZpcnR1
YWxSZWdpc3Rlci5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTE4
LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMjA0
LDggKzIwMiw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2lu
ZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9y
VGhpc01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzTW9kZT4o
bV9nZW5lcmF0b3JUaGlzTW9kZSk7IH0KLSAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7
IH0KIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTIzNiw3ICsyMzIsNyBAQCBw
dWJsaWM6CiAKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251bUNhcHR1cmVkVmFyczsK
LSAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CisgICAgaW50IG1fbnVtQ2FsbGVlUmVnaXN0ZXJz
OwogCiAgICAgLy8gSnVtcCBUYWJsZXMKIApAQCAtMzkxLDE0ICszODcsMTIgQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6
IDI7Ci0gICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7Ci0gICAgdW5zaWduZWQg
bV9zdXBlckJpbmRpbmcgOiAxOworICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsK
IAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50Owog
ICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogCi0gICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VN
b2RlOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5
cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDNmNDk0ODg1YWY0OWMyOGUyNmY0
OTdkNjc1ZjY0YTE2YzliOWFmOTYuLjZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5
ZDU5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIGNv
bnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFiCiBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIFZNJiB2bSwgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwK
ICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsCi0gICAgVW5saW5rZWRGdW5jdGlvbktpbmQg
ZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUpCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYg
ZXJyb3IsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQogewogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUg
YnVpbHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJC
dWlsdGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0
Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdDsKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxl
LT5wYXJzZU1vZGUoKSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0
aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFi
bGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9k
ZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIpOworICAgICAg
ICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9k
ZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGVycm9yLCBudWxscHRyKTsKIAogICAgIGlmICgh
ZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CkBAIC02Nyw3ICs2
Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24t
PmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZv
KGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0
aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktp
bmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2lu
ZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJp
bmRpbmcoKSwgcGFyc2VNb2RlKSk7CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5u
ZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmlj
dE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5r
ZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93
RnVuY3Rpb24pKTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2Rl
R2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9m
aWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBl
cnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpA
QCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJh
dGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSog
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3Ry
dWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxl
RW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRG
dW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJp
YWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKICAgICA6IEJhc2UoKnZt
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJy
ZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtOTksOCArOTksNyBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdAogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9u
TW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKLSAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSkKLSAgICAsIG1fc3VwZXJCaW5k
aW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5zdXBlckJpbmRpbmcoKSkpCisgICAgLCBt
X2lzQXJyb3dGdW5jdGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVj
dG9yS2luZCgpKSk7CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNj
b3BlVERaVmFyaWFibGVzKTsKQEAgLTE4MSw3ICsxODAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5s
aW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCAKLSAgICBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJv
ciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCisgICAgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9y
LCBib29sIGlzQXJyb3dGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2lu
ZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6CkBAIC0xOTcsNyArMTk2LDcgQEAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29k
ZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVy
YXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwg
c3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAg
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sIAotICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKKyAgICAgICAgZXJy
b3IsIGlzQXJyb3dGdW5jdGlvbik7CiAgICAgCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGM4YmJhMGFj
MzJiZTQzN2ZmYjVkZjNlM2Y5ZTA1YjA0NzhhNTM2MWIuLmQ4ZTgyMjkzOTBlNTc3Y2I0ODBmYjBl
OTI5M2Y0MWJhNDJkOWMxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5Lmgi
CiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgotI2luY2x1ZGUgIkdlbmVyYXRvclRo
aXNNb2RlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC02NiwxMCArNjUsMTAgQEAgcHVibGljOgogICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0g
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFi
bGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92
aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJs
ZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUs
IHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzTW9k
ZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5n
ZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1
bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwog
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGlu
c3RhbmNlOwogICAgIH0KQEAgLTgzLDggKzgyLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNJblN0
cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAg
RnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1
bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4o
bV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhp
c01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzTW9kZT4obV9n
ZW5lcmF0b3JUaGlzTW9kZSk7IH0KLSAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0K
IAogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KICAgICB1bnNpZ25lZCB1bmxpbmtlZEJv
ZHlTdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRCb2R5U3RhcnRDb2x1bW47
IH0KQEAgLTk4LDcgKzk1LDcgQEAgcHVibGljOgogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAK
LSAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOworICAgICAgICBQYXJzZXJF
cnJvciYsIGJvb2wpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBm
cm9tR2xvYmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCkBAIC0xMjgsOSArMTI1LDEw
IEBAIHB1YmxpYzoKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxp
dHkpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3Qg
eyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KKyAgICBib29sIGlzQXJyb3dG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6
Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJl
ZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZp
cm9ubWVudCYpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBt
X3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTYw
LDggKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAx
OwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1
bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9y
VGhpc01vZGUgOiAxOwotICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKKyAgICB1bnNp
Z25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNDQ1ZDNkNWNkNGMwNjQ2NTdl
NjEyMjg4MzA4NjVmOWZjZjJhZTA4Ny4uNDFhNjRjOWE1MGFmMzgxNzcyMzg3ZmRlNjY1ZWM0MTIz
OTcyZTgwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMyLDEwICszMiw4IEBACiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgot
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
QEAgLTIyOSwzMyArMjI3LDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgfQog
ICAgIH0KIAotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNl
TW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxk
RW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAg
ICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSBm
dW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7Ci0K
LSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMi
IHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlv
biBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCi0gICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7Ci0KLSAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSAm
JiBuZWVkc0FyZ3VtZW50cykgewotICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlk
ZSAiYXJndW1lbnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlk
ZXMgImFyZ3VtZW50cyIuCi0gICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2Yg
YSBnZW5lcmF0b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCi0gICAg
ICAgIC8vIFRvIHdvcmthcm91bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50cyBhcyBh
cmd1bWVudHMgb2YgYSB3cmFwcGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZlcmVuY2Ug
aXQgZnJvbSBhIGdlbmVyYXRvci4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gICAgZnVuY3Rpb24g
KmdlbihhLCBiID0gaGVsbG8oKSkKLSAgICAgICAgLy8gICAgewotICAgICAgICAvLyAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkKLSAgICAgICAgLy8gICAgICAgICAgICB7Ci0gICAgICAgIC8vICAgICAgICAg
ICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0
byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgotICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KLSAg
ICAgICAgLy8gICAgICAgICAgICB9Ci0gICAgICAgIC8vICAgICAgICB9Ci0gICAgICAgIC8vICAg
IH0KLSAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7Ci0gICAgfQot
CiAgICAgaWYgKHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncykKICAgICAgICAgZnVuY3Rpb25O
b2RlLT52YXJEZWNsYXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwogICAg
IApAQCAtMjgwLDMzICsyNTQsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBhbGxv
Y2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgo
SlNTdGFjazo6Q2FsbGVlKTsKLQotICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMp
OwotCi0gICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5l
cmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mg
c3RhdGUuCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlKSB7Ci0gICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFd
OwotICAgICAgICBpZiAoZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6
RW1wdHkpCi0gICAgICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsK
LQotICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3Rh
dGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVu
dGF0aW9uLgotICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2Ug
dG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRo
ZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgotICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9y
IGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGlt
cGxlbWVudGF0aW9uLgotCi0gICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVn
aXN0ZXIoKSk7Ci0KLSAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZS4KLSAgICAgICAgZW1pdEdlbmVy
YXRvclN0YXRlTGFiZWwoKTsKLSAgICB9Ci0KKyAgICAKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJ
blNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUo
KSkpIHsKLSAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckJvZHlNb2RlKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFt
ZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSk7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVz
KGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwogICAgICAgICBib29sIG1hcmtBc0NhcHR1
cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKICAgICAgICAg
ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksICZtX2NhbGxl
ZVJlZ2lzdGVyLCBtYXJrQXNDYXB0dXJlZCk7CiAgICAgfQotCisgICAgCiAgICAgaWYgKHNob3Vs
ZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKICAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3RlciA9IGFkZFZhcigpOwogICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIi
IGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lv
bnMuIElmIHdlIGhhdmUKQEAgLTMxNiw2ICsyNzEsMTkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2UKICAgICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFi
bGVDb25zdGFudEluZGV4KTsKICAgICB9CiAKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxv
Y2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQg
cGFyYW1ldGVycworICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisgICAg
bV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFj
ZSBmb3IgInRoaXMiCisgICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQ
YXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJh
bWV0ZXJzLmF0KGkpLmZpcnN0OworICAgICAgICBpZiAocGF0dGVybi0+aXNSZXN0UGFyYW1ldGVy
KCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Jlc3RQYXJhbWV0ZXIpOworICAg
ICAgICAgICAgbV9yZXN0UGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8UmVzdFBhcmFtZXRlck5vZGUq
PihwYXR0ZXJuKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBh
cmFtZXRlcigpOworICAgIH0KKyAgICAKICAgICAvLyBGaWd1cmUgb3V0IHNvbWUgaW50ZXJlc3Rp
bmcgZmFjdHMgYWJvdXQgb3VyIGFyZ3VtZW50cy4KICAgICBib29sIGNhcHR1cmVzQW55QXJndW1l
bnRCeU5hbWUgPSBmYWxzZTsKICAgICBpZiAoZnVuY3Rpb25Ob2RlLT5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpKSB7CkBAIC01MDgsMzYgKzQ3Niw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgfQogCiAgICAgbV9uZXdUYXJnZXRSZWdpc3RlciA9IGFkZFZhcigpOwotICAgIHN3aXRjaCAo
cGFyc2VNb2RlKSB7Ci0gICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
OiB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlz
UmVnaXN0ZXIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTogewotICAgICAgICBtX2dlbmVyYXRv
clJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0KLSAgICAgICAgLy8gRklYTUU6IEVtaXQgdG9fdGhpcyBv
bmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKLSAgICAgICAgbV9jb2RlQmxvY2stPmFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSAgICAgICAg
ZW1pdE9wY29kZShvcF90b190aGlzKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtp
bGwoJm1fdGhpc1JlZ2lzdGVyKSk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
LSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwotCi0gICAgICAgIGVtaXRNb3ZlKG1f
Z2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKLSAgICAgICAgZW1pdENyZWF0
ZVRoaXMobV9nZW5lcmF0b3JSZWdpc3Rlcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewotICAgICAgICAvLyB8
dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgotICAgICAgICBl
bWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgZGVmYXVsdDogeworICAgIGlmICghY29kZUJsb2NrLT5pc0Fycm93
RnVuY3Rpb24oKSkgewogICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAgICAgICAgICAg
ICBlbWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOwogICAgICAg
ICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkK
QEAgLTU1Myw4ICs0OTIsOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2
YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lz
dGVyKTsKICAgICB9CiAKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJl
Zm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2Nv
cGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTg1OSwyMiArNzk5LDYgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCkKICAgICByZXR1cm4gJnBh
cmFtZXRlcjsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRl
cnMoRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIC8vIE1ha2Ugc3VyZSB0
aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtl
IHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBu
b3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyBy
ZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0
aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gcGF0
dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7Ci0gICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jl
c3RQYXJhbWV0ZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFt
ZXRlcik7Ci0gICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFy
YW1ldGVyTm9kZSo+KHBhdHRlcm4pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCk7Ci0gICAgfQotfQotCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
Ojppbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50
SW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
cik7CkBAIC05MDIsMTcgKzgyNiwxNyBAQCBVbmlxdWVkU3RyaW5nSW1wbCogQnl0ZWNvZGVHZW5l
cmF0b3I6OnZpc2libGVOYW1lRm9yUGFyYW1ldGVyKERlc3RydWN0dXJpbmdQYXR0ZQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3UmVnaXN0ZXIoKQogewotICAgIG1fY2FsbGVl
TG9jYWxzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZUxvY2Fscy5zaXpl
KCkpKTsKLSAgICBpbnQgbnVtQ2FsbGVlTG9jYWxzID0gbWF4PGludD4obV9jb2RlQmxvY2stPm1f
bnVtQ2FsbGVlTG9jYWxzLCBtX2NhbGxlZUxvY2Fscy5zaXplKCkpOwotICAgIG51bUNhbGxlZUxv
Y2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LCBudW1DYWxsZWVMb2NhbHMpOwotICAgIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyA9
IG51bUNhbGxlZUxvY2FsczsKLSAgICByZXR1cm4gJm1fY2FsbGVlTG9jYWxzLmxhc3QoKTsKKyAg
ICBtX2NhbGxlZVJlZ2lzdGVycy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxs
ZWVSZWdpc3RlcnMuc2l6ZSgpKSk7CisgICAgaW50IG51bUNhbGxlZVJlZ2lzdGVycyA9IG1heDxp
bnQ+KG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycywgbV9jYWxsZWVSZWdpc3RlcnMu
c2l6ZSgpKTsKKyAgICBudW1DYWxsZWVSZWdpc3RlcnMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBt
X2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgPSBudW1DYWxsZWVSZWdpc3RlcnM7Cisg
ICAgcmV0dXJuICZtX2NhbGxlZVJlZ2lzdGVycy5sYXN0KCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OnJlY2xhaW1GcmVlUmVnaXN0ZXJzKCkKIHsKLSAgICB3aGlsZSAobV9jYWxsZWVM
b2NhbHMuc2l6ZSgpICYmICFtX2NhbGxlZUxvY2Fscy5sYXN0KCkucmVmQ291bnQoKSkKLSAgICAg
ICAgbV9jYWxsZWVMb2NhbHMucmVtb3ZlTGFzdCgpOworICAgIHdoaWxlIChtX2NhbGxlZVJlZ2lz
dGVycy5zaXplKCkgJiYgIW1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKS5yZWZDb3VudCgpKQorICAg
ICAgICBtX2NhbGxlZVJlZ2lzdGVycy5yZW1vdmVMYXN0KCk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjpuZXdCbG9ja1Njb3BlVmFyaWFibGUoKQpAQCAtMTk5MSw3ICsxOTE1
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlVmFyaWFibGUoCiAgICAgICAgIHZh
ck9mZnNldCA9IFZhck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChsb2Nr
ZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKHZhcktpbmQgPT0gVmFyS2luZDo6U3Rh
Y2spOwotICAgICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQodmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgpKSk7CisgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpKTsKICAg
ICB9CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIDApOwogICAgIHN5
bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBwcm9wZXJ0eS5pbXBsKCksIG5ld0VudHJ5KTsKQEAgLTIz
ODgsMTIgKzIzMTIsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3Nl
cnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90
IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFs
eXplci5jcmVhdGVUaGlzKGRzdC0+aW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBtX3N0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhtX3RoaXNSZWdpc3Rlci5pbmRleCgpLCBiZWdpbiAr
IDMpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhp
c1JlZ2lzdGVyLmluZGV4KCkpOyAKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVn
aXN0ZXIuaW5kZXgoKSk7IAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI1NTcsNiArMjQ4MSwy
MCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5V2l0aFNpemUo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0
LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCit7CisgICAgcmV0dXJuIGVtaXROZXdG
dW5jdGlvbkludGVybmFsKGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVu
Y3Rpb24oZnVuY3Rpb24pKSk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQor
eworICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVy
KCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0
dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdF
eHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9w
X25ld19yZWdleHApOwpAQCAtMjU2NSwyNSArMjUwMywxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhw
KQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdG
dW5jdGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2Rl
KiBmdW5jKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJl
Z2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQp
CiB7CisKKyAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlE
ID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1f
Y29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7Ci0KLSAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IG9wX25ld19mdW5jX2V4cDsKLSAgICBzd2l0Y2ggKGZ1bmN0
aW9uLT5wYXJzZU1vZGUoKSkgewotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JX
cmFwcGVyRnVuY3Rpb25Nb2RlOiB7Ci0gICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogewotICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19hcnJv
d19mdW5jX2V4cDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6IHsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIH0KICAgICAKICAgICBlbWl0T3Bjb2RlKG9wY29kZUlEKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTI1OTYsMTggKzI1
MjIsMTcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lv
bkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW4KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5j
RXhwck5vZGUqIGZ1bmMpCiB7Ci0gICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihk
c3QsIGZ1bmMpOworICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19m
dW5jX2V4cCk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEFy
cm93RnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAgIEFTU0VSVChmdW5jLT5tZXRhZGF0YSgpLT5w
YXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKICAgICBi
b29sIGlzQ2xhc3NDb25zdHJ1Y3RvciA9IG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgJiYg
Y29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwotICAgIGlmIChpc0Ns
YXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9k
ZTo6RW1wdHkpCisgICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcikKICAgICAgICAgZW1pdFREWkNo
ZWNrKHRoaXNSZWdpc3RlcigpKTsKICAgICAKLSAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9u
Q29tbW9uKGRzdCwgZnVuYyk7CisgICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywg
b3BfbmV3X2Fycm93X2Z1bmNfZXhwKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNjI1LDE5
ICsyNTUwLDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0
Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHIKICAgICByZXR1cm4gZHN0OwogfQog
Ci1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVy
SUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQotewotICAgIHVuc2lnbmVk
IGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rp
b24pKTsKLSAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSkKLSAgICAgICAgZW1pdE9wY29kZShvcF9uZXdf
Z2VuZXJhdG9yX2Z1bmMpOwotICAgIGVsc2UKLSAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVu
Yyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1cm4gZHN0OwotfQotCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNh
bGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAg
ICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtMzg2MSwyNCAr
Mzc3Myw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAot
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUs
IGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQotewotICAgIHsKLSAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRl
cmF0b3IsIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0
QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKLSAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwotICAgICAgICBlbWl0TW92ZShuZXh0QXJn
dW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKLSAgICAgICAgZW1pdENhbGwoZHN0
LCBuZXh0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7Ci0gICAgfQotICAg
IHsKLSAgICAgICAgUmVmUHRyPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOwotICAg
ICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5
cGVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7Ci0gICAg
ICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgIH0KLSAgICByZXR1cm4gZHN0
OwotfQotCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3Rl
cklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAg
ICAgUmVmUHRyPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKQEAgLTM5NzQsMjI4ICszODY4LDQg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlcXVpcmVPYmplY3RDb2VyY2libGUoUmVn
aXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmkKICAgICBlbWl0TGFiZWwodGFyZ2V0LmdldCgpKTsK
IH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCog
YXJndW1lbnQpCi17Ci0gICAgUmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsK
LSAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6
ZSgpOwotICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwotICAg
IC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCi0gICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKLSAg
ICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAg
IGVtaXRSZXR1cm4oYXJndW1lbnQpOwotICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkK
LXsKLSAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgZW1pdE9w
Y29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdp
c3Rlci0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVn
aW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpCi17Ci0gICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2Rl
KG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0
ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOwotICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKLXsKLSAgICBl
bWl0WWllbGRQb2ludChhcmd1bWVudCk7Ci0KLSAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVs
ID0gbmV3TGFiZWwoKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVt
cG9yYXJ5KCk7Ci0gICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQo
KSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJl
c3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwotICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5n
ZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwotCi0gICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVs
ID0gbmV3TGFiZWwoKTsKLSAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKLSAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRp
b24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwotICAgIC8vIFJldHVybi4KLSAgICB7Ci0gICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZhbHVlUmVn
aXN0ZXIoKTsKLSAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgewotICAgICAgICAgICAg
cmV0dXJuUmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIu
Z2V0KCkpOwotICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOwot
ICAgICAgICB9Ci0gICAgICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwotICAg
IH0KLQotICAgIC8vIFRocm93LgotICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKLSAg
ICBlbWl0VGhyb3coZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKLQotICAgIC8vIE5vcm1hbC4K
LSAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0b3JW
YWx1ZVJlZ2lzdGVyKCk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUpCi17Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5
KCk7Ci0gICAgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5
bWJvbCk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywg
bnVsbHB0cik7Ci0gICAgICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1
bWVudCk7Ci0gICAgICAgICAgICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RT
dGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZlB0cjxM
YWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwotICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQ
dHI8TGFiZWw+IG5leHRFbGVtZW50ID0gbmV3TGFiZWwoKTsKLSAgICAgICAgICAgIGVtaXRMb2Fk
KHZhbHVlLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICAgICAgZW1pdEp1bXAobmV4
dEVsZW1lbnQuZ2V0KCkpOwotCi0gICAgICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BTdGFydCA9
IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICBlbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKLSAg
ICAgICAgICAgIGVtaXRMb29wSGludCgpOwotCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZW1pdFlpZWxkUG9pbnQodmFsdWUuZ2V0KCkpOwotCi0gICAgICAgICAgICAgICAgUmVmUHRy
PExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9y
YXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKLSAgICAgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7Ci0K
LSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlv
bi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIs
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVy
YXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSkpOwotICAgICAgICAgICAgICAgICAgICBlbWl0
SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHJldHVybkxhYmVsLmdldCgpKTsKLQotICAgICAg
ICAgICAgICAgICAgICAvLyBGYWxsdGhyb3VnaCB0byBUaHJvd01vZGUuCi0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5TZXF1ZW5jZSA9IG5l
d0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5XaXRoSXRlcmF0
b3JSZXN1bHQgPSBuZXdMYWJlbCgpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXR1cm5JdGVyYXRvclJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgICAg
IC8vIFRocm93LgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PExhYmVsPiB0aHJvd01ldGhvZEZvdW5kID0gbmV3TGFiZWwoKTsKLSAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9y
YXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudGhyb3dLZXl3b3JkKTsKLSAg
ICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1w
b3JhcnkoKSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKLQot
ICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9k
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwo
IkRlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJvdycgbWV0aG9kLiIpKTsK
LQotICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dNZXRob2RGb3VuZC5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgdGhyb3dBcmd1bWVudHMoKnRoaXMs
IG51bGxwdHIsIDEpOwotICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZSh0aHJvd0FyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBl
bWl0TW92ZSh0aHJvd0FyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkpOwotICAgICAgICAgICAgICAgICAgICBlbWl0Q2FsbChyZXR1cm5JdGVyYXRv
clJlc3VsdC5nZXQoKSwgdGhyb3dNZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgdGhy
b3dBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2
b3RFbmQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wKHJldHVybldpdGhJdGVyYXRv
clJlc3VsdC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8g
UmV0dXJuLgotICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5MYWJlbC5nZXQoKSk7Ci0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVy
bk1ldGhvZEZvdW5kID0gbmV3TGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVy
YXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwotICAgICAgICAgICAg
ICAgICAgICBlbWl0SnVtcElmRmFsc2UoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCBy
ZXR1cm5NZXRob2QuZ2V0KCkpLCByZXR1cm5NZXRob2RGb3VuZC5nZXQoKSk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgZW1pdE1vdmUodmFsdWUuZ2V0KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wKHJldHVyblNlcXVlbmNlLmdldCgpKTsK
LQotICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuTWV0aG9kRm91bmQuZ2V0KCkp
OwotICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhp
cywgbnVsbHB0ciwgMSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRl
cmF0b3JSZXN1bHQuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9k
ZS0+ZGl2b3RFbmQoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRmFsbHRocm91Z2ggdG8g
cmV0dXJuV2l0aEl0ZXJhdG9yUmVzdWx0LgotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGVtaXRMYWJlbChyZXR1cm5XaXRoSXRlcmF0b3JSZXN1bHQuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5JdGVy
YXRvclJlc3VsdElzT2JqZWN0ID0gbmV3TGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJl
c3VsdC5nZXQoKSksIHJldHVybkl0ZXJhdG9yUmVzdWx0SXNPYmplY3QuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciBy
ZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOwotCi0gICAgICAgICAgICAgICAg
ICAgIGVtaXRMYWJlbChyZXR1cm5JdGVyYXRvclJlc3VsdElzT2JqZWN0LmdldCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFi
ZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3
VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
ZG9uZSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOwotCi0gICAgICAgICAgICAgICAgICAg
IGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLnZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0
YXJ0LmdldCgpKTsKLQotICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdl
bmVyYXRvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdl
dCgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsK
LQotICAgICAgICAgICAgICAgICAgICAvLyBGYWxsdGhyb3VnaCB0byByZXR1cm5TZXF1ZW5jZS4K
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuU2Vx
dWVuY2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGlzSW5GaW5hbGx5QmxvY2soKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29w
ZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVybih2
YWx1ZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gTm9y
bWFsLgotICAgICAgICAgICAgICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgZW1pdE1vdmUodmFsdWUuZ2V0KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIo
KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5n
ZXQoKSk7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdp
dGhWYWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsK
LSAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwot
ICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLnZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQu
Z2V0KCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVtaXRMYWJlbChsb29w
RG9uZS5nZXQoKSk7Ci0gICAgfQotCi0gICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVl
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwotICAgIHJldHVybiB2YWx1ZS5nZXQoKTsK
LX0KLQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uo
aW50MzJfdCBzdGF0ZSkKLXsKLSAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRlKSk7Ci0gICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9y
UmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGNv
bXBsZXRlZFN0YXRlKTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKQotewotICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOwot
ICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbC5nZXQoKSk7Ci0gICAgZW1p
dExhYmVsKGxhYmVsLmdldCgpKTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5H
ZW5lcmF0b3IoUmVnaXN0ZXJJRCogc3RhdGUpCi17Ci0gICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3
aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKQotewotICAgIFN3aXRjaEluZm8gc3dp
dGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4dFN0YWNrLmxhc3QoKTsKLSAgICBtX3N3aXRjaENvbnRl
eHRTdGFjay5yZW1vdmVMYXN0KCk7Ci0KLSAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5
dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVz
KCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0g
ZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8u
Ynl0ZWNvZGVPZmZzZXQgKyAzKTsKLQotICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1w
VGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7Ci0gICAgaW50MzJfdCBz
d2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldDsKLSAgICBqdW1wVGFibGUu
bWluID0gMDsKLSAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JS
ZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7Ci0gICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmls
bCgwKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJl
bHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0
aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbwotICAgICAgICAvLyB0
aGUgbGFiZWxzIHNob3VsZCBub3QgYmUgImZvcndhcmQiIHJlZmVyZW5jZXMKLSAgICAgICAgQVNT
RVJUKCFtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOwotICAgICAgICBq
dW1wVGFibGUuYWRkKGksIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFk
ZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAppbmRleCAwZWE0OWE0MmM2YTg4MzlkNTMzMDE1MjI4MmZlNmJiM2YyMmZk
NzE0Li42YWIzOTBlYmFhMTYwN2JjMTIxZDk4OTY4NWUxMmExNDdkYmFjYjczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC0zMiw3ICszMiw2IEBACiAjZGVmaW5lIEJ5dGVjb2RlR2VuZXJhdG9yX2gKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIkxhYmVsLmgiCkBAIC0yODEsOCArMjgwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29u
c3RydWN0b3IoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9Ci0gICAgICAg
IEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2stPmdlbmVyYXRvclRoaXNNb2RlKCk7IH0KLSAgICAgICAgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsg
fQogCiAgICAgICAgIFBhcnNlckVycm9yIGdlbmVyYXRlKCk7CiAKQEAgLTMwMCw4ICsyOTcsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBzY29wZVJlZ2lzdGVyKCkg
eyByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOyB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yUmVnaXN0ZXIoKSB7IHJldHVybiBtX2dlbmVyYXRvclJlZ2lzdGVyOyB9Ci0KICAgICAgICAg
Ly8gUmV0dXJucyB0aGUgbmV4dCBhdmFpbGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3Rl
cnMgcmV0dXJuZWQgYnkKICAgICAgICAgLy8gbmV3VGVtcG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmll
ZCBmb3JtIG9mIHJlZmVyZW5jZSBjb3VudGluZzogYW55CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdp
dGggYSByZWZjb3VudCBvZiAwIGlzIGNvbnNpZGVyZWQgImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhh
dApAQCAtNTA1LDggKzUwMCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0FycmF5V2l0aFNpemUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBsZW5n
dGgpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBk
c3QsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdG
dW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwg
RnVuY0V4cHJOb2RlKiBmdW5jKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRD
b25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSk7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVy
SUQqLCBCYXNlRnVuY0V4cHJOb2RlKiwgT3Bjb2RlSUQpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJO
b2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0
LCBSZWdFeHAqKTsKIApAQCAtNjAxLDcgKzU5OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25z
dCBTdHJpbmcmIGVycm9yKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4
dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3Rl
cklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogICAgICAg
ICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJl
c3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9T
a2lwKTsKQEAgLTY1MCwyOCArNjQ2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlKTsKICAgICAg
ICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qLCBF
eHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJf
dCByYW5nZSk7CiAKLSAgICAgICAgdm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3RlcklEKik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgIHZvaWQgZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2lu
dCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLQotICAgICAgICB2b2lkIGVtaXRH
ZW5lcmF0b3JTdGF0ZUxhYmVsKCk7Ci0gICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKGludDMyX3Qgc3RhdGUpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0
ZXJJRCogYXJndW1lbnQpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChS
ZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAg
dm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7Ci0gICAgICAgIHZvaWQgZW5kR2VuZXJh
dG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOwotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JT
dGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQotICAgICAgICBSZWdp
c3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1sz
XTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9Ci0KICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAgICAgYm9vbCBzaG91bGRFbWl0
UHJvZmlsZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzOyB9CiAgICAg
ICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1
Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQotCi0gICAgICAgIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKQEAgLTY4OSw3ICs2NjksNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UG9wU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQYXJlbnRTY29w
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgdm9pZCBlbWl0
UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSwgYm9vbCBpc0NhcHR1cmVkKTsKLSAgICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rp
b25FeHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNlRnVuY0V4cHJOb2RlKik7CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIHZvaWQgcHVzaExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25t
ZW50Tm9kZSosIGJvb2wgY2FuT3B0aW1pemVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBjb25zdGFu
dFN5bWJvbFRhYmxlUmVzdWx0ID0gbnVsbHB0cik7CkBAIC03NTMsNyArNzMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQmIHJlZ2lzdGVyRm9yKFZpcnR1YWxSZWdpc3Rl
ciByZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBtX2NhbGxlZUxvY2Fsc1tyZWcudG9Mb2NhbCgpXTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbV9jYWxsZWVSZWdpc3RlcnNbcmVnLnRvTG9jYWwoKV07CiAKICAgICAg
ICAgICAgIGlmIChyZWcub2Zmc2V0KCkgPT0gSlNTdGFjazo6Q2FsbGVlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBtX2NhbGxlZVJlZ2lzdGVyOwpAQCAtNzc1LDIyICs3NTQsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVy
VERaOwogICAgICAgICAgICAgZ2V0VmFyaWFibGVzVW5kZXJURFoodmFyaWFibGVzVW5kZXJURFop
OwogCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBw
cm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KLSAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcK
ICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBtZXRhZGF0YS0+cGFyc2VN
b2RlKCk7CiAgICAgICAgICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkgPSBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7Ci0gICAgICAgICAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9k
ZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29u
c3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKICAgICAgICAgICAgICAg
ICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0Owot
ICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKQotICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7Ci0gICAgICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG1ldGFkYXRhLT5z
dXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKLSAgICAgICAgICAgICAgICBj
b25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotCi0g
ICAgICAgICAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRv
clRoaXNNb2RlOjpOb25FbXB0eTsKLSAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSAmJiBpc0NvbnN0cnVjdG9yKCkpCi0gICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yVGhpc01vZGUgPSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHk7CiAK
LSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1f
dm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
PyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0
cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCB2YXJpYWJsZXNVbmRlclREWik7CisgICAg
ICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBt
X3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RB
YmlsaXR5LCB2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdl
dFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKQEAgLTc5OCw3ICs3Njcs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZh
cmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlz
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVn
aXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29r
UmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFy
Z3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplUGFyYW1l
dGVycyhGdW5jdGlvblBhcmFtZXRlcnMmKTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplVmFyTGV4
aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAgICAgICB2
b2lkIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3Bl
U3RhY2soRnVuY3Rpb25QYXJhbWV0ZXJzJiwgRnVuY3Rpb25Ob2RlKiwgU3ltYm9sVGFibGUqLCBp
bnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFVu
aXF1ZWRTdHJpbmdJbXBsKik+JiBjYXB0dXJlcyk7CiAKQEAgLTgzOCw3ICs4MDYsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRy
IH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxs
cHRyIH07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRy
IH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9
OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9
OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpA
QCAtODQ2LDcgKzgxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFNlZ21lbnRlZFZl
Y3RvcjxSZWdpc3RlcklEKiwgMTY+IG1fbG9jYWxSZWdpc3RlcnNGb3JDYWxsZWVTYXZlUmVnaXN0
ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY29uc3RhbnRQ
b29sUmVnaXN0ZXJzOwotICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1f
Y2FsbGVlTG9jYWxzOworICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1f
Y2FsbGVlUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+
IG1fcGFyYW1ldGVyczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPExhYmVsLCAzMj4gbV9sYWJl
bHM7CiAgICAgICAgIExhYmVsU2NvcGVTdG9yZSBtX2xhYmVsU2NvcGVzOwpAQCAtODYyLDcgKzgy
OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8U3dpdGNoSW5mbz4gbV9zd2l0
Y2hDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Rm9ySW5Db250
ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1f
dHJ5Q29udGV4dFN0YWNrOwotICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHM7CiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50
OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9Owog
ICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25W
YXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25l
ZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDk5NTYxYmM3ZWQ1
ODhiNmY4MGQwZTljMWM2NjY1NDNkMTYzYTZlZGUuLjZlZWU0NDIzM2QwOTU5YjhkMDlkNTEzOWUw
NzNiYmZmZTlkZTFkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKLSNpbmNs
dWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtMTQ2
LDcgKzE0NSw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFRoaXNO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0
b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVy
YXRvci5nZW5lcmF0b3JUaGlzTW9kZSgpID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKKyAg
ICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTcxLDE2ICsxNzAsMTIgQEAgUmVnaXN0ZXJJ
RCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAotc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2Jq
ZWN0Rm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCitzdGF0aWMgUmVnaXN0
ZXJJRCogZW1pdFN1cGVyQmFzZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
KQogewogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNr
OjpDYWxsZWUpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmpl
Y3RQcml2YXRlTmFtZSk7Ci19CiAKLXN0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCi17Ci0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBob21lT2JqZWN0LmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKQEAgLTI1ODksNyArMjU4
NCw2IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgZHN0ID0gMDsKIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5v
ZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwg
anNVbmRlZmluZWQoKSk7Ci0KICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblJl
Z2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQs
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0luRmluYWxs
eUJsb2NrKCkpIHsKICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CkBAIC0yOTcy
LDk1ICsyOTY2LDI2IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNl
dCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKKyAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2Rl
KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKLSAgICBzd2l0Y2ggKGdl
bmVyYXRvci5wYXJzZU1vZGUoKSkgewotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOiB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0
YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwotICAgICAgICBBU1NFUlQoc2luZ2xl
U3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnROb2Rl
KiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVT
dGF0ZW1lbnQpOwotICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQt
PmV4cHIoKTsKLSAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwotICAgICAg
ICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhw
cik7Ci0KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhw
cik7Ci0KLSAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRp
bmc6Ok5lZWRlZCkgewotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3Qg
PSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwotICAgICAgICAgICAgZW1pdFB1
dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFu
IG9iamVjdCBhbmQgc3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0
aWVzIGZvciBlYXNlLgotICAgICAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdp
bGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3Ig
YW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGll
cy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTU0NQotCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2Vu
ZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0
UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwotCi0g
ICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5h
bWUsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKDApKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRC
eUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGluaXRpYWxTdGF0ZSwgUHJvcGVydHlOb2Rl
OjpLbm93bkRpcmVjdCk7CisgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhp
cy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CiAK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JS
ZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUsIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9k
ZTo6S25vd25EaXJlY3QpOworICAgIC8vIENoZWNrIGZvciBhIHJldHVybiBzdGF0ZW1lbnQgYXQg
dGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xlIGJsb2NrLgorICAgIGlm
IChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKKyAgICAg
ICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9j
a05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgIGlmIChs
YXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2Rl
KCkpCisgICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxh
c3RTdGF0ZW1lbnRJbkJsb2NrKTsKKyAgICB9CiAKKyAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1
cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCisgICAgaWYgKCFyZXR1cm5Ob2Rl
KSB7CisgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/
IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJvZmlsZVR5
cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVz
c2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidz
IHNvdXJjZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRP
ZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxG
cmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZTogewotICAgICAgICBSZWZQdHI8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJl
bCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
RnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwotICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yQm9k
eUxhYmVsLmdldCgpKTsKLQotICAgICAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5
T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9k
ZTo6VGhyb3dNb2RlKSkpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShj
b25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwotCi0gICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKLQotICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZ2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIo
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGdlbmVyYXRvckJv
ZHlMYWJlbC5nZXQoKSk7Ci0KLSAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0
b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwotCi0gICAgICAgIFJlZlB0cjxMYWJlbD4g
ZG9uZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KGRvbmUuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSkpOwotICAgICAgICBnZW5lcmF0b3IuZW5kR2Vu
ZXJhdG9yKGRvbmUuZ2V0KCkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZWZhdWx0
OiB7Ci0gICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKTsKLQotICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1l
bnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICAgICAgUmV0dXJuTm9kZSogcmV0dXJu
Tm9kZSA9IDA7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0
aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2suCi0gICAgICAg
IGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKLSAg
ICAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nh
c3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAgICAg
ICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5p
c1JldHVybk5vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8
UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9u
ZS4KLSAgICAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0gICAgICAgICAgICBSZWdpc3RlcklEKiBy
MCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkg
OiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1
cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJv
ZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCi0gICAgICAg
ICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5l
KCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIH0KIApAQCAtMzA4OCwyNCArMzAxMywxMSBAQCBSZWdpc3Rl
cklEKiBBcnJvd0Z1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdAogCiBSZWdpc3RlcklEKiBZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGlmICghZGVsZWdhdGUoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gbnVs
bHB0cjsKLSAgICAgICAgaWYgKGFyZ3VtZW50KCkpIHsKLSAgICAgICAgICAgIGFyZyA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmcu
Z2V0KCksIGFyZ3VtZW50KCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFyZyA9IGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCkpOwotICAg
ICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7Ci0gICAgfQotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREZWxlZ2F0ZVlpZWxkKGFyZy5nZXQoKSwgdGhpcyk7
CisgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0dWIuIFdoZW4gY29tcGxldGluZyBFUzYg
R2VuZXJhdG9ycywgd2UgbmVlZCB0byBpbXBsZW1lbnQgaXQuCisgICAgZ2VuZXJhdG9yLmVtaXRU
aHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCB5ZXQuIikpOwogICAg
IGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENsYXNzRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IGEyMDIwYTQ0YTAyMGQyODRmNTY5YjdmZDY3NTUwMDc0NTM5NGUx
NjEuLjQzOWU2MjAwMzRiN2ZjZGM4MTUwM2E1OTE2ZTFiNDQ3ZjZjMDYyYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fY29uc3RhbnROYU4oZ3JhcGguZnJlZXplKGpz
TnVtYmVyKFBOYU4pKSkKICAgICAgICAgLCBtX2NvbnN0YW50T25lKGdyYXBoLmZyZWV6ZShqc051
bWJlcigxKSkpCiAgICAgICAgICwgbV9udW1Bcmd1bWVudHMobV9jb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSkKLSAgICAgICAgLCBtX251bUxvY2FscyhtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHMpCisgICAgICAgICwgbV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKQogICAgICAgICAsIG1fcGFyYW1ldGVyU2xvdHMoMCkKICAgICAgICAgLCBtX251bVBh
c3NlZFZhckFyZ3MoMCkKICAgICAgICAgLCBtX2lubGluZVN0YWNrVG9wKDApCkBAIC0xNDEzLDcg
KzE0MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIAogICAgIGVuc3VyZUxvY2Fs
cygKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2Fs
KCkgKyAxICsKLSAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVMb2NhbHMpOworICAgICAgICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJT
aXplICsgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CiAgICAgCiAgICAgc2l6ZV90
IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXpl
KCk7CiAKQEAgLTI5MjcsNyArMjkyNyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdl
dEJ5SWQoCiAgICAgCiAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNv
cnJlc3BvbmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KICAgICBpbnQgcmVnaXN0ZXJP
ZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKLSAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZUxvY2FscyAtIDEpLm9mZnNldCgpOworICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzIC0gMSkub2Zmc2V0KCk7CiAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVyT2ZQYXJhbWV0
ZXJzOwogICAgIHJlZ2lzdGVyT2Zmc2V0IC09IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7
CiAgICAgCkBAIC0zMDk2LDcgKzMwOTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogICAgIAogICAgICAgICAvLyBTdGFydCB3aXRoIGEgcmVnaXN0ZXIgb2Zmc2V0IHRo
YXQgY29ycmVzcG9uZHMgdG8gdGhlIGxhc3QgaW4tdXNlIHJlZ2lzdGVyLgogICAgICAgICBpbnQg
cmVnaXN0ZXJPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKLSAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgLSAxKS5v
ZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnMgLSAxKS5vZmZzZXQoKTsKICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXQgLT0gbnVtYmVyT2ZQYXJhbWV0ZXJzOwogICAgICAgICByZWdpc3Rlck9mZnNldCAtPSBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGb3JBbGxLaWxscy5oCmluZGV4IGY1ZjRjYjUyMzgwZWRiYjNjOWY4OTcxMDMyMTEwYTA4
OGNmZDEyOTAuLjUxYWM1NWQ0Y2E1ZjllZDQ5OGFiODg5N2M5NmVkMjU5MzMzZDYyODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKQEAgLTc2LDcgKzc2LDcg
QEAgdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZv
cmUsIE5vZGUqIG5vZGVBZnRlciwgY29uc3QKICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZUJlZm9yZSA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZlbmVzcyhiZWZvcmUuYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVBZnRlciA9IGZ1bGxMaXZlbmVz
cy5nZXRMaXZlbmVzcyhhZnRlci5ieXRlY29kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIGZv
ciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7
IHJlbGF0aXZlTG9jYWwtLTspIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2Fs
ID0gY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsgcmVsYXRpdmVMb2NhbC0tOykgewog
ICAgICAgICAgICAgaWYgKGxpdmVCZWZvcmUuZ2V0KHJlbGF0aXZlTG9jYWwpICYmICFsaXZlQWZ0
ZXIuZ2V0KHJlbGF0aXZlTG9jYWwpKQogICAgICAgICAgICAgICAgIGZ1bmN0b3IodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwocmVsYXRpdmVMb2NhbCkgKyBzdGFja09mZnNldCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCAxOTExY2ZlZWQ2NDE5MDM5NmM4
YWU2NWYzYTdlYzQ5NzhhNzY2ZmE5Li40Mjg4NzBiMWMyYTI1ODcxNWNkNzE1M2I4ZTc5OWJlYWU5
MmM0ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC03MzgsNyArNzM4
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGlu
ZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MmIGZ1bGxMaXZlbmVzcyA9IGxpdmVuZXNzRm9yKGNvZGVCbG9jayk7CiAgICAgICAg
ICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZl
bmVzcyhjb2RlT3JpZ2luUHRyLT5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7IHJlbGF0
aXZlTG9jYWwtLTspIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9
IGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7IHJlbGF0aXZlTG9jYWwtLTspIHsKICAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gc3RhY2tPZmZzZXQgKyB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChyZWxhdGl2ZUxvY2FsKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAvLyBEb24ndCByZXBvcnQgaWYgb3VyIGNhbGxlZSBhbHJlYWR5IHJlcG9ydGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmNwcAppbmRleCA1ZTVhMTUwNGMyNGQwNjQwNGY3ODZiMTcyMmUy
ZjYxNTBmOGZhYjYzLi5lNmM0MjM1ZWM0Y2E2ODE3Y2QzN2U2OTk4MzQ3ODYwODlmMmI2ZWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmNwcApAQCAtOTMsOCArOTMsOCBAQCBwdWJsaWM6CiAgICAgICAg
IC8vIFdlJ2QgcmVhbGx5IGxpa2UgdG8gdXNlIGFuIHVuc2V0IG9yaWdpbiwgYnV0IFRocmVhZGVk
Q1BTIHdvbid0IGFsbG93IHRoYXQuCiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gTm9kZU9y
aWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCBmYWxzZSk7CiAgICAgICAgIAotICAg
ICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHMpOwot
ICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVl
TG9jYWxzOyArK2xvY2FsKSB7CisgICAgICAgIFZlY3RvcjxOb2RlKj4gbG9jYWxzKGJhc2VsaW5l
LT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9j
YWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9jYWwpIHsKICAgICAgICAg
ICAgIE5vZGUqIHByZXZpb3VzSGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxv
Y2FsKTsKICAgICAgICAgICAgIGlmICghcHJldmlvdXNIZWFkKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAo
aW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9j
YWwpIHsKKyAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251
bUNhbGxlZVJlZ2lzdGVyczsgKytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNI
ZWFkID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAg
aWYgKCFwcmV2aW91c0hlYWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAppbmRl
eCA2MzkyZjE0YTk4MDRjZmI2OTJlODRiYzM5MDEyMGQwYmFiN2RiZGUyLi5iZThlMmE3OTE0OWY1
YTJlMzE0NGFkNDY0YTM1YzY1NGZjNTk5ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKQEAgLTEyMyw5ICsxMjMsOSBA
QCB2b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIAogICAgIHVuc2ln
bmVkIG51bVZhcmlhYmxlczsKICAgICBpZiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0g
ICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1l
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKS0+bV9udW1DYWxsZWVMb2NhbHMgKyBWaXJ0dWFs
UmVnaXN0ZXIoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2Fs
KCkgKyAxOworICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGlu
ZUNhbGxGcmFtZShjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzICsgVmlydHVhbFJlZ2lzdGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCkudG9Mb2NhbCgpICsgMTsKICAgICBlbHNlCi0gICAgICAgIG51bVZhcmlhYmxlcyA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgbnVtVmFyaWFibGVz
ID0gYmFzZWxpbmVDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAgIAogICAgIC8v
IENyYXp5IHNwZWNpYWwgY2FzZTogaWYgd2UncmUgYXQgaW5kZXggPT0gMCB0aGVuIHRoaXMgbXVz
dCBiZSBhbiBhcmd1bWVudCBjaGVjawogICAgIC8vIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgYWxs
IHZhcmlhYmxlcyBhcmUgYWxyZWFkeSBzZXQgdXAuIFRoZSByZWNvdmVyaWVzIHNob3VsZApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3Bw
CmluZGV4IDMwODBkYzM0NTA5YzczMzMyNGI4MTQzZDJhOTU0ZjA4ZWRhZjEzZmIuLjI5ZjA1ZTUx
ZDQ2MWZkZjZlMDE0MzgzMTk5YzkxOGY2NDE1ZThjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAKQEAgLTQ1LDkgKzQ1LDkg
QEAgRm9yT1NSRW50cnlKSVRDb2RlKiBGb3JPU1JFbnRyeUpJVENvZGU6OmZ0bEZvck9TUkVudHJ5
KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRp
YWxpemVFbnRyeUJ1ZmZlcihWTSYgdm0sIHVuc2lnbmVkIG51bUNhbGxlZUxvY2FscykKK3ZvaWQg
Rm9yT1NSRW50cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25l
ZCBudW1DYWxsZWVSZWdpc3RlcnMpCiB7Ci0gICAgbV9lbnRyeUJ1ZmZlciA9IHZtLnNjcmF0Y2hC
dWZmZXJGb3JTaXplKG51bUNhbGxlZUxvY2FscyAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwor
ICAgIG1fZW50cnlCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShudW1DYWxsZWVSZWdp
c3RlcnMgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JF
bnRyeUpJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlK
SVRDb2RlLmgKaW5kZXggOWFlOTczZjQwZDEyYzE2YjgwOWMwYzhjYTFlMzZlYmFhOGVlMzY5Ny4u
NDRhZjhmOTU3OTFhYWE3OGU2ZTgxZGZhNjQ5Yzg2YTE1ZWEzNDQ4MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICBGb3JPU1JFbnRyeUpJVENvZGUoKTsKICAgICB+Rm9yT1NSRW50
cnlKSVRDb2RlKCk7CiAgICAgCi0gICAgdm9pZCBpbml0aWFsaXplRW50cnlCdWZmZXIoVk0mLCB1
bnNpZ25lZCBudW1DYWxsZWVMb2NhbHMpOworICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5QnVmZmVy
KFZNJiwgdW5zaWduZWQgbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBl
bnRyeUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnlCdWZmZXI7IH0KICAgICAKICAgICB2
b2lkIHNldEJ5dGVjb2RlSW5kZXgodW5zaWduZWQgdmFsdWUpIHsgbV9ieXRlY29kZUluZGV4ID0g
dmFsdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKaW5kZXgg
NjAxYjQ2MDk0MDY0YWM2MTNhOThmYTljMjI5Mzg2ZmE2ZWFkZjA1MS4uYWM3MTcxNGY5M2Y1NWFm
MjYxOGM3ZTQyMGE3MWI2NmRlMjExNzY2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFbnRyeS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAog
ICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50
Pih2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxz
KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0g
YmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKICAgICAKICAgICBFbmNvZGVkSlNWYWx1
ZSogc2NyYXRjaCA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oCiAgICAgICAgIGVudHJ5
Q29kZS0+ZW50cnlCdWZmZXIoKS0+ZGF0YUJ1ZmZlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTdGF0ZS5jcHAKaW5kZXggNTVkODI5YTJhNjZiNjI2MDkxNTg0YTczZTExZGJhMDNjMjU2
ZWEyOC4uMDMwN2UwZWQwNWM1YTI1NjFjYzRlZjgyYjVhYTJlNWZmY2Y4YzBlYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgU3RhdGU6OlN0
YXRlKEdyYXBoJiBncmFwaCkKICAgICB9CiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsK
ICAgICAgICAgUmVmUHRyPEZvck9TUkVudHJ5SklUQ29kZT4gY29kZSA9IGFkb3B0UmVmKG5ldyBG
b3JPU1JFbnRyeUpJVENvZGUoKSk7Ci0gICAgICAgIGNvZGUtPmluaXRpYWxpemVFbnRyeUJ1ZmZl
cihncmFwaC5tX3ZtLCBncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsK
KyAgICAgICAgY29kZS0+aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKGdyYXBoLm1fdm0sIGdyYXBoLm1f
cHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOwogICAgICAgICBjb2RlLT5zZXRC
eXRlY29kZUluZGV4KGdyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpOwogICAgICAg
ICBqaXRDb2RlID0gY29kZTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAppbmRleCA1NDY5NzFjZThmNTM4YjllMzM1Y2ZmZmIyODQ3MzNiZDk2
MTU0ZTJiLi5kNWIxNDkyYWU3ZjUzZGU2Y2E2NTUxOWM1NzJlYjYxZWViMzllMzBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTE1NSw3ICsxNTUsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQq
KTsKICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIGJvb2wgaXNM
aXZlQ2VsbChjb25zdCB2b2lkKik7Ci0gICAgICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZvaWQqKTsK
ICAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlNDZWxsKik7CiAg
ICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjbGVhck1h
cmtlZChjb25zdCB2b2lkKik7CkBAIC0zODksNyArMzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
TGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKICAgICB7CiAgICAgICAgIEFTU0VSVChNYXJrZWRCbG9j
azo6aXNBdG9tQWxpZ25lZChwKSk7CiAgICAgICAgIHNpemVfdCBhdG9tTnVtYmVyID0gdGhpcy0+
YXRvbU51bWJlcihwKTsKQEAgLTQwMCwxMyArMzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdG9tTnVtYmVyID49IG1fZW5kQXRv
bSkgLy8gRmlsdGVycyBwb2ludGVycyBpbnRvIGludmFsaWQgY2VsbHMgb3V0IG9mIHRoZSByYW5n
ZS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCog
cCkKLSAgICB7Ci0gICAgICAgIGlmICghaXNBdG9tKHApKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEpTQ2VsbCo+KHAp
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IDc1ZWQ4Y2Y3YmM0Y2VkNjE5ODc2ZmQ3NmRmMGYwYmFlNTllYzA2
YjguLmM1NDc1MWNkNzIwZmZmYzExZTE1ZDM1MjU2YjA2Mzc1YzBiNmU4YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTUz
LDE2ICsxNTMsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgQ2Fs
bEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBDb2Rl
QmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBK
U1Njb3BlKiBjYWxsZXJTY29wZUNoYWluID0gY2FsbGVyRnJhbWUtPnVuY2hlY2tlZFIoY2FsbGVy
Q29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpLlJlZ2lzdGVyOjpzY29wZSgpOwot
ICAgIFVubGlua2VkQ29kZUJsb2NrKiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jayA9IGNhbGxlckNv
ZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLQotICAgIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQ7Ci0gICAgaWYgKGNhbGxlclVubGlua2Vk
Q29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQp
Ci0gICAgICAgIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOwotICAgIGlm
IChjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZSAmJiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+Z2VuZXJhdG9y
VGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCi0gICAgICAgIHRoaXNURFpN
b2RlID0gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOwotCi0gICAgU291cmNlQ29kZSBzb3VyY2VD
b2RlKG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSkpOwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFs
ID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCksIHNvdXJjZUNvZGUsIHRoaXNURFpNb2RlLCBjYWxsZXJTY29wZUNo
YWluKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENv
ZGVDYWNoZSgpLnRyeUdldChjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBwcm9ncmFt
U291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKIAogICAgIGlmICghZXZhbCkgewogICAgICAgICBp
ZiAoIWNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKQEAgLTE4MCw3ICsxNzEsOCBA
QCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIC8vIElmIHRoZSBs
aXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3VsZCBub3QgaGF2ZSB0aHJvd24gZXhjZXB0aW9u
cy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpOwogCi0gICAg
ICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxG
cmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCB0
aGlzVERaTW9kZSwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgICAgIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
LT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBUaGlzVERa
TW9kZTo6QWx3YXlzQ2hlY2sgOiBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKKyAgICAgICAg
ZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1l
LCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNU
RFpNb2RlLCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKICAgICAgICAgaWYgKCFl
dmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpAQCAtNDE4LDcg
KzQxMCw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiAgICAgfQogICAgIGRhdGFMb2dGKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAK
LSAgICBlbmQgPSBpdCAtIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgKyBjb2RlQmxvY2st
Pm1fbnVtVmFyczsKKyAgICBlbmQgPSBpdCAtIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMgKyBjb2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBpZiAoaXQgIT0gZW5kKSB7CiAgICAgICAg
IGRvIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9ICgqaXQpLmpzVmFsdWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCBhYjA1ZTgwN2Y2MTk3Mjc0MjFiMTA4ZTM5N2Y1YTgzM2Ux
ZmI0NzA0Li4yZDZmMDJjMmIxZjg5MDdmM2RmYTdmODk0MDNhZTA4NjMwZDMxYTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTUsOCArMjE1LDYgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Jlc3RfbGVuZ3Ro
KQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3Bf
YXNzZXJ0KQotICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09QKG9w
X3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpAQCAtMjYzLDggKzI2MSw2
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX25ld19hcnJheV9idWZmZXIpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuYykKICAg
ICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKLSAgICAgICAgREVGSU5FX09QKG9wX25l
d19nZW5lcmF0b3JfZnVuYykKLSAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVu
Y19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdl
eHApCkBAIC03NjgsOSArNzY0LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9u
SGFuZGxlcnMoKQogCiB1bnNpZ25lZCBKSVQ6OmZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVC
bG9jay0+bV9udW1DYWxsZWVMb2NhbHMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5t
X251bUNhbGxlZUxvY2FscykpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpKTsKIAotICAgIHJldHVybiByb3VuZExvY2FsUmVn
aXN0ZXJDb3VudEZvckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9j
YWxzICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CisgICAgcmV0
dXJuIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbElu
UmVnaXN0ZXJzKTsKIH0KIAogaW50IEpJVDo6c3RhY2tQb2ludGVyT2Zmc2V0Rm9yKENvZGVCbG9j
ayogY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMmI0NmU4MjU1ZGJkNjNj
MmJkNjc1OTZjNmIwMjUxM2M1YzQ0ZmU2OC4uNjg1MGY3YWE1MWUxODg4ZTJlNDgzOWJlMTQ1ZWZk
MjQ0ZmQ4ODM0NiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTQsOCArNDk0LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1
bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpAQCAtNTQ0LDggKzU0Miw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZlcihJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwotICAgICAg
ICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKQEAgLTY2NSw3ICs2NjEsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChJbnN0cnVjdGlvbiosIGJv
b2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWdu
ZWQpOwogCi0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7
CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGludCBzY29wZSwgYm9v
bCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggMWYzMTE1YTU5Y2M5NDY2MGExYzNmZThk
YTk4NDcyMDU1M2MyMGI2ZC4uZjYwYWU1N2FmZGUzOGRlNjE2YjZhODliODI2ZWY4NDkxNTM0YTNm
NSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC05NjcsNyAr
OTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwLCBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2NvZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29t
bW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbGF6
eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBA
IC05NzgsMjYgKzk3OCwxNCBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogI2VuZGlmCiAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jRXhlYyA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCk7Ci0KLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLSAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1
bmNFeGVjKTsKLSAgICB9CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwg
ZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGVtaXROZXdGdW5jQ29tbW9u
KGN1cnJlbnRJbnN0cnVjdGlvbik7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0
b3JfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAg
ZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBlbWl0TmV3RnVuY0V4
cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLQorICAgIAogdm9pZCBKSVQ6OmVtaXRO
ZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJl
bnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwpAQCAtMTAzMCwyNyArMTAxOCwxMSBAQCB2b2lkIEpJ
VDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAjZWxzZSAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9u
LCBkc3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDMsIHJlZ1QyKTsKICNlbmRpZgotICAgIGVsc2Ug
ewotICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKQotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24p
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKLSAgICAgICAgfQot
ICAgIH0KKyAgICBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rp
b24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0KLXZv
aWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQotewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwot
fQotCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJl
bnRJbnN0cnVjdGlvbik7Ci19Ci0KKyAgICAKIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJvd19m
dW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdG
dW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtMTQ2MiwxOCArMTQzNCw2IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCBjYWQ5MzQ2OWMxYmNiZDJiNTdkY2I1MjAyM2FiZTlmNzIzZjc0NDQ1Li5kODczYTFkZGQ2
NTdhMjg5NjhhMGU1MWY5MDYzNmQxZGUyZmNmODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJKSVRU
b0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTQXJyb3dGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oIgpAQCAtOTg4LDQyICs5ODcsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhleGVj
LCBwcm9maWxlLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNpemVWYWx1ZSkpOwogfQog
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKIHsK
ICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFi
bGU6OmluZm8oKSkpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIGlmIChpc0ludmFsaWRhdGVkKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOwotfQotCi1leHRlcm4gIkMi
IHsKLQotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSkKLXsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNGdW5jdGlvbj4o
ZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVh
bGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0Nl
bGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rp
b25Db21tb248SlNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1
ZSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJh
dG9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5j
dGlvbkV4ZWN1dGFibGUpCi17Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9u
PEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZh
bHNlKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5l
cmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCi17
Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rp
b24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOworICAgIEFTU0VSVChm
dW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpj
cmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCitFbmNvZGVk
SlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVj
LCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlv
bkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKQEAgLTEwMzksMTIgKzEwMTksMTIgQEAgRW5j
b2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKgogICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hw
b2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRp
b25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IHRoaXNWYWx1ZSwgdHJ1ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9u
KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAg
ICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9u
TmV3QXJyb3dGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0
aGlzVmFsdWUsIGZhbHNlKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24o
ZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKaW5kZXggMjU0MjU1MDIyOWRhNDFlMWFkZDQ2YjBiMDI1OGU4ZTQ5OTViOWI2ZC4u
OTYzOGYxNDVjOWQ1NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTMwMSw4ICszMDEsNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyV2l0aFByb2ZpbGUo
RXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpT
U2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuY3BwCmluZGV4IGY1OTE4YjcyMTcwYWM1ZGU0N2MyYmVkMzYzNzk2NTMwZTAxOTU0MDEu
LmE2YzNkMjdlMjgwYTA0NDc5MjI4NjlkNzgyY2ZlMmE1NWFiNzgwYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC0xMzQsOSArMTM0
LDkgQEAgdm9pZCBzZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAK
IHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsK
LSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscykp
KTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVycykpKTsKIAotICAgIHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZvckZyYW1l
UG9pbnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzICsgbWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CisgICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdp
c3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsKIH0KIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAzNTFhNGM4ZDQ0MmYyZDZjNjhjNGE5MmMzMmYx
NmVjNjAyZGE4Mjg3Li43NjVmMTk3OTUwZTMyM2YwNTY2ZTcyYzczYjRlZWQ2M2UzYjIwOGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAg
LTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgi
CiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAt
MjI1LDkgKzIyNCw5IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjCiAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5kKTsKLSAg
ICBkYXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7
IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVMb2NhbHMgPSAldSwg
Y2FsbGVyID0gJXAuXG4iLAorICAgIGRhdGFMb2dGKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlv
biAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51
bUNhbGxlZVJlZ2lzdGVycyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgICAgICBjb2Rl
QmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKLSAgICAgICAgICAgIGNv
ZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2Nr
LT5tX251bUNhbGxlZUxvY2FscywKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
cywKICAgICAgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCkpOwogfQogCkBAIC00NTksNyArNDU4
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiAjaWYgTExJTlRfU0xPV19Q
QVRIX1RSQUNJTkcKICAgICBkYXRhTG9nRigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhl
YyA9ICVwLlxuIiwgZXhlYyk7CiAgICAgZGF0YUxvZ0YoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhl
Yy0+Y29kZUJsb2NrKCkpOwotICAgIGRhdGFMb2dGKCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1
LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlTG9jYWxzKTsKKyAgICBkYXRhTG9n
RigiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251
bUNhbGxlZVJlZ2lzdGVycyk7CiAgICAgZGF0YUxvZ0YoIk51bSB2YXJzID0gJXUuXG4iLCBleGVj
LT5jb2RlQmxvY2soKS0+bV9udW1WYXJzKTsKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xMDQyLDE4
ICsxMDQxLDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogICAg
IExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIEFTU0VSVChj
b2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRz
QWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhhc0FjdGl2YXRpb24oKSk7Ci0gICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
Ci0jaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKLSAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVu
Y3Rpb24hXG4iKTsKLSNlbmRpZgotICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNj
b3BlKSk7Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHAp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwNjUsMTcgKzEwNTIsNiBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAgIExMSU5UX1JFVFVSTihKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKLUxMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQotewotICAgIExMSU5U
X0JFR0lOKCk7Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OwotICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQp
LlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7Ci0KLSAgICBMTElOVF9S
RVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkp
OwotfQotCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhw
KQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCmluZGV4IDI3MTMyNGIxODQ1M2Q3MmRjOGI3NjE4MGJhMDMwNGFiNDU2
NTk1OTcuLmUyNDQ4MjlmZGQxZTJmMTUwNmEzNWQxMGE0ZWI4MWZjYmUzMmM1MzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05OSw4ICs5OSw2
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpOwog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOwotTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOwotTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNTY3Y2I1
OGMxMjU2OTdiY2RlNjE3ZWNlYzBjOGIwNzg2OTVlOTc3Ny4uNWFkNWIzZmNkNzM5ZDU2Mzk0OTBj
ZGFjYWZlY2E2YzE0NzViOTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIG1hY3JvIHZt
RW50cnlSZWNvcmQoZW50cnlGcmFtZVBvaW50ZXIsIHJlc3VsdFJlZykKIGVuZAogCiBtYWNybyBn
ZXRGcmFtZVJlZ2lzdGVyU2l6ZUZvckNvZGVCbG9jayhjb2RlQmxvY2ssIHNpemUpCi0gICAgbG9h
ZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZUxvY2Fsc1tjb2RlQmxvY2tdLCBzaXplCisgICAgbG9h
ZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1tjb2RlQmxvY2tdLCBzaXplCiAgICAg
bHNoaWZ0cCAzLCBzaXplCiAgICAgYWRkcCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwg
c2l6ZQogZW5kCkBAIC0xMjI3LDEyICsxMjI3LDYgQEAgX2xsaW50X29wX25ld19mdW5jOgogICAg
IGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoKLSAgICB0cmFj
ZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVy
YXRvcl9mdW5jKQotICAgIGRpc3BhdGNoKDQpCi0KLQogX2xsaW50X29wX25ld19hcnJheToKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3
X2FycmF5KQpAQCAtMTQ2NCwxMSArMTQ1OCw2IEBAIF9sbGludF9vcF9uZXdfZnVuY19leHA6CiAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAgIGRpc3Bh
dGNoKDQpCiAKLV9sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgotICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKQotICAgIGRpc3BhdGNoKDQpCi0KIF9sbGludF9vcF9uZXdfYXJyb3dfZnVuY19l
eHA6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX25ld19hcnJvd19mdW5jX2V4cCkKQEAgLTE1ODQsMTggKzE1NzMsNiBAQCBfbGxpbnRfb3Bf
YXNzZXJ0OgogICAgIGRpc3BhdGNoKDMpCiAKIAotX2xsaW50X29wX3NhdmU6Ci0gICAgdHJhY2VF
eGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCi0gICAgZGlzcGF0
Y2goNCkKLQotCi1fbGxpbnRfb3BfcmVzdW1lOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykKLQotCiBfbGxp
bnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBhOTBkYzFjMWNj
Mjc5NmRkMTA0YmY3MWUzZTk3MDkzY2U5MjcyZmU5Li5jZTk4NWNhNDVkZTk5ZThkYTVhNTdmOGI5
M2EzMDY0Y2E2ZjFkMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaApAQCAtMzQxLDExICszNDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRl
ICovIGZhbHNlKTsKICAgICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJv
b2wgZGVsZWdhdGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAgIFlpZWxkRXhwck5v
ZGUqIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSkKICAgICB7Ci0gICAgICAgIFlpZWxkRXhw
ck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24s
IGFyZ3VtZW50LCBkZWxlZ2F0ZSk7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUs
IHN0YXJ0LCBkaXZvdCwgZW5kKTsKLSAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBk
ZWxlZ2F0ZSk7CiAgICAgfQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZh
cmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25z
dHJ1Y3RvciwKQEAgLTM2NiwxMiArMzY0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExv
Y2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVt
biwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBt
b2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwg
ZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAg
ICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywg
cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAg
ICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3Vu
dCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7
CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxB
U1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAtODkzLDkgKzg5MSw2IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIG5vZGUtPnNldFN0YXJ0T2Zmc2V0KG9mZnNldCk7CiAgICAgfQotCi0KLSAg
ICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgdXNlc0FyZ3VtZW50cygpOyB9CiAgICAg
CiBwcml2YXRlOgogICAgIHN0cnVjdCBTY29wZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCmluZGV4IDViNmRjNDkzODVkYTc4MzU4YzI3OWJjMDgwMGJmODlhMGE2NTc5YzQu
LmVhMzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlmNmQzZDkzOTMzOGNlNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgIFBhcnNlckFyZW5hJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwg
aW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAg
ICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29s
dW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2MiwxMSArMTYyLDEw
IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAg
LCBtX3BhcmFtZXRlckNvdW50KHBhcmFtZXRlckNvdW50KQogICAgICAgICAsIG1fcGFyc2VNb2Rl
KG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkK
LSAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5k
aW5nKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y29uc3RydWN0b3JLaW5kKSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVu
Y3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKLSAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwogICAgIEFTU0VSVChtX2NvbnN0
cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA4ZTlhMjUyZWFkMWZlZTkx
NTlmYWZlMTUzYjdjNzk2MWQ4N2EyYzFmLi41Y2EzNDY2NGZkZjE2NGFhMzllMWY2MTRkM2VlYmQw
ZGUwNTE4OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODE3LDcg
KzE4MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAog
ICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFy
dCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBD
b25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2
b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBG
dW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4NDIsOCArMTg0Miw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9Ci0gICAgICAgIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJC
aW5kaW5nKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0K
KyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dG
dW5jdGlvbjsgfQogICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsgfQogCiAgICAg
ICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGlu
dCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKQEAgLTE4NjksOCArMTg2OSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9sYXN0TGluZTsKICAgICAgICAgU291cmNl
UGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250
ZXh0IDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CisgICAgICAgIHVuc2lnbmVkIG1faXNBcnJv
d0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkzMiw3ICsxOTMyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKLSAgICBjbGFzcyBZaWVsZEV4cHJOb2Rl
IGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgeworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgWWllbGRFeHByTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYzNiZTgyYzZlOTNmNmI5
ZjY3YjVhMmNkY2Q3OTc2NmVhOWJmYmE4My4uMmI5NThiNmVjNjVlM2E5NWEwMTZlMWExNGFmNmQx
ZmY0MTRiM2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
MTk0LDcgKzE5NCw3IEBAIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmxvZ0Vycm9yKGJvb2wgc2hv
dWxkUHJpbnRUb2tlbiwgY29uc3QgQSYgdmFsdWUxLCBjb25zdCBCCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKICAgICBWTSogdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwg
Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCisgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIAogICAgIENvbnN0cnVjdG9y
S2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKICAg
ICA6IG1fdm0odm0pCiAgICAgLCBtX3NvdXJjZSgmc291cmNlKQpAQCAtMjEwLDcgKzIxMCw2IEBA
IFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVs
bHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKICAgICAsIG1fcGFyc2luZ0J1aWx0aW4o
YnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKLSAgICAsIG1fc3Vw
ZXJCaW5kaW5nKHN1cGVyQmluZGluZykKICAgICAsIG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZChk
ZWZhdWx0Q29uc3RydWN0b3JLaW5kKQogICAgICwgbV90aGlzVERaTW9kZSh0aGlzVERaTW9kZSkK
IHsKQEAgLTI1MCwxMCArMjQ5LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXIt
PmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNU
QnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFy
YW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9k
ZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4
dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5j
dGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vycm9yKCkpIHsKQEAgLTI3NywxMiAr
MjczLDggQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50
aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICAgICAgICAgIHNvdXJjZUVsZW1l
bnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50
cyhjb250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2Rl
KSkKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50
cyhjb250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
KQotICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlv
blNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1l
bnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7Ci0gICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGluZzsK
QEAgLTMwOSwxNCArMzAxLDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBWYXJpYWJs
ZUVudmlyb25tZW50JiB2YXJEZWNsYXJhdGlvbnMgPSBzY29wZS0+ZGVjbGFyZWRWYXJpYWJsZXMo
KTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FwdHVyZWRWYXJpYWJsZXMpCiAgICAgICAgIHZh
ckRlY2xhcmF0aW9ucy5tYXJrVmFyaWFibGVBc0NhcHR1cmVkKGVudHJ5KTsKLQotICAgIElkZW50
aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKLSAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2Vk
VmFyaWFibGVzKTsKLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yV3JhcHBlckZ1bmN0aW9uTW9kZSkgewotICAgICAgICBpZiAodXNlZFZhcmlhYmxlcy5jb250
YWlucyhtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKSkKLSAgICAgICAgICAg
IGNvbnRleHQucHJvcGFnYXRlQXJndW1lbnRzVXNlKCk7Ci0gICAgfQotCisgICAgCiAgICAgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+
c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAg
LTMyNiw5ICszMTEsMTAgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICAgICAgZmVhdHVy
ZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3VtZW50
cykKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOwotCiAgICAg
VmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKICAgICBp
ZiAobV9wYXJzaW5nQnVpbHRpbikgeworICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJs
ZXM7CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkIGlmIHdlIHdhbnQgdG8gYWxs
b3cgYnVpbHRpbnMgdG8gdXNlIGxleGljYWwgZGVjbGFyYXRpb25zLgogICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewogICAgICAgICAgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5nZXQo
KSk7CkBAIC00NzIsNDUgKzQ1OCw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5j
dGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01v
ZGUgbW9kZSkKLXsKLSAgICBhdXRvIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3Vy
Y2VFbGVtZW50cygpOwotCi0gICAgdW5zaWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tl
blN0YXJ0KCk7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKLSAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwot
ICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7Ci0gICAgaW50IHBh
cmFtZXRlcnNTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKLQotICAgIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKLSAgICBpbmZvLm5hbWUgPSAmbV92
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgaW5mby5wYXJhbWV0ZXJzID0g
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICBpbmZvLnN0YXJ0T2Zmc2V0
ID0gcGFyYW1ldGVyc1N0YXJ0OwotICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0g
ICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCBy
ZXN1bWUgbW9kZQotCi0gICAgewotICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9k
eVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKLSAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5z
ZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7Ci0g
ICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8
Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7Ci0gICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291
cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJz
ZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOwotICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JC
b2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwotICAgIH0KLSAg
ICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSwgZmFsc2UpOwotCi0g
ICAgaW5mby5lbmRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5lbmRPZmZzZXQgPSBtX3Rv
a2VuLm1fZGF0YS5vZmZzZXQ7Ci0gICAgaW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVt
bjsKLQotICAgIGF1dG8gZnVuY3Rpb25FeHByID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIo
c3RhcnRMb2NhdGlvbiwgaW5mbyk7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0
ZUV4cHJTdGF0ZW1lbnQoc3RhcnRMb2NhdGlvbiwgZnVuY3Rpb25FeHByLCBzdGFydCwgbV9sYXN0
VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsKLSAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3Vy
Y2VFbGVtZW50cywgc3RhdGVtZW50KTsKLQotICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0
SXRlbShUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwg
dW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpCiB7CiAgICAgLy8gVGhlIGdyYW1tYXIg
aXMgZG9jdW1lbnRlZCBoZXJlOgpAQCAtMTY1MywxNCArMTYwMCwxNSBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1l
dGVycyhUcmVlQgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkJvZHkoCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCi0gICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGlu
ZywgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQs
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24g
PSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBl
OwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5VHlwZSA9PSBB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247CiAgICAgaWYgKCFpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbikgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJS
QUNFKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsK
LSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0
TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHBh
cnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxv
Y2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVj
dG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2NzIs
NyArMTYyMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9k
eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxzZQogICAgICAgICBm
YWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3Ry
aWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90
IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhp
cyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1u
KCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VN
b2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVT
dGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFy
YW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNjg2LDEwICsxNjM0LDggQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
ICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGU6CiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKLSAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvck1vZGU6CiAgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIjsKLSAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZToKLSAgICAgICAgcmV0dXJuICJn
ZW5lcmF0b3IgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTc2OCwzNyArMTcxNCw2IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gaW50IFBh
cnNlcjxMZXhlclR5cGU+CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJh
bWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQotewotICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwotCi0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7Ci0gICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0
YXJ0UG9zaXRpb24oKTsKLQotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBn
ZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFw
cGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOwotCi0gICAgLy8gQGdlbmVy
YXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0
ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCi0gICAgLy8gQGdlbmVyYXRvclZh
bHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9y
VmFsdWVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3Jl
YXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0
b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCi0gICAgLy8gQGdlbmVyYXRvclJlc3VtZU1v
ZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JS
ZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNv
bnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNz
aWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKLQotICAgIHJl
dHVybiBwYXJhbWV0ZXJzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1
bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVx
dWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdT
Y29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVj
dGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9u
SW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSBm
dW5jdGlvbkRlZmluaXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25Q
YXJzZU1vZGUobW9kZSkpOwpAQCAtMTkwOSwxMCArMTgyNCwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRy
ZWVCdWlsZAogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlv
bi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMaW5lU3RhcnRPZmZz
ZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICAKKyAgICAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGU7CisgICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVu
ZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAK
ICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0
cnVjdG9yS2luZCwgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNv
dW50LCBtb2RlLCBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bik7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQs
IGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5j
dGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIAog
ICAgICAgICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2Fj
aGVkSW5mbyk7CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpO
ZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwpAQCAtMTkyNiw3ICsxODQzLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5m
byhUcmVlQnVpbGQKICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1fbG9j
YXRpb24ubGluZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZv
LT5lbmRGdW5jdGlvbk9mZnNldDsKIAotICAgICAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlKQorICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQogICAg
ICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVz
c2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJs
b2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRh
cmRGdW5jdGlvbkJvZHlCbG9jazsKQEAgLTE5NDgsMzMgKzE4NjUsMTQgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5m
byhUcmVlQnVpbGQKICAgICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBsYXN0RnVuY3Rpb25O
YW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRlKCk7Ci0KLSAgICBhdXRv
IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKLSAgICAgICAgcmV0dXJuIHBhcnNl
RnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3Ry
dWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rp
b25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKLSAgICB9OwotCi0gICAgaWYgKG1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKSB7Ci0gICAgICAg
IEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwot
ICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKLSAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBw
ZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwotCi0gICAgICAgIC8vIFdoZW4gYSBnZW5lcmF0
b3IgaGFzIGEgInVzZSBzdHJpY3QiIGRpcmVjdGl2ZSwgYSBnZW5lcmF0b3IgZnVuY3Rpb24gd3Jh
cHBpbmcgaXQgc2hvdWxkIGJlIHN0cmljdCBtb2RlLgotICAgICAgICBpZiAgKGdlbmVyYXRvckJv
ZHlTY29wZS0+c3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgZnVuY3Rpb25TY29wZS0+c2V0U3Ry
aWN0TW9kZSgpOwotCi0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShnZW5lcmF0b3JCb2R5U2Nv
cGUtPmhhc0RpcmVjdFN1cGVyKCksICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOwotICAgICAgICBpZiAoZ2VuZXJhdG9yQm9keVNjb3BlLT5uZWVk
c1N1cGVyQmluZGluZygpKQotICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVk
U3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkg
YmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKLQotICAgICAgICBwb3BT
Y29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUlu
Zm8pOwotICAgIH0gZWxzZQotICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJz
aW5nRnVuY3Rpb25Cb2R5KCk7CisgICAgCisgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwYXJzZUZ1
bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVj
dG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBt
b2RlKTsKICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3RhdGUpOwogICAgIGZhaWxJZkZhbHNl
KGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRoaXMgIiwgc3Ry
aW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250ZXh0LnNldEVuZE9mZnNldChmdW5j
dGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICBpZiAoZnVuY3Rp
b25TY29wZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0aW9uSW5mby5uYW1lKSB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUg
fHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3Jh
cHBlckZ1bmN0aW9uTW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
IHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKICAgICAgICAgc2Vt
YW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rp
b25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEg
dmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUs
ICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rp
b24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTIwNDIsNyArMTk0MCw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJB
VE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTsKKyAgICAgICAgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOwogI2VuZGlmCiAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBwYXJz
ZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlv
blR5cGU6OkRlY2xhcmF0aW9uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwogICAg
IGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0
IGhhdmUgYSBuYW1lIik7CkBAIC0yMTkzLDcgKzIwOTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3MoVAogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZTsKICAgICAgICAgICAgIGlmIChpc0dlbmVyYXRvcikgewogICAgICAg
ICAgICAgICAgIGlzQ29uc3RydWN0b3IgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBwYXJzZU1v
ZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU7CisgICAg
ICAgICAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOwog
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3By
b3RvdHlwZSciKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5l
cmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjg1OSw3ICsy
NzU3LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50
ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCi0gICAg
aWYgKG1hdGNoKFlJRUxEKSAmJiAhaXNZSUVMRE1hc2tlZEFzSURFTlQoY3VycmVudFNjb3BlKCkt
PmlzR2VuZXJhdG9yKCkpKQorICAgIGlmIChtYXRjaChZSUVMRCkpCiAgICAgICAgIHJldHVybiBw
YXJzZVlpZWxkRXhwcmVzc2lvbihjb250ZXh0KTsKICNlbmRpZgogCkBAIC0yOTY0LDcgKzI4NjIs
NiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzcwogICAgIGZhaWxJZlRydWUobV9mdW5jdGlvblBh
cnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90IHVzZSB5
aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0
YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxEKSk7CiAg
ICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5leHQoKTsK
QEAgLTI5NzIsMTQgKzI4NjksMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3MKICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogCiAgICAgYm9vbCBkZWxlZ2F0
ZSA9IGNvbnN1bWUoVElNRVMpOwotICAgIEpTVGV4dFBvc2l0aW9uIGFyZ3VtZW50U3RhcnQgPSB0
b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBUcmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9IHBhcnNl
QXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgaWYgKCFhcmd1bWVudCkgewogICAg
ICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogICAgIH0KLSAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlLCBkaXZv
dFN0YXJ0LCBhcmd1bWVudFN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKKyAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTMxNzEsNyArMzA2Nyw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJvcGVydHlNZXRoCiAgICAgSlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0
KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwotICAg
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7
CiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9S
ZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRl
ZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAg
IG1ldGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAgLTM0MjQsNyArMzMy
MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShF
UzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTsKKyAgICAg
ICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOwogI2VuZGlmCiAg
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1
aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1
bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlv
biBleHByZXNzaW9uIik7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxv
Y2F0aW9uLCBmdW5jdGlvbkluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
aW5kZXggMjYyZmY5NjNmYTQwZmQ4ZDg5MDBiZWU4MGY2Y2M0YzNmMGVkYzQzNS4uOWQ5NGUwN2E4
MDdiOGVlNzIwMzE0NzYwZDk1MTU3NGRlOGY0OTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCkBAIC0xNzIsNyArMTcyLDYgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAg
LCBtX2lzTGV4aWNhbFNjb3BlKGZhbHNlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5
KGZhbHNlKQogICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKLSAgICAgICAgLCBt
X2hhc0FyZ3VtZW50cyhmYWxzZSkKICAgICAgICAgLCBtX2xvb3BEZXB0aCgwKQogICAgICAgICAs
IG1fc3dpdGNoRGVwdGgoMCkKICAgICB7CkBAIC0xOTMsNyArMTkyLDYgQEAgc3RydWN0IFNjb3Bl
IHsKICAgICAgICAgLCBtX2lzTGV4aWNhbFNjb3BlKHJocy5tX2lzTGV4aWNhbFNjb3BlKQogICAg
ICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KHJocy5tX2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAg
ICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHJocy5tX2lzVmFsaWRTdHJpY3RNb2RlKQotICAg
ICAgICAsIG1faGFzQXJndW1lbnRzKHJocy5tX2hhc0FyZ3VtZW50cykKICAgICAgICAgLCBtX2xv
b3BEZXB0aChyaHMubV9sb29wRGVwdGgpCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aChyaHMubV9z
d2l0Y2hEZXB0aCkKICAgICAgICAgLCBtX21vZHVsZVNjb3BlRGF0YShyaHMubV9tb2R1bGVTY29w
ZURhdGEpCkBAIC0yNDQsMTQgKzI0MiwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIHZvaWQgc2V0
U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIHsKICAgICAgICAgc3dp
dGNoIChtb2RlKSB7Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZToKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CiAgICAg
ICAgICAgICBzZXRJc0dlbmVyYXRvcigpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6Ci0gICAg
ICAgICAgICBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCk7Ci0gICAgICAgICAgICBicmVhazsKLQog
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGU6CkBAIC0yNzQsOCArMjY4LDYgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICBib29sIGlzRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5jdGlv
bkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNH
ZW5lcmF0b3I7IH0KIAotICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNBcmd1bWVudHM7IH0KLQogICAgIHZvaWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7IAog
ICAgICAgICBtX2lzTGV4aWNhbFNjb3BlID0gdHJ1ZTsKQEAgLTQ1OCwyMCArNDUwLDE2IEBAIHN0
cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAgICB7
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGltcGwg
OiBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5l
c3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpIHx8IG5lc3RlZFNj
b3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJlbmNl
IHNob3VsZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgotICAgICAgICAgICAgICAg
IGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhh
c0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmlt
cGwoKSkKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IG5lc3RlZFNj
b3BlLT5tX3VzZWRWYXJpYWJsZXMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKElkZW50aWZpZXJT
ZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMuYmVnaW4oKTsg
cHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPm1f
ZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikgfHwgbmVzdGVkU2NvcGUtPm1fbGV4aWNh
bFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRkKGltcGwpOworICAgICAgICAg
ICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoKnB0cik7CiAgICAgICAgICAgICAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5lciBz
Y29wZSB0byBiZSB0aG91Z2h0IG9mIGFzIGNhcHR1cmVkIGlmCiAgICAgICAgICAgICAgICAgLy8g
dGhhdCBpbm5lciBzY29wZSBpcyBib3RoIGEgbGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVuY3Rp
b24uIE9ubHkgaW5uZXIgZnVuY3Rpb25zIGFuZCAiY2F0Y2giIAogICAgICAgICAgICAgICAgIC8v
IHN0YXRlbWVudHMgY2FuIGNhdXNlIHZhcmlhYmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5t
X2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAhbmVzdGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUpKQot
ICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoaW1wbCk7
CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZCgqcHRy
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xvc2Vk
IHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4K
QEAgLTU2MiwyMiArNTUwLDE0IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rp
b24gPSB0cnVlOwogICAgICAgICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7Ci0gICAgICAg
IG1faGFzQXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAg
ICAgICAgbV9pc0dlbmVyYXRvciA9IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgc2V0SXNHZW5l
cmF0b3JGdW5jdGlvbigpCi0gICAgewotICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7Ci0gICAgICAg
IG1faXNHZW5lcmF0b3IgPSB0cnVlOwotICAgIH0KLQogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3Io
KQogICAgIHsKICAgICAgICAgc2V0SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9y
ID0gdHJ1ZTsKLSAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2
b2lkIHNldElzTW9kdWxlKCkKQEAgLTU5OSw3ICs1NzksNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7
CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKLSAgICBib29sIG1faGFzQXJndW1l
bnRzIDogMTsKICAgICBpbnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAK
QEAgLTY0OCw3ICs2MjcsNyBAQCBjbGFzcyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2Vy
KAotICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBK
U1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nLAorICAgICAg
ICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0
cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0g
VGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIApAQCAtMTE3OCw3
ICsxMTU3LDYgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVy
JiwgU291cmNlRWxlbWVudHNNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMo
VHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWls
ZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxp
dGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJl
Y3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAgICAgZW51bSBj
bGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0xMjIxLDcgKzEx
OTksNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVBy
b3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0
aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBi
b29sIGlzR2VuZXJhdG9yKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQ
cm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9w
ZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0
cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxX
QVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVy
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVuc2lnbmVkLCBTb3VyY2VQYXJz
ZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBU
cmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlv
bk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlv
bkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBl
bnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFy
YXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBk
ZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVF
eHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBK
U1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVj
bGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlLCBib29sJiBm
b3JMb29wQ29uc3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAgLTEyNDYsNyArMTIyNCw2IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
Ym9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRz
LCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVj
dG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1
bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VG
dW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1
bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBh
cnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJ
bmZvPFRyZWVCdWlsZGVyPiYpOwogCkBAIC0xMzcyLDcgKzEzNDksNiBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNl
RWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwot
ICAgIFN1cGVyQmluZGluZyBtX3N1cGVyQmluZGluZzsKICAgICBDb25zdHJ1Y3RvcktpbmQgbV9k
ZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgIFRoaXNURFpNb2RlIG1fdGhpc1REWk1vZGU7CiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3ZhckRlY2xhcmF0aW9uczsKQEAgLTE0OTYsNyArMTQ3
Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgogc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IHBhcnNlKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAg
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUs
Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCisgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsCiAgICAgUGFyc2VyRXJyb3Im
IGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IG51bGxw
dHIsCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsCiAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9k
ZTo6Q2hlY2tJZk5lZWRlZCkKQEAgLTE1MDUsNyArMTQ4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBwYXJzZSgKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJj
ZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJp
dCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgUGFyc2VyPExleGVyPExDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUs
IGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJv
ciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xNTE4LDcgKzE0OTQsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1
Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxMZXhl
cjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFy
c2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2Rl
KTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1v
ZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1RE
Wk1vZGUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIu
cGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
ID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0ODZkOGZjMGRhY2MyNWMxZDNiMTE1YjQw
MDAyNzUxODYyNjk4YzI5Li40OTU4NWNiYzYyYjRjMzNlZmRmN2M0OWVhMjliZDcxNTUyOGJlODg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00Niw4
ICs0Niw3IEBAIGVudW0gRnVuY3Rpb25Nb2RlIHsgRnVuY3Rpb25FeHByZXNzaW9uLCBGdW5jdGlv
bkRlY2xhcmF0aW9uIH07CiAKIGVudW0gY2xhc3MgU291cmNlUGFyc2VNb2RlIHsKICAgICBOb3Jt
YWxGdW5jdGlvbk1vZGUsCi0gICAgR2VuZXJhdG9yQm9keU1vZGUsCi0gICAgR2VuZXJhdG9yV3Jh
cHBlckZ1bmN0aW9uTW9kZSwKKyAgICBHZW5lcmF0b3JNb2RlLAogICAgIEdldHRlck1vZGUsCiAg
ICAgU2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2RlLApAQCAtNjEsOCArNjAsNyBAQCBpbmxpbmUg
Ym9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAg
ICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFs
RnVuY3Rpb25Nb2RlOgotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZToKLSAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9k
ZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0
dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKQEAgLTg2LDgg
Kzg0LDcgQEAgaW5saW5lIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZToKLSAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToK
QEAgLTEwNiw4ICsxMDMsNyBAQCBpbmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgotICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZToKLSAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yV3JhcHBlckZ1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
TWV0aG9kTW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlQ29kZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkNDlhN2UxNzNiMjUwMGRhZmI1Zjg0
YWE0YzJlNmY0MTY2NDlkMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU291cmNlQ29kZUtleV9oCi0jZGVmaW5lIFNv
dXJjZUNvZGVLZXlfaAotCi0jaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKLSNpbmNsdWRlICJTb3Vy
Y2VDb2RlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWNsYXNzIFNvdXJjZUNvZGVLZXkgewotcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUgeyBF
dmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwotCi0gICAg
U291cmNlQ29kZUtleSgpCi0gICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoY29uc3Qg
U291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2Rl
VHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNr
SWZOZWVkZWQpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCi0gICAgICAgICwg
bV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
ZGVUeXBlKSA8PCAzKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIp
IHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPih0aGlzVERaTW9kZSkpCi0gICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwo
KS0+aGFzaCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsg
fQotCi0gICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5sZW5n
dGgoKTsgfQotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUu
aXNOdWxsKCk7IH0KLQotICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBzdHJp
bmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCi0gICAgLy8gcHJvdmlkZXJz
IGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KLSAgICBTdHJpbmcg
c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KLQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoCi0gICAgICAgICAgICAmJiBs
ZW5ndGgoKSA9PSBvdGhlci5sZW5ndGgoKQotICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhl
ci5tX2ZsYWdzCi0gICAgICAgICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCi0gICAgICAg
ICAgICAmJiBzdHJpbmcoKSA9PSBvdGhlci5zdHJpbmcoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgU291cmNlQ29kZSBtX3NvdXJjZUNvZGU7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICB1bnNp
Z25lZCBtX2ZsYWdzOwotICAgIHVuc2lnbmVkIG1faGFzaDsKLX07Ci0KLXN0cnVjdCBTb3VyY2VD
b2RlS2V5SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtl
eSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgU291cmNlQ29kZUtleSYgYSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9
PSBiOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSBmYWxzZTsKLX07Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBs
ZUNsYXNzSGFzaFRyYWl0czxTb3VyY2VDb2RlS2V5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBib29sIGlzRW1wdHlW
YWx1ZShjb25zdCBTb3VyY2VDb2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3VyY2VD
b2RlS2V5LmlzTnVsbCgpOyB9Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBTb3VyY2VDb2RlS2V5X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggMmM3
NzI4NTI3ZTk0M2NkNjgyYTUxNWU5YjQzZDJmNTBkYjJiOGQ1My4uNTQ3ZTQ0ZmM5ZWJmOTFkNjVh
ZDI2NDkzMzY0ZGIzMjUwZjdjMzA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKQEAgLTE4MCwxMCArMTgwLDEwIEBAIHB1YmxpYzoKICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJu
IFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCkgeyByZXR1cm4gWWllbGRFeHByOyB9
CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25U
eXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJu
IENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tl
cj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQs
IGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcs
IHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJl
c3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwg
aW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wsIGJv
b2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQog
ICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVh
dGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTM4OSw4ICszODks
NiBAQCBwdWJsaWM6CiAgICAgaW50IGVuZE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KICAgICB2
b2lkIHNldFN0YXJ0T2Zmc2V0KGludCwgaW50KSB7IH0KIAotICAgIHZvaWQgcHJvcGFnYXRlQXJn
dW1lbnRzVXNlKCkgeyB9Ci0KIHByaXZhdGU6CiAgICAgaW50IG1fdG9wQmluYXJ5RXhwcjsKICAg
ICBpbnQgbV90b3BVbmFyeVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKaW5kZXggNDk0NTIwZGJkZjQyOGM4NjQwZGI1ZTIyM2YwMGUyMWYyZmVjZmZl
OS4uZjEzYjI1ZTRjOWIyNjJjNTI1ZTBmNTZlYzBmNjljZGM3Y2JlZGYwZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
VW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayhWTSYg
dm0sIEV4ZWN1dGFibGVUeXBlKiBleGUKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8
VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKICAgICAgICAgJnZt
LCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsCi0gICAgICAg
IENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhp
c1REWk1vZGUpOworICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBh
cnNlTW9kZSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1v
ZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0x
NjAsNyArMTYwLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBKU1RleHRQb3NpdGlv
biBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFt
Tm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2Us
IElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwKICAgICAgICAgZXJyb3Is
ICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFi
bGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0b3Ig
b25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxs
IGJlIHVuZGVyIFREWi4KICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVz
OwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwg
VW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBH
ZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9y
bWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJp
YWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5j
dGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgbV9z
b3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaAppbmRleCA5YjhjMTUwZGUyMGI4NTMzYjFmZGEzZGFhODk1ZDA2Y2RjODk1
NzM4Li40OGM4Y2ZlZjg0NjQ5ZDhmMDljMmZiMGI5NDg4MTExZTE2OTM2YmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5o
IgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTb3VyY2VDb2RlS2V5LmgiCiAj
aW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNTcsNiArNTYsNzEgQEAgY2xhc3MgVk07CiBj
bGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiAKK2NsYXNzIFNvdXJjZUNv
ZGVLZXkgeworcHVibGljOgorICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5
cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OworCisgICAgU291cmNlQ29kZUtleSgpCisg
ICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQp
CisgICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCisgICAgICAgICwgbV9uYW1lKG5h
bWUpCisgICAgICAgICwgbV9mbGFncygKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29kZVR5cGUpIDw8IDMpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnVpbHRpbk1vZGUpIDw8IDIpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RyaWN0TW9kZSkgPDwgMSkKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRo
aXNURFpNb2RlKSkKKyAgICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCisg
ICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQorICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisK
KyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CisKKyAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9CisKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwoKTsgfQor
CisgICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQu
IEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKKyAgICAvLyBwcm92aWRlcnMgY2FjaGUgdGhlaXIg
c3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgorICAgIFN0cmluZyBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKKyAgICAgICAgICAgICYmIGxlbmd0aCgpID09IG90
aGVyLmxlbmd0aCgpCisgICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKKyAg
ICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUKKyAgICAgICAgICAgICYmIHN0cmlu
ZygpID09IG90aGVyLnN0cmluZygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTb3VyY2VDb2Rl
IG1fc291cmNlQ29kZTsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIHVuc2lnbmVkIG1fZmxhZ3M7
CisgICAgdW5zaWduZWQgbV9oYXNoOworfTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsK
KyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2Rl
S2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwor
fTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJh
aXRzPFNvdXJjZUNvZGVLZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxs
KCk7IH0KK307CisKIHN0cnVjdCBTb3VyY2VDb2RlVmFsdWUgewogICAgIFNvdXJjZUNvZGVWYWx1
ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggNDczZDVhNDFjYmY3MTkzNzk2NzdmYWUyNDQ1OTI1NWM3ODBiMWI1
ZC4uNDk1ZjIzNTg3ODY2NWM0MzA1Nzg4MWQ4ZDFiZDg0ODQyNmE5OWJkYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOSw3
ICszOSw2IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAg
ICBtYWNybyhGdW5jdGlvbikgXAotICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBcCiAgICAg
bWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXApA
QCAtMzMxLDEzICszMzAsNiBAQAogICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8o
RmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFycmF5KSBcCi0gICAgbWFjcm8oZ2Vu
ZXJhdG9yKSBcCi0gICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAotICAgIG1hY3JvKGdlbmVyYXRv
clN0YXRlKSBcCi0gICAgbWFjcm8oZ2VuZXJhdG9yRnJhbWUpIFwKLSAgICBtYWNybyhnZW5lcmF0
b3JWYWx1ZSkgXAotICAgIG1hY3JvKGdlbmVyYXRvclRoaXMpIFwKLSAgICBtYWNybyhnZW5lcmF0
b3JSZXN1bWVNb2RlKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA5YjhmMDc0MjMwMzky
MjNhOGU0MGZiZWE5NDcxODdmOWZhMmFmNTc3Li40OTA2MzZmMjA0YzlmNjRjNGNmYzg4ZTBlOTdj
NzZmNzM1NTUwZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enou
aCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgpAQCAtNjQ1LDM4ICs2NDQsNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYXNzZXJ0
KQogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKLXsKLSAg
ICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2Nv
cGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgotICAgIC8vIEJ1dCBwYXJhbWV0ZXJz
IGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiBy
ZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgp
IGNhbGwuCi0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFs
dWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUg
dmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBm
cmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJv
ZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBh
dm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0g
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlT
bG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOwotICAgIH0K
LSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFs
dWU7Ci0gICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCi1T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNW
YWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZy
YW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOwotICAgIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFt
ZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmlu
ZGV4IGYwMGQ4NzA1ZDRlNjdmZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcuLjIyNjE4NWM0Yzdl
YTdjYzZmYzdmM2NjNGYxZjM3ZTYwZWI3MmYxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yOTAsOCArMjkwLDYgQEAgU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFtZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOwotU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9zYXZlKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVz
dW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2Nv
cGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggMDJmMzk1
YzQyYmMxMmVlMDIxODM0YTgyZjgxZjBmYzk3OWJjZGE1OC4uYTYzMmM0OGUwMzBiNDFiMzNiMzNk
YmExNmEzMWNmNjEzNWI0ZjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBjaGVja1N5bnRheChWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAg
ICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CisgICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLCBlcnJvcik7CiB9CiAKIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKQEAgLTcz
LDcgKzczLDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUKICAgICBSRUxFQVNFX0FTU0VSVCh2
bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dy
YW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwg
SWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBK
U1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXpl
TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJT
dHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVy
cm9yKTsKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXgg
NDIwNjAwNjcyMjlhYTQwYWI0N2U5YjQwNTI5NjIxZmU4MmVkYjM0ZC4uODM2NTI5MmQ1N2JjOWRl
YzAzZTU2NDE3ZDdhNDBkMzIwZWM3Y2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlw
dEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2Vk
RXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1
dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3Is
IAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOworICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOwogICAgIHJlY29yZFBhcnNlKAogICAgICAgICBl
eGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBm
aXJzdExpbmUoKSwgCkBAIC01NTYsNyArNTU2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRh
YmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IHBhcnNlPFByb2dyYW1Ob2Rl
PigKICAgICAgICAgdm0sIG1fc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW4sIAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwg
U291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVy
cm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKICAgICBpZiAocHJvZ3JhbU5vZGUpCiAgICAgICAg
IHJldHVybiAwOwogICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDc1YjMwOTFjZjgxYzcyOTZmZTJmYWZl
OWE5Njc2NTM2Mjk5NzgyZmMuLjlmYzliZTdhMTRmNmMwZmViYzIzOTcxMjZiNjBmZDdiMGMzNDBh
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ0
OCw3ICs0NDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVt
cHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQogCiAg
ICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNs
cygpOyB9CkBAIC01MDEsNyArNTAxLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRo
aXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBm
YWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBA
IC01NDIsNyArNTQyLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHks
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQog
ICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0
KCk7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkg
eyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAs
MTMgKzY1MCwxMiBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmls
aXR5KCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0Nv
bnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5h
bWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3Qg
SWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJh
bWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0
ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCi0gICAgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUo
KTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IDVkN2VmMzc2NmFjMGQ2OWIzNTU0
NmFmN2U3OTFjZTk0OWJiNDJkNmMuLmRiZTQyZmE1ZmUyNjMwNGU4NmVlMjAxM2IxMDBjYWJiMjIx
YzQyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCkBAIC03OSwzMCArNzksMjggQEAgQ2FsbFR5cGUgRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogfQog
CiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25z
dHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpCitKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlv
bk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0
aW9uKQogewogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhl
YywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwotICAgIHJldHVy
biBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxP
YmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBp
bmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1l
LCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKIH0KIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgCiAgICAgY29uc3QgSWRl
bnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCi0gICAgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkKKyAgICBjb25zdCBU
ZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyKQogewogICAgIC8v
IEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdl
YiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNF
bXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRv
ciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CisgICAg
ICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmlu
ZygpLCAiKCkge1xuXG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAg
ICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gIioiIDogIiIs
IGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygi
e2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
e2Z1bmN0aW9uICIpOwotICAgICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyonKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmluZygp
KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
YXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKSk7CkBAIC0xMjgsOSArMTI2LDkg
QEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAog
fQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUpCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBh
cmdzKQogewotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3Qs
IGFyZ3MsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9z
aXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpOworICAg
IHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmlt
dW1Qb3NpdGlvbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggZDExZmIy
YTM3NGQ2MTkxNTBjOWQ2YzQyNjI5YmE5MWNjMTIwNWY1Mi4uMjJlY2I1N2I5M2Y2OWJmYzlmOGIx
YjMwNmZiNGM0MmEwYTY3ZDJlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTYsMTcgKzU2LDEyIEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiB9
OwogCi1lbnVtIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSB7Ci0gICAgRnVuY3Rpb24s
Ci0gICAgR2VuZXJhdG9yLAotfTsKLQotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXIm
IGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBv
c2l0aW9uJiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpGdW5jdGlvbik7Ci1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
ID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbik7CitKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jiwg
Y29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
Y29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKIAogSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKAogICAgIEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNv
bnN0IElkZW50aWZpZXImLCAKLSAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3Np
dGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbik7CisgICAgY29uc3QgU3Ry
aW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0g
LTEpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLSNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFz
c0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQotR2Vu
ZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVl
TG9jYWxzKQotICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkp
Ci0gICAgLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQotewot
fQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9u
dW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Ci19
Ci0KLVN0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRvckZy
YW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxz
KQotewotICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAgICAg
ICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4o
dm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAg
ICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRvckZy
YW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxl
ZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVy
eSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hv
dWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8
PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hT
ZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhl
Yy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
bmRleCkpLmpzVmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnJl
c3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2Nh
bHMpCi17Ci0gICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0
aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIHJlcGxhY2VkLgotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6
ZV90IGluZGV4KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGlu
ZGV4KS5jbGVhcigpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2VuZXJh
dG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKLSAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNpbmNl
IG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2Fm
ZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2Nh
bHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJi
OWI1YTcxOTRlOGY3NDg0MWM0OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBHZW5lcmF0b3JGcmFtZV9oCi0jZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2luY2x1
ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAgIGZy
aWVuZCBjbGFzcyBKSVQ7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERG
Rzo6U3BlY3VsYXRpdmVKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0j
ZW5kaWYKLSAgICBmcmllbmQgY2xhc3MgVk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwg
QmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1
cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwotCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3Qg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2Fs
cygpKTsKLSAgICB9Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNp
emVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOwotICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQotICAg
IHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6
ZW9mKEdlbmVyYXRvckZyYW1lKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAg
IHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9j
YWxzKTsKLSAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlTG9jYWxzKTsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNp
emVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxl
ZUxvY2FsczsKLQotICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZjU4OTMxZmM1NTIwYTVj
MjIwMTVlMjVmNzAyYTdkNmUwOTc5ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmgiCi0KLSNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgi
Ci0jaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKLSNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1TVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7Ci0KLWNvbnN0IENs
YXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0
b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKLQotR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQotewotfQot
Ci12b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsK
LSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOwotCi0gICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0
b3IKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwot
fQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQXJnTGlzdCBhcmdzKGV4
ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywg
YXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3Ms
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKSk7Ci19Ci0KLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxG
dW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikpOwotfQotCi1DYWxsVHlwZSBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEp
Ci17Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I7Ci0gICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKLX0KLQotQ29uc3RydWN0VHlw
ZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCi17Ci0gICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOwotICAg
IHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NmM4N2Jh
MTBiMzJiNDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3JfaAotI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKLQotI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0UG9zaXRp
b247Ci19Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZTsKLQotY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKLQotICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOwotICAgIHN0YXRpYyBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwot
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzNmZThmMmUzMWJkMzExYjkyZTQyNzQ3NGZhMzk4MThlZWY3OGRkNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgotCi0jaW5jbHVkZSAiQnVp
bHRpbkV4ZWN1dGFibGVzLmgiCi0jaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCi0jaW5jbHVkZSAi
RXJyb3IuaCIKLSNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgot
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUg
IkpTU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIkxleGVyLmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotCi1TVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOwotCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsK
LQotR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDBhMDM0OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVf
aAotCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotcHVi
bGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwotCi0gICAgc3RhdGljIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKLSAgICB7Ci0gICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5
cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwot
ICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHBy
b3RvdHlwZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAg
fQotCi0gICAgREVDTEFSRV9JTkZPOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZN
JiwgU3RydWN0dXJlKik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhZjQ2N2IzYmRiN2ZiMzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUu
aCIKLQotI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0KLSNpbmNsdWRlICJHZW5lcmF0
b3JQcm90b3R5cGUubHV0LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8g
R2VuZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZv
LCAmZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9y
UHJvdG90eXBlKSB9OwotCi0vKiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAot
QGJlZ2luIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCi0gIG5leHQgICAgICBKU0J1aWx0aW4gICAg
RG9udEVudW18RnVuY3Rpb24gMQotICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKLSAgdGhyb3cgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCi1A
ZW5kCi0qLwotCi12b2lkIEdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9u
dEVudW0gfCBSZWFkT25seSk7Ci0gICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlz
KTsKLX0KLQotYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90
PEJhc2U+KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJv
dG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTBjNDRkZWQ4MGI0NzQz
MjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvclBy
b3RvdHlwZV9oCi0jZGVmaW5lIEdlbmVyYXRvclByb3RvdHlwZV9oCi0KLSNpbmNsdWRlICJKU09i
amVjdC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwotCi0g
ICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEdlbmVyYXRvclByb3Rv
dHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJv
dG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAg
ICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQotICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAg
fQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vICFk
ZWZpbmVkKEdlbmVyYXRvclByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhpc01vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRjMDNlN2IwMjJmMWM2NjlkMzk3YTliNzdiNWVmMjRlOTVmNTIwNmUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yVGhpc01vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5lcmF0b3JUaGlzTW9kZV9oCi0jZGVm
aW5lIEdlbmVyYXRvclRoaXNNb2RlX2gKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLS8vIGh0dHA6Ly9l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWZ1bmN0aW9uYWxsb2NhdGUK
LS8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWVjbWFz
Y3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jb25zdHJ1Y3QtYXJndW1lbnRzbGlzdC1uZXd0YXJnZXQK
LS8vIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGEgR2VuZXJhdG9yRnVuY3Rpb24sIGl0cyBbW0NvbnN0
cnVjdG9yS2luZF1dIGlzIGFsd2F5cyAiZGVyaXZlZCIuCi0vLyBUaGlzIG1lYW5zIHRoYXQgT3Jk
aW5hcnlDYWxsQmluZFRoaXMgaW4gc2VjdGlvbiA5LjIuMiBpcyBuZXZlciBleGVjdXRlZCBmb3Ig
R2VuZXJhdG9yRnVuY3Rpb24uCi0vLyBTbywgd2hlbiB3ZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcs
Ci0vLwotLy8gICAgIGZ1bmN0aW9uICpnZW4oKQotLy8gICAgIHsKLS8vICAgICAgICB5aWVsZCB0
aGlzCi0vLyAgICAgfQotLy8KLS8vICAgICB7Ci0vLyAgICAgICAgIGxldCBnID0gZ2VuKCk7Ci0v
LyAgICAgICAgIC8vIHx0aGlzfCBzaG91bGQgYmUgZ2xvYmFsLgotLy8gICAgICAgICBnLm5leHQo
KTsKLS8vICAgICB9Ci0vLwotLy8gICAgIHsKLS8vICAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7
Ci0vLyAgICAgICAgIC8vIHx0aGlzfCBpbiBnZW4gc2hvdWxkIGJlIFREWiAoYW5kIGl0IHdvbid0
IGJlIGZpbGxlZCkuCi0vLyAgICAgICAgIGcubmV4dCgpOwotLy8gICAgIH0KLS8vCi0vLyBUaGUg
Zm9sbG93aW5nIGZsYWcgbWFuYWdlcyB0aGlzIHN0YXRlLiBXaGVuIEdlbmVyYXRvckZ1bmN0aW9u
IGlzIGNhbGxlZCBhcyBhIGNvbnN0cnVjdG9yLCBpdCByZXR1cm5zIGEgR2VuZXJhdG9yIHRoYXQg
ZnVuY3Rpb24gaGFzIEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSBmbGFnLgotLy8gSW4gdGhpcyBj
YXNlLCB3aGVuIGFjY2Vzc2luZyB8dGhpc3wsIGEgVERaIHJlZmVyZW5jZSBlcnJvciBvY2N1cnMu
Ci1lbnVtIGNsYXNzIEdlbmVyYXRvclRoaXNNb2RlIDogdW5zaWduZWQgewotICAgIEVtcHR5LAot
ICAgIE5vbkVtcHR5Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBHZW5lcmF0b3JUaGlzTW9kZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGJhZGRi
YmNhNGE4Mjg1MmE1NjkxNWQwNTgyZGY3ZmZkZjlmZmQ4Y2MuLjViMmVkZmJkNmQ1MzcxYmIwMWUw
MmRiMDNlNjRlYjQ2OTBmYWQxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90
eXBlLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgpAQCAtMzQ5LDEyICszNDgsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0
aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09i
amVjdCogcHJvdG90eXBlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5q
c0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JX
cmFwcGVyRnVuY3Rpb25Nb2RlKQotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQ
cm90b3R5cGUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcHJvdG90eXBl
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7Ci0KKyAgICAgICAgICAgIEpTT2JqZWN0KiBw
cm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAgICAgICAgICAgIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRo
aXNPYmplY3QsIERvbnRFbnVtKTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2
bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRl
IHwgRG9udEVudW0pOwogICAgICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0
T2Zmc2V0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhdHRyaWJ1dGVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5j
dGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0Y2JjZTAyZDY2MjkwNWUw
ZWNiNzhhNzZmY2M4NWEyZTJkMTk4OGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9u
LmgiCi0KLSNpbmNsdWRlICJFcnJvci5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpT
RnVuY3Rpb25JbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJQcm9w
ZXJ0eVNsb3QuaCIKLSNpbmNsdWRlICJWTS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3Qg
Q2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rpb246OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVy
YXRvckZ1bmN0aW9uKSB9OwotCi1KU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0
aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSkKLSAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpCi17Ci19Ci0KLUpTR2VuZXJhdG9yRnVu
Y3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQotewotICAgIEpTR2VuZXJhdG9y
RnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4
ZWN1dGFibGUsIHNjb3BlKTsKLSAgICBBU1NFUlQoZ2VuZXJhdG9yRnVuY3Rpb24tPnN0cnVjdHVy
ZSgpLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgZ2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0
aW9uKHZtKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Ci19Ci0KLUpTR2VuZXJhdG9y
RnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCi17Ci0gICAgSlNHZW5lcmF0b3JG
dW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSk7Ci0gICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUo
dm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIp
OwotICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKLX0KLQotSlNHZW5lcmF0b3JGdW5jdGlv
biogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9u
V2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZmMTA3MmE1MjE2NWRkMTdkZWUwOTY3ZGVlN2I4YWU0ODkwZjJkNDYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25f
aAotI2RlZmluZSBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKLQotI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwotY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKLQotY2xhc3Mg
SlNHZW5lcmF0b3JGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKLSAgICBmcmllbmQgY2xh
c3MgSklUOwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1
bGF0aXZlSklUOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwotI2VuZGlmCi0g
ICAgZnJpZW5kIGNsYXNzIFZNOwotcHVibGljOgotICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNl
OwotCi0gICAgZW51bSBjbGFzcyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7Ci0gICAg
ICAgIE5vcm1hbE1vZGUgPSAwLAotICAgICAgICBSZXR1cm5Nb2RlID0gMSwKLSAgICAgICAgVGhy
b3dNb2RlID0gMgotICAgIH07Ci0KLSAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
Ci0KLSAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNTY29wZSopOwotICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBj
cmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNTY29wZSopOwotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6
ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCi0gICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGlu
bGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOwotICAgICAgICByZXR1cm4gc2l6ZW9mKEpT
R2VuZXJhdG9yRnVuY3Rpb24pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBKU1Njb3BlKik7Ci0KLSAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRl
SW1wbChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKLQotICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQot
I2VuZGlmIC8vIEpTR2VuZXJhdG9yRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDZkZGU2NjAyNzg0YmY4ZDE4M2Q3
Yjk1NjhiZGZhODMzODQ5NmZlN2UuLmJjMDhmOTY5MmIwZWQzZmFiOWY5YmJlNzNmOGZjYzJjZmU3
ZDdhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTUwLDkgKzUwLDYgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3Rv
dHlwZS5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKLSNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgotI2luY2x1ZGUgIkdlbmVyYXRvclBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVy
YXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5o
IgpAQCAtNzUsNyArNzIsNiBAQAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJK
U0RvbGxhclZNUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5s
aW5lcy5oIgpAQCAtMzg4LDcgKzM4NCw2IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAgICAg
CiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RP
VFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0
b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBtX2dl
bmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9U
WVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIApAQCAtNDI1LDE0ICs0MjAsNiBAQCBtXyAj
IyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YwogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJy
b3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwo
IlN5bnRheEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlw
ZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIp
KSk7Ci0KLSAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSkpKTsKLSAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGZ1
bmN0aW9uQ29uc3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsK
LSAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKLSAgICBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7Ci0KLSAgICBtX2dlbmVy
YXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBE
b250RW51bSk7Ci0gICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbV9nZW5lcmF0
b3JQcm90b3R5cGUuZ2V0KCksIERvbnRFbnVtKTsKICAgICAKICAgICBtX29iamVjdFByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtNTY2LDcgKzU1
Myw2IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4g
anNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxl
Sm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBw
cm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZt
KSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdlbmVyYXRvclByb3Rv
dHlwZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0
aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTgz
NCw4ICs4MjAsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fYXJyYXlQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2Vycm9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVy
YXRvclByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2dlbmVyYXRvclByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODY4LDcgKzg1Miw2IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25T
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDMyNTMyNDk4NWEwMzhlNjk3ODE0Yzk4
MDc5YmNkZDQzZWI3NjcyOS4uOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4NGQ4NTEw
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC02Myw4ICs2Myw2IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25D
b2RlQmxvY2s7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3Rv
dHlwZTsKLWNsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKLWNsYXNzIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwog
Y2xhc3MgSW5wdXRDdXJzb3I7CkBAIC0yMzEsOCArMjI5LDYgQEAgcHJvdGVjdGVkOgogICAgIFdy
aXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJh
cnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJp
ZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7Ci0gICAgV3JpdGVCYXJy
aWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOwotICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJv
dG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJl
OwpAQCAtMjY2LDcgKzI2Miw2IEBAIHByb3RlY3RlZDoKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1
bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVO
YW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0
dXJlOwotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwpAQCAtNDU4
LDggKzQ1Myw2IEBAIHB1YmxpYzoKICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQ
cm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlw
ZS5nZXQoKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9Ci0gICAgR2VuZXJhdG9y
UHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRv
clByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhT
Y29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTEzLDcgKzUwNiw2IEBAIHB1YmxpYzoKICAgICBT
dHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQotICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJv
bE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcAppbmRleCAzN2I4YWZjNzdlMmQwOWU5NTUxM2JlZmI1OGVlN2RkZmMw
NmM1NGE5Li44MDBhNzg2OWU1NGI3NWQ1YzhkMjhhNTBkOTdhMWUwYjc3YjUwNjNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVBy
b2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJj
ZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
QW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CisgICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVN
b2RlLCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIHRocm93
Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc291cmNlQ29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IGVjYWJhYmM5ZmZmNjA0ZjM3ZjE5NTdkYmVlMjhlZDg2NGE0MzYwYzkuLjUxMzVmNDBkMTBkNmYw
MDIyNjRkYjg2MmJiY2E5ZGY0ZmRlOTc4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0y
NDUsNyArMjQ0LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3Ry
dWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhp
cywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21p
c2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGlu
dGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNTU3N2E4OWE0OTBmZDBjMmY0M2I1MjdhMWJmYTc5
ZjI5OGUwYjhlZS4uY2VkMzE5NDA4OTAwNmJmM2UxNzgxOTNjYTYyOWU4ZTY4ZDJiODFlNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMDQsNyArMzA0LDYgQEAgcHVibGljOgog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdl
bmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggYzk1MmQzMjUzMDEzYmM0MjI4
MDM1NGE3NDlmMGY1ZDcxZTcxMTg5Mi4uYWYzNDEzMzIzYzU2NGM5MzMwNTExMjYwMmVlMGQ0MDM4
MDY4OWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtNzI3LDcgKzcy
Nyw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9wcm90b3R5
cGVfY2hhaW4uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRp
Y19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNf
bWV0aG9kc19BcnJheS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpm
YWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2luc3RhbmNl
c19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzM1LDcgKzczNSw3IEBACiAtIHBhdGg6IGVz
Ni9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAg
Y21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5
LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYg
Om5vcm1hbAorICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21l
dGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZy
b21fbWFwX2Z1bmN0aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTc2MSw3ICs3NjEs
NyBAQAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwogICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJhdG9yX2lu
c3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAt
IHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9pbnN0YW5jZXNf
b2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTc3MSw3ICs3NzEsNyBAQAogLSBwYXRoOiBlczYv
Zm9yLi5vZl9sb29wc19pdGVyYXRvcl9jbG9zaW5nX3Rocm93LmpzCiAgIGNtZDogcnVuRVM2IDpm
YWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5q
cwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVz
Ni9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYg
OmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJp
Y19pdGVyYWJsZXMuanMKQEAgLTgxMSw1NSArODExLDU1IEBACiAtIHBhdGg6IGVzNi9mdW5jdGlv
bl9uYW1lX3Byb3BlcnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFp
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5jb25zdHJ1Y3Rv
ci5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDogcnVuRVM2IDpu
b3JtYWwKKyAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVy
YXRvclByb3RvdHlwZSUucmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpub3JtYWwKKyAgY21kOiBy
dW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUu
dGhyb3cuanMKLSAgY21kOiBydW5FUzYgOm5vcm1hbAorICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvZ2VuZXJhdG9yc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNtZDogcnVuRVM2
IDpub3JtYWwKKyAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY2Fu
dF91c2VfdGhpc193aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5l
cmF0b3JzLmpzCi0gIGNtZDogcnVuRVM2IDpub3JtYWwKKyAgY21kOiBydW5FUzYgOmZhaWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnNfY2xhc3Nl
cy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpu
b3JtYWwKKyAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfZ2VuZXJh
dG9yX2Z1bmN0aW9uX2V4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpub3JtYWwKKyAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5qcwotICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9n
ZW5lcmF0b3JfbWV0aG9kc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpub3JtYWwKKyAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtleWVkX3Nob3J0
aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXJyYXlzLmpz
Ci0gIGNtZDogcnVuRVM2IDpub3JtYWwKKyAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwotICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
Z2VuZXJpY19pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOm5vcm1hbAorICBjbWQ6IHJ1bkVT
NiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9p
dGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOm5vcm1hbAorICBjbWQ6IHJ1bkVTNiA6ZmFpbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKLSAg
Y21kOiBydW5FUzYgOm5vcm1hbAorICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCi0gIGNtZDog
cnVuRVM2IDpub3JtYWwKKyAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9vbl9ub24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJvci5qcwotICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfc3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CisgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
c3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCisgIGNtZDogcnVuRVM2IDpmYWlsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2UuanMKLSAgY21k
OiBydW5FUzYgOm5vcm1hbAorICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvTWFwX2l0
ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L01hcF9N
YXBbU3ltYm9sLnNwZWNpZXNdLmpzCkBAIC0xMTEzLDcgKzExMTMsNyBAQAogLSBwYXRoOiBlczYv
c3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2luX2Z1bmN0aW9u
X2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29w
ZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAgY21kOiBydW5F
UzYgOm5vcm1hbAorICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9v
cGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAgY21kOiBydW5F
UzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmljX2l0
ZXJhYmxlc19pbl9hcnJheXMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJp
Y19pdGVyYWJsZXMuanMKaW5kZXggOWE4MjEzMmE2MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUyNjAw
NGEzMy4uYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
Z2VuZXJpY19pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTEsMjQgKzEs
MyBAQAotaWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Ci12YXIgZ2xvYmFsID0g
dGhpczsKLX0KLWZ1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7
Ci1tZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKLWlmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rp
b24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKLSAgcmV0dXJuIHt9OwotfQotYXJyLmxlbmd0aCsr
OwotdmFyIGl0ZXJhdG9yID0gewotICBuZXh0OiBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4geyB2
YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OwotICB9LAotICAncmV0
dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCi0gICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KLX07
Ci12YXIgaXRlcmFibGUgPSB7fTsKLWl0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlv
bigpeyByZXR1cm4gaXRlcmF0b3I7IH0KLXJldHVybiBpdGVyYWJsZTsKLX0KLQogZnVuY3Rpb24g
dGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMK
aW5kZXggODE2N2RhNTJkZjZmZDFlYThmYzE1NDQ0YTNiNjRlYjg2ZTYzYzc5Mi4uYjRjNzQ1Mzkz
MjZjODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0
ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDI0ICsxLDMgQEAK
LWlmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewotdmFyIGdsb2JhbCA9IHRoaXM7
Ci19Ci1mdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgewotbWV0
aG9kcyA9IG1ldGhvZHMgfHwge307Ci1pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8
fCAhU3ltYm9sLml0ZXJhdG9yKSB7Ci0gIHJldHVybiB7fTsKLX0KLWFyci5sZW5ndGgrKzsKLXZh
ciBpdGVyYXRvciA9IHsKLSAgbmV4dDogZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHsgdmFsdWU6
IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKLSAgfSwKLSAgJ3JldHVybic6
IG1ldGhvZHNbJ3JldHVybiddLAotICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCi19OwotdmFy
IGl0ZXJhYmxlID0ge307Ci1pdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsg
cmV0dXJuIGl0ZXJhdG9yOyB9Ci1yZXR1cm4gaXRlcmFibGU7Ci19Ci0KIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDMyZDMxN2MwYjgw
YWRiOTUyOTQzNDNmOWFjODhmZjhlYTg0ZGZhY2YuLjZmNjgyZjVhMTZjYWI5ZThiNWQyNjlhZGU0
MmU4M2FlYjhiMDNkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3Jf
Y2xvc2luZy5qcwpAQCAtMSwyNCArMSwzIEBACi1pZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVm
aW5lZCcpIHsKLXZhciBnbG9iYWwgPSB0aGlzOwotfQotZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJs
ZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKLW1ldGhvZHMgPSBtZXRob2RzIHx8IHt9OwotaWYgKHR5
cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgewotICByZXR1
cm4ge307Ci19Ci1hcnIubGVuZ3RoKys7Ci12YXIgaXRlcmF0b3IgPSB7Ci0gIG5leHQ6IGZ1bmN0
aW9uKCkgewotICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0
aCA8PSAwIH07Ci0gIH0sCi0gICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKLSAgJ3Rocm93
JzogbWV0aG9kc1sndGhyb3cnXQotfTsKLXZhciBpdGVyYWJsZSA9IHt9OwotaXRlcmFibGVbU3lt
Ym9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQotcmV0dXJuIGl0
ZXJhYmxlOwotfQotCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gJyc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Ro
cm93LmpzCmluZGV4IDFmNDdkMzI4YmJjN2Y1Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIuLjQ0
YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0YTA0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9y
X2Nsb3NpbmdfdmlhX3Rocm93LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCkBA
IC0xLDI0ICsxLDMgQEAKLWlmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewotdmFy
IGdsb2JhbCA9IHRoaXM7Ci19Ci1mdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwg
bWV0aG9kcykgewotbWV0aG9kcyA9IG1ldGhvZHMgfHwge307Ci1pZiAodHlwZW9mIFN5bWJvbCAh
PT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7Ci0gIHJldHVybiB7fTsKLX0KLWFy
ci5sZW5ndGgrKzsKLXZhciBpdGVyYXRvciA9IHsKLSAgbmV4dDogZnVuY3Rpb24oKSB7Ci0gICAg
cmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKLSAg
fSwKLSAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAotICAndGhyb3cnOiBtZXRob2RzWyd0
aHJvdyddCi19OwotdmFyIGl0ZXJhYmxlID0ge307Ci1pdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3Jd
ID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9Ci1yZXR1cm4gaXRlcmFibGU7Ci19Ci0K
IGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9t
LWZ1bmN0aW9uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdjYTU4NzkwN2MzY2RiMTM2NTMwNWNiNzkxYmMyNGJkNzkyZTI2ODQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOwotfQotCi1mdW5jdGlvbiAqZ2Vu
KGEsIGIsIGMpCi17Ci0gICAgZnVuY3Rpb24gdGVzdCgpCi0gICAgewotICAgICAgICByZXR1cm4g
YXJndW1lbnRzOwotICAgIH0KLQotICAgIHJldHVybiB0ZXN0OwotfQotCi1sZXQgZyA9IGdlbigx
LCAyLCAzKTsKLWxldCB7dmFsdWU6IGZ1bmN9ID0gZy5uZXh0KCk7Ci1zaG91bGRCZShmdW5jKCku
bGVuZ3RoLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjI2NDc4ZmEyM2U0YmUzM2FiYWFmMTQ0NzI5MmE0NTliN2I4NmQxYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDcgKzAsMCBAQAotZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKLXsKLSAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Ci19Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgZnVuY3Rp
b24gKmcxKGEsIGIsIGMpCi0gICAgewotICAgICAgICB5aWVsZCBhcmd1bWVudHM7Ci0gICAgICAg
IHlpZWxkIGFyZ3VtZW50czsKLSAgICB9Ci0KLSAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOwotICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwi
MiI6Mn1gKTsKLSAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7
IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Ci0KLSAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKLSAgICB7
Ci0gICAgICAgIHlpZWxkIGFyZ3VtZW50czsKLSAgICAgICAgeWllbGQgYXJndW1lbnRzOwotICAg
ICAgICBhID0geWllbGQgYTsKLSAgICAgICAgeWllbGQgYXJndW1lbnRzOwotICAgICAgICBiID0g
eWllbGQgYjsKLSAgICAgICAgeWllbGQgYXJndW1lbnRzOwotICAgICAgICBjID0geWllbGQgYzsK
LSAgICAgICAgeWllbGQgYXJndW1lbnRzOwotICAgIH0KLSAgICB2YXIgZyA9IGcyKDAsIDEsIDIp
OwotICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwi
MSI6MSwiMiI6Mn1gKTsKLSAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1
ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Ci0gICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDApOwotICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIw
Ijo0MiwiMSI6MSwiMiI6Mn1gKTsKLSAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7Ci0g
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIx
Ijo0MiwiMiI6Mn1gKTsKLSAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7Ci0gICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjo0Miwi
MiI6NDJ9YCk7Ci19KCkpOwotCi0oZnVuY3Rpb24gKCkgewotICAgIGZ1bmN0aW9uICpnMShhLCBi
LCBjKQotICAgIHsKLSAgICAgICAgInVzZSBzdHJpY3QiOwotICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7Ci0gICAgICAgIHlpZWxkIGFyZ3VtZW50czsKLSAgICB9Ci0KLSAgICB2YXIgZyA9IGcxKDAs
IDEsIDIpOwotICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsi
MCI6MCwiMSI6MSwiMiI6Mn1gKTsKLSAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQo
KS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Ci0KLSAgICBmdW5jdGlvbiAqZzIoYSwg
YiwgYykKLSAgICB7Ci0gICAgICAgICJ1c2Ugc3RyaWN0IjsKLSAgICAgICAgeWllbGQgYXJndW1l
bnRzOwotICAgICAgICB5aWVsZCBhcmd1bWVudHM7Ci0gICAgICAgIGEgPSB5aWVsZCBhOwotICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7Ci0gICAgICAgIGIgPSB5aWVsZCBiOwotICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7Ci0gICAgICAgIGMgPSB5aWVsZCBjOwotICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7Ci0gICAgfQotICAgIHZhciBnID0gZzIoMCwgMSwgMik7Ci0gICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwotICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6
Mn1gKTsKLSAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7Ci0gICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Ci0g
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOwotICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwotICAgIHNob3Vs
ZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKLSAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKLX0oKSk7Ci0KLShmdW5jdGlv
biAoKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQotICAg
IHsKLSAgICAgICAgeWllbGQgYXJndW1lbnRzOwotICAgICAgICB5aWVsZCBhcmd1bWVudHM7Ci0g
ICAgfQotCi0gICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKLSAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Ci0gICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OwotCi0gICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCi0gICAgewotICAgICAgICB5aWVsZCBhcmd1
bWVudHM7Ci0gICAgICAgIHlpZWxkIGFyZ3VtZW50czsKLSAgICAgICAgYSA9IHlpZWxkIGE7Ci0g
ICAgICAgIHlpZWxkIGFyZ3VtZW50czsKLSAgICAgICAgYiA9IHlpZWxkIGI7Ci0gICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKLSAgICAgICAgYyA9IHlpZWxkIGM7Ci0gICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKLSAgICB9Ci0gICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKLSAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Ci0gICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIy
IjoyfWApOwotICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKLSAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
LSAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7Ci0gICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Ci0gICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOwotICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcu
bmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwotfSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1l
dGhvZHMtc3ludGF4LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI0NjVjZWIxZjQzNmMwMmUzNmQ4YjBhYzViYTdkZTMyNTU1NzcwMGMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMKKysrIC9kZXYv
bnVsbApAQCAtMSw0OCArMCwwIEBACi1mdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgewotICAg
IHRyeSB7Ci0gICAgICAgIGV2YWwoc2NyaXB0KTsKLSAgICB9IGNhdGNoIChlcnJvcikgewotICAg
ICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikKLSAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7Ci0gICAgdmFyIGVycm9y
ID0gbnVsbDsKLSAgICB0cnkgewotICAgICAgICBldmFsKHNjcmlwdCk7Ci0gICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICBlcnJvciA9IGU7Ci0gICAgfQotICAgIGlmICghZXJyb3IpCi0gICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0aHJvd24iKTsKLQot
ICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQotICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOwotfQotCi10ZXN0U3ludGF4RXJyb3Io
YAotY2xhc3MgQ29jb2EgewotICAgICpjb25zdHJ1Y3RvcigpCi0gICAgewotICAgIH0KLX0KLWAs
IGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2NvbnN0cnVj
dG9yJy5gKTsKLQotdGVzdFN5bnRheChgCi1jbGFzcyBDb2NvYSB7Ci0gICAgKm9rKCkKLSAgICB7
Ci0gICAgICAgIHlpZWxkIDQyOwotICAgIH0KLX0KLWApOwotCi10ZXN0U3ludGF4KGAKLWNsYXNz
IENvY29hIHsKLSAgICBzdGF0aWMgKm9rKCkKLSAgICB7Ci0gICAgICAgIHlpZWxkIDQyOwotICAg
IH0KLX0KLWApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDIxZjVhNTRhMmRjNDEyNzA3OWMzMWNmZDMxZjliMzFjZjUwYWQ2ZTUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDYyICswLDAgQEAKLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRo
cm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewotICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOwot
ICAgIHZhciBlcnJvciA9IG51bGw7Ci0gICAgdHJ5IHsKLSAgICAgICAgZnVuYygpOwotICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOwotICAgICAgICBlcnJvciA9
IGU7Ci0gICAgfQotICAgIGlmICghZXJyb3JUaHJvd24pCi0gICAgICAgIHRocm93IG5ldyBFcnJv
cignbm90IHRocm93bicpOwotICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2Up
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7
Ci19Ci0KLWNsYXNzIEEgewotICAgICpnZW4oKQotICAgIHsKLSAgICAgICAgeWllbGQgdGhpczsK
LSAgICAgICAgeWllbGQgdGhpczsKLSAgICAgICAgcmV0dXJuIDQyOwotICAgIH0KLQotICAgIHN0
YXRpYyAqc3RhdGljR2VuKCkKLSAgICB7Ci0gICAgICAgIHlpZWxkIHRoaXM7Ci0gICAgICAgIHlp
ZWxkIHRoaXM7Ci0gICAgICAgIHJldHVybiA0MjsKLSAgICB9Ci19Ci17Ci0gICAgbGV0IGEgPSBu
ZXcgQSgpOwotICAgIGxldCBnID0gYS5nZW4oKTsKLSAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgYSk7Ci0gICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOwotICAgIHNob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCA0Mik7Ci0gICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Ci19
Ci17Ci0gICAgbGV0IGEgPSBuZXcgQSgpOwotICAgIHNob3VsZFRocm93KCgpID0+IHsKLSAgICAg
ICAgbGV0IGcgPSBuZXcgYS5nZW4oKTsKLSAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBu
b3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGEuZ2VuKCknKWApOwotfQotCi17Ci0g
ICAgbGV0IGcgPSBBLnN0YXRpY0dlbigpOwotICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBB
KTsKLSAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7Ci0gICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDQyKTsKLSAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKLX0KLXsK
LSAgICBzaG91bGRUaHJvdygoKSA9PiB7Ci0gICAgICAgIGxldCBnID0gbmV3IEEuc3RhdGljR2Vu
KCk7Ci0gICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2
YWx1YXRpbmcgJ25ldyBBLnN0YXRpY0dlbigpJylgKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzliZDc4ZGY3NmEwY2I3NThiODFlZWFiMmMyNTVi
OWRhZDFiNDQ3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMu
anMKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gc2hv
dWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7Ci0gICAgdmFyIGVycm9yVGhyb3duID0gZmFs
c2U7Ci0gICAgdmFyIGVycm9yID0gbnVsbDsKLSAgICB0cnkgewotICAgICAgICBmdW5jKCk7Ci0g
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICBlcnJvclRocm93biA9IHRydWU7Ci0gICAgICAgIGVy
cm9yID0gZTsKLSAgICB9Ci0gICAgaWYgKCFlcnJvclRocm93bikKLSAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdub3QgdGhyb3duJyk7Ci0gICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVz
c2FnZSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9y
KX1gKTsKLX0KLQotZnVuY3Rpb24gKmdlbigpIHsKLSAgICB5aWVsZCBldmFsKCJ0aGlzIik7Ci19
Ci0KLXZhciBnID0gbmV3IGdlbigpOwotc2hvdWxkVGhyb3coKCkgPT4gewotICAgIGcubmV4dCgp
LnZhbHVlOwotfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQg
dmFyaWFibGUuYCk7Ci0KLWNsYXNzIEIgeyB9Ci0KLShmdW5jdGlvbigpIHsKLSAgICBldmFsKCd0
aGlzJyk7Ci0gICAgZXZhbCgndGhpcycpOwotfSgpKTsKLQotY2xhc3MgQSBleHRlbmRzIEIgewot
ICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBldmFsKCd0aGlzJyk7Ci0g
ICAgfQotfQotCi1zaG91bGRUaHJvdygoKSA9PiB7Ci0gICAgbmV3IEEoKTsKLX0sIGBSZWZlcmVu
Y2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwotCi1jbGFz
cyBDIHsKLSAgICAqZ2VuZXJhdG9yKCkKLSAgICB7Ci0gICAgICAgIHlpZWxkIGV2YWwoJ3RoaXMn
KTsKLSAgICB9Ci19Ci0KLXNob3VsZFRocm93KCgpID0+IHsKLSAgICBsZXQgYyA9IG5ldyBDKCk7
Ci0gICAgbGV0IGcgPSBuZXcgYy5nZW5lcmF0b3IoKTsKLSAgICBnLm5leHQoKTsKLX0sIGBUeXBl
RXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYy5n
ZW5lcmF0b3IoKScpYCk7Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgbGV0IGMgPSBuZXcgQygpOwot
ICAgIGxldCBnID0gYy5nZW5lcmF0b3IoKTsKLSAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
Yyk7Ci19KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY5NmFlNWZkMTlmOWQ4YzhiMDhkZTZiMGVkNmE1YmFl
NzVhZmRkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25z
dHJ1Y3Rvci5qcworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgewotICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQotICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Ci19Ci12YXIgZ2xv
YmFsID0gKG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKLXNob3VsZEJlKHR5cGVvZiBn
bG9iYWwuR2VuZXJhdG9yRnVuY3Rpb24sICd1bmRlZmluZWQnKTsKLXZhciBnZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yID0gKGZ1bmN0aW9uICooKSB7IH0pLmNvbnN0cnVjdG9yOwotc2hvdWxk
QmUoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKLXNo
b3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9y
LCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Zjc3MzZjNDIzNGUxODc5MTBiOGNhNjM1
M2NiZjQ1YjBkNjAwNmI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLW5hbWUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1mdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0g
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKLX0KLQotdmFy
IG9rID0gZnVuY3Rpb24gKmdlbmVyYXRvcigpCi17Ci0gICAgeWllbGQgZ2VuZXJhdG9yOwotfTsK
LQotdmFyIGcgPSBvaygpOwotc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIG9rKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMt
d2l0aC1ub24tZ2VuZXJhdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQ1NjFkOTMwNzYwZDIwZWU2ZWY0Y2U1NzAzZWY3M2I5ZmY5YWU1NmIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5l
cmF0b3IuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKLSAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsK
LSAgICB2YXIgZXJyb3IgPSBudWxsOwotICAgIHRyeSB7Ci0gICAgICAgIGZ1bmMoKTsKLSAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKLSAgICAgICAgZXJyb3Ig
PSBlOwotICAgIH0KLSAgICBpZiAoIWVycm9yVGhyb3duKQotICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCB0aHJvd24nKTsKLSAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdl
KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAp
OwotfQotCi1mdW5jdGlvbiAqZ2VuKCkgewotfQotdmFyIGcgPSBnZW4oKTsKLQotc2hvdWxkVGhy
b3coKCkgPT4gewotICAgIGcubmV4dC5jYWxsKHt9KTsKLX0sIGBUeXBlRXJyb3I6IHx0aGlzfCBz
aG91bGQgYmUgYSBnZW5lcmF0b3JgKTsKLQotCi1zaG91bGRUaHJvdygoKSA9PiB7Ci0gICAgZy50
aHJvdy5jYWxsKHt9KTsKLX0sIGBUeXBlRXJyb3I6IHx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0
b3JgKTsKLQotc2hvdWxkVGhyb3coKCkgPT4gewotICAgIGcucmV0dXJuLmNhbGwoe30pOwotfSwg
YFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRpb25zLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRpb25z
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmE0ZGM4Y2UwNzZjNzMxYzQyNGE4
ODVmYjM4ZTM1N2U0OTNmZmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJl
bGF0aW9ucy5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLWZ1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwotfQotCi1mdW5j
dGlvbiAqZ2VuZXJhdG9yRnVuY3Rpb24oKSB7Ci19Ci1sZXQgZ2VuZXJhdG9yID0gZ2VuZXJhdG9y
RnVuY3Rpb24oKTsKLQotc2hvdWxkQmUoZ2VuZXJhdG9yIGluc3RhbmNlb2YgZ2VuZXJhdG9yRnVu
Y3Rpb24sIHRydWUpOwotc2hvdWxkQmUodHlwZW9mIGdlbmVyYXRvci5fX3Byb3RvX18sICdvYmpl
Y3QnKTsKLXNob3VsZEJlKGdlbmVyYXRvci5fX3Byb3RvX18sIGdlbmVyYXRvckZ1bmN0aW9uLnBy
b3RvdHlwZSk7Ci0KLWxldCBHZW5lcmF0b3JQcm90b3R5cGUgPSBnZW5lcmF0b3IuX19wcm90b19f
Ll9fcHJvdG9fXzsKLQotbGV0IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlID0gZ2VuZXJhdG9y
RnVuY3Rpb24uX19wcm90b19fOwotbGV0IEdlbmVyYXRvckZ1bmN0aW9uID0gZ2VuZXJhdG9yRnVu
Y3Rpb24uX19wcm90b19fLmNvbnN0cnVjdG9yOwotc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24u
cHJvdG90eXBlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7Ci1zaG91bGRCZShnZW5lcmF0
b3JGdW5jdGlvbiBpbnN0YW5jZW9mIEdlbmVyYXRvckZ1bmN0aW9uLCB0cnVlKTsKLXNob3VsZEJl
KEdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXywgRnVuY3Rpb24pOwotc2hvdWxkQmUoR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuX19wcm90b19fLCBGdW5jdGlvbi5wcm90b3R5cGUpOwotCi1z
aG91bGRCZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUsIEdlbmVyYXRvclBy
b3RvdHlwZSk7Ci1zaG91bGRCZShHZW5lcmF0b3JQcm90b3R5cGUuY29uc3RydWN0b3IsIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKLQotbGV0IGFycmF5SXRlcmF0b3IgPSBbXVtTeW1ib2wu
aXRlcmF0b3JdKCk7Ci1sZXQgQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGFycmF5SXRlcmF0b3Iu
X19wcm90b19fOwotbGV0IEl0ZXJhdG9yUHJvdG90eXBlID0gQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5fX3Byb3RvX187Ci0KLXNob3VsZEJlKEl0ZXJhdG9yUHJvdG90eXBlLCBHZW5lcmF0b3JQcm90
b3R5cGUuX19wcm90b19fKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3Qt
Y2FsbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U2ZGViY2IxZmU4NTdiNTBm
M2QyNzlmMWQ1NzRmZTg2OWRjMmQ4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCww
IEBACi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVJdGVyYXRvclJlc3VsdChhY3R1YWwsIHsg
dmFsdWUsIGRvbmUgfSkKLXsKLSAgICBzaG91bGRCZShhY3R1YWwudmFsdWUsIHZhbHVlKTsKLSAg
ICBzaG91bGRCZShhY3R1YWwuZG9uZSwgZG9uZSk7Ci19Ci0KLWZ1bmN0aW9uIHVucmVhY2hhYmxl
KCkKLXsKLSAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Ci19Ci0KLWZ1bmN0aW9uICpnZW4oKQot
ewotICAgIHVucmVhY2hhYmxlKCk7Ci19Ci0KLXZhciBnID0gZ2VuKCk7Ci1zaG91bGRCZUl0ZXJh
dG9yUmVzdWx0KGcucmV0dXJuKCJIZWxsbyIpLCB7IHZhbHVlOiAiSGVsbG8iLCBkb25lOiB0cnVl
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItcmV0dXJuLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItcmV0dXJuLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjU2OWEwZjcw
ZTVlNGIxZmRhMjc2MmRiNzQ0OGQ5ZTVhOTE1MTMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXJldHVybi5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi1mdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1
YWwpfWApOwotfQotCi1mdW5jdGlvbiBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGFjdHVhbCwgeyB2
YWx1ZSwgZG9uZSB9KQotewotICAgIHNob3VsZEJlKGFjdHVhbC52YWx1ZSwgdmFsdWUpOwotICAg
IHNob3VsZEJlKGFjdHVhbC5kb25lLCBkb25lKTsKLX0KLQotZnVuY3Rpb24gdW5yZWFjaGFibGUo
KQotewotICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTsKLX0KLQotZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7Ci0gICAgdmFyIGVycm9yVGhyb3duID0g
ZmFsc2U7Ci0gICAgdmFyIGVycm9yID0gbnVsbDsKLSAgICB0cnkgewotICAgICAgICBmdW5jKCk7
Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBlcnJvclRocm93biA9IHRydWU7Ci0gICAgICAg
IGVycm9yID0gZTsKLSAgICB9Ci0gICAgaWYgKCFlcnJvclRocm93bikKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdub3QgdGhyb3duJyk7Ci0gICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9y
TWVzc2FnZSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVy
cm9yKX1gKTsKLX0KLQotKGZ1bmN0aW9uICgpIHsKLSAgICBmdW5jdGlvbiAqZ2VuKCkgewotICAg
ICAgICB5aWVsZCB5aWVsZCAyMDsKLSAgICAgICAgeWllbGQgNDI7Ci0gICAgfQotCi0gICAgewot
ICAgICAgICBsZXQgZyA9IGdlbigpOwotICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
bmV4dCgwKSwgeyB2YWx1ZTogMjAsIGRvbmU6IGZhbHNlIH0pOwotICAgICAgICBzaG91bGRCZUl0
ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDIwKSwgeyB2YWx1ZTogMjAsIGRvbmU6IHRydWUgfSk7Ci0g
ICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMjApLCB7IHZhbHVlOiAyMCwg
ZG9uZTogdHJ1ZSB9KTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoNDIp
LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7Ci0gICAgfQotICAgIHsKLSAgICAg
ICAgbGV0IGcgPSBnZW4oKTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVy
big0MiksIHsgdmFsdWU6IDQyLCBkb25lOiB0cnVlIH0pOwotICAgICAgICBzaG91bGRCZUl0ZXJh
dG9yUmVzdWx0KGcubmV4dCg0MiksIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsK
LSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybig0MiksIHsgdmFsdWU6IDQy
LCBkb25lOiB0cnVlIH0pOwotICAgIH0KLX0oKSk7Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgZnVu
Y3Rpb24gKmdlbigpIHsKLSAgICAgICAgcmV0dXJuIDQyOwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgbGV0IGcgPSBnZW4oKTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQo
KSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7Ci0gICAgICAgIHNob3VsZEJlSXRlcmF0b3JS
ZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFsdWU6IDAsIGRvbmU6IHRydWUgfSk7Ci0gICAgfQotICAg
IHsKLSAgICAgICAgbGV0IGcgPSBnZW4oKTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3Vs
dChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKLSAgICAgICAgc2hvdWxk
QmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0pOwotICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1
ZTogNDIsIGRvbmU6IHRydWUgfSk7Ci0gICAgfQotfSgpKTsKLQotKGZ1bmN0aW9uICgpIHsKLSAg
ICBmdW5jdGlvbiAqZ2VuKCkgewotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IGcgPSBnZW4o
KTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0pOwotICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
cmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVlIH0pOwotICAgIH0KLSAgICB7Ci0gICAg
ICAgIGxldCBnID0gZ2VuKCk7Ci0gICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1
cm4oMCksIHsgdmFsdWU6IDAsIGRvbmU6IHRydWUgfSk7Ci0gICAgICAgIHNob3VsZEJlSXRlcmF0
b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsKLSAg
ICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybig0MiksIHsgdmFsdWU6IDQyLCBk
b25lOiB0cnVlIH0pOwotICAgIH0KLX0oKSk7Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgZnVuY3Rp
b24gKmdlbigpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHlpZWxkIDQyOwotICAgICAg
ICB9IGZpbmFsbHkgewotICAgICAgICAgICAgcmV0dXJuIDQwMDsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHsKLSAgICAgICAgbGV0IGcgPSBnZW4oKTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRv
clJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogNDIsIGRvbmU6IGZhbHNlIH0pOwotICAgICAgICBz
aG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZhbHVlOiA0MDAsIGRvbmU6IHRy
dWUgfSk7Ci0gICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFs
dWU6IDAsIGRvbmU6IHRydWUgfSk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgbGV0IGcgPSBnZW4o
KTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTog
MCwgZG9uZTogdHJ1ZSB9KTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQo
KSwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0pOwotICAgICAgICBzaG91bGRCZUl0
ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7Ci0g
ICAgfQotfSgpKTsKLQotCi0oZnVuY3Rpb24gKCkgewotICAgIGZ1bmN0aW9uICpnZW4oKSB7Ci0g
ICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB5aWVsZCA0MjsKLSAgICAgICAgfSBmaW5hbGx5IHsK
LSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigidGhyb3duIik7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIGxldCBnID0gZ2VuKCk7Ci0gICAgICAgIHNob3VsZEJlSXRlcmF0
b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6IDQyLCBkb25lOiBmYWxzZSB9KTsKLSAgICAgICAg
c2hvdWxkVGhyb3coKCkgPT4gZy5yZXR1cm4oMCksIGBFcnJvcjogdGhyb3duYCk7Ci0gICAgICAg
IHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFsdWU6IDAsIGRvbmU6IHRy
dWUgfSk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgbGV0IGcgPSBnZW4oKTsKLSAgICAgICAgc2hv
dWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9
KTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0pOwotICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
cmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7Ci0gICAgfQotfSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRo
aXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlz
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODBhZjZlMDc4OWRjMThiYmFkM2Ew
YWZiYmY1YWQ5YTg1ZWMxMzVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRo
aXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7Ci0gICAgdmFyIGVycm9yVGhyb3duID0g
ZmFsc2U7Ci0gICAgdmFyIGVycm9yID0gbnVsbDsKLSAgICB0cnkgewotICAgICAgICBmdW5jKCk7
Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBlcnJvclRocm93biA9IHRydWU7Ci0gICAgICAg
IGVycm9yID0gZTsKLSAgICB9Ci0gICAgaWYgKCFlcnJvclRocm93bikKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdub3QgdGhyb3duJyk7Ci0gICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9y
TWVzc2FnZSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVy
cm9yKX1gKTsKLX0KLQotCi12YXIgZ2xvYmFsID0gbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycp
KCk7Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgZnVuY3Rpb24gKmdlbigpIHsKLSAgICAgICAgeWll
bGQgdGhpczsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCBnID0gZ2VuKCk7Ci0gICAgICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBnbG9iYWwpOwotICAgIH0KLSAgICB7Ci0gICAgICAg
IGxldCBnID0gbmV3IGdlbigpOwotICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7Ci0gICAgICAg
ICAgICBnLm5leHQoKTsKLSAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgbGV0IHRo
aXNPYmplY3QgPSB7fTsKLSAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKLSAg
ICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOwotICAgIH0KLX0oKSk7
Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgZnVuY3Rpb24gKmdlbigpIHsKLSAgICAgICAgInVzZSBz
dHJpY3QiOwotICAgICAgICB5aWVsZCB0aGlzOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0
IGcgPSBnZW4oKTsKLSAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7
Ci0gICAgfQotICAgIHsKLSAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7Ci0gICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKLSAgICAgICAgICAgIGcubmV4dCgpOwotICAgICAgICB9LCBgUmVmZXJl
bmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKLSAgICB9
Ci0gICAgewotICAgICAgICBsZXQgdGhpc09iamVjdCA9IHt9OwotICAgICAgICBsZXQgZyA9IGdl
bi5jYWxsKHRoaXNPYmplY3QpOwotICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhp
c09iamVjdCk7Ci0gICAgfQotfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZp
cnN0LWNhbGwuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NmNiNGY5N2VlMTBj
Mzg1MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCAr
MCwwIEBACi1mdW5jdGlvbiB1bnJlYWNoYWJsZSgpCi17Ci0gICAgdGhyb3cgbmV3IEVycm9yKCJO
RyIpOwotfQotCi1mdW5jdGlvbiAqZ2VuKCkKLXsKLSAgICB1bnJlYWNoYWJsZSgpOwotfQotCi12
YXIgZyA9IGdlbigpOwotdmFyIGVycm9yID0gbmV3IEVycm9yKCJPSyIpOwotdmFyIHRocm93biA9
IG51bGw7Ci10cnkgewotICAgIGcudGhyb3coZXJyb3IpOwotfSBjYXRjaCAoZSkgewotICAgIHRo
cm93biA9IGU7Ci19Ci1pZiAodGhyb3duICE9PSBlcnJvcikKLSAgICB1bnJlYWNoYWJsZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
dGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10
aHJvdy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UyMjY5ZjUzYzk1NGVhODI4
Y2MwMTQxMDQ3YjUzZmMxYTEyYTA0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aHJvdy5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi1mdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0g
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOwot
fQotCi1mdW5jdGlvbiBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGFjdHVhbCwgeyB2YWx1ZSwgZG9u
ZSB9KQotewotICAgIHNob3VsZEJlKGFjdHVhbC52YWx1ZSwgdmFsdWUpOwotICAgIHNob3VsZEJl
KGFjdHVhbC5kb25lLCBkb25lKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7Ci0gICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7Ci0gICAgdmFyIGVycm9y
ID0gbnVsbDsKLSAgICB0cnkgewotICAgICAgICBmdW5jKCk7Ci0gICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7Ci0gICAgICAgIGVycm9yID0gZTsKLSAgICB9Ci0g
ICAgaWYgKCFlcnJvclRocm93bikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7Ci0gICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKLSAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKLX0KLQotY2xhc3Mg
Q2FsbFNpdGUgewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY291bnQg
PSAwOwotICAgIH0KLQotICAgIGNhbGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY291
bnQrKzsKLSAgICB9Ci19Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgZnVuY3Rpb24gKmdlbigpIHsK
LSAgICAgICAgeWllbGQgeWllbGQgMjA7Ci0gICAgICAgIHlpZWxkIDQyOwotICAgIH0KLQotICAg
IHsKLSAgICAgICAgbGV0IGcgPSBnZW4oKTsKLSAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3Vs
dChnLm5leHQoMCksIHsgdmFsdWU6IDIwLCBkb25lOiBmYWxzZSB9KTsKLSAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4gZy50aHJvdygyMCksIGAyMGApOwotICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiBnLnRocm93KDIwKSwgYDIwYCk7Ci0gICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5u
ZXh0KDQyKSwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0pOwotICAgICAgICBzaG91
bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUg
fSk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgbGV0IGcgPSBnZW4oKTsKLSAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4gZy50aHJvdyg0MiksIGA0MmApOwotICAgICAgICBzaG91bGRCZUl0ZXJhdG9y
UmVzdWx0KGcubmV4dCg0MiksIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsKLSAg
ICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybig0MiksIHsgdmFsdWU6IDQyLCBk
b25lOiB0cnVlIH0pOwotICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBnLnRocm93KDQyKSwgYDQy
YCk7Ci0gICAgfQotfSgpKTsKLQotKGZ1bmN0aW9uICgpIHsKLSAgICBmdW5jdGlvbiAqZ2VuKCkg
ewotICAgICAgICByZXR1cm4gNDI7Ci0gICAgfQotCi0gICAgewotICAgICAgICBsZXQgZyA9IGdl
bigpOwotICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiA0
MiwgZG9uZTogdHJ1ZSB9KTsKLSAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZy50aHJvdygwKSwg
YDBgKTsKLSAgICB9Ci0gICAgewotICAgICAgICBsZXQgZyA9IGdlbigpOwotICAgICAgICBzaG91
bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVlIH0p
OwotICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSk7Ci0gICAgICAgIHNob3VsZFRocm93KCgpID0+IGcudGhyb3co
NDIpLCBgNDJgKTsKLSAgICB9Ci19KCkpOwotCi0oZnVuY3Rpb24gKCkgewotICAgIGZ1bmN0aW9u
ICpnZW4oKSB7Ci0gICAgfQotCi0gICAgewotICAgICAgICBsZXQgZyA9IGdlbigpOwotICAgICAg
ICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSk7Ci0gICAgICAgIHNob3VsZFRocm93KCgpID0+IGcudGhyb3coMCksIGAwYCk7
Ci0gICAgfQotICAgIHsKLSAgICAgICAgbGV0IGcgPSBnZW4oKTsKLSAgICAgICAgc2hvdWxkQmVJ
dGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKLSAg
ICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0pOwotICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBnLnRocm93KDQyKSwg
YDQyYCk7Ci0gICAgfQotfSgpKTsKLQotKGZ1bmN0aW9uICgpIHsKLSAgICBsZXQgc2l0ZSA9IG5l
dyBDYWxsU2l0ZSgpOwotICAgIGZ1bmN0aW9uICpnZW4oKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICB5aWVsZCA0MjsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgc2hv
dWxkQmUoZSwgMCk7Ci0gICAgICAgICAgICBzaXRlLmNhbGwoKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gNDI7Ci0gICAgfQotCi0gICAgewotICAgICAgICBsZXQgZyA9IGdlbigpOwotICAg
ICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiA0MiwgZG9uZTog
ZmFsc2UgfSk7Ci0gICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy50aHJvdygwKSwgeyB2
YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7Ci0gICAgICAgIHNob3VsZEJlKHNpdGUuY291bnQsIDEp
OwotICAgIH0KLX0oKSk7Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgZnVuY3Rpb24gKmdlbigpIHsK
LSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHlpZWxkIDQyOwotICAgICAgICB9IGZpbmFsbHkg
ewotICAgICAgICAgICAgcmV0dXJuIDQyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBsZXQgZyA9IGdlbigpOwotICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4
dCgpLCB7IHZhbHVlOiA0MiwgZG9uZTogZmFsc2UgfSk7Ci0gICAgICAgIHNob3VsZEJlSXRlcmF0
b3JSZXN1bHQoZy50aHJvdygwKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7Ci0gICAgICAg
IHNob3VsZFRocm93KCgpID0+IGcudGhyb3coMCksIGAwYCk7Ci0gICAgfQotfSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgt
bmV3LXRhcmdldC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXdpdGgtbmV3LXRhcmdldC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQz
YjJkZjk5YTg0ODBjYjM1YTdkZDZiMzRlNjYyNTM2ZWFiOGRiNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwx
NSArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gKmdlbigpCi17Ci0gICAgeWllbGQgbmV3LnRh
cmdldDsKLX0KLQotdmFyIGcgPSBnZW4oKTsKLXNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRl
ZmluZWQpOwotCi12YXIgZzIgPSBuZXcgZ2VuKCk7Ci1zaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
dW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ZTUzYzc5MTczOGVjZjhiOWQzNDk4MzVlYTgzYmY4ZDZjODk3N2JiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw4MiArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsK
LSAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKLSAgICB2YXIgZXJyb3IgPSBudWxsOwotICAg
IHRyeSB7Ci0gICAgICAgIGZ1bmMoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGVycm9y
VGhyb3duID0gdHJ1ZTsKLSAgICAgICAgZXJyb3IgPSBlOwotICAgIH0KLSAgICBpZiAoIWVycm9y
VGhyb3duKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKLSAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOwotfQotCi1mdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKLX0KLQotKGZ1bmN0aW9u
ICgpIHsKLSAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXIn
KTsKLSAgICB9Ci0KLSAgICBzaG91bGRUaHJvdygoKSA9PiB0ZXN0KCksIGBTeW50YXhFcnJvcjog
c3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLmApOwotfSgpKTsKLQotKGZ1bmN0
aW9uICgpIHsKLSAgICBjbGFzcyBCIHsKLSAgICAgICAgZ2VuKCkgewotICAgICAgICAgICAgcmV0
dXJuIDQyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2xhc3MgQSBleHRlbmRzIEIgewotICAg
ICAgICAqZ2VuKCkgewotICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3N1cGVyLmdlbigpJyk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBsZXQgYSA9IG5ldyBBKCk7Ci0gICAgc2hvdWxkVGhyb3co
KCkgPT4gewotICAgICAgICBhLmdlbigpLm5leHQoKTsKLSAgICB9LCBgU3ludGF4RXJyb3I6IHN1
cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsKLX0oKSk7Ci0KLShmdW5jdGlv
biAoKSB7Ci0gICAgY2xhc3MgQiB7Ci0gICAgICAgIGdlbigpIHsKLSAgICAgICAgICAgIHJldHVy
biA0MjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKLSAgICAg
ICAgKmdlbigpIHsKLSAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgbGV0IGEgPSBuZXcgQSgpOwotICAgIHNob3VsZEJlKGEuZ2VuKCkubmV4dCgp
LnZhbHVlLCA0Mik7Ci19KCkpOwotCi0oZnVuY3Rpb24gKCkgewotICAgIGNsYXNzIEIgewotICAg
ICAgICBnZW4oKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBjbGFzcyBBIGV4dGVuZHMgQiB7Ci0gICAgICAgICpnZW4oKSB7Ci0gICAgICAgICAgICB5
aWVsZCBzdXBlci5nZW4oKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxldCBhID0gbmV3IEEo
KTsKLSAgICBzaG91bGRUaHJvdygoKSA9PiB7Ci0gICAgICAgIG5ldyBhLmdlbigpOwotICAgIH0s
IGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdu
ZXcgYS5nZW4oKScpYCk7Ci19KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3IteWllbGQtc3Rhci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXlpZWxkLXN0YXIuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQ1YWJlZmEwOWMyOTFlM2M3OTYyYjNiMzczYzUwODg2MmQ2OThiNWIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3IteWllbGQtc3Rhci5qcworKysgL2Rl
di9udWxsCkBAIC0xLDMyNiArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7Ci0gICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7Ci0gICAg
dmFyIGVycm9yID0gbnVsbDsKLSAgICB0cnkgewotICAgICAgICBmdW5jKCk7Ci0gICAgfSBjYXRj
aCAoZSkgewotICAgICAgICBlcnJvclRocm93biA9IHRydWU7Ci0gICAgICAgIGVycm9yID0gZTsK
LSAgICB9Ci0gICAgaWYgKCFlcnJvclRocm93bikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7Ci0gICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKLSAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKLX0K
LQotY2xhc3MgQ2FsbFNpdGUgewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuY291bnQgPSAwOwotICAgIH0KLQotICAgIGNhbGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuY291bnQrKzsKLSAgICB9Ci19Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgY2xhc3MgQXJy
YXlzIHsKLSAgICAgICAgY29uc3RydWN0b3IoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlz
LmZpcnN0ID0gWyAwLCAxLCAyLCAzIF07Ci0gICAgICAgICAgICB0aGlzLnNlY29uZCA9IFsgNCwg
NSwgNiwgNyBdOwotICAgICAgICB9Ci0KLSAgICAgICAgKltTeW1ib2wuaXRlcmF0b3JdKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgeWllbGQgKiB0aGlzLmZpcnN0OwotICAgICAgICAgICAgeWll
bGQgKiB0aGlzLnNlY29uZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZhciBhcnJheXMgPSBu
ZXcgQXJyYXlzOwotICAgIGxldCBpID0gMDsKLSAgICBmb3IgKGxldCB2YWx1ZSBvZiBhcnJheXMp
Ci0gICAgICAgIHNob3VsZEJlKGkrKywgdmFsdWUpOwotfSgpKTsKLQotKGZ1bmN0aW9uICgpIHsK
LSAgICAvLyB0aHJvdyBzaG91bGQgYmUgcHJvcGFnYXRlZC4KLSAgICBsZXQgYzEgPSBuZXcgQ2Fs
bFNpdGU7Ci0gICAgY2xhc3MgSXRlcmF0b3IgewotICAgICAgICBuZXh0KHZhbHVlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFsc2UgfTsKLSAgICAgICAg
fQotCi0gICAgICAgICd0aHJvdycodmFsdWUpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKHZhbHVl
LCA0Mik7Ci0gICAgICAgICAgICBjMS5jYWxsKCk7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIk9LIik7Ci0gICAgICAgIH0KLQotICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gKmdlbigpCi0gICAgewotICAgICAgICBsZXQgaXRlciA9IG5ldyBJdGVyYXRvcigp
OwotICAgICAgICB5aWVsZCAqIGl0ZXI7Ci0gICAgfQotCi0gICAgbGV0IGcgPSBnZW4oKTsKLSAg
ICBzaG91bGRCZShnLm5leHQoMCkudmFsdWUsIHVuZGVmaW5lZCk7Ci0gICAgc2hvdWxkQmUoZy5u
ZXh0KDEpLnZhbHVlLCAxKTsKLSAgICBzaG91bGRCZShnLm5leHQoMikudmFsdWUsIDIpOwotICAg
IHNob3VsZFRocm93KCgpID0+IHsKLSAgICAgICAgZy50aHJvdyg0Mik7Ci0gICAgfSwgYEVycm9y
OiBPS2ApOwotICAgIHNob3VsZFRocm93KCgpID0+IHsKLSAgICAgICAgZy50aHJvdyg0NCk7Ci0g
ICAgfSwgYDQ0YCk7Ci0gICAgc2hvdWxkQmUoYzEuY291bnQsIDEpOwotfSgpKTsKLQotKGZ1bmN0
aW9uICgpIHsKLSAgICAvLyBObyBgdGhyb3dgIG1ldGhvZC4KLSAgICBsZXQgYzEgPSBuZXcgQ2Fs
bFNpdGU7Ci0gICAgY2xhc3MgSXRlcmF0b3IgewotICAgICAgICBuZXh0KHZhbHVlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFsc2UgfTsKLSAgICAgICAg
fQotCi0gICAgICAgICdyZXR1cm4nKHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBzaG91
bGRCZSh2YWx1ZSwgdW5kZWZpbmVkKTsKLSAgICAgICAgICAgIGMxLmNhbGwoKTsKLSAgICAgICAg
ICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiB0cnVlIH07Ci0gICAgICAgIH0KLQotICAgICAgICBb
U3ltYm9sLml0ZXJhdG9yXSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gKmdlbigpCi0gICAgewotICAgICAgICBs
ZXQgaXRlciA9IG5ldyBJdGVyYXRvcigpOwotICAgICAgICB5aWVsZCAqIGl0ZXI7Ci0gICAgfQot
Ci0gICAgbGV0IGcgPSBnZW4oKTsKLSAgICBzaG91bGRCZShnLm5leHQoMCkudmFsdWUsIHVuZGVm
aW5lZCk7Ci0gICAgc2hvdWxkQmUoZy5uZXh0KDEpLnZhbHVlLCAxKTsKLSAgICBzaG91bGRCZShn
Lm5leHQoMikudmFsdWUsIDIpOwotICAgIHNob3VsZFRocm93KCgpID0+IHsKLSAgICAgICAgZy50
aHJvdyg0Mik7Ci0gICAgfSwgYFR5cGVFcnJvcjogRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5v
dCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuYCk7Ci0gICAgc2hvdWxkVGhyb3coKCkgPT4gewotICAg
ICAgICBnLnRocm93KDQ0KTsKLSAgICB9LCBgNDRgKTsKLSAgICBzaG91bGRCZShjMS5jb3VudCwg
MSk7Ci19KCkpOwotCi0oZnVuY3Rpb24gKCkgewotICAgIC8vIE5vIGB0aHJvd2AgbWV0aG9kLCBg
cmV0dXJuYCByZXR1cm5zIGFuIGluY29ycmVjdCByZXN1bHQuCi0gICAgbGV0IGMxID0gbmV3IENh
bGxTaXRlOwotICAgIGNsYXNzIEl0ZXJhdG9yIHsKLSAgICAgICAgbmV4dCh2YWx1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNlIH07Ci0gICAgICAg
IH0KLQotICAgICAgICAncmV0dXJuJyh2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgc2hv
dWxkQmUodmFsdWUsIHVuZGVmaW5lZCk7Ci0gICAgICAgICAgICBjMS5jYWxsKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiB0aGlzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gKmdlbigpCi0g
ICAgewotICAgICAgICBsZXQgaXRlciA9IG5ldyBJdGVyYXRvcigpOwotICAgICAgICB5aWVsZCAq
IGl0ZXI7Ci0gICAgfQotCi0gICAgbGV0IGcgPSBnZW4oKTsKLSAgICBzaG91bGRCZShnLm5leHQo
MCkudmFsdWUsIHVuZGVmaW5lZCk7Ci0gICAgc2hvdWxkQmUoZy5uZXh0KDEpLnZhbHVlLCAxKTsK
LSAgICBzaG91bGRCZShnLm5leHQoMikudmFsdWUsIDIpOwotICAgIHNob3VsZFRocm93KCgpID0+
IHsKLSAgICAgICAgZy50aHJvdyg0Mik7Ci0gICAgfSwgYFR5cGVFcnJvcjogSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LmApOwotICAgIHNob3VsZFRocm93KCgpID0+
IHsKLSAgICAgICAgZy50aHJvdyg0NCk7Ci0gICAgfSwgYDQ0YCk7Ci0gICAgc2hvdWxkQmUoYzEu
Y291bnQsIDEpOwotfSgpKTsKLQotKGZ1bmN0aW9uICgpIHsKLSAgICAvLyBObyBgdGhyb3dgIG1l
dGhvZCwgTm8gYHJldHVybmAgbWV0aG9kLgotICAgIGNsYXNzIEl0ZXJhdG9yIHsKLSAgICAgICAg
bmV4dCh2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6
IGZhbHNlIH07Ci0gICAgICAgIH0KLQotICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gKmdlbigpCi0gICAgewotICAgICAgICBsZXQgaXRlciA9IG5ldyBJdGVyYXRvcigp
OwotICAgICAgICB5aWVsZCAqIGl0ZXI7Ci0gICAgfQotCi0gICAgbGV0IGcgPSBnZW4oKTsKLSAg
ICBzaG91bGRCZShnLm5leHQoMCkudmFsdWUsIHVuZGVmaW5lZCk7Ci0gICAgc2hvdWxkQmUoZy5u
ZXh0KDEpLnZhbHVlLCAxKTsKLSAgICBzaG91bGRCZShnLm5leHQoMikudmFsdWUsIDIpOwotICAg
IHNob3VsZFRocm93KCgpID0+IHsKLSAgICAgICAgZy50aHJvdyg0Mik7Ci0gICAgfSwgYFR5cGVF
cnJvcjogRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2Qu
YCk7Ci0gICAgc2hvdWxkVGhyb3coKCkgPT4gewotICAgICAgICBnLnRocm93KDQ0KTsKLSAgICB9
LCBgNDRgKTsKLX0oKSk7Ci0KLQotKGZ1bmN0aW9uICgpIHsKLSAgICAvLyBgdGhyb3dgIGRvZXMg
bm90IHRocm93LiBOb3QgcmV0dXJucyBhIG9iamVjdC4KLSAgICBjbGFzcyBJdGVyYXRvciB7Ci0g
ICAgICAgIG5leHQodmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7IHZhbHVl
LCBkb25lOiBmYWxzZSB9OwotICAgICAgICB9Ci0KLSAgICAgICAgJ3Rocm93Jyh2YWx1ZSkKLSAg
ICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1
bmN0aW9uICpnZW4oKQotICAgIHsKLSAgICAgICAgbGV0IGl0ZXIgPSBuZXcgSXRlcmF0b3IoKTsK
LSAgICAgICAgeWllbGQgKiBpdGVyOwotICAgIH0KLQotICAgIGxldCBnID0gZ2VuKCk7Ci0gICAg
c2hvdWxkQmUoZy5uZXh0KDApLnZhbHVlLCB1bmRlZmluZWQpOwotICAgIHNob3VsZEJlKGcubmV4
dCgxKS52YWx1ZSwgMSk7Ci0gICAgc2hvdWxkQmUoZy5uZXh0KDIpLnZhbHVlLCAyKTsKLSAgICBz
aG91bGRUaHJvdygoKSA9PiB7Ci0gICAgICAgIGcudGhyb3coNDIpOwotICAgIH0sIGBUeXBlRXJy
b3I6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC5gKTsKLSAgICBz
aG91bGRUaHJvdygoKSA9PiB7Ci0gICAgICAgIGcudGhyb3coNDQpOwotICAgIH0sIGA0NGApOwot
fSgpKTsKLQotKGZ1bmN0aW9uICgpIHsKLSAgICAvLyBgdGhyb3dgIGRvZXMgbm90IHRocm93LiBJ
ZiByZXR1cm5lZCBpdGVyYXRvciByZXN1bHQgaXMgbWFya2VkIGFzIGRvbmUsIGl0IGJlY29tZXMg
YHJldHVybmAuCi0gICAgY2xhc3MgSXRlcmF0b3IgewotICAgICAgICBuZXh0KHZhbHVlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFsc2UgfTsKLSAgICAg
ICAgfQotCi0gICAgICAgICd0aHJvdycodmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiB7IHZhbHVlLCBkb25lOiB0cnVlIH07Ci0gICAgICAgIH0KLQotICAgICAgICBbU3ltYm9s
Lml0ZXJhdG9yXSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gKmdlbigpCi0gICAgewotICAgICAgICBsZXQgaXRl
ciA9IG5ldyBJdGVyYXRvcigpOwotICAgICAgICB5aWVsZCAqIGl0ZXI7Ci0gICAgfQotCi0gICAg
bGV0IGcgPSBnZW4oKTsKLSAgICBzaG91bGRCZShnLm5leHQoMCkudmFsdWUsIHVuZGVmaW5lZCk7
Ci0gICAgc2hvdWxkQmUoZy5uZXh0KDEpLnZhbHVlLCAxKTsKLSAgICBzaG91bGRCZShnLm5leHQo
MikudmFsdWUsIDIpOwotICAgIHNob3VsZEJlKGcudGhyb3coNDIpLnZhbHVlLCA0Mik7Ci0gICAg
c2hvdWxkVGhyb3coKCkgPT4gewotICAgICAgICBnLnRocm93KDQ0KTsKLSAgICB9LCBgNDRgKTsK
LX0oKSk7Ci0KLShmdW5jdGlvbiAoKSB7Ci0gICAgLy8gYHJldHVybmAgcmV0dXJucyBkb25lOiBm
YWxzZS4KLSAgICBjbGFzcyBJdGVyYXRvciB7Ci0gICAgICAgIG5leHQodmFsdWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OwotICAgICAgICB9
Ci0KLSAgICAgICAgJ3JldHVybicodmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OwotICAgICAgICB9Ci0KLSAgICAgICAgW1N5bWJvbC5p
dGVyYXRvcl0oKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGZ1bmN0aW9uICpnZW4oKQotICAgIHsKLSAgICAgICAgbGV0IGl0ZXIg
PSBuZXcgSXRlcmF0b3IoKTsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHlpZWxkICogaXRlcjsKLSAg
ICAgICAgeWllbGQgcmVzdWx0OwotICAgICAgICB5aWVsZCA0MjsKLSAgICB9Ci0KLSAgICBsZXQg
ZyA9IGdlbigpOwotICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKLSAg
ICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOwotICAgIHNob3VsZEJlKGcubmV4dCgyKS52
YWx1ZSwgMik7Ci0gICAgc2hvdWxkQmUoZy5yZXR1cm4oNDIpLnZhbHVlLCA0Mik7Ci0gICAgc2hv
dWxkQmUoZy5yZXR1cm4oNDIpLmRvbmUsIGZhbHNlKTsKLX0oKSk7Ci0KLShmdW5jdGlvbiAoKSB7
Ci0gICAgZnVuY3Rpb24gKmdlbigpCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0geWllbGQg
KiBbIDAsIDEsIDIgXTsKLSAgICAgICAgeWllbGQgcmVzdWx0OwotICAgIH0KLQotICAgIGxldCBn
ID0gZ2VuKCk7Ci0gICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOwotICAgIHNob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCAxKTsKLSAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7Ci0g
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7Ci19KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJp
dFZlY3Rvci5oCmluZGV4IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAu
LjlmMTg4YmNjMmY1YjVlY2MzNTMwNTE0YzIwZWQ1NjY4OGE2YTI5OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0
VmVjdG9yLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CisgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBuID0gYXJyYXlMZW5ndGgoKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkgewpAQCAtMTk1LDcgKzE5
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQorICAgIAog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAg
ICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5o
IGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCBmNDZlMTE5NzNlNTI0Y2E0
Mjg1NmIwZDc2ODM3OWUxYTlmNDU5MzA2Li40MjE5NDFmM2E0NGFjNmRjNWQ5YjY3ZmQyY2RkODZm
MTIwMTNjNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTM2NCw3ICszNjQsNyBAQCB0
aGUgcHVibGljIGlPUyBTREsuIFdlIHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUgRmVhdHVy
ZURlZmluZXMueGNjb25maWcgZmlsZQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfRVM2
X0NMQVNTX1NZTlRBWCkKLSNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDEKKyNkZWZpbmUg
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIDAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0VT
Nl9NT0RVTEVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAxOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTli
NjZlZjQ5YzVmLi5lMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VT
Nl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7
CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5B
QkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOworRU5BQkxFX0VTNl9H
RU5FUkFUT1JTID0gOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFU
RV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBF
TkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IDE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYu
LmUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FS
Uk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVO
QUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVf
RVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CitFTkFCTEVfRVM2X0dFTkVS
QVRPUlMgPSA7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJ
VEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJM
RV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
IGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
aW5kZXggMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1Zi4uZTE3N2FmY2I1
NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dl
YktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3
LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9
IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5U
QVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19T
WU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9
IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKIEVOQUJM
RV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBF
TkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVS
SU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQppbmRleCAw
MmNjNzk4YjIwYmQ2ZTQ2MjYzYmUzOWQ5MDFhOGZlOTRjYjllZDhiLi45Y2Q4NDY1YzA5YzlmMTc4
NjA0YzlhYjI5MjVhNzBhYjQ3YzYzZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtMzQsNyAr
MzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREVWSUNFX09S
SUVOVEFUSU9OIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfRElSRUNUT1JZX1VQTE9BRCBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SIFBVQkxJQyBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EUkFHX1NVUFBPUlQgUFVCTElD
IE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9HRU5FUkFU
T1JTIFBVQkxJQyBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9F
UzZfR0VORVJBVE9SUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0VTNl9NT0RVTEVTIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYIFBVQkxJQyBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GSUxFX1NZU1RFTSBQVUJM
SUMgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIv
U291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IDAwZWRiYzAxM2JmZjY2Zjdh
MDNmZGQyOWI2MzFmNDYyNTBiZTI0MzQuLmQ5NjIyNGQ0MTcxYmRiYTcxNzBjNDVkM2RkNzIxNzU0
NzcxMmY1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTc3LDcgKzc3LDcgQEAg
bWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyICJTdXBwb3J0IEVNRSB2MiIgUFJJVkFURSBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCAiVG9n
Z2xlIEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCAiVG9nZ2xlIEVTNiBj
bGFzcyBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQ
UklWQVRFIE9OKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfR0VORVJBVE9S
UyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfTU9EVUxFUyAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZf
VEVNUExBVEVfTElURVJBTF9TWU5UQVggIlRvZ2dsZSBFUzYgdGVtcGxhdGUgbGl0ZXJhbCBzeW50
YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
RklMVEVSU19MRVZFTF8yICJUb2dnbGUgRmlsdGVycyBNb2R1bGUgTGV2ZWwgMiIgUFJJVkFURSBP
RkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NjI0NGVkZDljNDQyYzliYWUzMzI5Mzg4Mjc5YzRjYjY0NmVkMWEyMi4uYmRmMTZmMmQ4OGFmNjZh
YWM1NTQwNDQ2Nzk0MTRjYTE5OTE3MDAwZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTEyLTAxICBDb21taXQg
UXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTkyOTE0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxNzM0CisKKyAgICAgICAgSlNDIHRlc3RzIGZvciB0aGlzIGNoYW5nZSBh
cmUgZmFpbGluZyBvbiAzMiBhbmQgNjQtYml0IGJvdHMKKyAgICAgICAgKFJlcXVlc3RlZCBieSBy
eWFuaGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKwor
ICAgICAgICAiW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBH
ZW5lcmF0b3JzIGFuZAorICAgICAgICBlbmFibGUgdGhpcyBmZWF0dXJlIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisgICAgICAgIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5MjkxNAorCiAyMDE1LTEyLTAxICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRXZlbnRTZW5kZXJQcm94eTo6
c3dpcGVHZXN0dXJlV2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoKSBsZWFrcyBhbiBFdmVudFNl
bmRlclN5bnRoZXRpY0V2ZW50CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
RmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0K
aW5kZXggNDYyMTg4MTViMTUzYzUzMjk5YmMyNzFkOWI3N2Y3NDhhZDMwNzA1Zi4uY2RlYjUyNWNm
OTRiNWE4ZTEyMWJhMjRlMzc5ZDIzM2Q2OTFjNmI4OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbQpAQCAtMTg1LDcgKzE4NSw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgiLCBkZWZhdWx0ID0+IDEsIHZh
bHVlID0+IFwkY2xhc3NTeW50YXggfSwKIAogICAgIHsgb3B0aW9uID0+ICJnZW5lcmF0b3JzIiwg
ZGVzYyA9PiAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+
ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkZ2VuZXJh
dG9yc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9HRU5FUkFUT1JTIiwg
ZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGdlbmVyYXRvcnNTdXBwb3J0IH0sCiAKICAgICB7IG9w
dGlvbiA9PiAibW9kdWxlcyIsIGRlc2MgPT4gIlRvZ2dsZSBFUzYgbW9kdWxlcyBzdXBwb3J0IiwK
ICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9NT0RVTEVTIiwgZGVmYXVsdCA9PiAwLCB2YWx1
ZSA9PiBcJG1vZHVsZXNTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggMDRjNjJhZTg2NTc3YWU5OGQxY2MyN2ZhYTk5OTk2YzZlNGIyY2Q0MS4uM2YzNjRi
ODQ4Y2YwMWFjMjhhNzBhNDE1MTkyNzJmM2RhYjQzNzBkOSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTEyLTAxICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTkyOTE0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNzM0CisKKyAgICAgICAgSlNDIHRlc3RzIGZvciB0aGlzIGNoYW5nZSBhcmUg
ZmFpbGluZyBvbiAzMiBhbmQgNjQtYml0IGJvdHMKKyAgICAgICAgKFJlcXVlc3RlZCBieSByeWFu
aGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAg
ICAgICAiW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5l
cmF0b3JzIGFuZAorICAgICAgICBlbmFibGUgdGhpcyBmZWF0dXJlIgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisgICAgICAgIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5MjkxNAorCiAyMDE1LTEyLTAxICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEltcGxlbWVudCBM
TEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMg
ZmVhdHVyZQpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExp
YnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggZmRjZjU3NGZhNTY4NzNkNzdjZWNlZDEyYjNiYWZkMDU2
MmNkNTRkMi4uY2Y0ZTZmOGRlNDUzNGFiMDQzNTcwNjJlZjNhMDljN2E5N2ViNGM1NiAxMDA2NDQK
LS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMTItMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
OTI5MTQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE3MzQKKworICAgICAgICBKU0MgdGVzdHMgZm9yIHRoaXMgY2hhbmdlIGFyZSBmYWlsaW5nIG9u
IDMyIGFuZCA2NC1iaXQgYm90cworICAgICAgICAoUmVxdWVzdGVkIGJ5IHJ5YW5oYWRkYWQgb24g
I3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJbRVM2
XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5k
CisgICAgICAgIGVuYWJsZSB0aGlzIGZlYXR1cmUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTkyOTE0CisKIDIwMTUtMTItMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2Vs
aW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCmRp
ZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmlu
ZXMucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmlu
ZXMucHJvcHMKaW5kZXggYjA3ZGM1MGFiZTI1ZTBiNzBmY2E1YzMwNWQxNjZiZjVlNzBhODhlZC4u
MGQ3NGE4ZjdlZTUyMWUwNGY5ZmViZTRkZmE3OTI5ZDdlMzNjY2RjZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisrKyBi
L1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpA
QCAtMzIsNyArMzIsNyBAQAogICAgIDxFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCAvPgogICAgIDxF
TkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVD
VE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+CiAgICAgPEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjI+RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMjwvRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMj4KLSAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9S
UzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4K
ICAgICA8RU5BQkxFX0VTNl9NT0RVTEVTIC8+CiAgICAgPEVOQUJMRV9FUzZfVEVNUExBVEVfTElU
RVJBTF9TWU5UQVg+RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD4KICAgICA8RU5BQkxFX0ZJTEVfU1lTVEVNIC8+CmRp
ZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmlu
ZXNDYWlyby5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJl
RGVmaW5lc0NhaXJvLnByb3BzCmluZGV4IGY1YjA4ZmY4MTBmN2U2MWI3Y2VjNmFjNWVhNjlhMWE5
ODM1MzgwYTguLjkxZWU4MGZkZjRhZjE1OGVjNWVlNDgzZDA2OTZjNzFjZTQ4NjQxMmQgMTAwNjQ0
Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0Nh
aXJvLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJl
RGVmaW5lc0NhaXJvLnByb3BzCkBAIC0zMiw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4K
ICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAvPgotICAgIDxFTkFCTEVfRVM2X0dFTkVS
QVRPUlM+RU5BQkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CisgICAg
PEVOQUJMRV9FUzZfR0VORVJBVE9SUyAvPgogICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAg
ICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAg
IDxFTkFCTEVfRklMRV9TWVNURU0gLz4K
</data>

          </attachment>
      

    </bug>

</bugzilla>