<?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>161645</bug_id>
          
          <creation_ts>2016-09-06 14:33:46 -0700</creation_ts>
          <short_desc>REGRESSION(r205504): Broke the iOS device build (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2016-09-06 14:37:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160989</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1226828</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-06 14:33:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/205504 broke the build:
Broke the iOS device build (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>1226830</commentid>
    <comment_count>1</comment_count>
      <attachid>288045</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-06 14:34:46 -0700</bug_when>
    <thetext>Created attachment 288045
ROLLOUT of r205504

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>1226832</commentid>
    <comment_count>2</comment_count>
      <attachid>288045</attachid>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-09-06 14:37:24 -0700</bug_when>
    <thetext>Comment on attachment 288045
ROLLOUT of r205504

Clearing flags on attachment: 288045

Committed r205507: &lt;http://trac.webkit.org/changeset/205507&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226833</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-09-06 14:37:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288045</attachid>
            <date>2016-09-06 14:34:46 -0700</date>
            <delta_ts>2016-09-06 14:37:24 -0700</delta_ts>
            <desc>ROLLOUT of r205504</desc>
            <filename>bug-161645-20160906143223.patch</filename>
            <type>text/plain</type>
            <size>173417</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MTcyNDZlNjFmMDZhMTZhZTZiN2Q5ZjkyY2JjMmMzNWIxODEwZDdjLi45NTZkMTk4MzhhOTVlM2Vm
Yzk4NjVkYTk4ODE3NmJkZTQ2YjQ5YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNi0wOS0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNTUwNC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTY0NQorCisgICAg
ICAgIEJyb2tlIHRoZSBpT1MgZGV2aWNlIGJ1aWxkIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRhZCBv
bgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAg
ICAgICAgIk1ha2UgSlNNYXAgYW5kIEpTU2V0IGZhc3RlciIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk4OQorICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yMDU1MDQKKwogMjAxNi0wOS0wNiAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEpTTWFwIGFuZCBKU1NldCBmYXN0ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZGJhNjk1ZmIwNmE4MDI0MTdiY2M4ZTMwMTJjYWM0MDY1ZjkyNDIzMy4uZTA1MWRmMDcy
MDdmNTAyM2E4NzFkODkxZDZmMmYyNGQzY2VkMmQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ni0wOS0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNTUwNC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTY0NQorCisgICAgICAgIEJyb2tlIHRoZSBp
T1MgZGV2aWNlIGJ1aWxkIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRhZCBvbgorICAgICAgICAjd2Vi
a2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIk1ha2UgSlNN
YXAgYW5kIEpTU2V0IGZhc3RlciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MDk4OQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yMDU1MDQKKwogMjAxNi0wOS0wNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIEpTTWFwIGFuZCBKU1NldCBmYXN0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZTIyODJlZWVlMzZmN2IxNjUyOGRjYTg2ODNjMDNjMzdiMjJkYjNiLi4zOWJmZTRiZGE1OTY5NjQx
NWIzNDVhNmRiYTBiNTkwOWI1YzA2MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTYtMDktMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDU1MDQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE2NDUKKworICAgICAgICBCcm9rZSB0aGUg
aU9TIGRldmljZSBidWlsZCAoUmVxdWVzdGVkIGJ5IHJ5YW5oYWRkYWQgb24KKyAgICAgICAgI3dl
YmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJNYWtlIEpT
TWFwIGFuZCBKU1NldCBmYXN0ZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjA5ODkKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjA1NTA0CisKIDIwMTYtMDktMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIG92ZXJsYXAgY2hlY2tpbmcgZnVuY3Rpb25zIGZy
b20gRnJhbWVWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGQyYzRm
N2NhZjg1MzYyZTUzMTk0M2NiNjk1NDNjNzA3NDYxNjk1OTguLjUwM2FmM2FjN2MwYjZiNGE4NDQ5
N2UyMTU0ZGFjMGU2ZDNiMzhhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTY3Miw3ICs2NzIsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCi0gICAgcnVudGltZS9I
YXNoTWFwSW1wbC5jcHAKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9J
bmRleGluZ1R5cGUuY3BwCiAgICAgcnVudGltZS9JbmZlcnJlZFR5cGUuY3BwCkBAIC03NTgsNyAr
NzU3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0xhenlDbGFz
c1N0cnVjdHVyZS5jcHAKICAgICBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCiAgICAgcnVudGlt
ZS9Mb29rdXAuY3BwCi0gICAgcnVudGltZS9NYXBCYXNlLmNwcAogICAgIHJ1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL01hcFByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MGM1YzUxZGYzMmVkMGFjZGFiZDBhNWI4ZmVhZmFjZjA2MGU2YjY3Yi4uMWM4NGI3OGVlNmQ1MTU1
ZDIwMzRmNTdhNTQ0ZmI1MDg5NzU2NDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEzMTgsMTQgKzEzMTgsMTAgQEAKIAkJNzkyMzNDMkIxRDM0NzE1NzAwQzVBODM0IC8qIEpJ
VE1hdGhJQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzkyMzNDMjkxRDM0NzE1NzAwQzVBODM0IC8qIEpJVE1hdGhJQy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MkNCMzQ5MUM0RUVENUMwMEQxM0FG
MyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OTJDQjM0NzFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0NvZGVPcmln
aW5NYXAuY3BwICovOyB9OwogCQk3OTJDQjM0QTFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0NvZGVP
cmlnaW5NYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc5MkNCMzQ4MUM0RUVENUMwMEQxM0FGMyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTc5NUIxOTk3MUQ3OEJF
MzUwMDI2MkZBMCAvKiBNYXBCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc5NUIxOTk1MUQ3OEJFMzUwMDI2MkZBMCAvKiBNYXBCYXNlLmNwcCAq
LzsgfTsKLQkJNzk1QjE5OTgxRDc4QkUzNTAwMjYyRkEwIC8qIE1hcEJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5NUIxOTk2MUQ3OEJFMzUwMDI2
MkZBMCAvKiBNYXBCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzk2NDY1NkExQjk1MkZGMDAwMzA1OUVFIC8qIEdldFB1dEluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5NjQ2NTY4MUI5NTJG
RjAwMDMwNTlFRSAvKiBHZXRQdXRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzk3RTA3QTkxQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5N0UwN0E3MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudC5jcHAgKi87IH07CiAJCTc5N0UwN0FBMUI4RkNGQjkwMDg0MDBCQSAvKiBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzk3RTA3QTgxQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzk5RUY3QzQxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENUb09yaWdpbk1hcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk5RUY3QzMxQzU2
RUQ5NjAwMkIwNTM0IC8qIEIzUENUb09yaWdpbk1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTc5QTA5MDdGMUQ3Njg0NjUwMDhCODg5QiAvKiBI
YXNoTWFwSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3OUEwOTA3RDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuY3BwICovOyB9Owot
CQk3OUEwOTA4MDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QTA5MDdFMUQ3Njg0NjUwMDhCODg5
QiAvKiBIYXNoTWFwSW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTc5QTIyODM1MUQzNUQ3MUUwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBMjI4MzMx
RDM1RDcxRTAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5jcHAgKi87IH07CiAJCTc5QTIyODM2MUQz
NUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QTIyODM0MUQzNUQ3MUUwMEQ4RTA2NyAvKiBBcml0aFBy
b2ZpbGUuaCAqLzsgfTsKIAkJNzlBRjBCRTQxRDNFRkQ0QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lu
bGluZVJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzlBRjBCRTMxRDNFRkQ0QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTczLDE0
ICszNTY5LDEwIEBACiAJCTc5MjMzQzI5MUQzNDcxNTcwMEM1QTgzNCAvKiBKSVRNYXRoSUMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUTWF0aElDLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc5MkNCMzQ3MUM0RUVENUMwMEQxM0FGMyAvKiBQQ1RvQ29kZU9y
aWdpbk1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQQ1RvQ29k
ZU9yaWdpbk1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MkNCMzQ4MUM0
RUVENUMwMEQxM0FGMyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQQ1RvQ29kZU9yaWdpbk1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3OTVCMTk5NTFENzhCRTM1MDAyNjJGQTAgLyogTWFwQmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNzk1QjE5OTYxRDc4QkUzNTAwMjYyRkEwIC8qIE1hcEJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3OTY0NjU2ODFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRQdXRJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc5N0UwN0E3MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc5N0UwN0E4MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTlFRjdDMzFDNTZF
RDk2MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzUENUb09yaWdpbk1hcC5oOyBwYXRoID0gYjMvQjNQQ1RvT3JpZ2luTWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc5QTA5MDdEMUQ3Njg0NjUwMDhCODg5QiAv
KiBIYXNoTWFwSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBI
YXNoTWFwSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc5QTA5MDdFMUQ3
Njg0NjUwMDhCODg5QiAvKiBIYXNoTWFwSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIYXNoTWFwSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUEy
MjgzMzFEMzVENzFFMDBEOEUwNjcgLyogQXJpdGhQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFyaXRoUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc5QTIyODM0MUQzNUQ3MUUwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJpdGhQcm9maWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5QTg5OUZFMUQzODYxMkUwMEQxOEM3MyAvKiBKSVRNYXRo
SUNGb3J3YXJkcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRNYXRoSUNG
b3J3YXJkcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTgzMyw4ICs1ODI1LDYg
QEAKIAkJCQk3OTY0NjU2ODFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oICovLAogCQkJ
CUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJD
MzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKLQkJCQk3OUEwOTA3
RDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuY3BwICovLAotCQkJCTc5QTA5MDdFMUQ3
Njg0NjUwMDhCODg5QiAvKiBIYXNoTWFwSW1wbC5oICovLAogCQkJCTkzM0EzNDlEMDM4QUU4MEYw
MDg2MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLywKIAkJCQk5MzNBMzQ5QTAzOEFFN0M2MDA4NjM1
Q0UgLyogSWRlbnRpZmllci5oICovLAogCQkJCTg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJ
ZGVudGlmaWVySW5saW5lcy5oICovLApAQCAtNjA0NSw4ICs2MDM1LDYgQEAKIAkJCQlBN0UyRUE2
OTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oICovLAogCQkJCUY2OTJBODY4MDI1
NTU5N0QwMUZGNjBGNyAvKiBMb29rdXAuY3BwICovLAogCQkJCUY2OTJBODY5MDI1NTU5N0QwMUZG
NjBGNyAvKiBMb29rdXAuaCAqLywKLQkJCQk3OTVCMTk5NTFENzhCRTM1MDAyNjJGQTAgLyogTWFw
QmFzZS5jcHAgKi8sCi0JCQkJNzk1QjE5OTYxRDc4QkUzNTAwMjYyRkEwIC8qIE1hcEJhc2UuaCAq
LywKIAkJCQlBNzAwODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwICov
LAogCQkJCUE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovLAog
CQkJCUE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8sCkBAIC03MzM4LDcg
KzczMjYsNiBAQAogCQkJCTBGNjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQyOUQ4REUwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjJFQzlCQjcxQjdFQjA3QzAwMzAzQUQxIC8qIENhbGxGcmFt
ZVNodWZmbGVEYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQk3OTVCMTk5ODFENzhCRTM1MDAyNjJG
QTAgLyogTWFwQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJENzU1RDcxQjg0RkI0QTAwMTgw
MUZBIC8qIENhbGxGcmFtZVNodWZmbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCMTE0
QkNGNzE4MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkz
MzI5RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovLApA
QCAtNzUwNiw3ICs3NDkzLDYgQEAKIAkJCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyogREZH
Rmx1c2hlZEF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGODE3QTBCOENDMDA3NzNBRDgg
LyogREZHRmx1c2hGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODE1MUFCM0Q4QkUw
MEJCQjhFOCAvKiBERkdGb3JBbGxLaWxscy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzlBMDkwODAx
RDc2ODQ2NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY5
Q0M4OTE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RUM5REM2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZFQzlEQzgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4g
SGVhZGVycyAqLywKQEAgLTkyMzksNyArOTIyNSw2IEBACiAJCQkJMEYwMzMyQzAxOEFERkFFMTAw
NUY5NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjEwNTg1
MTY3NTQ4MEYwMEY4QUI2RSAvKiBFeGl0S2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVB
MEExQzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTc5QTA5MDdGMUQ3Njg0NjUwMDhCODg5QiAvKiBIYXNoTWFwSW1wbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVBMEExRTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMjc0RDFDMUY2NkFBMDBDRjY1
NjQgLyogR1BSSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ4NTMyNzE4N0RGREVDMDA4
M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05Mjg0
LDcgKzkyNjksNiBAQAogCQkJCTUyQjMxMEZEMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhh
c0V4ZWN1dGVkQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0QkZGMkIxQUQ0NzZFNzAw
MDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0Yz
OUNDMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk3OTVCMTk5NzFENzhCRTM1MDAyNjJGQTAgLyogTWFwQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk2MkQyRDM4RjFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyQUFDRTYzQzE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJGMTVBOERDRTAwMDhG
MzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCBi
MmIyZmE1NzUyNDFhZjMwZjM2ZWQ1MDc4YTdhY2ZjMmM1MjcwYTFhLi4wZTYwMmZmNmI4MzM5MmNj
MTNhNzA4NDM2NjFlYjgzNTE3MDA0MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTMwLDExICszMCw5IEBACiAjaW5jbHVk
ZSAiU3BlY3VsYXRlZFR5cGUuaCIKIAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgotI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTTWFwLmgiCi0jaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCkBAIC0zNDgsMTIg
KzM0Niw2IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbykKIAogICAgIGlmIChjbGFzc0luZm8gPT0gUmVnRXhwT2JqZWN0
OjppbmZvKCkpCiAgICAgICAgIHJldHVybiBTcGVjUmVnRXhwT2JqZWN0OwotCi0gICAgaWYgKGNs
YXNzSW5mbyA9PSBKU01hcDo6aW5mbygpKQotICAgICAgICByZXR1cm4gU3BlY01hcE9iamVjdDsK
LQotICAgIGlmIChjbGFzc0luZm8gPT0gSlNTZXQ6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIFNw
ZWNTZXRPYmplY3Q7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVu
Y3Rpb246OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDE2MzZkYWM2
Yjc5MmFjZTMwMTBhY2Y3MDVkNDg1YmFmM2Y4MTA2YjEuLjgyMjJhYjE2ZGM5MjNmNjJjNjgyN2Rl
OWFhZGY2NzJkZjA4MGUwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0zOSw0MyArMzksNDEgQEAgY2xhc3MgU3RydWN0dXJlOwog
CiB0eXBlZGVmIHVpbnQ2NF90IFNwZWN1bGF0ZWRUeXBlOwogc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNOb25lICAgICAgICAgICAgICAgPSAwOyAvLyBXZSBkb24ndCBrbm93IGFueXRo
aW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3QgICAg
ICAgID0gMXVsbCA8PCAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0Lgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICAgPSAxdWxsIDw8
IDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgICA9IDF1bGwgPDwgMjsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgSlNGdW5jdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFy
cmF5ICAgICAgICAgID0gMXVsbCA8PCAzOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50OEFycmF5
IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjSW50MTZBcnJheSAgICAgICAgID0gMXVsbCA8PCA0OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4g
SW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0ludDMyQXJyYXkgICAgICAgICA9IDF1bGwgPDwgNTsgLy8gSXQncyBkZWZp
bml0ZWx5IGFuIEludDMyQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAxdWxsIDw8IDY7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBVaW50OEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4K
LXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDhDbGFtcGVkQXJyYXkgID0gMXVs
bCA8PCA3OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhDbGFtcGVkQXJyYXkgb3Igb25lIG9m
IGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MTZB
cnJheSAgICAgICAgPSAxdWxsIDw8IDg7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1VpbnQzMkFycmF5ICAgICAgICA9IDF1bGwgPDwgOTsgLy8gSXQncyBkZWZpbml0ZWx5IGFu
IFVpbnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjRmxvYXQzMkFycmF5ICAgICAgID0gMXVsbCA8PCAxMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmxvYXQ2NEFycmF5ICAgICAgID0gMXVsbCA8PCAx
MTsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xh
c3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3QgICAgICAg
ID0gMXUgPDwgMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KK3N0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgICAgICAgICAgICAgID0gMXUgPDwgMTsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjRnVuY3Rpb24gICAgICAgICAgID0gMXUgPDwgMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNG
dW5jdGlvbi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAg
ICAgID0gMXUgPDwgMzsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2Yg
aXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJy
YXkgICAgICAgICA9IDF1IDw8IDQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9y
IG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50MzJBcnJheSAgICAgICAgID0gMXUgPDwgNTsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMy
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAxdSA8PCA2OyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDF1IDw8IDc7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9IDF1IDw8
IDg7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFycmF5ICAgICAg
ICA9IDF1IDw8IDk7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2Yg
aXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJB
cnJheSAgICAgICA9IDF1IDw8IDEwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkg
b3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNGbG9hdDY0QXJyYXkgICAgICAgPSAxdSA8PCAxMTsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVp
bnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KIHN0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjVHlwZWRBcnJheVZpZXcgICAgID0gU3BlY0ludDhBcnJheSB8IFNwZWNJbnQx
NkFycmF5IHwgU3BlY0ludDMyQXJyYXkgfCBTcGVjVWludDhBcnJheSB8IFNwZWNVaW50OENsYW1w
ZWRBcnJheSB8IFNwZWNVaW50MTZBcnJheSB8IFNwZWNVaW50MzJBcnJheSB8IFNwZWNGbG9hdDMy
QXJyYXkgfCBTcGVjRmxvYXQ2NEFycmF5Owotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNEaXJlY3RBcmd1bWVudHMgICAgPSAxdWxsIDw8IDEyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBE
aXJlY3RBcmd1bWVudHMgb2JqZWN0Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNT
Y29wZWRBcmd1bWVudHMgICAgPSAxdWxsIDw8IDEzOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTY29w
ZWRBcmd1bWVudHMgb2JqZWN0Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJp
bmdPYmplY3QgICAgICAgPSAxdWxsIDw8IDE0OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdP
YmplY3QuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlZ0V4cE9iamVjdCAgICAg
ICA9IDF1bGwgPDwgMTU7IC8vIEl0J3MgZGVmaW5pdGVseSBhIFJlZ0V4cE9iamVjdCAoYW5kIG5v
dCBhbnkgc3ViY2xhc3Mgb2YgUmVnRXhwT2JqZWN0KS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTWFwT2JqZWN0ICAgICAgICAgID0gMXVsbCA8PCAxNjsgLy8gSXQncyBkZWZpbml0
ZWx5IE1hcCBvYmplY3QgKGNhbiBpdCBiZSBhIHN1YmNsYXNzPyBGSVhNRSkuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY1NldE9iamVjdCAgICAgICAgICA9IDF1bGwgPDwgMTc7IC8v
IEl0J3MgZGVmaW5pdGVseSBzIFNldCBvYmplY3QgKGNhbiBpdCBiZSBhIHN1YmNsYXNzPyBGSVhN
RSkuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgICA9
IDF1bGwgPDwgMTg7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFs
T2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9uLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkg
fCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRz
IHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2Jq
ZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjT2JqZWN0T3RoZXI7IC8v
IEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rp
b24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICA9
IDF1bGwgPDwgMTk7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBp
ZGVudGlmaWVyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAg
ICAgICAgPSAxdWxsIDw8IDIwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0
J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Rp
cmVjdEFyZ3VtZW50cyAgICA9IDF1IDw8IDEyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBEaXJlY3RB
cmd1bWVudHMgb2JqZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTY29wZWRB
cmd1bWVudHMgICAgPSAxdSA8PCAxMzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgU2NvcGVkQXJndW1l
bnRzIG9iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2JqZWN0
ICAgICAgID0gMXUgPDwgMTQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIFN0cmluZ09iamVjdC4KK3N0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjUmVnRXhwT2JqZWN0ICAgICAgID0gMXUgPDwg
MTU7IC8vIEl0J3MgZGVmaW5pdGVseSBhIFJlZ0V4cE9iamVjdCAoYW5kIG5vdCBhbnkgc3ViY2xh
c3Mgb2YgUmVnRXhwT2JqZWN0KS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2Jq
ZWN0T3RoZXIgICAgICAgID0gMXUgPDwgMTY7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3Qg
YnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9uLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmpl
Y3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVj
RGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3Qg
fCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY09iamVjdE90aGVyOyAvLyBCaXRtYXNrIHVzZWQgZm9y
IHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdJZGVudCAgICAgICAgPSAxdSA8PCAxNzsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFuZCBpdCdzIGFuIGlkZW50aWZpZXIuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ1ZhciAgICAgICAgICA9IDF1IDw8IDE4OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIu
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgICA9IFNw
ZWNTdHJpbmdJZGVudCB8IFNwZWNTdHJpbmdWYXI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3Ry
aW5nLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTeW1ib2wgICAgICAgICAgICAg
PSAxdWxsIDw8IDIxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTeW1ib2wuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgICA9IDF1bGwgPDwgMjI7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTQ2VsbCBidXQgbm90IGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QgYW5k
IGRlZmluaXRlbHkgbm90IGEgSlNTdHJpbmcgb3IgYSBTeW1ib2wuIEZJWE1FOiBUaGlzIHNob3Vs
ZG4ndCBiZSBwYXJ0IG9mIGhlYXAtdG9wIG9yIGJ5dGVjb2RlLXRvcC4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzA3OAorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNTeW1ib2wgICAgICAgICAgICAgPSAxdSA8PCAxOTsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgU3ltYm9sLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAg
ICAgICAgPSAxdSA8PCAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBz
dWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5pdGVseSBub3QgYSBKU1N0cmluZyBvciBhIFN5
bWJvbC4gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIHBhcnQgb2YgaGVhcC10b3Agb3IgYnl0ZWNv
ZGUtdG9wLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDc4CiBz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICA9IFNwZWNP
YmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXI7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQm9v
bEludDMyICAgICAgICAgID0gMXVsbCA8PCAyMzsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMy
IHdpdGggdmFsdWUgMCBvciAxLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25C
b29sSW50MzIgICAgICAgPSAxdWxsIDw8IDI0OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzIg
d2l0aCB2YWx1ZSBvdGhlciB0aGFuIDAgb3IgMS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjQm9vbEludDMyICAgICAgICAgID0gMXUgPDwgMjE7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBJbnQzMiB3aXRoIHZhbHVlIDAgb3IgMS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjTm9uQm9vbEludDMyICAgICAgID0gMXUgPDwgMjI7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJ
bnQzMiB3aXRoIHZhbHVlIG90aGVyIHRoYW4gMCBvciAxLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNJbnQzMk9ubHkgICAgICAgICAgPSBTcGVjQm9vbEludDMyIHwgU3BlY05vbkJv
b2xJbnQzMjsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNJbnQ1Mk9ubHkgICAgICAgICAgPSAxdWxsIDw8IDI1OyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gSW50NTIgYW5kIHdlIGludGVuZCBpdCB0byB1bmJveCBpdC4gSXQncyBhbHNv
IGRlZmluaXRlbHkgbm90IGFuIEludDMyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnQ1Mk9ubHkgICAgICAgICAgPSAxdSA8PCAyMzsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIElu
dDUyIGFuZCB3ZSBpbnRlbmQgaXQgdG8gdW5ib3ggaXQuIEl0J3MgYWxzbyBkZWZpbml0ZWx5IG5v
dCBhbiBJbnQzMi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQW55SW50ICAgICAg
ICAgICAgID0gU3BlY0ludDMyT25seSB8IFNwZWNJbnQ1Mk9ubHk7IC8vIEl0J3Mgc29tZXRoaW5n
IHRoYXQgd2UgY2FuIGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0FueUludEFzRG91YmxlICAgICA9IDF1bGwgPDwgMjY7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBJbnQ1MiBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCi1zdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY05vbkludEFzRG91YmxlICAgICA9IDF1bGwgPDwgMjc7
IC8vIEl0J3MgZGVmaW5pdGVseSBub3QgYW4gSW50NTIgYnV0IGl0J3MgYSByZWFsIG51bWJlciBh
bmQgaXQncyBhIGRvdWJsZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQW55SW50
QXNEb3VibGUgICAgID0gMXUgPDwgMjQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ1MiBhbmQg
aXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY05v
bkludEFzRG91YmxlICAgICA9IDF1IDw8IDI1OyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIElu
dDUyIGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCiBzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgICA9IFNwZWNOb25JbnRBc0Rv
dWJsZSB8IFNwZWNBbnlJbnRBc0RvdWJsZTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBk
b3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVB1cmVOYU4gICAg
ICA9IDF1bGwgPDwgMjg7IC8vIEl0J3MgZGVmaW5pdGVseSBhIE5hTiB0aGF0IGlzIHNhZSB0byB0
YWcgKGkuZS4gcHVyZSkuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZUlt
cHVyZU5hTiAgICA9IDF1bGwgPDwgMjk7IC8vIEl0J3MgZGVmaW5pdGVseSBhIE5hTiB0aGF0IGlz
IHVuc2FmZSB0byB0YWcgKGkuZS4gaW1wdXJlKS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjRG91YmxlUHVyZU5hTiAgICAgID0gMXUgPDwgMjY7IC8vIEl0J3MgZGVmaW5pdGVseSBh
IE5hTiB0aGF0IGlzIHNhZSB0byB0YWcgKGkuZS4gcHVyZSkuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0RvdWJsZUltcHVyZU5hTiAgICA9IDF1IDw8IDI3OyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBOYU4gdGhhdCBpcyB1bnNhZmUgdG8gdGFnIChpLmUuIGltcHVyZSkuCiBzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgICA9IFNwZWNEb3VibGVQ
dXJlTmFOIHwgU3BlY0RvdWJsZUltcHVyZU5hTjsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2lu
ZCBvZiBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlRG91Ymxl
ICAgICA9IFNwZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJsZVB1cmVOYU47IC8vIEl0J3MgZWl0aGVy
IGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUsIGJ1dCBpdCdzIGRlZmluaXRlbHkgbm90IGltcHVy
ZSBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxEb3VibGUgICAgICAg
ICA9IFNwZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJsZU5hTjsgLy8gSXQncyBlaXRoZXIgYSBub24t
TmFOIG9yIGEgTmFOIGRvdWJsZS4KQEAgLTgzLDEyICs4MSwxMiBAQCBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlUmVhbE51bWJlciA9IFNwZWNJbnQzMk9ubHkgfCBTcGVj
RG91YmxlUgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxsUmVhbE51bWJlciAg
ICAgPSBTcGVjQW55SW50IHwgU3BlY0RvdWJsZVJlYWw7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMy
IG9yIGEgRG91YmxlUmVhbCwgb3IgYSBJbnQ1Mi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjQnl0ZWNvZGVOdW1iZXIgICAgID0gU3BlY0ludDMyT25seSB8IFNwZWNCeXRlY29kZURv
dWJsZTsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUsIGFuZCB0aGUgRG91Ymxl
IGNhbm5vdCBiZSBhbiBpbXB1cmUgTmFOLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNGdWxsTnVtYmVyICAgICAgICAgPSBTcGVjQW55SW50IHwgU3BlY0Z1bGxEb3VibGU7IC8vIEl0
J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ1Miwgb3IgYSBEb3VibGUsIGFuZCB0aGUgRG91YmxlIGNh
biBiZSBpbXB1cmUgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFu
ICAgICAgICAgICAgPSAxdWxsIDw8IDMwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAgICAgPSAxdWxs
IDw8IDMxOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIE51bGwgb3IgVW5kZWZpbmVkLgorc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICAgPSAxdSA8PCAy
ODsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQm9vbGVhbi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjT3RoZXIgICAgICAgICAgICAgID0gMXUgPDwgMjk7IC8vIEl0J3MgZGVmaW5pdGVs
eSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY01pc2MgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVyOyAvLyBJdCdz
IGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVkLgogc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgPSBTcGVjQ2VsbCB8
IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBh
Ym92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgog
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgPSBTcGVj
U3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJ
dCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0VtcHR5ICAgICAgICAgICAgICA9IDF1bGwgPDwgMzI7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBlbXB0eSB2YWx1ZSBtYXJrZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Vt
cHR5ICAgICAgICAgICAgICA9IDF1IDw8IDMwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkg
dmFsdWUgbWFya2VyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRv
cCAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0
aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5h
Ti4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2Fs
Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxsVG9wICAgICAgICAgICAgPSBT
cGVjQnl0ZWNvZGVUb3AgfCBTcGVjRnVsbE51bWJlcjsgLy8gSXQgY2FuIGJlIGFueXRoaW5nIHRo
YXQgYnl0ZWNvZGUgY291bGQgc2VlIHBsdXMgZXhvdGljIGVuY29kaW5ncyBvZiBudW1iZXJzLgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNWZhNTc3MDQ2N2U1YjljNTgxZDJkMTFiOTRmNmYxOTUx
ZTFhOTVkYi4uOGUzMjQ0MGYxOGM5MGEzZWRlNzg5NzE0ODRlNTc1ZWRjYzFkZmNjYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaApAQCAtOTc3LDIyICs5NzcsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE1hcEhhc2g6Ci0gICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6Ci0gICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhl
YXBUb3AoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEdldE1hcEJ1Y2tldDoKLSAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsT3RoZXIpOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKLSAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNl
IElzRW1wdHk6CiAgICAgY2FzZSBJc0pTQXJyYXk6CiAgICAgY2FzZSBJc1VuZGVmaW5lZDoKQEAg
LTI4OTksNyArMjg4Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgog
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZSh1bnNp
Z25lZCBpbmRleEluQmxvY2spCiB7CiAgICAgTm9kZSogbm9kZSA9IG1fc3RhdGUuYmxvY2soKS0+
YXQoaW5kZXhJbkJsb2NrKTsKLQorICAgIAogICAgIHN0YXJ0RXhlY3V0aW5nKCk7CiAgICAgZXhl
Y3V0ZUVkZ2VzKG5vZGUpOwogICAgIHJldHVybiBleGVjdXRlRWZmZWN0cyhpbmRleEluQmxvY2ss
IG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA0NjQ3MDQ2YzFhZjQzYTBhMmZiMTUyMDU4NWI0ODhlMmQyM2MwNDhkLi5mODA2
MGU1OTlkNWQyMDUzNjI2NmVlZWFmNmZiZTI1Mjc3ZGU5NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjUzOCwzNyArMjUzOCw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVl
LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKHJlc3VsdE9wZXJhbmQpLCBnZXQob3BlcmFuZCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9Ci0KLSAgICBjYXNlIEpTTWFwR2V0SW50cmluc2ljOiB7Ci0gICAgICAgIGlmIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICBOb2RlKiBtYXAgPSBnZXQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKTsKLSAgICAgICAgTm9kZSog
a2V5ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSk7
Ci0gICAgICAgIE5vZGUqIGhhc2ggPSBhZGRUb0dyYXBoKE1hcEhhc2gsIGtleSk7Ci0gICAgICAg
IE5vZGUqIGJ1Y2tldCA9IGFkZFRvR3JhcGgoR2V0TWFwQnVja2V0LCBFZGdlKG1hcCwgTWFwT2Jq
ZWN0VXNlKSwgRWRnZShrZXkpLCBFZGdlKGhhc2gpKTsKLSAgICAgICAgTm9kZSogcmVzdWx0ID0g
YWRkVG9HcmFwaChMb2FkRnJvbUpTTWFwQnVja2V0LCBPcEluZm8oKSwgT3BJbmZvKHByZWRpY3Rp
b24pLCBidWNrZXQpOwotICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQp
LCByZXN1bHQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBjYXNlIEpTU2V0
SGFzSW50cmluc2ljOgotICAgIGNhc2UgSlNNYXBIYXNJbnRyaW5zaWM6IHsKLSAgICAgICAgaWYg
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgIE5vZGUqIG1hcE9yU2V0ID0g
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSk7Ci0gICAg
ICAgIE5vZGUqIGtleSA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rl
ck9mZnNldCkpOwotICAgICAgICBOb2RlKiBoYXNoID0gYWRkVG9HcmFwaChNYXBIYXNoLCBrZXkp
OwotICAgICAgICBVc2VLaW5kIHVzZUtpbmQgPSBpbnRyaW5zaWMgPT0gSlNTZXRIYXNJbnRyaW5z
aWMgPyBTZXRPYmplY3RVc2UgOiBNYXBPYmplY3RVc2U7Ci0gICAgICAgIE5vZGUqIGJ1Y2tldCA9
IGFkZFRvR3JhcGgoR2V0TWFwQnVja2V0LCBPcEluZm8oMCksIEVkZ2UobWFwT3JTZXQsIHVzZUtp
bmQpLCBFZGdlKGtleSksIEVkZ2UoaGFzaCkpOwotICAgICAgICBOb2RlKiByZXN1bHQgPSBhZGRU
b0dyYXBoKElzTm9uRW1wdHlNYXBCdWNrZXQsIGJ1Y2tldCk7Ci0gICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQorICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA0N2I4
YWNjMjUwZjliODFhYmM3ZTZjNDM3ZTU5ODQ4OTYxMDEwOTFlLi5iMWE3OWUwNDI1Njg1ZWUzMmYw
NDU4NjBmNmI0YjdkZjFhODZkMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaApAQCAtMTI0MywyNyArMTI0Myw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgY2FzZSBMb2dTaGFkb3dDaGlja2VuVGFpbDoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRl
KTsKICAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBNYXBIYXNoOgotICAgICAgICBkZWYoUHVy
ZVZhbHVlKG5vZGUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgR2V0TWFwQnVja2V0OiB7
Ci0gICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7Ci0gICAgICAgIEVkZ2UmIG1hcEVkZ2UgPSBub2Rl
LT5jaGlsZDEoKTsKLSAgICAgICAgRWRnZSYga2V5RWRnZSA9IG5vZGUtPmNoaWxkMigpOwotICAg
ICAgICBkZWYoSGVhcExvY2F0aW9uKE1hcEJ1Y2tldExvYywgTWlzY0ZpZWxkcywgbWFwRWRnZSwg
a2V5RWRnZSksIExhenlOb2RlKG5vZGUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6IHsKLSAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKLSAg
ICAgICAgRWRnZSYgYnVja2V0RWRnZSA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAgICBkZWYoSGVh
cExvY2F0aW9uKEpTTWFwR2V0TG9jLCBNaXNjRmllbGRzLCBidWNrZXRFZGdlKSwgTGF6eU5vZGUo
bm9kZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1
Y2tldDoKLSAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKLSAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihNYXBIYXNMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkp
OwotICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCmluZGV4IDg4M2I3MTYzYTU5NTg4YTJhZTFhODE1NjI0ZGY4OGE3MTQ5
YTFlZDcuLjY3MWU0ZDM3ZTk4Y2YzNDI0NGVkNzliMDk3ZWQyYmY5NGQ3OTdmZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE4NSwxMCArMTg1LDYgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRm9yY2VPU1JFeGl0
OgogICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJD
b2RlOgotICAgIGNhc2UgTWFwSGFzaDoKLSAgICBjYXNlIEdldE1hcEJ1Y2tldDoKLSAgICBjYXNl
IExvYWRGcm9tSlNNYXBCdWNrZXQ6Ci0gICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAg
IGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBj
YXNlIENoZWNrVGllclVwSW5Mb29wOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdFZGdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAppbmRl
eCA0ZTRjZTEwNTM3YTQ4ZDNhNjc2ZjZjZDIxZGE3NzY3MGY2ZDYxOGRlLi4xN2YwYzEzYjA5YTJi
NzA5OWNlM2I4YjE4ZWY3ZDI4NzUwNTRkNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0VkZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Vk
Z2UuaApAQCAtMTg5LDcgKzE4OSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEFkamFj
ZW5jeUxpc3Q7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IHNoaWZ0KCkgeyByZXR1cm4gODsgfQorICAgIHN0YXRpYyB1aW50MzJfdCBzaGlm
dCgpIHsgcmV0dXJuIDc7IH0KICAgICAKICAgICBzdGF0aWMgdWludHB0cl90IG1ha2VXb3JkKE5v
ZGUqIG5vZGUsIFVzZUtpbmQgdXNlS2luZCwgUHJvb2ZTdGF0dXMgcHJvb2ZTdGF0dXMsIEtpbGxT
dGF0dXMga2lsbFN0YXR1cykKICAgICB7CkBAIC0xOTcsMjEgKzE5Nyw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIHVpbnRwdHJfdCBzaGlmdGVkVmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihu
b2RlKSA8PCBzaGlmdCgpOwogICAgICAgICBBU1NFUlQoKHNoaWZ0ZWRWYWx1ZSA+PiBzaGlmdCgp
KSA9PSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihub2RlKSk7CiAgICAgICAgIEFTU0VSVCh1c2VL
aW5kID49IDAgJiYgdXNlS2luZCA8IExhc3RVc2VLaW5kKTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dCgoc3RhdGljX2Nhc3Q8dWludHB0cl90PihMYXN0VXNlS2luZCkgPDwgMikgPCAoc3RhdGljX2Nh
c3Q8dWludHB0cl90PigxKSA8PCBzaGlmdCgpKSwgIldlIHJlbHkgb24gdGhpcyBiZWluZyB0cnVl
IHRvIG5vdCBjbG9iYmVyIHRoZSBub2RlIHBvaW50ZXIuIik7Ci0gICAgICAgIHVpbnRwdHJfdCBy
ZXN1bHQgPSBzaGlmdGVkVmFsdWUgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih1c2VLaW5kKSA8
PCAyKSB8IChERkc6OmRvZXNLaWxsKGtpbGxTdGF0dXMpIDw8IDEpIHwgc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PihERkc6OmlzUHJvdmVkKHByb29mU3RhdHVzKSk7Ci0gICAgICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICB1bmlvbiBVIHsKLSAgICAgICAgICAgICAgICBVKCkg
eyB3b3JkID0gMDsgfQotICAgICAgICAgICAgICAgIHVpbnRwdHJfdCB3b3JkOwotICAgICAgICAg
ICAgICAgIEVkZ2UgZWRnZTsKLSAgICAgICAgICAgIH0gdTsKLSAgICAgICAgICAgIHUud29yZCA9
IHJlc3VsdDsKLSAgICAgICAgICAgIEFTU0VSVCh1LmVkZ2UudXNlS2luZFVuY2hlY2tlZCgpID09
IHVzZUtpbmQpOwotICAgICAgICAgICAgQVNTRVJUKHUuZWRnZS5ub2RlKCkgPT0gbm9kZSk7Ci0g
ICAgICAgICAgICBBU1NFUlQodS5lZGdlLnByb29mU3RhdHVzVW5jaGVja2VkKCkgPT0gcHJvb2ZT
dGF0dXMpOwotICAgICAgICAgICAgQVNTRVJUKHUuZWRnZS5raWxsU3RhdHVzVW5jaGVja2VkKCkg
PT0ga2lsbFN0YXR1cyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgQVNTRVJUKChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KExhc3RVc2VLaW5kKSA8PCAyKSA8PSAo
c3RhdGljX2Nhc3Q8dWludHB0cl90PigyKSA8PCBzaGlmdCgpKSk7CisgICAgICAgIHJldHVybiBz
aGlmdGVkVmFsdWUgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih1c2VLaW5kKSA8PCAyKSB8IChE
Rkc6OmRvZXNLaWxsKGtpbGxTdGF0dXMpIDw8IDEpIHwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihE
Rkc6OmlzUHJvdmVkKHByb29mU3RhdHVzKSk7CiAgICAgfQogICAgIAogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDJkOTRlMmNmOWI2MjE0
ZGI2MGRmOGRjZDczYWQzZDZhYzZiOTQ0MzIuLjVjMzU2YWJhMTkxMTMzNjZmNjA5NjhjMzcxMzg4
YzhkYjM1YWNmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMTU0NSwyOSArMTU0NSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgR2V0TWFwQnVja2V0OgotICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmplY3RVc2UpCi0gICAgICAgICAgICAg
ICAgZml4RWRnZTxNYXBPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTZXRPYmplY3RVc2UpCi0gICAgICAg
ICAgICAgICAgZml4RWRnZTxTZXRPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDMoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6Ci0gICAgICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgotICAgICAgICAgICAgZml4RWRnZTxL
bm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgTWFwSGFzaDoKLSAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2Jv
ZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNl
IFNldEFyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdI
ZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uY3BwCmluZGV4IDg0NzA2MzdkZjAwNjYwNGQzMjZkNTUxYTRiYjM0MmEyZjAyMDUwNjguLmQ0
NDE4NjJlYjMwM2UxZjQ3YzBlZWVlOGQ0YzI3YTgyMmE2MDg5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTE0MywxNSArMTQzLDYgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvY2F0aW9uS2luZCBraW5kKQog
ICAgIGNhc2UgUmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jOgogICAgICAgICBvdXQucHJpbnQoIlJl
Z0V4cE9iamVjdExhc3RJbmRleExvYyIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNYXBC
dWNrZXRMb2M6Ci0gICAgICAgIG91dC5wcmludCgiTWFwQnVja2V0TG9jIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEpTTWFwR2V0TG9jOgotICAgICAgICBvdXQucHJpbnQoIkpTTWFwR2V0
TG9jIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1hcEhhc0xvYzoKLSAgICAgICAgb3V0
LnByaW50KCJNYXBIYXNMb2MiKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSGVhcExvY2F0aW9uLmgKaW5kZXggZTgxYTU1NDg1ODc1OWY3Yzk2NDNiYmUxOTc5NDdlYTFk
ZDlhYTM3Ny4uYjBmN2E5OThlODhlYTY4YWViZDQ5N2RjYzA1ZDhlMTVjNmJjNDU4MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC01OCwxMCArNTgs
NyBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJy
YXlCeXRlT2Zmc2V0TG9jLAogICAgIFN0YWNrTG9jLAotICAgIFN0YWNrUGF5bG9hZExvYywKLSAg
ICBNYXBCdWNrZXRMb2MsCi0gICAgSlNNYXBHZXRMb2MsCi0gICAgTWFwSGFzTG9jCisgICAgU3Rh
Y2tQYXlsb2FkTG9jCiB9OwogCiBjbGFzcyBIZWFwTG9jYXRpb24gewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCAyN2NkMzI1YjVjZjkwY2M1NDliNTUxYjBlZTU1ZTU0ZGEwNWMz
NmE3Li4zMWE1NDY1OTFjZGM2YjRiZmJiOTg0MmQzNTlhYmRkYjAxM2U1N2UxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMTQyMSw3ICsxNDIxLDYgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4
cDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKLSAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVj
a2V0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggMmVjY2Y3NTZkMDdhMDcyZDRjYjE1YmU0NTZkMjk3NGNkNDFjOTVjMS4uODM2NjE4YTMw
YjU2OTE1MTg1YTgzYzc5ODE4MDZjNGVmMzA3NzVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaApAQCAtMzg4LDEyICszODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oR2V0UHJvcGVydHlFbnVtZXJhdG9yLCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0RW51bWVyYXRvclN0cnVjdHVy
ZVBuYW1lLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0
RW51bWVyYXRvckdlbmVyaWNQbmFtZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykg
XAotICAgIG1hY3JvKFRvSW5kZXhTdHJpbmcsIE5vZGVSZXN1bHRKUykgXAotICAgIC8qIE5vZGVz
IGZvciBKU01hcCBhbmQgSlNTZXQgKi8gXAotICAgIG1hY3JvKE1hcEhhc2gsIE5vZGVSZXN1bHRJ
bnQzMikgXAotICAgIG1hY3JvKEdldE1hcEJ1Y2tldCwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFj
cm8oTG9hZEZyb21KU01hcEJ1Y2tldCwgTm9kZVJlc3VsdEpTKSBcCi0gICAgbWFjcm8oSXNOb25F
bXB0eU1hcEJ1Y2tldCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICBtYWNybyhUb0luZGV4U3Ry
aW5nLCBOb2RlUmVzdWx0SlMpCiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNh
bGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkg
dGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0
aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAppbmRleCA0YTZlN2QwYTViMGJmYWQ2ZTdhN2U1NTA4MmZmNjdlYTllMzM0ZTUwLi4yMGFl
NTJiNGIzM2VmZTM0NTJjMDZlYjlkOTZmNjU4NDdlNDhmM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTUwLDggKzUwLDYgQEAKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgotI2luY2x1
ZGUgIkpTTWFwLmgiCi0jaW5jbHVkZSAiSlNTZXQuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlJlcGF0Y2guaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMu
aCIKQEAgLTE4MTcsMzQgKzE4MTUsNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
RHluYW1pY1ZhcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzY29wZSwgRW5jbwogICAgIHNj
b3BlLT5tZXRob2RUYWJsZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNv
ZGUodmFsdWUpLCBzbG90KTsKIH0KIAotaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
cEhhc2goRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBpbnB1dCkKLXsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKLQotICAgIHJldHVybiBqc01hcEhhc2goZXhlYywgdm0sIG5vcm1hbGl6ZU1hcEtleShK
U1ZhbHVlOjpkZWNvZGUoaW5wdXQpKSk7Ci19Ci0KLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25KU01hcEZpbmRCdWNrZXQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG1hcCwgRW5jb2Rl
ZEpTVmFsdWUga2V5LCBpbnQzMl90IGhhc2gpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgSlNNYXA6
OkJ1Y2tldFR5cGUqKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXAqPihtYXApLT5maW5kQnVja2V0KGV4
ZWMsIG5vcm1hbGl6ZU1hcEtleShKU1ZhbHVlOjpkZWNvZGUoa2V5KSksIGhhc2gpOwotICAgIGlm
ICghYnVja2V0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gKmJ1Y2tldDsK
LX0KLQotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogbWFwLCBFbmNvZGVkSlNWYWx1ZSBrZXksIGludDMyX3QgaGFz
aCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICBKU1NldDo6QnVja2V0VHlwZSoqIGJ1Y2tldCA9IGpz
Q2FzdDxKU1NldCo+KG1hcCktPmZpbmRCdWNrZXQoZXhlYywgbm9ybWFsaXplTWFwS2V5KEpTVmFs
dWU6OmRlY29kZShrZXkpKSwgaGFzaCk7Ci0gICAgaWYgKCFidWNrZXQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiAqYnVja2V0OwotfQotCiBleHRlcm4gIkMiIHZvaWQgSklU
X09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9TUkV4aXRCYXNlKiBleGl0KQogewogICAgIC8vIEl0J3Mgc29ydCBvZiBwcmVmZXJhYmxlIHRo
YXQgd2UgZG9uJ3QgR0Mgd2hpbGUgaW4gaGVyZS4gQW55d2F5cywgZG9pbmcgc28gd291bGRuJ3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMTJiYTdhY2Yw
ZTU0ODQzYzc0MDRlM2I4ODY2NDY0YmViMGM5MmM4NC4uNjVlYmQ5ZGIyZDc0MTAwNDI4ZDMzY2M2
MmZhN2M3ZTQ0MjA5ODllNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgKQEAgLTE0MiwxMCArMTQyLDYgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25F
bnN1cmVBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiwgSlNDZWxsKik7CiBTdHJpbmdJbXBsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVSb3BlKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiBK
U1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhl
Y1N0YXRlKiwgaW50MzJfdCk7CiAKLWludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXBI
YXNoKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGlucHV0KTsKLUpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25KU01hcEZpbmRCdWNrZXQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2Rl
ZEpTVmFsdWUsIGludDMyX3QpOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkpTU2V0
RmluZEJ1Y2tldChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7
Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdTdHJpbmdPYmplY3QoRXhlY1N0
YXRlKiwgSlNTdHJpbmcqLCBTdHJ1Y3R1cmUqKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub1N0cmluZ09uQ2VsbChFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Ub1N0cmluZyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDYyYjY3MTk3MzhlMjU2OGU5ZGIzNTY2YTFkN2JlNzFk
MDdlN2MwZTYuLjFjYTgxZDQ3M2UyNTYyYzJmODQ2MGNhYWU1NTU5MDkwYjM3MTA4NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC03MDgsNyArNzA4LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgR2V0Q2xvc3VyZVZh
cjoKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgotICAgICAgICBjYXNlIExvYWRGcm9t
SlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTczOSwxNiArNzM4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBNYXBIYXNoOgotICAgICAgICAgICAgc2V0UHJl
ZGljdGlvbihTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEdldE1hcEJ1Y2tldDoKLSAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0Ogot
ICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICBicmVh
azsKLQogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6IHsKICAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggNjhhZjJmYTRhZjE1ZjRmNGIz
YmI2ZDIyOTA2NzQ5NmNmN2JjNDJiZS4uNzRlZGU1ZDRjNWI1ZDljOTczZmU1NTY1Y2VlMWRhZGU5
MGQ5MmZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTU4LDggKzU4LDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgog
ICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICBjYXNlIFJlZ0V4cE9iamVjdFVz
ZToKLSAgICAgICAgY2FzZSBNYXBPYmplY3RVc2U6Ci0gICAgICAgIGNhc2UgU2V0T2JqZWN0VXNl
OgogICAgICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nSWRl
bnRVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgpAQCAtMzU3LDEwICszNTUsNiBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgIGNhc2UgUHV0RHluYW1pY1Zh
cjoKICAgICBjYXNlIFJlc29sdmVTY29wZToKLSAgICBjYXNlIE1hcEhhc2g6Ci0gICAgY2FzZSBH
ZXRNYXBCdWNrZXQ6Ci0gICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgotICAgIGNhc2UgSXNO
b25FbXB0eU1hcEJ1Y2tldDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIEJvdHRv
bVZhbHVlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBlMTY4NzZhNWUxNWM5NDQzZDAzYzRlMDQwNmE4MmZiNGViZDQ3ZGM1Li42YzFj
OGVkNTFiYWYwZDdiOWM5MGE2ZWY0OTA2OTY4MWE5MGQwYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzQwNywzNCArNzQwNyw2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlZ0V4cE9iamVjdChFZGdlIGVkZ2Up
CiAgICAgc3BlY3VsYXRlUmVnRXhwT2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCi12
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNYXBPYmplY3QoRWRnZSBlZGdlLCBHUFJSZWcg
Y2VsbCkKLXsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBjZWxsLCBTcGVjTWFwT2JqZWN0
LCBKU01hcFR5cGUpOwotfQotCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNYXBPYmpl
Y3QoRWRnZSBlZGdlKQotewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY01hcE9i
amVjdCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJh
bmQodGhpcywgZWRnZSk7Ci0gICAgc3BlY3VsYXRlTWFwT2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3By
KCkpOwotfQotCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTZXRPYmplY3QoRWRnZSBl
ZGdlLCBHUFJSZWcgY2VsbCkKLXsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBjZWxsLCBT
cGVjU2V0T2JqZWN0LCBKU1NldFR5cGUpOwotfQotCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVTZXRPYmplY3QoRWRnZSBlZGdlKQotewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY1NldE9iamVjdCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Ci0gICAgc3BlY3VsYXRlU2V0T2JqZWN0KGVkZ2Us
IG9wZXJhbmQuZ3ByKCkpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmpl
Y3RPck90aGVyKEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNw
ZWNPYmplY3QgfCBTcGVjT3RoZXIpKQpAQCAtNzcyMiwxMiArNzY5NCw2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWRnZSBlZGdlKQogICAgIGNhc2UgUmVnRXhwT2Jq
ZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3QoZWRnZSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTWFwT2JqZWN0VXNlOgotICAgICAgICBzcGVjdWxhdGVNYXBPYmplY3Qo
ZWRnZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2V0T2JqZWN0VXNlOgotICAgICAgICBz
cGVjdWxhdGVTZXRPYmplY3QoZWRnZSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgT2JqZWN0
T3JPdGhlclVzZToKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihlZGdlKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKaW5kZXggMjdhNTgwNTkyNDE0MDc1ZDRjMmJhY2ZlZGMzMmZhOGE4NDY1OTNkYS4uN2E4NDlj
NzAxYTVmNDIyZmMzMzRkOTE2OGQ4NWY5NDYzYmZiZGRjMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTMxMSwxMiArMTMxMSw2IEBAIHB1
YmxpYzoKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Ci0gICAgfQot
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpN
aWMgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEsIEpTVmFs
dWVSZWdzIGFyZzIsIFRydXN0ZWRJbW1QdHIgbWF0aElDKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEuZ3ByKCksIGFyZzIuZ3ByKCksIG1hdGhJ
Qyk7CkBAIC0xNjk3LDEyICsxNjkxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbChvcGVyYXRpb24pOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oWl9KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
YXJnMSkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwotICAgIH0KLQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRP
cGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCB1bnNp
Z25lZCBhcmcyLCB1bnNpZ25lZCBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSwgVHJ1c3RlZEltbTMy
KGFyZzMpKTsKQEAgLTE3NTEsMTggKzE3MzksNiBAQCBwdWJsaWM6CiAgICAgfQogI2Vsc2UgLy8g
VVNFKEpTVkFMVUUzMl82NCkKIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRUNKWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBKU1ZhbHVlUmVncyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50
YWdHUFIoKSwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNWYWx1ZVJl
Z3MgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
LSAgICB9Ci0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKSk1pYyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJn
MSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVHJ1c3RlZEltbVB0ciBtYXRoSUMpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIGFyZzIucGF5bG9hZEdQUigpLCBhcmcy
LnRhZ0dQUigpLCBtYXRoSUMpOwpAQCAtMjY3OCwxMCArMjY1NCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVnRXhw
T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlZ0V4cE9iamVj
dChFZGdlKTsKLSAgICB2b2lkIHNwZWN1bGF0ZU1hcE9iamVjdChFZGdlKTsKLSAgICB2b2lkIHNw
ZWN1bGF0ZU1hcE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7Ci0gICAgdm9pZCBzcGVjdWxhdGVT
ZXRPYmplY3QoRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVTZXRPYmplY3QoRWRnZSwgR1BSUmVn
IGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdlKTsKICAgICB2b2lk
IHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1
bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBH
UFJSZWcgc3RvcmFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAzODA5Yjc1ZmQwODk4MDdlMzY4MzhkZDdhNWM4
NGRmMTVmNGNlMDVjLi5lMzdmYTEzY2E2ZWY1MGYwZWU1YjI0ZWMxN2NlMmQ2NmI0ODdhMmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgotI2luY2x1ZGUgIkhhc2hNYXBJbXBsLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC00NzIwLDgyICs0NzE5LDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICBjYXNlIE1hcEhhc2g6IHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgaW5wdXQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgICAgIEpTVmFsdWVSZWdzIGlucHV0UmVncyA9IGlucHV0
LmpzVmFsdWVSZWdzKCk7Ci0KLSAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotCi0gICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFz
aCwgcmVzdWx0R1BSLCBpbnB1dFJlZ3MpOwotICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwotICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICBjYXNlIEdldE1hcEJ1Y2tldDogewotICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBtYXAodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQgaGFzaCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7Ci0gICAgICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKLQotICAgICAgICBHUFJSZWcgbWFwR1BSID0gbWFwLmdwcigpOwot
ICAgICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7Ci0gICAgICAg
IEdQUlJlZyBoYXNoR1BSID0gaGFzaC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKLQotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IE1hcE9iamVjdFVzZSkKLSAgICAgICAgICAgIHNwZWN1bGF0ZU1hcE9iamVjdChub2RlLT5jaGls
ZDEoKSwgbWFwR1BSKTsKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IFNldE9iamVjdFVzZSkKLSAgICAgICAgICAgIHNwZWN1bGF0ZVNldE9iamVjdChub2RlLT5j
aGlsZDEoKSwgbWFwR1BSKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE1hcE9iamVjdFVzZSkKLSAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRHUFIsIG1hcEdQ
Uiwga2V5UmVncywgaGFzaEdQUik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIG1hcEdQUiwga2V5UmVn
cywgaGFzaEdQUik7Ci0gICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
Y2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJ1Y2tldCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHRQYXlsb2FkKHRoaXMpOwotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOwot
Ci0gICAgICAgIEdQUlJlZyBidWNrZXRHUFIgPSBidWNrZXQuZ3ByKCk7Ci0gICAgICAgIEdQUlJl
ZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKLSAgICAgICAgR1BSUmVn
IHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKLQotICAgICAgICBhdXRvIG5vdEJ1Y2tl
dCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGJ1Y2tldEdQUik7
Ci0gICAgICAgIG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhidWNrZXRH
UFIsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46Om9mZnNldE9mVmFs
dWUoKSksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUikpOwotICAg
ICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0KLSAgICAgICAgbm90QnVja2V0Lmxpbmso
Jm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZp
bmVkVGFnKSwgcmVzdWx0VGFnR1BSKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIo
MCksIHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6IHsK
LSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnVja2V0KHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLQotICAgICAgICBHUFJSZWcg
YnVja2V0R1BSID0gYnVja2V0LmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwotCi0gICAgICAgIG1faml0LmNvbXBhcmVQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBidWNrZXRHUFIsIFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0R1BSKTsKLSAgICAgICAg
Ym9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
ICAgICBjYXNlIEZsdXNoOgogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggODAwMTE4ZTk1MjNkOWJi
ZjhkZTg0MmQ4OWEyYjA2ZGQ0YmExMDFmMy4uYmZiNjFlZmQxM2ZjNDRhMTY1OTA5MmQxMzU4ODM3
ZGRlZjY1YTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCkBAIC0zOSw5ICszOSw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0xleGljYWxF
bnZpcm9ubWVudC5oIgotI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNTZXQuaCIKICNpbmNsdWRlICJPYmplY3RQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5oIgogI2luY2x1ZGUgIlNwaWxs
UmVnaXN0ZXJzTW9kZS5oIgpAQCAtNDYxNywxNjggKzQ2MTUsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNh
c2UgTWFwSGFzaDogewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBpbnB1dCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotCi0gICAgICAgIEdQUlJlZyBpbnB1dEdQUiA9IGlucHV0
LmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAg
ICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0KLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IHN0cmFpZ2h0SGFzaDsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
IGRvbmU7Ci0gICAgICAgIGF1dG8gaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGlu
cHV0R1BSKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwotICAg
ICAgICBzdHJhaWdodEhhc2guYXBwZW5kKG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhpbnB1dEdQUiwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOwotICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGlucHV0R1BSLCBKU1N0cmluZzo6b2Zm
c2V0T2ZWYWx1ZSgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOwotICAgICAg
ICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJpbmdJ
bXBsOjpmbGFnc09mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgbV9qaXQudXJzaGlmdDY0
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6c19mbGFnQ291bnQpLCBy
ZXN1bHRHUFIpOwotICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKLSAgICAgICAgZG9uZS5hcHBlbmQobV9q
aXQuanVtcCgpKTsKLQotICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwotICAgICAgICBz
dHJhaWdodEhhc2guYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVtYmVyKGlucHV0R1BSKSk7Ci0g
ICAgICAgIHN0cmFpZ2h0SGFzaC5hcHBlbmQobV9qaXQuYnJhbmNoSWZJbnQzMihKU1ZhbHVlUmVn
cyhpbnB1dEdQUikpKTsKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0K
LSAgICAgICAgc3RyYWlnaHRIYXNoLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShp
bnB1dEdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgbV9qaXQud2FuZ3NJbnQ2NEhhc2gocmVzdWx0
R1BSLCB0ZW1wR1BSKTsKLSAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKLQotICAg
ICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwg
cmVzdWx0R1BSLCBpbnB1dEdQUik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLQotICAgICAgICBkb25l
LmxpbmsoJm1faml0KTsKLSAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR2V0TWFwQnVja2V0OiB7Ci0gICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIG1hcCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpT
VmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIFNwZWN1bGF0
ZUludDMyT3BlcmFuZCBoYXNoKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKLSAgICAgICAgR1BSVGVt
cG9yYXJ5IG1hc2sodGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBpbmRleCh0aGlzKTsKLSAg
ICAgICAgR1BSVGVtcG9yYXJ5IGJ1ZmZlcih0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IGJ1
Y2tldCh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLQotICAgICAg
ICBHUFJSZWcgaGFzaEdQUiA9IGhhc2guZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBtYXBHUFIgPSBt
YXAuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBtYXNrR1BSID0gbWFzay5ncHIoKTsKLSAgICAgICAg
R1BSUmVnIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBidWZmZXJHUFIg
PSBidWZmZXIuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBidWNrZXRHUFIgPSBidWNrZXQuZ3ByKCk7
Ci0gICAgICAgIEdQUlJlZyBrZXlHUFIgPSBrZXkuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBNYXBPYmplY3RVc2UpCi0gICAgICAgICAgICBzcGVjdWxhdGVNYXBPYmplY3Qobm9k
ZS0+Y2hpbGQxKCksIG1hcEdQUik7Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBTZXRPYmplY3RVc2UpCi0gICAgICAgICAgICBzcGVjdWxhdGVTZXRPYmplY3Qo
bm9kZS0+Y2hpbGQxKCksIG1hcEdQUik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhtYXBHUFIsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBP
YmplY3RVc2UgPyBKU01hcDo6b2Zmc2V0T2ZIYXNoTWFwSW1wbCgpIDogSlNTZXQ6Om9mZnNldE9m
SGFzaE1hcEltcGwoKSksIGJ1ZmZlckdQUik7Ci0gICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhidWZmZXJHUFIsIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFz
aE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSwgbWFza0dQUik7Ci0gICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyR1BSLCBIYXNo
TWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVm
ZmVyKCkpLCBidWZmZXJHUFIpOwotICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoMSks
IG1hc2tHUFIpOwotICAgICAgICBtX2ppdC5tb3ZlKGhhc2hHUFIsIGluZGV4R1BSKTsKLQotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCA9IG1faml0LmxhYmVsKCk7Ci0gICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgc2xvd1BhdGhDYXNlczsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
IGxvb3BBcm91bmQ7Ci0KLSAgICAgICAgbV9qaXQuYW5kMzIobWFza0dQUiwgaW5kZXhHUFIpOwot
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoYnVmZmVyR1BS
LCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBidWNrZXRHUFIpOwotICAg
ICAgICBtX2ppdC5tb3ZlKGJ1Y2tldEdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgYXV0byBub3RQ
cmVzZW50SW5UYWJsZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAot
ICAgICAgICAgICAgYnVja2V0R1BSLCBUcnVzdGVkSW1tUHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBC
dWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZW1wdHlWYWx1ZSgpKSk7Ci0gICAgICAgIGxv
b3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAot
ICAgICAgICAgICAgYnVja2V0R1BSLCBUcnVzdGVkSW1tUHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBC
dWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZGVsZXRlZFZhbHVlKCkpKSk7Ci0KLSAgICAg
ICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJ1Y2tldEdQUiwgSGFzaE1h
cEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT46Om9mZnNldE9mS2V5KCkpLCBidWNrZXRHUFIp
OwotCi0gICAgICAgIC8vIFBlcmZvcm0gT2JqZWN0LmlzKCkKLSAgICAgICAgZG9uZS5hcHBlbmQo
bV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBidWNrZXRHUFIsIGtleUdQUikp
OyAvLyBUaGV5J3JlIGRlZmluaXRlbHkgdGhlIHNhbWUgdmFsdWUsIHdlIGZvdW5kIHRoZSBidWNr
ZXQgd2Ugd2VyZSBsb29raW5nIGZvciEKLSAgICAgICAgYXV0byBvbmVJc250Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhidWNrZXRHUFIpKTsKLSAgICAgICAgLy8gZmly
c3QgaXMgYSBjZWxsIGhlcmUuCi0gICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbChKU1ZhbHVlUmVncyhrZXlHUFIpKSk7Ci0gICAgICAgIC8vIEJvdGggYXJlIGNl
bGxzIGhlcmUuCi0gICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaDgoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0
R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5
cGUpKSk7Ci0gICAgICAgIC8vIFRoZSBmaXJzdCBpcyBhIHN0cmluZyBoZXJlLgotICAgICAgICBz
bG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpFcXVhbCwKLSAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGtleUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOwotICAgICAgICAvLyBUaGUg
Zmlyc3QgaXMgYSBzdHJpbmcsIGJ1dCB0aGUgc2Vjb25kIGlzIG5vdCwgd2UgY29udGludWUgdG8g
bG9vcCBhcm91bmQuCi0gICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0K
LSAgICAgICAgb25lSXNudENlbGwubGluaygmbV9qaXQpOwotICAgICAgICAvLyBXZSd2ZSBhbHJl
YWR5IGRvbmUgYSA2NC1iaXQgY29tcGFyZSBhdCB0aGlzIHBvaW50LCBzbyBpZiBvbmUgaXMgbm90
IGEgbnVtYmVyLCB0aGV5J3JlIGRlZmluaXRlbHkgbm90IGVxdWFsLgotICAgICAgICBsb29wQXJv
dW5kLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE51bWJlcihidWNrZXRHUFIpKTsKLSAgICAgICAg
bG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoa2V5R1BSKSk7Ci0gICAg
ICAgIC8vIEJvdGggYXJlIGRlZmluaXRlbHkgbnVtYmVycy4gSWYgd2Ugc2VlIGEgZG91YmxlLCB3
ZSBnbyB0byB0aGUgc2xvdyBwYXRoLgotICAgICAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdEludDMyKGJ1Y2tldEdQUikpOwotICAgICAgICBzbG93UGF0aENhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdEludDMyKGtleUdQUikpOwotICAgICAgICAKLSAgICAgICAg
bG9vcEFyb3VuZC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0z
MigxKSwgaW5kZXhHUFIpOwotICAgICAgICBtX2ppdC5qdW1wKCkubGlua1RvKGxvb3AsICZtX2pp
dCk7Ci0KLSAgICAgICAgc2xvd1BhdGhDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKGluZGV4R1BSKTsKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBNYXBPYmplY3RVc2UpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkpTTWFwRmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQ
Uik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNT
ZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKLSAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhpbmRleEdQUik7Ci0gICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7Ci0gICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICAg
ICAgbm90UHJlc2VudEluVGFibGUubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIobnVsbHB0ciksIHJlc3VsdEdQUik7Ci0gICAgICAgIGRvbmUubGluaygmbV9q
aXQpOwotICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDogewotICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBidWNrZXQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotCi0gICAgICAgIEdQUlJlZyBidWNrZXRHUFIgPSBi
dWNrZXQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0K
LSAgICAgICAgYXV0byBub3RCdWNrZXQgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCBidWNrZXRHUFIpOwotICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
VmFsdWU+OjpvZmZzZXRPZlZhbHVlKCkpLCByZXN1bHRHUFIpOwotICAgICAgICBhdXRvIGRvbmUg
PSBtX2ppdC5qdW1wKCk7Ci0KLSAgICAgICAgbm90QnVja2V0LmxpbmsoJm1faml0KTsKLSAgICAg
ICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIGRvbmUubGluaygmbV9qaXQp
OwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDogewotICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBidWNrZXQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotCi0gICAgICAgIEdQUlJlZyBidWNrZXRHUFIgPSBi
dWNrZXQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0K
LSAgICAgICAgbV9qaXQuY29tcGFyZVB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGJ1Y2tl
dEdQUiwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5vcjMyKFRy
dXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKLSAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0KICAgICBjYXNlIElzT2JqZWN0OiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5j
cHAKaW5kZXggNjk1NjQ5ODJlMmQxZTk2NmFiMTgyNTJjNzlmNjhhM2JhODU5ZGM1Ni4uZTdmOTkz
NDVlYzRlNjY1ZDkyMjY3NGVmNzEwOWY0MGYxOTZiNzY4MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuY3BwCkBAIC05NCwxMiArOTQsNiBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgUmVnRXhwT2Jq
ZWN0VXNlOgogICAgICAgICBvdXQucHJpbnQoIlJlZ0V4cE9iamVjdCIpOwogICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBNYXBPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgiTWFwT2JqZWN0
VXNlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFNldE9iamVjdFVzZToKLSAgICAgICAg
b3V0LnByaW50KCJTZXRPYmplY3RVc2UiKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgT2Jq
ZWN0T3JPdGhlclVzZToKICAgICAgICAgb3V0LnByaW50KCJPYmplY3RPck90aGVyIik7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKaW5kZXggYTVj
MjFjMTNlZWQ1M2Y2OTc4MDNmZTRlNDM4NTg3OWM2MjNjZmUxYy4uZDJlZjkzMzE2ZmE1Mjg1OTU1
YTU5MDk2ZjUyYTljYTUzMTdlYjViMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgKQEAgLTYzLDggKzYzLDYgQEAgZW51bSBVc2VLaW5kIHsKICAgICBLbm93blN0cmluZ1Vz
ZSwKICAgICBLbm93blByaW1pdGl2ZVVzZSwgLy8gVGhpcyBiaXphcnJlIHR5cGUgYXJpc2VzIGZv
ciBvcF9zdHJjYXQsIHdoaWNoIGhhcyBhIGJ5dGVjb2RlIGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwg
b25seSBzZWUgcHJpbWl0aXZlcyAoaS5lLiBub3Qgb2JqZWN0cykuCiAgICAgU3ltYm9sVXNlLAot
ICAgIE1hcE9iamVjdFVzZSwKLSAgICBTZXRPYmplY3RVc2UsCiAgICAgU3RyaW5nT2JqZWN0VXNl
LAogICAgIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlLAogICAgIE5vdFN0cmluZ1ZhclVzZSwKQEAg
LTEzNiwxMCArMTM0LDYgQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNl
S2luZCB1c2VLaW5kKQogICAgICAgICByZXR1cm4gU3BlY0hlYXBUb3AgJiB+U3BlY09iamVjdDsK
ICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2Fz
ZSBNYXBPYmplY3RVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjTWFwT2JqZWN0OwotICAgIGNhc2Ug
U2V0T2JqZWN0VXNlOgotICAgICAgICByZXR1cm4gU3BlY1NldE9iamVjdDsKICAgICBjYXNlIFN0
cmluZ09iamVjdFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmdPYmplY3Q7CiAgICAgY2Fz
ZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKQEAgLTIyNyw4ICsyMjEsNiBAQCBpbmxpbmUgYm9v
bCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6Ci0gICAgY2Fz
ZSBNYXBPYmplY3RVc2U6Ci0gICAgY2FzZSBTZXRPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXgg
Mzk4Y2U5NzBhZTA4MzAyMjZkYTA2N2E0MDc3NjM5YzkwMGRhM2UzNy4uZDJlMTZmMzZmZmRhMzQ4
MGE5ODM5ODQ4ZTdkMWVjMDJkMzc4ZTNkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTMyLDggKzMyLDYgQEAK
ICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJGVExBYnN0cmFjdEhlYXAuaCIK
ICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKLSNpbmNsdWRlICJKU01hcC5oIgotI2luY2x1ZGUg
IkpTU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIApAQCAtMTAzLDEz
ICsxMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3Ry
dWN0dXJlX2NsYXNzSW5mbywgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9nbG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBTdHJ1Y3R1cmU6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhKU01hcF9oYXNoTWFwSW1wbCwgSlNN
YXA6Om9mZnNldE9mSGFzaE1hcEltcGwoKSkgXAotICAgIG1hY3JvKEpTU2V0X2hhc2hNYXBJbXBs
LCBKU1NldDo6b2Zmc2V0T2ZIYXNoTWFwSW1wbCgpKSBcCi0gICAgbWFjcm8oSGFzaE1hcEltcGxf
Y2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+
Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCi0gICAgbWFjcm8oSGFzaE1hcEltcGxfYnVmZmVyLCAg
SGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRP
ZkJ1ZmZlcigpKSBcCi0gICAgbWFjcm8oSGFzaE1hcEJ1Y2tldF92YWx1ZSwgSGFzaE1hcEJ1Y2tl
dDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlPjo6b2Zmc2V0T2ZWYWx1ZSgpKSBcCi0gICAgbWFj
cm8oSGFzaE1hcEJ1Y2tldF9rZXksIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlW
YWx1ZT46Om9mZnNldE9mS2V5KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQs
IFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkKIAogI2RlZmluZSBGT1JfRUFDSF9JTkRF
WEVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfc3Rv
cmFnZSwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0KCksIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCA4MjE3NzgzNDA4M2FjOTNjMDcyZWQ5NDBlMWFhZmViNDY5YTY1OGE5Li5lMmM2MjY2
YzE2YTA4OTdmOTg2MTk1ZDg3MDRlNjliY2QxMjkwNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsMTAgKzE4MSw2IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVW5yZWFj
aGFibGU6CiAgICAgY2FzZSBJbjoKICAgICBjYXNlIElzSlNBcnJheToKLSAgICBjYXNlIE1hcEhh
c2g6Ci0gICAgY2FzZSBHZXRNYXBCdWNrZXQ6Ci0gICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0
OgotICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIElzRW1wdHk6CiAgICAg
Y2FzZSBJc1VuZGVmaW5lZDoKICAgICBjYXNlIElzQm9vbGVhbjoKQEAgLTQyOSw4ICs0MjUsNiBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAg
ICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdPclN0
cmluZ09iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAg
ICAgICAgICBjYXNlIE1hcE9iamVjdFVzZToKLSAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVj
dFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUmVnRXhwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTm90Q2VsbFVz
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCA5MWFhZjU4YWE4NmQ0ZjBiYTJiYjFlM2E2OGVlYmI3MjQyYTVlOTlhLi41YjJlMjBjOTgwY2Fm
MzQ4ODQwMmFmZmIxYzEyOThkMTZjZGZiN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03MCw3ICs3MCw2IEBACiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0xleGljYWxFbnZpcm9ubWVudC5oIgotI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiT3Bl
cmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
U2NvcGVkQXJndW1lbnRzVGFibGUuaCIKQEAgLTg5OSwxOCArODk4LDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBJc0pTQXJyYXk6CiAgICAgICAgICAgICBjb21waWxlSXNKU0FycmF5KCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYXBIYXNoOgotICAgICAgICAgICAgY29t
cGlsZU1hcEhhc2goKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdldE1hcEJ1
Y2tldDoKLSAgICAgICAgICAgIGNvbXBpbGVHZXRNYXBCdWNrZXQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6Ci0gICAgICAgICAgICBjb21w
aWxlTG9hZEZyb21KU01hcEJ1Y2tldCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKLSAgICAgICAgICAgIGNvbXBpbGVJc05vbkVtcHR5TWFw
QnVja2V0KCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJc09iamVjdDoKICAg
ICAgICAgICAgIGNvbXBpbGVJc09iamVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MzAy
LDIyOSArNjI4OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKElu
dDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CiAgICAgfQogCi0gICAgdm9pZCBjb21w
aWxlTWFwSGFzaCgpCi0gICAgewotICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291
dC5uZXdCbG9jaygpOwotICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsID0gbV9vdXQubmV3Qmxv
Y2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwot
ICAgICAgICBMQmFzaWNCbG9jayBzdHJhaWdodEhhc2ggPSBtX291dC5uZXdCbG9jaygpOwotICAg
ICAgICBMQmFzaWNCbG9jayBpc051bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAg
ICBMQmFzaWNCbG9jayBpc1N0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBM
QmFzaWNCbG9jayBub25FbXB0eVN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotCi0gICAgICAg
IG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgIGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25v
ZGUtPmNoaWxkMSgpKSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKG5vdENlbGwpKTsKLQot
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2Us
IGlzU3RyaW5nQ2FzZSk7Ci0gICAgICAgIExWYWx1ZSBpc1N0cmluZyA9IG1fb3V0LmVxdWFsKG1f
b3V0LmxvYWQ4WmVyb0V4dDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpLCBt
X291dC5jb25zdEludDMyKFN0cmluZ1R5cGUpKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAg
ICAgICAgICAgaXNTdHJpbmcsIHVuc3VyZShpc1N0cmluZ0Nhc2UpLCB1bnN1cmUoc3RyYWlnaHRI
YXNoKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNTdHJpbmdDYXNlLCBub25FbXB0eVN0
cmluZ0Nhc2UpOwotICAgICAgICBMVmFsdWUgc3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIodmFs
dWUsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwotICAgICAgICBtX291dC5icmFuY2goCi0gICAg
ICAgICAgICBtX291dC5lcXVhbChzdHJpbmdJbXBsLCBtX291dC5jb25zdEludFB0cigwKSksIHJh
cmVseShzbG93Q2FzZSksIHVzdWFsbHkobm9uRW1wdHlTdHJpbmdDYXNlKSk7Ci0KLSAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm9uRW1wdHlTdHJpbmdDYXNlLCBub3RDZWxsKTsKLSAgICAgICAgTFZh
bHVlIGhhc2ggPSBtX291dC5sU2hyKG1fb3V0LmxvYWQzMihzdHJpbmdJbXBsLCBtX2hlYXBzLlN0
cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpzX2Zs
YWdDb3VudCkpOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBub25FbXB0eVN0cmluZ0hhc2hSZXN1
bHQgPSBtX291dC5hbmNob3IoaGFzaCk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVh
bChoYXNoLCBtX291dC5jb25zdEludDMyKDApKSwKLSAgICAgICAgICAgIHJhcmVseShzbG93Q2Fz
ZSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90
Q2VsbCwgaXNOdW1iZXJDYXNlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAg
aXNOdW1iZXIodmFsdWUpLCB1bnN1cmUoaXNOdW1iZXJDYXNlKSwgdW5zdXJlKHN0cmFpZ2h0SGFz
aCkpOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzTnVtYmVyQ2FzZSwgc3RyYWlnaHRIYXNo
KTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNJbnQzMih2YWx1ZSksIHVu
c3VyZShzdHJhaWdodEhhc2gpLCB1bnN1cmUoc2xvd0Nhc2UpKTsKLQotICAgICAgICBtX291dC5h
cHBlbmRUbyhzdHJhaWdodEhhc2gsIHNsb3dDYXNlKTsKLSAgICAgICAgLy8ga2V5ICs9IH4oa2V5
IDw8IDMyKTsKLSAgICAgICAgTFZhbHVlIGtleSA9IHZhbHVlOwotICAgICAgICBMVmFsdWUgdGVt
cCA9IGtleTsKLSAgICAgICAgdGVtcCA9IG1fb3V0LnNobCh0ZW1wLCBtX291dC5jb25zdEludDMy
KDMyKSk7Ci0gICAgICAgIHRlbXAgPSBtX291dC5iaXROb3QodGVtcCk7Ci0gICAgICAgIGtleSA9
IG1fb3V0LmFkZChrZXksIHRlbXApOwotICAgICAgICAvLyBrZXkgXj0gKGtleSA+PiAyMik7Ci0g
ICAgICAgIHRlbXAgPSBrZXk7Ci0gICAgICAgIHRlbXAgPSBtX291dC5sU2hyKHRlbXAsIG1fb3V0
LmNvbnN0SW50MzIoMjIpKTsKLSAgICAgICAga2V5ID0gbV9vdXQuYml0WG9yKGtleSwgdGVtcCk7
Ci0gICAgICAgIC8vIGtleSArPSB+KGtleSA8PCAxMyk7Ci0gICAgICAgIHRlbXAgPSBrZXk7Ci0g
ICAgICAgIHRlbXAgPSBtX291dC5zaGwodGVtcCwgbV9vdXQuY29uc3RJbnQzMigxMykpOwotICAg
ICAgICB0ZW1wID0gbV9vdXQuYml0Tm90KHRlbXApOwotICAgICAgICBrZXkgPSBtX291dC5hZGQo
a2V5LCB0ZW1wKTsKLSAgICAgICAgLy8ga2V5IF49IChrZXkgPj4gOCk7Ci0gICAgICAgIHRlbXAg
PSBrZXk7Ci0gICAgICAgIHRlbXAgPSBtX291dC5sU2hyKHRlbXAsIG1fb3V0LmNvbnN0SW50MzIo
OCkpOwotICAgICAgICBrZXkgPSBtX291dC5iaXRYb3Ioa2V5LCB0ZW1wKTsKLSAgICAgICAgLy8g
a2V5ICs9IChrZXkgPDwgMyk7Ci0gICAgICAgIHRlbXAgPSBrZXk7Ci0gICAgICAgIHRlbXAgPSBt
X291dC5zaGwodGVtcCwgbV9vdXQuY29uc3RJbnQzMigzKSk7Ci0gICAgICAgIGtleSA9IG1fb3V0
LmFkZChrZXksIHRlbXApOwotICAgICAgICAvLyBrZXkgXj0gKGtleSA+PiAxNSk7Ci0gICAgICAg
IHRlbXAgPSBrZXk7Ci0gICAgICAgIHRlbXAgPSBtX291dC5sU2hyKHRlbXAsIG1fb3V0LmNvbnN0
SW50MzIoMTUpKTsKLSAgICAgICAga2V5ID0gbV9vdXQuYml0WG9yKGtleSwgdGVtcCk7Ci0gICAg
ICAgIC8vIGtleSArPSB+KGtleSA8PCAyNyk7Ci0gICAgICAgIHRlbXAgPSBrZXk7Ci0gICAgICAg
IHRlbXAgPSBtX291dC5zaGwodGVtcCwgbV9vdXQuY29uc3RJbnQzMigyNykpOwotICAgICAgICB0
ZW1wID0gbV9vdXQuYml0Tm90KHRlbXApOwotICAgICAgICBrZXkgPSBtX291dC5hZGQoa2V5LCB0
ZW1wKTsKLSAgICAgICAgLy8ga2V5IF49IChrZXkgPj4gMzEpOwotICAgICAgICB0ZW1wID0ga2V5
OwotICAgICAgICB0ZW1wID0gbV9vdXQubFNocih0ZW1wLCBtX291dC5jb25zdEludDMyKDMxKSk7
Ci0gICAgICAgIGtleSA9IG1fb3V0LmJpdFhvcihrZXksIHRlbXApOwotICAgICAgICBrZXkgPSBt
X291dC5jYXN0VG9JbnQzMihrZXkpOwotCi0gICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1
bHQgPSBtX291dC5hbmNob3Ioa2V5KTsKLSAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAg
ICAgdm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCksIG1fY2Fs
bEZyYW1lLCB2YWx1ZSkpOwotICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0KLSAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNl
dEludDMyKG1fb3V0LnBoaShJbnQzMiwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCwgbm9uRW1wdHlT
dHJpbmdIYXNoUmVzdWx0KSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlR2V0TWFwQnVja2V0
KCkKLSAgICB7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGxvb3BTdGFydCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGxvb3BBcm91bmQgPSBtX291dC5uZXdCbG9jaygpOwot
ICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAg
IExCYXNpY0Jsb2NrIG5vdFByZXNlbnRJblRhYmxlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAg
ICAgTEJhc2ljQmxvY2sgbm90RW1wdHlWYWx1ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAg
IExCYXNpY0Jsb2NrIG5vdERlbGV0ZWRWYWx1ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAg
IExCYXNpY0Jsb2NrIG5vdEJpdEVxdWFsID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJh
c2ljQmxvY2sgYnVja2V0S2V5Tm90Q2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExC
YXNpY0Jsb2NrIGJ1Y2tldEtleUlzQ2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExC
YXNpY0Jsb2NrIGJvdGhBcmVDZWxscyA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNp
Y0Jsb2NrIGJ1Y2tldEtleUlzU3RyaW5nID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJh
c2ljQmxvY2sgYnVja2V0S2V5SXNOdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBM
QmFzaWNCbG9jayBib3RoQXJlTnVtYmVycyA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExC
YXNpY0Jsb2NrIGJ1Y2tldEtleUlzSW50MzIgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotCi0gICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKGxvb3BTdGFy
dCk7Ci0KLSAgICAgICAgTFZhbHVlIG1hcDsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IE1hcE9iamVjdFVzZSkKLSAgICAgICAgICAgIG1hcCA9IGxvd01hcE9iamVj
dChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgZWxzZSBpZiAobV9ub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gU2V0T2JqZWN0VXNlKQotICAgICAgICAgICAgbWFwID0gbG93U2V0T2JqZWN0
KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIExWYWx1ZSBrZXkgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBMVmFsdWUgaGFzaCA9IGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQzKCkpOwotCi0gICAgICAgIExWYWx1ZSBoYXNoTWFwSW1wbCA9IG1fb3V0LmxvYWRQdHIo
bWFwLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmplY3RVc2UgPyBtX2hlYXBz
LkpTTWFwX2hhc2hNYXBJbXBsIDogbV9oZWFwcy5KU1NldF9oYXNoTWFwSW1wbCk7Ci0gICAgICAg
IExWYWx1ZSBidWZmZXIgPSBtX291dC5sb2FkUHRyKGhhc2hNYXBJbXBsLCBtX2hlYXBzLkhhc2hN
YXBJbXBsX2J1ZmZlcik7Ci0gICAgICAgIExWYWx1ZSBtYXNrID0gbV9vdXQuc3ViKG1fb3V0Lmxv
YWQzMihoYXNoTWFwSW1wbCwgbV9oZWFwcy5IYXNoTWFwSW1wbF9jYXBhY2l0eSksIG1fb3V0Lmlu
dDMyT25lKTsKLQotICAgICAgICBWYWx1ZUZyb21CbG9jayBpbmRleFN0YXJ0ID0gbV9vdXQuYW5j
aG9yKGhhc2gpOwotICAgICAgICBtX291dC5qdW1wKGxvb3BTdGFydCk7Ci0KLSAgICAgICAgbV9v
dXQuYXBwZW5kVG8obG9vcFN0YXJ0LCBub3RFbXB0eVZhbHVlKTsKLSAgICAgICAgTFZhbHVlIHVu
bWFza2VkSW5kZXggPSBtX291dC5waGkoSW50MzIsIGluZGV4U3RhcnQpOwotICAgICAgICBMVmFs
dWUgaW5kZXggPSBtX291dC5iaXRBbmQobWFzaywgdW5tYXNrZWRJbmRleCk7Ci0gICAgICAgIExW
YWx1ZSBoYXNoTWFwQnVja2V0ID0gbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRleChtX2hlYXBz
LnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgYnVmZmVyLCBtX291dC56ZXJvRXh0KGluZGV4LCBJ
bnQ2NCksIFNjYWxlRWlnaHQpKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgYnVja2V0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKGhhc2hNYXBCdWNrZXQpOwotICAgICAgICBtX291dC5icmFuY2gobV9v
dXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIoSGFzaE1hcEltcGw8SGFz
aE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjplbXB0eVZhbHVlKCkpKSwKLSAgICAg
ICAgICAgIHVuc3VyZShub3RQcmVzZW50SW5UYWJsZSksIHVuc3VyZShub3RFbXB0eVZhbHVlKSk7
Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RW1wdHlWYWx1ZSwgbm90RGVsZXRlZFZhbHVl
KTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0
LmNvbnN0SW50UHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFL
ZXk+Pjo6ZGVsZXRlZFZhbHVlKCkpKSwKLSAgICAgICAgICAgIHVuc3VyZShsb29wQXJvdW5kKSwg
dW5zdXJlKG5vdERlbGV0ZWRWYWx1ZSkpOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERl
bGV0ZWRWYWx1ZSwgbm90Qml0RXF1YWwpOwotICAgICAgICBMVmFsdWUgYnVja2V0S2V5ID0gbV9v
dXQubG9hZDY0KGhhc2hNYXBCdWNrZXQsIG1faGVhcHMuSGFzaE1hcEJ1Y2tldF9rZXkpOwotICAg
ICAgICAvLyBQZXJmb3JtIE9iamVjdC5pcygpCi0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5l
cXVhbChrZXksIGJ1Y2tldEtleSksCi0gICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwg
dW5zdXJlKG5vdEJpdEVxdWFsKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90Qml0RXF1
YWwsIGJ1Y2tldEtleUlzQ2VsbCk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwoYnVja2V0
S2V5KSwKLSAgICAgICAgICAgIHVuc3VyZShidWNrZXRLZXlJc0NlbGwpLCB1bnN1cmUoYnVja2V0
S2V5Tm90Q2VsbCkpOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1Y2tldEtleUlzQ2VsbCwg
Ym90aEFyZUNlbGxzKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChrZXkpLAotICAgICAg
ICAgICAgdW5zdXJlKGJvdGhBcmVDZWxscyksIHVuc3VyZShsb29wQXJvdW5kKSk7Ci0KLSAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oYm90aEFyZUNlbGxzLCBidWNrZXRLZXlJc1N0cmluZyk7Ci0gICAg
ICAgIG1fb3V0LmJyYW5jaChpc1N0cmluZyhidWNrZXRLZXkpLAotICAgICAgICAgICAgdW5zdXJl
KGJ1Y2tldEtleUlzU3RyaW5nKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKLQotICAgICAgICBtX291
dC5hcHBlbmRUbyhidWNrZXRLZXlJc1N0cmluZywgYnVja2V0S2V5Tm90Q2VsbCk7Ci0gICAgICAg
IG1fb3V0LmJyYW5jaChpc1N0cmluZyhrZXkpLAotICAgICAgICAgICAgdW5zdXJlKHNsb3dQYXRo
KSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhidWNrZXRL
ZXlOb3RDZWxsLCBidWNrZXRLZXlJc051bWJlcik7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc05v
dE51bWJlcihidWNrZXRLZXkpLAotICAgICAgICAgICAgdW5zdXJlKGxvb3BBcm91bmQpLCB1bnN1
cmUoYnVja2V0S2V5SXNOdW1iZXIpKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhidWNrZXRL
ZXlJc051bWJlciwgYm90aEFyZU51bWJlcnMpOwotICAgICAgICBtX291dC5icmFuY2goaXNOb3RO
dW1iZXIoa2V5KSwKLSAgICAgICAgICAgIHVuc3VyZShsb29wQXJvdW5kKSwgdW5zdXJlKGJvdGhB
cmVOdW1iZXJzKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oYm90aEFyZU51bWJlcnMsIGJ1
Y2tldEtleUlzSW50MzIpOwotICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihidWNrZXRL
ZXkpLAotICAgICAgICAgICAgdW5zdXJlKHNsb3dQYXRoKSwgdW5zdXJlKGJ1Y2tldEtleUlzSW50
MzIpKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhidWNrZXRLZXlJc0ludDMyLCBsb29wQXJv
dW5kKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIoa2V5KSwKLSAgICAgICAgICAg
IHVuc3VyZShzbG93UGF0aCksIHVuc3VyZShsb29wQXJvdW5kKSk7Ci0KLSAgICAgICAgbV9vdXQu
YXBwZW5kVG8obG9vcEFyb3VuZCwgc2xvd1BhdGgpOwotICAgICAgICBtX291dC5hZGRJbmNvbWlu
Z1RvUGhpKHVubWFza2VkSW5kZXgsIG1fb3V0LmFuY2hvcihtX291dC5hZGQoaW5kZXgsIG1fb3V0
LmludDMyT25lKSkpOwotICAgICAgICBtX291dC5qdW1wKGxvb3BTdGFydCk7Ci0KLSAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIG5vdFByZXNlbnRJblRhYmxlKTsKLSAgICAgICAgVmFs
dWVGcm9tQmxvY2sgc2xvd1BhdGhSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJU
eXBlKCksCi0gICAgICAgICAgICBtX291dC5vcGVyYXRpb24obV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gTWFwT2JqZWN0VXNlID8gb3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0IDogb3BlcmF0
aW9uSlNTZXRGaW5kQnVja2V0KSwgbV9jYWxsRnJhbWUsIG1hcCwga2V5LCBoYXNoKSk7Ci0gICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhu
b3RQcmVzZW50SW5UYWJsZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sg
bm90UHJlc2VudFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5jb25zdEludFB0cigwKSk7Ci0g
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQotICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0TWFwQnVja2V0KG1fb3V0LnBo
aShwb2ludGVyVHlwZSgpLCBidWNrZXRSZXN1bHQsIHNsb3dQYXRoUmVzdWx0LCBub3RQcmVzZW50
UmVzdWx0KSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlTG9hZEZyb21KU01hcEJ1Y2tldCgp
Ci0gICAgewotICAgICAgICBMVmFsdWUgbWFwQnVja2V0ID0gbG93TWFwQnVja2V0KG1fbm9kZS0+
Y2hpbGQxKCkpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGhhc0J1Y2tldCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0KLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdWNrZXRSZXN1bHQgPSBtX291dC5hbmNo
b3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKLQot
ICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobWFwQnVja2V0LCBtX291dC5jb25zdElu
dFB0cigwKSksCi0gICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGhhc0J1
Y2tldCkpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
aGFzQnVja2V0LCBjb250aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBidWNrZXRS
ZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQubG9hZDY0KG1hcEJ1Y2tldCwgbV9oZWFwcy5IYXNo
TWFwQnVja2V0X3ZhbHVlKSk7Ci0gICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQot
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIG5vQnVja2V0UmVzdWx0LCBidWNrZXRSZXN1bHQp
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBpbGVJc05vbkVtcHR5TWFwQnVja2V0KCkKLSAgICB7
Ci0gICAgICAgIExWYWx1ZSBidWNrZXQgPSBsb3dNYXBCdWNrZXQobV9ub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5ub3RFcXVhbChidWNrZXQsIG1fb3V0LmNv
bnN0SW50UHRyKDApKTsKLSAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOwotICAgIH0KLQogICAg
IHZvaWQgY29tcGlsZUlzT2JqZWN0T3JOdWxsKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CkBAIC0xMDIxNSwyMCArOTk3OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHNw
ZWN1bGF0ZVJlZ0V4cE9iamVjdChlZGdlLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KLQotICAgIExWYWx1ZSBsb3dNYXBPYmplY3QoRWRnZSBlZGdlKQotICAgIHsKLSAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSk7Ci0gICAgICAgIHNwZWN1bGF0ZU1h
cE9iamVjdChlZGdlLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgIExWYWx1ZSBsb3dTZXRPYmplY3QoRWRnZSBlZGdlKQotICAgIHsKLSAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IGxvd0NlbGwoZWRnZSk7Ci0gICAgICAgIHNwZWN1bGF0ZVNldE9iamVjdChlZGdl
LCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KICAgICAKICAgICBMVmFs
dWUgbG93U3RyaW5nKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKQEAgLTEwMzUyLDE3ICsxMDEwMiw2IEBA
IHByaXZhdGU6CiAgICAgICAgIHNldFN0b3JhZ2UoZWRnZS5ub2RlKCksIHJlc3VsdCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotCi0gICAgTFZhbHVlIGxvd01hcEJ1Y2tldChFZGdl
IGVkZ2UpCi0gICAgewotICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9tYXBCdWNr
ZXRWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKLSAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7Ci0gICAgICAgIAotICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gbG93Q2VsbChlZGdlKTsKLSAgICAgICAgc2V0U3RvcmFnZShlZGdlLm5vZGUo
KSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CiAgICAgCiAgICAgTFZh
bHVlIHN0cmljdEludDUyVG9JbnQzMihFZGdlIGVkZ2UsIExWYWx1ZSB2YWx1ZSkKICAgICB7CkBA
IC0xMDY2NiwxMiArMTA0MDUsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFJlZ0V4cE9iamVj
dFVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChlZGdlKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hcE9iamVjdFVzZToKLSAgICAgICAgICAgIHNwZWN1
bGF0ZU1hcE9iamVjdChlZGdlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNl
dE9iamVjdFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZVNldE9iamVjdChlZGdlKTsKLSAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgICAgIHNwZWN1
bGF0ZVN0cmluZyhlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEwMDAsMjggKzEwNzMz
LDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChlZGdl
LCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9Ci0KLSAgICB2b2lkIHNwZWN1bGF0ZU1hcE9iamVjdChF
ZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQotICAgIHsKLSAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNNYXBPYmplY3QsIGlzTm90
VHlwZShjZWxsLCBKU01hcFR5cGUpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNwZWN1bGF0ZU1hcE9i
amVjdChFZGdlIGVkZ2UpCi0gICAgewotICAgICAgICBzcGVjdWxhdGVNYXBPYmplY3QoZWRnZSwg
bG93Q2VsbChlZGdlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzcGVjdWxhdGVTZXRPYmplY3QoRWRn
ZSBlZGdlLCBMVmFsdWUgY2VsbCkKLSAgICB7Ci0gICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAg
ICAgICAgICAganNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjU2V0T2JqZWN0LCBpc05vdFR5
cGUoY2VsbCwgSlNTZXRUeXBlKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzcGVjdWxhdGVTZXRPYmpl
Y3QoRWRnZSBlZGdlKQotICAgIHsKLSAgICAgICAgc3BlY3VsYXRlU2V0T2JqZWN0KGVkZ2UsIGxv
d0NlbGwoZWRnZSkpOwotICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdl
IGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKQEAgLTExNzkwLDEwICsxMTUwMSw2IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBtX3N0b3JhZ2VWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2Rl
VmFsdWUodmFsdWUsIG1faGlnaEJsb2NrKSk7CiAgICAgfQotICAgIHZvaWQgc2V0TWFwQnVja2V0
KE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIG1fbWFwQnVja2V0VmFs
dWVzLnNldChub2RlLCBMb3dlcmVkTm9kZVZhbHVlKHZhbHVlLCBtX2hpZ2hCbG9jaykpOwotICAg
IH0KICAgICB2b2lkIHNldERvdWJsZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUpCiAgICAgewog
ICAgICAgICBtX2RvdWJsZVZhbHVlcy5zZXQobm9kZSwgTG93ZXJlZE5vZGVWYWx1ZSh2YWx1ZSwg
bV9oaWdoQmxvY2spKTsKQEAgLTExODI3LDEwICsxMTUzNCw2IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICBzZXRTdG9yYWdlKG1fbm9kZSwgdmFsdWUpOwogICAgIH0KLSAgICB2b2lkIHNldE1h
cEJ1Y2tldChMVmFsdWUgdmFsdWUpCi0gICAgewotICAgICAgICBzZXRNYXBCdWNrZXQobV9ub2Rl
LCB2YWx1ZSk7Ci0gICAgfQogICAgIHZvaWQgc2V0RG91YmxlKExWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIHNldERvdWJsZShtX25vZGUsIHZhbHVlKTsKQEAgLTEyMDE0LDcgKzExNzE3LDYg
QEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2pzVmFs
dWVWYWx1ZXM7CiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9ib29sZWFu
VmFsdWVzOwogICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1fc3RvcmFnZVZh
bHVlczsKLSAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX21hcEJ1Y2tldFZh
bHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2RvdWJsZVZhbHVl
czsKICAgICAKICAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay4gSXQgcHJldmVudHMgQjMg
ZnJvbSBoYXZpbmcgdG8gZG8gQ1NFIG9uIGxvYWRpbmcgb2YgYXJndW1lbnRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDVjMjllZjVkYWM0
NWYwNWE1MmNlNWYxMWM5Yzg1Yjg3MTg1MmY1ZWIuLjUyMDBjZjUxMzI1N2RjYmExNjdkY2QzMGQ3
Y2EzYWI1ODBhNGY2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKQEAgLTYyNiw1MiArNjI2LDYgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVt
aXREdW1iVmlydHVhbENhbGwoQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgICAgICB9KTsKIH0KIAot
I2lmIFVTRShKU1ZBTFVFNjQpCi12b2lkIEFzc2VtYmx5SGVscGVyczo6d2FuZ3NJbnQ2NEhhc2go
R1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKLXsKLSAgICBHUFJSZWcgaW5w
dXQgPSBpbnB1dEFuZFJlc3VsdDsKLSAgICAvLyBrZXkgKz0gfihrZXkgPDwgMzIpOwotICAgIG1v
dmUoaW5wdXQsIHNjcmF0Y2gpOwotICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigzMiksIHNjcmF0
Y2gpOwotICAgIG5vdDY0KHNjcmF0Y2gpOwotICAgIGFkZDY0KHNjcmF0Y2gsIGlucHV0KTsKLSAg
ICAvLyBrZXkgXj0gKGtleSA+PiAyMik7Ci0gICAgbW92ZShpbnB1dCwgc2NyYXRjaCk7Ci0gICAg
dXJzaGlmdDY0KFRydXN0ZWRJbW0zMigyMiksIHNjcmF0Y2gpOwotICAgIHhvcjY0KHNjcmF0Y2gs
IGlucHV0KTsKLSAgICAvLyBrZXkgKz0gfihrZXkgPDwgMTMpOwotICAgIG1vdmUoaW5wdXQsIHNj
cmF0Y2gpOwotICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxMyksIHNjcmF0Y2gpOwotICAgIG5v
dDY0KHNjcmF0Y2gpOwotICAgIGFkZDY0KHNjcmF0Y2gsIGlucHV0KTsKLSAgICAvLyBrZXkgXj0g
KGtleSA+PiA4KTsKLSAgICBtb3ZlKGlucHV0LCBzY3JhdGNoKTsKLSAgICB1cnNoaWZ0NjQoVHJ1
c3RlZEltbTMyKDgpLCBzY3JhdGNoKTsKLSAgICB4b3I2NChzY3JhdGNoLCBpbnB1dCk7Ci0gICAg
Ly8ga2V5ICs9IChrZXkgPDwgMyk7Ci0gICAgbW92ZShpbnB1dCwgc2NyYXRjaCk7Ci0gICAgbHNo
aWZ0NjQoVHJ1c3RlZEltbTMyKDMpLCBzY3JhdGNoKTsKLSAgICBhZGQ2NChzY3JhdGNoLCBpbnB1
dCk7Ci0gICAgLy8ga2V5IF49IChrZXkgPj4gMTUpOwotICAgIG1vdmUoaW5wdXQsIHNjcmF0Y2gp
OwotICAgIHVyc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTUpLCBzY3JhdGNoKTsKLSAgICB4b3I2NChz
Y3JhdGNoLCBpbnB1dCk7Ci0gICAgLy8ga2V5ICs9IH4oa2V5IDw8IDI3KTsKLSAgICBtb3ZlKGlu
cHV0LCBzY3JhdGNoKTsKLSAgICBsc2hpZnQ2NChUcnVzdGVkSW1tMzIoMjcpLCBzY3JhdGNoKTsK
LSAgICBub3Q2NChzY3JhdGNoKTsKLSAgICBhZGQ2NChzY3JhdGNoLCBpbnB1dCk7Ci0gICAgLy8g
a2V5IF49IChrZXkgPj4gMzEpOwotICAgIG1vdmUoaW5wdXQsIHNjcmF0Y2gpOwotICAgIHVyc2hp
ZnQ2NChUcnVzdGVkSW1tMzIoMzEpLCBzY3JhdGNoKTsKLSAgICB4b3I2NChzY3JhdGNoLCBpbnB1
dCk7Ci0KLSAgICAvLyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkKLSAgICB2
b2lkKiBtYXNrID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KFVJ
TlRfTUFYKSk7Ci0gICAgYW5kNjQoVHJ1c3RlZEltbVB0cihtYXNrKSwgaW5wdXRBbmRSZXN1bHQp
OwotfQotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCmluZGV4IDM0MjdmYzA1ZDczMzc0NjhkM2UwYjQ1NTk2N2Y4OWRlZjliMjdjMmMu
LjQ1OTBhNzMxNDk3YzI2YjZmMmYyMjIzNWY2ZGViM2FlZDE5N2NmZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBBU1NFUlQobV9iYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09
IEpJVENvZGU6Ok5vbmUgfHwgSklUQ29kZTo6aXNCYXNlbGluZUNvZGUobV9iYXNlbGluZUNvZGVC
bG9jay0+aml0VHlwZSgpKSk7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CiAgICAgVk0qIHZtKCkgeyBy
ZXR1cm4gbV92bTsgfQogICAgIEFzc2VtYmxlclR5cGVfVCYgYXNzZW1ibGVyKCkgeyByZXR1cm4g
bV9hc3NlbWJsZXI7IH0KQEAgLTE1MjgsMTAgKzE1MjgsNiBAQCBwdWJsaWM6CiAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTT2JqZWN0PENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xv
d1BhdGgpOwogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCkpLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5m
b09mZnNldCgpKSk7CiAgICAgfQotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB2b2lkIHdhbmdz
SW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwotI2VuZGlm
CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgVk0qIG1fdm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDQ0YWM1NWRlMWNlYTA1NDkwZDU5N2NkYmZlZjJmZGMx
YTVmODEzN2MuLjIxNmFkZjVkODBkOTJjMjk3ODk4YzM2ODFhNzg5ZTYwMWI5ZDljM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yMDUsNyArMjA1LDYg
QEAgdHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FU3RaKShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElP
TiAqQ19KSVRPcGVyYXRpb25fRVN0WlopKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3Qs
IGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlv
bl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogKEpJVF9PUEVSQVRJ
T04gKkNfSklUT3BlcmF0aW9uX0VKc2NJKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgVW5pcXVlZFN0
cmluZ0ltcGwqKTsKLXR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRp
b25fRUNKWikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwog
dHlwZWRlZiBkb3VibGUgKEpJVF9PUEVSQVRJT04gKkRfSklUT3BlcmF0aW9uX0QpKGRvdWJsZSk7
CiB0eXBlZGVmIGRvdWJsZSAoSklUX09QRVJBVElPTiAqRF9KSVRPcGVyYXRpb25fRykoSlNHbG9i
YWxPYmplY3QqKTsKIHR5cGVkZWYgZG91YmxlIChKSVRfT1BFUkFUSU9OICpEX0pJVE9wZXJhdGlv
bl9ERCkoZG91YmxlLCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBjMjBhYTg0ZmRkMDM2OWI2YThhNmZlMDU2MGEzZjY4
M2ZlM2E5Yzk5Li5lNjQ2OTM2ZTBlZjRiMmJmODEyMzcxMmVkYmMwNjNjNTc1MTNlYTU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApAQCAt
MzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogTW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFu
YWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNs
YXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxl
cykKICAgICA6IG1fdm0oJmV4ZWMtPnZtKCkpCi0gICAgLCBtX21vZHVsZVJlY29yZChleGVjLT52
bSgpLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPnZtKCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+bW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSwgc291
cmNlQ29kZSwgZGVjbGFyZWRWYXJpYWJsZXMsIGxleGljYWxWYXJpYWJsZXMpKQorICAgICwgbV9t
b2R1bGVSZWNvcmQoZXhlYy0+dm0oKSwgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZVJlY29yZFN0cnVjdHVyZSgpLCBt
b2R1bGVLZXksIHNvdXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFibGVzLCBsZXhpY2FsVmFyaWFibGVz
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFz
aE1hcEltcGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDExYThmYmFkM2JiNDExMTZmYTA5
MTNhYzUzOGFlMTczMTZhYjMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhhc2hN
YXBJbXBsLmgiCi0KLSNpbmNsdWRlICJDb3BpZWRCbG9ja0lubGluZXMuaCIKLSNpbmNsdWRlICJD
b3B5VmlzaXRvcklubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXRlbXBsYXRlPD4KLWNv
bnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZvIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERh
dGFLZXk+OjpzX2luZm8gPQotICAgIHsgIkhhc2hNYXBCdWNrZXQiLCBudWxscHRyLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+KSB9Owot
Ci10ZW1wbGF0ZTw+Ci1jb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBIYXNoTWFwQnVja2V0
PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+OjpzX2luZm8gPQotICAgIHsgIkhhc2hNYXBCdWNr
ZXQiLCBudWxscHRyLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEhhc2hNYXBCdWNrZXQ8SGFzaE1h
cEJ1Y2tldERhdGFLZXlWYWx1ZT4pIH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBEYXRhPgotdm9p
ZCBIYXNoTWFwQnVja2V0PERhdGE+Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgSGFzaE1hcEJ1Y2tldCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxIYXNoTWFwQnVja2V0Kj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Ci0KLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uZXh0KTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcmV2KTsKLQotICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKERhdGEpICUgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgPT0gMCwgIldl
IGFzc3VtZSB0aGF0IHRoZXNlIGFyZSBmaWxsZWQgd2l0aCBXcml0ZUJhcnJpZXI8VW5rbm93bj4g
bWVtYmVycyBvbmx5LiIpOwotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKGJpdHdpc2VfY2FzdDxX
cml0ZUJhcnJpZXI8VW5rbm93bj4qPigmdGhpc09iamVjdC0+bV9kYXRhKSwgc2l6ZW9mKERhdGEp
IC8gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpOwotfQotCi10ZW1wbGF0ZTw+Ci1jb25z
dCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5Pj46OnNfaW5mbyA9Ci0gICAgeyAiSGFzaE1hcEltcGwiLCBudWxscHRy
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1h
cEJ1Y2tldERhdGFLZXk+PikgfTsKLQotdGVtcGxhdGU8PgotY29uc3QgSlNfRVhQT1JUREFUQSBD
bGFzc0luZm8gSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZh
bHVlPj46OnNfaW5mbyA9Ci0gICAgeyAiSGFzaE1hcEltcGwiLCBudWxscHRyLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFL
ZXlWYWx1ZT4+KSB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcEJ1Y2tldD4KLXZvaWQg
SGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldD46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBIYXNoTWFwSW1wbCogdGhpc09iamVjdCA9IGpz
Q2FzdDxIYXNoTWFwSW1wbCo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOwotCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faGVhZCk7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGFpbCk7Ci0KLSAgICB2aXNpdG9yLmNv
cHlMYXRlcih0aGlzT2JqZWN0LCBNYXBCYWNraW5nU3RvcmVDb3B5VG9rZW4sIHRoaXNPYmplY3Qt
Pm1fYnVmZmVyLmdldCgpLCB0aGlzT2JqZWN0LT5idWZmZXJTaXplSW5CeXRlcygpKTsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBCdWNrZXQ+Ci12b2lkIEhhc2hNYXBJbXBsPEhhc2hN
YXBCdWNrZXQ+Ojpjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCogY2VsbCwgQ29weVZpc2l0b3ImIHZp
c2l0b3IsIENvcHlUb2tlbiB0b2tlbikKLXsKLSAgICBCYXNlOjpjb3B5QmFja2luZ1N0b3JlKGNl
bGwsIHZpc2l0b3IsIHRva2VuKTsKLQotICAgIEhhc2hNYXBJbXBsKiB0aGlzT2JqZWN0ID0ganND
YXN0PEhhc2hNYXBJbXBsKj4oY2VsbCk7Ci0gICAgaWYgKHRva2VuID09IE1hcEJhY2tpbmdTdG9y
ZUNvcHlUb2tlbiAmJiB2aXNpdG9yLmNoZWNrSWZTaG91bGRDb3B5KHRoaXNPYmplY3QtPm1fYnVm
ZmVyLmdldCgpKSkgewotICAgICAgICBIYXNoTWFwQnVmZmVyVHlwZSogb2xkQnVmZmVyID0gdGhp
c09iamVjdC0+bV9idWZmZXIuZ2V0KCk7Ci0gICAgICAgIHNpemVfdCBidWZmZXJTaXplSW5CeXRl
cyA9IHRoaXNPYmplY3QtPmJ1ZmZlclNpemVJbkJ5dGVzKCk7Ci0gICAgICAgIEhhc2hNYXBCdWZm
ZXJUeXBlKiBuZXdCdWZmZXIgPSBzdGF0aWNfY2FzdDxIYXNoTWFwQnVmZmVyVHlwZSo+KHZpc2l0
b3IuYWxsb2NhdGVOZXdTcGFjZShidWZmZXJTaXplSW5CeXRlcykpOwotICAgICAgICBtZW1jcHko
bmV3QnVmZmVyLCBvbGRCdWZmZXIsIGJ1ZmZlclNpemVJbkJ5dGVzKTsKLSAgICAgICAgdGhpc09i
amVjdC0+bV9idWZmZXIuc2V0V2l0aG91dEJhcnJpZXIobmV3QnVmZmVyKTsKLSAgICAgICAgdmlz
aXRvci5kaWRDb3B5KG9sZEJ1ZmZlciwgYnVmZmVyU2l6ZUluQnl0ZXMpOwotICAgIH0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IYXNoTWFwSW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1h
cEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY1OGNmMzVhNDMzMjQwMzli
NmJhYmZhY2NlYWZjMzljNzAxYTgxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0cnVj
dCBIYXNoTWFwQnVja2V0RGF0YUtleSB7Ci0gICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGtleTsK
LX07Ci0KLXN0cnVjdCBIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlIHsKLSAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4ga2V5OwotICAgIFdyaXRlQmFycmllcjxVbmtub3duPiB2YWx1ZTsKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBEYXRhPgotY2xhc3MgSGFzaE1hcEJ1Y2tldCA6IHB1YmxpYyBK
U0NlbGwgewotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCA9IERhdGE+Ci0gICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
c2FtZTxULCBIYXNoTWFwQnVja2V0RGF0YUtleT46OnZhbHVlLCBTdHJ1Y3R1cmUqPjo6dHlwZSBz
ZWxlY3RTdHJ1Y3R1cmUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHZtLmhhc2hNYXBC
dWNrZXRTZXRTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQgPSBEYXRhPgotICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8VCwgSGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46OnZhbHVlLCBTdHJ1Y3R1cmUqPjo6dHlw
ZSBzZWxlY3RTdHJ1Y3R1cmUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHZtLmhhc2hN
YXBCdWNrZXRNYXBTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgSGFzaE1hcEJ1Y2tldCogY3JlYXRlKFZNJiB2bSkKLSAgICB7
Ci0gICAgICAgIEhhc2hNYXBCdWNrZXQqIGJ1Y2tldCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEhhc2hNYXBCdWNrZXQ8RGF0YT4+KHZtLmhlYXApKSBIYXNoTWFwQnVja2V0KHZtLCBzZWxl
Y3RTdHJ1Y3R1cmUodm0pKTsKLSAgICAgICAgYnVja2V0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgICAgIEFTU0VSVCghYnVja2V0LT5uZXh0KCkpOwotICAgICAgICBBU1NFUlQoIWJ1Y2tldC0+
cHJldigpKTsKLSAgICAgICAgcmV0dXJuIGJ1Y2tldDsKLSAgICB9Ci0KLSAgICBIYXNoTWFwQnVj
a2V0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQotICAgIHsgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldE5leHQoVk0mIHZt
LCBIYXNoTWFwQnVja2V0KiBidWNrZXQpCi0gICAgewotICAgICAgICBtX25leHQuc2V0KHZtLCB0
aGlzLCBidWNrZXQpOwotICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0UHJldihWTSYg
dm0sIEhhc2hNYXBCdWNrZXQqIGJ1Y2tldCkKLSAgICB7Ci0gICAgICAgIG1fcHJldi5zZXQodm0s
IHRoaXMsIGJ1Y2tldCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldEtleShW
TSYgdm0sIEpTVmFsdWUga2V5KQotICAgIHsKLSAgICAgICAgbV9kYXRhLmtleS5zZXQodm0sIHRo
aXMsIGtleSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBEYXRhPgotICAg
IEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIEhh
c2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+Ojp2YWx1ZT46OnR5cGUgc2V0VmFsdWUoVk0mIHZtLCBK
U1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgbV9kYXRhLnZhbHVlLnNldCh2bSwgdGhpcywg
dmFsdWUpOwotICAgIH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IERhdGE+Ci0gICAgQUxX
QVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgSGFzaE1h
cEJ1Y2tldERhdGFLZXk+Ojp2YWx1ZT46OnR5cGUgc2V0VmFsdWUoVk0mLCBKU1ZhbHVlKSB7IH0K
LQotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBrZXkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
a2V5LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IERhdGE+Ci0gICAgQUxX
QVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgSGFzaE1h
cEJ1Y2tldERhdGFLZXlWYWx1ZT46OnZhbHVlLCBKU1ZhbHVlPjo6dHlwZSB2YWx1ZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9kYXRhLnZhbHVlLmdldCgpOwotICAgIH0KLQotICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLQotICAg
IEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldCogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4
dC5nZXQoKTsgfQotICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldCogcHJldigpIGNvbnN0
IHsgcmV0dXJuIG1fcHJldi5nZXQoKTsgfQotCi0gICAgQUxXQVlTX0lOTElORSBib29sIGRlbGV0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlbGV0ZWQ7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0RGVsZXRlZChib29sIGRlbGV0ZWQpIHsgbV9kZWxldGVkID0gZGVsZXRlZDsgfQotCi0gICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZktleSgpCi0gICAgewotICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEhhc2hNYXBCdWNrZXQsIG1fZGF0YSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRGF0
YSwga2V5KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IERhdGE+Ci0gICAg
c3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBIYXNoTWFwQnVj
a2V0RGF0YUtleVZhbHVlPjo6dmFsdWUsIHB0cmRpZmZfdD46OnR5cGUgb2Zmc2V0T2ZWYWx1ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEhhc2hNYXBCdWNrZXQsIG1f
ZGF0YSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRGF0YSwgdmFsdWUpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBEYXRhIG1fZGF0YTsKLSAgICBXcml0ZUJhcnJpZXI8SGFzaE1hcEJ1Y2tldD4gbV9uZXh0
OwotICAgIFdyaXRlQmFycmllcjxIYXNoTWFwQnVja2V0PiBtX3ByZXY7Ci0gICAgYm9vbCBtX2Rl
bGV0ZWQgeyBmYWxzZSB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEJ1Y2tldFR5cGU+Ci1j
bGFzcyBIYXNoTWFwQnVmZmVyIHsKLXB1YmxpYzoKLSAgICBIYXNoTWFwQnVmZmVyKCkgPSBkZWxl
dGU7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHVpbnQzMl90IGNhcGFjaXR5
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhcGFjaXR5ICogc2l6ZW9mKEJ1Y2tldFR5cGUqKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIEJ1Y2tldFR5cGUqKiBidWZmZXIoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxCdWNrZXRUeXBlKio+KHRoaXMpOwot
ICAgIH0KLQotICAgIHN0YXRpYyBIYXNoTWFwQnVmZmVyKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIHVpbnQzMl90IGNhcGFjaXR5KQotICAgIHsKLSAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICBzaXplX3Qg
YWxsb2NhdGlvblNpemUgPSBIYXNoTWFwQnVmZmVyOjphbGxvY2F0aW9uU2l6ZShjYXBhY2l0eSk7
Ci0gICAgICAgIHZvaWQqIGRhdGEgPSBudWxscHRyOwotICAgICAgICBEZWZlckdDRm9yQVdoaWxl
IGRlZmVyKHZtLmhlYXApOwotICAgICAgICBpZiAoIXZtLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdl
KG93bmVyLCBhbGxvY2F0aW9uU2l6ZSwgJmRhdGEpKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBIYXNoTWFwQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxI
YXNoTWFwQnVmZmVyKj4oZGF0YSk7Ci0gICAgICAgIG1lbXNldChidWZmZXIsIC0xLCBhbGxvY2F0
aW9uU2l6ZSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7Ci0gICAgfQotfTsKLQotQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBhcmVLZXlzRXF1YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGEs
IEpTVmFsdWUgYikKLXsKLSAgICAvLyBXZSB3YW50ICswIGFuZCAtMCB0byBiZSBjb21wYXJlZCB0
byB0cnVlIGhlcmUuIHNhbWVWYWx1ZSgpIGl0c2VsZiBkb2Vzbid0Ci0gICAgLy8gZ3VhcmFudGVl
IHRoYXQsIGhvd2V2ZXIsIHdlIG5vcm1hbGl6ZSBhbGwga2V5cyBiZWZvcmUgY29tcGFyaW5nIGFu
ZCBzdG9yaW5nCi0gICAgLy8gdGhlbSBpbiB0aGUgbWFwLiBUaGUgbm9ybWFsaXphdGlvbiB3aWxs
IGNvbnZlcnQgLTAuMCBhbmQgMC4wIHRvIHRoZSBpbnRlZ2VyCi0gICAgLy8gcmVwcmVzZW50YXRp
b24gZm9yIDAuCi0gICAgcmV0dXJuIHNhbWVWYWx1ZShleGVjLCBhLCBiKTsKLX0KLQotQUxXQVlT
X0lOTElORSBKU1ZhbHVlIG5vcm1hbGl6ZU1hcEtleShKU1ZhbHVlIGtleSkKLXsKLSAgICBpZiAo
IWtleS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4ga2V5OwotCi0gICAgaWYgKGtleS5pc0lu
dDMyKCkpCi0gICAgICAgIHJldHVybiBrZXk7Ci0KLSAgICBkb3VibGUgZCA9IGtleS5hc0RvdWJs
ZSgpOwotICAgIGlmIChzdGQ6OmlzbmFuKGQpKQotICAgICAgICByZXR1cm4ga2V5OwotCi0gICAg
aW50IGkgPSBzdGF0aWNfY2FzdDxpbnQ+KGQpOwotICAgIGlmIChpID09IGQpIHsKLSAgICAgICAg
Ly8gV2hlbiBhIGtleSBpcyAtMCwgd2UgY29udmVydCBpdCB0byBwb3NpdGl2ZSB6ZXJvLgotICAg
ICAgICAvLyBXaGVuIGEga2V5IGlzIHRoZSBkb3VibGUgcmVwcmVzZW50YXRpb24gZm9yIGFuIGlu
dGVnZXIsIHdlIGNvbnZlcnQgaXQgdG8gYW4gaW50ZWdlci4KLSAgICAgICAgcmV0dXJuIGpzTnVt
YmVyKGkpOwotICAgIH0KLSAgICAvLyBUaGlzIG1lYW5zIGtleSBpcyBkZWZpbml0ZWx5IG5vdCBu
ZWdhdGl2ZSB6ZXJvLCBhbmQgaXQncyBkZWZpbml0ZWx5IG5vdCBhIGRvdWJsZSByZXByZXNlbnRh
dGlvbiBvZiBhbiBpbnRlZ2VyLiAKLSAgICByZXR1cm4ga2V5OwotfQotCi1BTFdBWVNfSU5MSU5F
IHVpbnQzMl90IGpzTWFwSGFzaChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB2YWx1
ZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vcm1hbGl6ZU1hcEtleSh2YWx1ZSkgPT0g
dmFsdWUsICJXZSBleHBlY3Qgbm9ybWFsaXplZCB2YWx1ZXMgZmxvd2luZyBpbnRvIHRoaXMgZnVu
Y3Rpb24uIik7Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0K
LSAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBKU1N0cmluZyogc3RyaW5nID0g
YXNTdHJpbmcodmFsdWUpOwotICAgICAgICBjb25zdCBTdHJpbmcmIHd0ZlN0cmluZyA9IHN0cmlu
Zy0+dmFsdWUoZXhlYyk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkp
Ci0gICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7Ci0gICAgICAgIHJldHVybiB3dGZTdHJpbmcu
aW1wbCgpLT5oYXNoKCk7Ci0gICAgfQotCi0gICAgYXV0byB3YW5nc0ludDY0SGFzaCA9IFtdICh1
aW50NjRfdCBrZXkpIC0+IHVpbnQzMl90IHsKLSAgICAgICAga2V5ICs9IH4oa2V5IDw8IDMyKTsK
LSAgICAgICAga2V5IF49IChrZXkgPj4gMjIpOwotICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTMp
OwotICAgICAgICBrZXkgXj0gKGtleSA+PiA4KTsKLSAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7
Ci0gICAgICAgIGtleSBePSAoa2V5ID4+IDE1KTsKLSAgICAgICAga2V5ICs9IH4oa2V5IDw8IDI3
KTsKLSAgICAgICAga2V5IF49IChrZXkgPj4gMzEpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGtleSk7Ci0gICAgfTsKLSAgICB1aW50NjRfdCByYXdWYWx1ZSA9IEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHdhbmdzSW50NjRIYXNoKHJhd1ZhbHVlKTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBCdWNrZXRUeXBlPgotY2xhc3MgSGFzaE1h
cEltcGwgOiBwdWJsaWMgSlNDZWxsIHsKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHR5
cGVkZWYgSGFzaE1hcEJ1ZmZlcjxIYXNoTWFwQnVja2V0VHlwZT4gSGFzaE1hcEJ1ZmZlclR5cGU7
Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IEhhc2hNYXBCdWNrZXRUeXBlPgotICAgIHN0
YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgSGFzaE1hcEJ1Y2tl
dDxIYXNoTWFwQnVja2V0RGF0YUtleT4+Ojp2YWx1ZSwgU3RydWN0dXJlKj46OnR5cGUgc2VsZWN0
U3RydWN0dXJlKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB2bS5oYXNoTWFwSW1wbFNl
dFN0cnVjdHVyZS5nZXQoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IEhh
c2hNYXBCdWNrZXRUeXBlPgotICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3NhbWU8VCwgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlPj46OnZh
bHVlLCBTdHJ1Y3R1cmUqPjo6dHlwZSBzZWxlY3RTdHJ1Y3R1cmUoVk0mIHZtKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHZtLmhhc2hNYXBJbXBsTWFwU3RydWN0dXJlLmdldCgpOwotICAgIH0KLQot
cHVibGljOgotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIEhhc2hNYXBJbXBsKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0pCi0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+OjpvZmZzZXRPZktleSgp
ID09IEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46Om9mZnNldE9mS2V5
KCksICJXZSBhc3N1bWUgdGhpcyB0byBiZSB0cnVlIGluIHRoZSBERkcgYW5kIEZUTCBKSVQuIik7
Ci0KLSAgICAgICAgSGFzaE1hcEltcGwqIGltcGwgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxIYXNoTWFwSW1wbD4odm0uaGVhcCkpIEhhc2hNYXBJbXBsKHZtLCBzZWxlY3RTdHJ1Y3R1cmUo
dm0pKTsKLSAgICAgICAgaW1wbC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0pOwotICAgICAgICBy
ZXR1cm4gaW1wbDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7Ci0gICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0Nl
bGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7Ci0KLSAgICBIYXNoTWFwSW1wbChWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAg
ICAgICAgLCBtX3NpemUoMCkKLSAgICAgICAgLCBtX2RlbGV0ZUNvdW50KDApCi0gICAgICAgICwg
bV9jYXBhY2l0eSg0KQotICAgIHsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIEhhc2hNYXBC
dWNrZXRUeXBlKiogYnVmZmVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZl
ci5nZXQoKS0+YnVmZmVyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotCi0g
ICAgICAgIG1ha2VBbmRTZXROZXdCdWZmZXIoZXhlYywgdm0pOwotICAgICAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1f
aGVhZC5zZXQodm0sIHRoaXMsIEhhc2hNYXBCdWNrZXRUeXBlOjpjcmVhdGUodm0pKTsKLSAgICAg
ICAgbV90YWlsLnNldCh2bSwgdGhpcywgSGFzaE1hcEJ1Y2tldFR5cGU6OmNyZWF0ZSh2bSkpOwot
Ci0gICAgICAgIG1faGVhZC0+c2V0TmV4dCh2bSwgbV90YWlsLmdldCgpKTsKLSAgICAgICAgbV90
YWlsLT5zZXRQcmV2KHZtLCBtX2hlYWQuZ2V0KCkpOwotICAgICAgICBtX2hlYWQtPnNldERlbGV0
ZWQodHJ1ZSk7Ci0gICAgICAgIG1fdGFpbC0+c2V0RGVsZXRlZCh0cnVlKTsKLQotICAgIH0KLQot
ICAgIHN0YXRpYyBIYXNoTWFwQnVja2V0VHlwZSogZW1wdHlWYWx1ZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PEhhc2hNYXBCdWNrZXRUeXBlKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigtMSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNF
bXB0eShIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJ1
Y2tldCA9PSBlbXB0eVZhbHVlKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIEhhc2hNYXBCdWNrZXRU
eXBlKiBkZWxldGVkVmFsdWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxI
YXNoTWFwQnVja2V0VHlwZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oLTMpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzRGVsZXRlZChIYXNoTWFwQnVja2V0VHlw
ZSogYnVja2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJ1Y2tldCA9PSBkZWxldGVkVmFsdWUo
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIEhhc2hNYXBCdWNrZXRUeXBlKiogZmluZEJ1
Y2tldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQotICAgIHsKLSAgICAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgICAgICBrZXkgPSBub3JtYWxpemVNYXBLZXkoa2V5KTsKLSAgICAgICAgdWludDMy
X3QgaGFzaCA9IGpzTWFwSGFzaChleGVjLCB2bSwga2V5KTsKLSAgICAgICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICByZXR1cm4gZmluZEJ1Y2tldChleGVjLCBrZXksIGhhc2gpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqKiBmaW5kQnVja2V0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBrZXksIHVpbnQzMl90IGhhc2gpCi0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKG5vcm1hbGl6ZU1hcEtleShrZXkpID09IGtleSwgIldlIGV4cGVjdCBub3JtYWxpemVk
IHZhbHVlcyBmbG93aW5nIGludG8gdGhpcyBmdW5jdGlvbi4iKTsKLSAgICAgICAgcmV0dXJuIGZp
bmRCdWNrZXRBbHJlYWR5SGFzaGVkQW5kTm9ybWFsaXplZChleGVjLCBrZXksIGhhc2gpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGtleSkKLSAgICB7Ci0gICAgICAgIGlmIChIYXNoTWFwQnVja2V0VHlwZSoqIGJ1Y2tldCA9
IGZpbmRCdWNrZXQoZXhlYywga2V5KSkKLSAgICAgICAgICAgIHJldHVybiAoKmJ1Y2tldCktPnZh
bHVlKCk7Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBoYXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhIWZpbmRCdWNrZXQoZXhlYywga2V5KTsKLSAgICB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgYWRkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlKCkpCi0gICAgewotICAgICAgICBrZXkgPSBub3JtYWxpemVNYXBLZXko
a2V5KTsKLQotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICAgICAgY29uc3QgdWludDMyX3QgbWFz
ayA9IG1fY2FwYWNpdHkgLSAxOwotICAgICAgICB1aW50MzJfdCBpbmRleCA9IGpzTWFwSGFzaChl
eGVjLCB2bSwga2V5KSAmIG1hc2s7Ci0gICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiog
YnVmZmVyID0gdGhpcy0+YnVmZmVyKCk7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNr
ZXQgPSBidWZmZXJbaW5kZXhdOwotICAgICAgICB3aGlsZSAoIWlzRW1wdHkoYnVja2V0KSkgewot
ICAgICAgICAgICAgaWYgKCFpc0RlbGV0ZWQoYnVja2V0KSAmJiBhcmVLZXlzRXF1YWwoZXhlYywg
a2V5LCBidWNrZXQtPmtleSgpKSkgewotICAgICAgICAgICAgICAgIGJ1Y2tldC0+c2V0VmFsdWUo
dm0sIHZhbHVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpbmRleCA9IChpbmRleCArIDEpICYgbWFzazsKLSAgICAgICAgICAgIGJ1Y2tldCA9
IGJ1ZmZlcltpbmRleF07Ci0gICAgICAgIH0KLQotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSog
bmV3RW50cnkgPSBtX3RhaWwuZ2V0KCk7Ci0gICAgICAgIGJ1ZmZlcltpbmRleF0gPSBuZXdFbnRy
eTsKLSAgICAgICAgbmV3RW50cnktPnNldEtleSh2bSwga2V5KTsKLSAgICAgICAgbmV3RW50cnkt
PnNldFZhbHVlKHZtLCB2YWx1ZSk7Ci0gICAgICAgIG5ld0VudHJ5LT5zZXREZWxldGVkKGZhbHNl
KTsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIG5ld1RhaWwgPSBIYXNoTWFwQnVja2V0VHlw
ZTo6Y3JlYXRlKHZtKTsKLSAgICAgICAgbV90YWlsLnNldCh2bSwgdGhpcywgbmV3VGFpbCk7Ci0g
ICAgICAgIG5ld1RhaWwtPnNldFByZXYodm0sIG5ld0VudHJ5KTsKLSAgICAgICAgbmV3VGFpbC0+
c2V0RGVsZXRlZCh0cnVlKTsKLSAgICAgICAgbmV3RW50cnktPnNldE5leHQodm0sIG5ld1RhaWwp
OwotICAgICAgICB1aW50MzJfdCBuZXdTaXplID0gKyttX3NpemU7Ci0gICAgICAgIGlmICgyKm5l
d1NpemUgPiBtX2NhcGFjaXR5KQotICAgICAgICAgICAgcmVoYXNoKGV4ZWMpOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCByZW1vdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtl
eSkKLSAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiogYnVja2V0ID0gZmluZEJ1Y2tl
dChleGVjLCBrZXkpOwotICAgICAgICBpZiAoIWJ1Y2tldCkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBIYXNoTWFwQnVj
a2V0VHlwZSogaW1wbCA9ICpidWNrZXQ7Ci0gICAgICAgIGltcGwtPm5leHQoKS0+c2V0UHJldih2
bSwgaW1wbC0+cHJldigpKTsKLSAgICAgICAgaW1wbC0+cHJldigpLT5zZXROZXh0KHZtLCBpbXBs
LT5uZXh0KCkpOwotICAgICAgICBpbXBsLT5zZXREZWxldGVkKHRydWUpOwotCi0gICAgICAgICpi
dWNrZXQgPSBkZWxldGVkVmFsdWUoKTsKLQotICAgICAgICBtX2RlbGV0ZUNvdW50Kys7Ci0KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB1aW50MzJfdCBz
aXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc2l6ZSA+PSBtX2Rl
bGV0ZUNvdW50KTsKLSAgICAgICAgcmV0dXJuIG1fc2l6ZSAtIG1fZGVsZXRlQ291bnQ7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFyKEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7
Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIG1fc2l6ZSA9IDA7Ci0gICAg
ICAgIG1fZGVsZXRlQ291bnQgPSAwOwotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogaGVhZCA9
IG1faGVhZC5nZXQoKTsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IG1faGVh
ZC0+bmV4dCgpOwotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogdGFpbCA9IG1fdGFpbC5nZXQo
KTsKLSAgICAgICAgd2hpbGUgKGJ1Y2tldCAhPSB0YWlsKSB7Ci0gICAgICAgICAgICBIYXNoTWFw
QnVja2V0VHlwZSogbmV4dCA9IGJ1Y2tldC0+bmV4dCgpOwotICAgICAgICAgICAgLy8gV2UgcmVz
dGFydCBlYWNoIGl0ZXJhdG9yIGJ5IHBvaW50aW5nIGl0IHRvIHRoZSBoZWFkIG9mIHRoZSBsaXN0
LgotICAgICAgICAgICAgYnVja2V0LT5zZXROZXh0KHZtLCBoZWFkKTsKLSAgICAgICAgICAgIGJ1
Y2tldCA9IG5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgbV9oZWFkLT5zZXROZXh0KHZtLCBtX3Rh
aWwuZ2V0KCkpOwotICAgICAgICBtX3RhaWwtPnNldFByZXYodm0sIG1faGVhZC5nZXQoKSk7Ci0g
ICAgICAgIG1fY2FwYWNpdHkgPSA0OwotICAgICAgICBtYWtlQW5kU2V0TmV3QnVmZmVyKGV4ZWMs
IHZtKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBidWZmZXJTaXplSW5CeXRl
cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9jYXBhY2l0eSAqIHNpemVvZihIYXNo
TWFwQnVja2V0VHlwZSopOwotICAgIH0KLQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZC
dWZmZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihIYXNoTWFwSW1w
bDxIYXNoTWFwQnVja2V0VHlwZT4sIG1fYnVmZmVyKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mQ2FwYWNpdHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0VHlwZT4sIG1fY2FwYWNpdHkpOwotICAg
IH0KLQotICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBoZWFkKCkgeyByZXR1cm4gbV9oZWFkLmdldCgp
OyB9Ci0gICAgSGFzaE1hcEJ1Y2tldFR5cGUqIHRhaWwoKSB7IHJldHVybiBtX3RhaWwuZ2V0KCk7
IH0KLQotICAgIHNpemVfdCBhcHByb3hpbWF0ZVNpemUoKSBjb25zdAotICAgIHsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBzaXplb2YoSGFzaE1hcEltcGwpOwotICAgICAgICBzaXplICs9IGJ1ZmZl
clNpemVJbkJ5dGVzKCk7Ci0gICAgICAgIHNpemUgKz0gMiAqIHNpemVvZihIYXNoTWFwQnVja2V0
VHlwZSk7IC8vIEhlYWQgYW5kIHRhaWwgbWVtYmVycy4KLSAgICAgICAgc2l6ZSArPSAobV9kZWxl
dGVDb3VudCArIG1fc2l6ZSkgKiBzaXplb2YoSGFzaE1hcEJ1Y2tldFR5cGUpOyAvLyBOdW1iZXIg
b2YgbWVtYmVycyBvbiB0aGUgbGlzdC4KLSAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqKiBmaW5kQnVja2V0
QWxyZWFkeUhhc2hlZEFuZE5vcm1hbGl6ZWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwg
dWludDMyX3QgaGFzaCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IG1hc2sgPSBtX2Nh
cGFjaXR5IC0gMTsKLSAgICAgICAgdWludDMyX3QgaW5kZXggPSBoYXNoICYgbWFzazsKLSAgICAg
ICAgSGFzaE1hcEJ1Y2tldFR5cGUqKiBidWZmZXIgPSB0aGlzLT5idWZmZXIoKTsKLSAgICAgICAg
SGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IGJ1ZmZlcltpbmRleF07Ci0KLSAgICAgICAgd2hp
bGUgKCFpc0VtcHR5KGJ1Y2tldCkpIHsKLSAgICAgICAgICAgIGlmICghaXNEZWxldGVkKGJ1Y2tl
dCkgJiYgYXJlS2V5c0VxdWFsKGV4ZWMsIGtleSwgYnVja2V0LT5rZXkoKSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGJ1ZmZlciArIGluZGV4OwotICAgICAgICAgICAgaW5kZXggPSAoaW5kZXgg
KyAxKSAmIG1hc2s7Ci0gICAgICAgICAgICBidWNrZXQgPSBidWZmZXJbaW5kZXhdOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHZvaWQgcmVoYXNoKEV4
ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgICAgICBtX2Nh
cGFjaXR5ID0gbV9jYXBhY2l0eSAqIDI7Ci0gICAgICAgIG1ha2VBbmRTZXROZXdCdWZmZXIoZXhl
Yywgdm0pOwotICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBpdGVyID0gbV9oZWFk
LT5uZXh0KCk7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBlbmQgPSBtX3RhaWwuZ2V0KCk7
Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IG1hc2sgPSBtX2NhcGFjaXR5IC0gMTsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIShtX2NhcGFjaXR5ICYgKG1fY2FwYWNpdHkgLSAxKSkpOwotICAgICAg
ICBIYXNoTWFwQnVja2V0VHlwZSoqIGJ1ZmZlciA9IHRoaXMtPmJ1ZmZlcigpOwotICAgICAgICB3
aGlsZSAoaXRlciAhPSBlbmQpIHsKLSAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0ganNNYXBI
YXNoKGV4ZWMsIHZtLCBpdGVyLT5rZXkoKSkgJiBtYXNrOwotICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghc2NvcGUuZXhjZXB0aW9uKCksICJBbGwga2V5cyBzaG91bGQgYWxyZWFkeSBi
ZSBoYXNoZWQgYmVmb3JlLCBzbyB0aGlzIHNob3VsZCBub3QgdGhyb3cgYmVjYXVzZSBpdCB3b24n
dCByZXNvbHZlIHJvcGVzLiIpOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEhhc2hN
YXBCdWNrZXRUeXBlKiBidWNrZXQgPSBidWZmZXJbaW5kZXhdOwotICAgICAgICAgICAgICAgIHdo
aWxlICghaXNFbXB0eShidWNrZXQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gKGlu
ZGV4ICsgMSkgJiBtYXNrOwotICAgICAgICAgICAgICAgICAgICBidWNrZXQgPSBidWZmZXJbaW5k
ZXhdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ1ZmZl
cltpbmRleF0gPSBpdGVyOwotICAgICAgICAgICAgaXRlciA9IGl0ZXItPm5leHQoKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHZvaWQgbWFrZUFuZFNldE5ld0J1ZmZlcihFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghKG1fY2FwYWNpdHkgJiAobV9jYXBh
Y2l0eSAtIDEpKSk7Ci0KLSAgICAgICAgSGFzaE1hcEJ1ZmZlclR5cGUqIGJ1ZmZlciA9IEhhc2hN
YXBCdWZmZXJUeXBlOjpjcmVhdGUoZXhlYywgdm0sIHRoaXMsIG1fY2FwYWNpdHkpOwotICAgICAg
ICBpZiAoVU5MSUtFTFkoIWJ1ZmZlcikpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
bV9idWZmZXIuc2V0KHZtLCB0aGlzLCBidWZmZXIpOwotICAgICAgICBpZiAoIUFTU0VSVF9ESVNB
QkxFRCkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FwYWNpdHk7
IGkrKykKLSAgICAgICAgICAgICAgICBBU1NFUlQoaXNFbXB0eSh0aGlzLT5idWZmZXIoKVtpXSkp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVyPEhhc2hNYXBCdWNrZXRUeXBl
PiBtX2hlYWQ7Ci0gICAgV3JpdGVCYXJyaWVyPEhhc2hNYXBCdWNrZXRUeXBlPiBtX3RhaWw7Ci0g
ICAgQ29weUJhcnJpZXI8SGFzaE1hcEJ1ZmZlclR5cGU+IG1fYnVmZmVyOwotICAgIHVpbnQzMl90
IG1fc2l6ZTsKLSAgICB1aW50MzJfdCBtX2RlbGV0ZUNvdW50OwotICAgIHVpbnQzMl90IG1fY2Fw
YWNpdHk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgKaW5kZXggZDk4ODExMDZlNGIzOGQzZjk1YmU0YzIxOWJhMjcwMTMy
MWYzNWEzYi4uNGEwNzkzOTk3N2NkYTkyMWJhNzNkZTc3MGIyYWVmYzQxNTcyZWU1YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTYyLDkgKzYyLDYgQEAg
ZW51bSBKU19FWFBPUlRfUFJJVkFURSBJbnRyaW5zaWMgewogICAgIElzUmVnRXhwT2JqZWN0SW50
cmluc2ljLAogICAgIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMsCiAgICAgQm91bmRUaGlzTm9B
cmdzRnVuY3Rpb25DYWxsSW50cmluc2ljLAotICAgIEpTTWFwR2V0SW50cmluc2ljLAotICAgIEpT
TWFwSGFzSW50cmluc2ljLAotICAgIEpTU2V0SGFzSW50cmluc2ljLAogCiAgICAgLy8gR2V0dGVy
IGludHJpbnNpY3MuCiAgICAgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA5ZjJlN2MzYmJlMzgzY2UyMGUw
OGRlMjEzYWQ3ODY1OTU5YTUyOTcxLi5hNGY2ZjY4ZmQ2MzhkMmY0NGY4NGY3MjY1OWI1MTE2MTE1
NTIxNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBA
IC02MDYsOSArNjA2LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU0NlbGwqIGEs
IGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gSlNWYWx1ZShhKSAhPQogCiBib29sIGlzVGhpc1Zh
bHVlQWx0ZXJlZChjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBKU09iamVjdCogYmFzZU9iamVjdCk7
CiAKLS8vIFNlZSBzZWN0aW9uIDcuMi45OiBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIv
I3NlYy1zYW1ldmFsdWUKLWJvb2wgc2FtZVZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgYSwgSlNW
YWx1ZSBiKTsKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU0NKU1ZhbHVlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CmluZGV4IDYyZjZjNDA2YTZkNjhhMDA1NzI0ODBiNWRjZDNjMWRiYjQ3NmU0ZTcuLjc3OWQ2MDNh
NzY3ODY2ODBiMTMzOTBlZWRmMjc0ZmMxMmVmYTMzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMTA1OCwyMiArMTA1OCw2
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc1RoaXNWYWx1ZUFsdGVyZWQoY29uc3QgUHV0UHJvcGVy
dHlTbG90JiBzbG90LCBKU09iamVjdCogYmFzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFNl
ZSBzZWN0aW9uIDcuMi45OiBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zYW1l
dmFsdWUKLUFMV0FZU19JTkxJTkUgYm9vbCBzYW1lVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGEsIEpTVmFsdWUgYikKLXsKLSAgICBpZiAoIWEuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGEsIGIpOwotICAgIGlmICghYi5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZG91YmxlIHggPSBhLmFzTnVtYmVyKCk7
Ci0gICAgZG91YmxlIHkgPSBiLmFzTnVtYmVyKCk7Ci0gICAgYm9vbCB4SXNOYU4gPSBzdGQ6Omlz
bmFuKHgpOwotICAgIGJvb2wgeUlzTmFOID0gc3RkOjppc25hbih5KTsKLSAgICBpZiAoeElzTmFO
IHx8IHlJc05hTikKLSAgICAgICAgcmV0dXJuIHhJc05hTiAmJiB5SXNOYU47Ci0gICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oeCkgPT0gYml0d2lzZV9jYXN0PHVpbnQ2NF90Pih5KTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1ZhbHVlSW5saW5lc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggZTEyMmFkNmZiNWNlMGI3Yzc4M2I5MmUzMzI1ZGY3ZmNlOGIzMGE0Ny4uMTZmYWRmYzRlZWMx
OWU1ZGU3OThhZDM0MDEwMzRmNDE3Yzk1MmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dl
ck5hbWUgIyMgQ29uc3RydWN0CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPlJlZmxlY3QsIHJlZmxlY3RPYmplY3QsIERvbnRFbnVtKTsKIAogICAg
IG1fbW9kdWxlTG9hZGVyU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVMb2FkZXI6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9tb2R1bGVMb2FkZXJQcm90b3R5cGUuZ2V0KCkpKTsK
LSAgICBtX21vZHVsZUxvYWRlci5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTG9hZGVyOjpjcmVhdGUo
Z2xvYmFsRXhlYygpLCB2bSwgdGhpcywgbV9tb2R1bGVMb2FkZXJTdHJ1Y3R1cmUuZ2V0KCkpKTsK
KyAgICBtX21vZHVsZUxvYWRlci5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTG9hZGVyOjpjcmVhdGUo
dm0sIHRoaXMsIG1fbW9kdWxlTG9hZGVyU3RydWN0dXJlLmdldCgpKSk7CiAgICAgaWYgKE9wdGlv
bnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyKCkpCiAgICAgICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1fbW9kdWxlTG9hZGVy
LmdldCgpLCBEb250RW51bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNw
cAppbmRleCBkZWVlNjQ3MTc5OTFkMTE5ZWYzY2M3OGZjZDUyZDdjZTRkYTk2YTg5Li45ZjUzNGJj
MmY3YjkxNjdhM2E0Y2M0YjU4YWNmNDQyYjdkN2E3MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNYXAuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiwxNSArMjYsNzggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU01hcC5oIgogCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUg
IkNvcGllZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIk1hcERhdGFJbmxpbmVzLmgiCisj
aW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTTWFwOjpzX2luZm8g
PSB7ICJNYXAiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTWFwKSB9
OwogCit2b2lkIEpTTWFwOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU01hcCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01hcCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTTWFwOjp+
SlNNYXAoKTsKK30KKworc2l6ZV90IEpTTWFwOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBKU01hcCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01hcCo+KGNlbGwpOworICAgIHNp
emVfdCBtYXBEYXRhU2l6ZSA9IHRoaXNPYmplY3QtPm1fbWFwRGF0YS5jYXBhY2l0eUluQnl0ZXMo
KTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIG1hcERhdGFTaXplOwor
fQorCiBTdHJpbmcgSlNNYXA6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0
ZSopCiB7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0Iik7CiB9CiAKK3ZvaWQgSlNN
YXA6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworICAgIGpzQ2FzdDxKU01h
cCo+KGNlbGwpLT5tX21hcERhdGEudmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKK30KKwor
dm9pZCBKU01hcDo6Y29weUJhY2tpbmdTdG9yZShKU0NlbGwqIGNlbGwsIENvcHlWaXNpdG9yJiB2
aXNpdG9yLCBDb3B5VG9rZW4gdG9rZW4pCit7CisgICAgQmFzZTo6Y29weUJhY2tpbmdTdG9yZShj
ZWxsLCB2aXNpdG9yLCB0b2tlbik7CisgICAganNDYXN0PEpTTWFwKj4oY2VsbCktPm1fbWFwRGF0
YS5jb3B5QmFja2luZ1N0b3JlKHZpc2l0b3IsIHRva2VuKTsKK30KKworYm9vbCBKU01hcDo6aGFz
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7CisgICAgcmV0dXJuIG1fbWFwRGF0YS5j
b250YWlucyhleGVjLCBrZXkpOworfQorCitzaXplX3QgSlNNYXA6OnNpemUoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIHJldHVybiBtX21hcERhdGEuc2l6ZShleGVjKTsKK30KKworSlNWYWx1ZSBK
U01hcDo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCit7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBtX21hcERhdGEuZ2V0KGV4ZWMsIGtleSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
SlNNYXA6OnNldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHZhbHVlKQor
eworICAgIG1fbWFwRGF0YS5zZXQoZXhlYywgdGhpcywga2V5LCB2YWx1ZSk7Cit9CisKK3ZvaWQg
SlNNYXA6OmNsZWFyKEV4ZWNTdGF0ZSopCit7CisgICAgbV9tYXBEYXRhLmNsZWFyKCk7Cit9CisK
K2Jvb2wgSlNNYXA6OnJlbW92ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQoreworICAg
IHJldHVybiBtX21hcERhdGEucmVtb3ZlKGV4ZWMsIGtleSk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01hcC5oCmluZGV4IGVlMTQ5ZDE4N2NjYjFlN2I1Nzc2YzgwYzI0ZjZl
Y2RiMTc0NzZlOTAuLjI3OTBmNjlmNDE0MWUzNzU5NjI3MTZiNjJmM2RlMjk4NGNjMTRhZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNDkgKzI2LDEwOCBAQAogI2lm
bmRlZiBKU01hcF9oCiAjZGVmaW5lIEpTTWFwX2gKIAorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJNYXBCYXNlLmgiCisj
aW5jbHVkZSAiTWFwRGF0YS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNNYXBJdGVy
YXRvcjsKIAotY2xhc3MgSlNNYXAgOiBwdWJsaWMgTWFwQmFzZTxIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5VmFsdWU+PiB7Ci0gICAgdHlwZWRlZiBNYXBCYXNlPEhhc2hNYXBCdWNr
ZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT4+IEJhc2U7CitjbGFzcyBKU01hcCA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0
aWJsZU9iamVjdCBCYXNlOworCiAgICAgZnJpZW5kIGNsYXNzIEpTTWFwSXRlcmF0b3I7CiAKKyAg
ICAvLyBPdXIgbWFya2luZyBmdW5jdGlvbnMgZXhwZWN0IEVudHJ5IHRvIG1haW50YWluIHRoaXMg
bGF5b3V0LCBhbmQgaGF2ZSBhbGwKKyAgICAvLyBmaWVsZHMgYmUgV3JpdGVCYXJyaWVyPFVua25v
d24+CisgICAgY2xhc3MgRW50cnkgeworICAgIHByaXZhdGU6CisgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX2tleTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fdmFsdWU7
CisKKyAgICBwdWJsaWM6CisgICAgICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYga2V5
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fa2V5OworICAgICAgICB9
CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiB2YWx1ZSgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9rZXkpOworICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmQoJm1fdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRLZXkoVk0mIHZt
LCBjb25zdCBKU0NlbGwqIG93bmVyLCBKU1ZhbHVlIGtleSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9rZXkuc2V0KHZtLCBvd25lciwga2V5KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
c2V0S2V5V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlIGtleSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9rZXkuc2V0V2l0aG91dFdyaXRlQmFycmllcihrZXkpOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBzZXRWYWx1ZShWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTVmFsdWUg
dmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fdmFsdWUuc2V0KHZtLCBvd25lciwgdmFs
dWUpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhcigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fa2V5LmNsZWFyKCk7CisgICAgICAgICAgICBtX3ZhbHVlLmNsZWFyKCk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgdHlwZWRlZiBNYXBEYXRhSW1wbDxFbnRyeSwgSlNNYXBJdGVy
YXRvcj4gTWFwRGF0YTsKKwogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTTWFwVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTTWFwKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0
YXRpYyBKU01hcCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewog
ICAgICAgICBKU01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01h
cD4odm0uaGVhcCkpIEpTTWFwKHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24oZXhlYywgdm0pOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGdldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQorICAgIHN0YXRpYyBK
U01hcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gbV9tYXAtPmdldChleGVjLCBrZXkpOworICAgICAgICByZXR1cm4g
Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgbV9tYXAtPmFkZChleGVjLCBrZXksIHZhbHVlKTsKLSAgICB9CisgICAg
Ym9vbCBoYXMoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgc2l6ZV90IHNpemUoRXhlY1N0YXRl
Kik7CisgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgdmFsdWUp
OworICAgIHZvaWQgY2xlYXIoRXhlY1N0YXRlKik7CisgICAgYm9vbCByZW1vdmUoRXhlY1N0YXRl
KiwgSlNWYWx1ZSk7CiAKIHByaXZhdGU6CiAgICAgSlNNYXAoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9tYXBE
YXRhKHZtLCB0aGlzKQogICAgIHsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgc3Rh
dGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tl
bik7CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBFeGVj
U3RhdGUqKTsKKworICAgIE1hcERhdGEgbV9tYXBEYXRhOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAppbmRleCA4MWFhZGZlYTJi
OTU5M2IyMzY5ODE4ZjI3YmEwMGU2YWUxMjk2Y2YyLi4yYzM4OGEyZDFmY2UwMTc4ODZjNjVhNjBk
MTUwNDdmMTZkMjkwYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01hcEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01hcEl0ZXJhdG9yLmNwcApAQCAtMzgsNyArMzgsNiBAQCB2b2lkIEpTTWFwSXRlcmF0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNNYXAqIGl0ZXJhdGVkT2JqZWN0KQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBtX21hcC5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2Jq
ZWN0KTsKLSAgICBzZXRJdGVyYXRvcih2bSwgbV9tYXAtPmltcGwoKS0+aGVhZCgpKTsKIH0KIAog
dm9pZCBKU01hcEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCkBAIC00Nyw3ICs0Niw2IEBAIHZvaWQgSlNNYXBJdGVyYXRvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21hcCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcik7CiB9
CiAKIEpTVmFsdWUgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlUGFpcihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgdmFsdWUpCkBAIC02MSw5ICs1OSw4IEBAIEpTVmFsdWUg
SlNNYXBJdGVyYXRvcjo6Y3JlYXRlUGFpcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBr
ZXksIEpTVmFsdWUgdmFsCiAKIEpTTWFwSXRlcmF0b3IqIEpTTWFwSXRlcmF0b3I6OmNsb25lKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8gY2xv
bmUgPSBKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgbV9tYXAuZ2V0KCksIG1fa2luZCk7Ci0gICAg
Y2xvbmUtPnNldEl0ZXJhdG9yKHZtLCBtX2l0ZXIuZ2V0KCkpOworICAgIGF1dG8gY2xvbmUgPSBK
U01hcEl0ZXJhdG9yOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBtX21hcC5nZXQoKSwgbV9raW5kKTsKKyAg
ICBjbG9uZS0+bV9pdGVyYXRvciA9IG1faXRlcmF0b3I7CiAgICAgcmV0dXJuIGNsb25lOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmgKaW5kZXgg
YmJkZGM5NWI1ZGZjYzNhODU1MGYyNjFmMTE5OGI3NWI5OGYxZWQ3ZC4uN2U1NDAzZGJkZThjZTEz
NjEzMTA2NzgwYTk2NDQ4YzM0YmQzOWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWFwSXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSlNNYXBJdGVyYXRvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKLSAgICB0
eXBlZGVmIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT4gSGFzaE1hcEJ1
Y2tldFR5cGU7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAK
QEAgLTUyLDYyICs1MSw1MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAg
ICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIEhhc2hNYXBCdWNrZXRUeXBlKiBhZHZhbmNlSXRlcihF
eGVjU3RhdGUqIGV4ZWMpCisgICAgYm9vbCBuZXh0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1Zh
bHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBwcmV2ID0gbV9p
dGVyLmdldCgpOwotICAgICAgICBpZiAoIXByZXYpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IG1faXRlci0+bmV4dCgpOwot
ICAgICAgICB3aGlsZSAoYnVja2V0ICYmIGJ1Y2tldC0+ZGVsZXRlZCgpKSB7Ci0gICAgICAgICAg
ICBwcmV2ID0gYnVja2V0OwotICAgICAgICAgICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCFidWNrZXQpIHsKLSAgICAgICAgICAgIHNldEl0ZXJhdG9y
KGV4ZWMtPnZtKCksIG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgc2V0SXRlcmF0b3IoZXhlYy0+dm0oKSwgYnVja2V0KTsgLy8gV2Uga2Vl
cCBtX2l0ZXIgb24gdGhlIGxhc3QgdmFsdWUgc2luY2UgdGhlIGZpcnN0IHRoaW5nIHdlIGRvIGlu
IHRoaXMgZnVuY3Rpb24gaXMgY2FsbCBuZXh0KCkuCi0gICAgICAgIHJldHVybiBidWNrZXQ7Ci0g
ICAgfQotICAgIGJvb2wgbmV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUmIHZhbHVlKQotICAg
IHsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGV4ZWMp
OwotICAgICAgICBpZiAoIWJ1Y2tldCkKKyAgICAgICAgV1RGOjpLZXlWYWx1ZVBhaXI8SlNWYWx1
ZSwgSlNWYWx1ZT4gcGFpcjsKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yLm5leHQocGFpcikpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKG1fa2luZCA9PSBJdGVyYXRl
VmFsdWUpCi0gICAgICAgICAgICB2YWx1ZSA9IGJ1Y2tldC0+dmFsdWUoKTsKKyAgICAgICAgICAg
IHZhbHVlID0gcGFpci52YWx1ZTsKICAgICAgICAgZWxzZSBpZiAobV9raW5kID09IEl0ZXJhdGVL
ZXkpCi0gICAgICAgICAgICB2YWx1ZSA9IGJ1Y2tldC0+a2V5KCk7CisgICAgICAgICAgICB2YWx1
ZSA9IHBhaXIua2V5OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1ZSA9IGNyZWF0ZVBh
aXIoZXhlYywgYnVja2V0LT5rZXkoKSwgYnVja2V0LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIHZh
bHVlID0gY3JlYXRlUGFpcihjYWxsRnJhbWUsIHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBuZXh0S2V5VmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlJiBrZXksIEpTVmFsdWUmIHZhbHVlKQorICAgIGJvb2wgbmV4dEtleVZh
bHVlKEpTVmFsdWUmIGtleSwgSlNWYWx1ZSYgdmFsdWUpCiAgICAgewotICAgICAgICBIYXNoTWFw
QnVja2V0VHlwZSogYnVja2V0ID0gYWR2YW5jZUl0ZXIoZXhlYyk7Ci0gICAgICAgIGlmICghYnVj
a2V0KQorICAgICAgICBXVEY6OktleVZhbHVlUGFpcjxKU1ZhbHVlLCBKU1ZhbHVlPiBwYWlyOwor
ICAgICAgICBpZiAoIW1faXRlcmF0b3IubmV4dChwYWlyKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICBrZXkgPSBidWNrZXQtPmtleSgpOwotICAgICAgICB2YWx1ZSA9IGJ1
Y2tldC0+dmFsdWUoKTsKKyAgICAgICAga2V5ID0gcGFpci5rZXk7CisgICAgICAgIHZhbHVlID0g
cGFpci52YWx1ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgdm9pZCBmaW5p
c2goKQorICAgIHsKKyAgICAgICAgbV9pdGVyYXRvci5maW5pc2goKTsKKyAgICB9CisKICAgICBJ
dGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBKU1ZhbHVl
IGl0ZXJhdGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX21hcC5nZXQoKTsgfQogICAgIEpTTWFw
SXRlcmF0b3IqIGNsb25lKEV4ZWNTdGF0ZSopOwogCisgICAgSlNNYXA6Ok1hcERhdGE6Okl0ZXJh
dG9yRGF0YSogaXRlcmF0b3JEYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiAmbV9pdGVyYXRv
cjsKKyAgICB9CisKIHByaXZhdGU6Ci0gICAgSlNNYXBJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU01hcCosIEl0ZXJhdGlvbktpbmQga2luZCkKKyAgICBKU01hcEl0ZXJh
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTWFwKiBpdGVyYXRlZE9iamVjdCwg
SXRlcmF0aW9uS2luZCBraW5kKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAg
ICAgLCBtX2l0ZXJhdG9yKGl0ZXJhdGVkT2JqZWN0LT5tX21hcERhdGEuY3JlYXRlSXRlcmF0b3JE
YXRhKHRoaXMpKQogICAgICAgICAsIG1fa2luZChraW5kKQotICAgIHsgfQotCi0gICAgdm9pZCBz
ZXRJdGVyYXRvcihWTSYgdm0sIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQpCiAgICAgewotICAg
ICAgICBtX2l0ZXIuc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBidWNrZXQpOwogICAgIH0KIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU01hcCopOwpAQCAt
MTE1LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX21hcDsK
LSAgICBXcml0ZUJhcnJpZXI8SGFzaE1hcEJ1Y2tldFR5cGU+IG1faXRlcjsKKyAgICBKU01hcDo6
TWFwRGF0YTo6SXRlcmF0b3JEYXRhIG1faXRlcmF0b3I7CiAgICAgSXRlcmF0aW9uS2luZCBtX2tp
bmQ7CiB9OwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTTWFwSXRl
cmF0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuY3BwCmluZGV4IGJiYTE5YjFlYzY4NGM4ZTBhMzFmZmRiMTNjNjkwMTY4YzdiZGY2YWIuLjEw
OTBmOGMxODM4NTllY2Y2MDM4YjU2ZjNkZWEyNzk1NGVkNjVmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTU1LDE0ICs1NSwx
MSBAQCBKU01vZHVsZUxvYWRlcjo6SlNNb2R1bGVMb2FkZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBKU01vZHVsZUxvYWRlcjo6ZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lk
IEpTTW9kdWxlTG9hZGVyOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9i
amVjdC0+bWFwU3RydWN0dXJlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJl
Z2lzdHJ5IiksIG1hcCk7CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgInJlZ2lzdHJ5IiksIEpTTWFwOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bWFwU3Ry
dWN0dXJlKCkpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKaW5kZXggZGFhZmM1YjA4ZGM5ZTQwZTE0
YzFjZGE1OTUyMzU2NzFjMDVlM2ViNi4uNGVmY2MwNDMwNjQ5NGNjMGRkYWFiMGNjYmNjMDVjZGMw
ZDMwMDA4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxv
YWRlci5oCkBAIC00NywxMCArNDcsMTAgQEAgcHVibGljOgogICAgICAgICBSZWFkeSA9IDYsCiAg
ICAgfTsKIAotICAgIHN0YXRpYyBKU01vZHVsZUxvYWRlciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICBzdGF0aWMgSlNNb2R1bGVMb2FkZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAg
ICAgSlNNb2R1bGVMb2FkZXIqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
TW9kdWxlTG9hZGVyPih2bS5oZWFwKSkgSlNNb2R1bGVMb2FkZXIodm0sIHN0cnVjdHVyZSk7Ci0g
ICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0sIGdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IHJldHVybiBvYmplY3Q7CiAgICAgfQogCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBK
U1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJl
Y29yZCwgSlNWYWx1ZSBpbml0aWF0b3IpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqLCBWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAppbmRleCA2Mzk0NzQyMjg5ODI4MzcwMjBjMTVkZjc1NGUzMDliYmYxMDhmYmFiLi5lZWE4NDM1
OWMzZGIzYWEyOWEyYmNlMjVkYWRiZmZlOTFiYWUyMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC00NCwxNyArNDQsMTQgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVj
dC0+SlNNb2R1bGVSZWNvcmQ6On5KU01vZHVsZVJlY29yZCgpOwogfQogCi12b2lkIEpTTW9kdWxl
UmVjb3JkOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSkKK3ZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgicmVnaXN0cnlF
bnRyeSIpKSwganNVbmRlZmluZWQoKSk7CiAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJldmFsdWF0ZWQiKSksIGpzQm9vbGVhbihmYWxz
ZSkpOwogCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
TWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QoKS0+bWFwU3Ry
dWN0dXJlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7Ci0gICAg
bV9kZXBlbmRlbmNpZXNNYXAuc2V0KHZtLCB0aGlzLCBtYXApOworICAgIG1fZGVwZW5kZW5jaWVz
TWFwLnNldCh2bSwgdGhpcywgSlNNYXA6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCktPm1hcFN0
cnVjdHVyZSgpKSk7CiAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgQVNDSUlMaXRlcmFsKCJkZXBlbmRlbmNpZXNNYXAiKSksIG1fZGVwZW5kZW5jaWVzTWFwLmdl
dCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmgKaW5kZXggMWU1NGY4YzUyNDQ3YWVmOTc3ODdjMWZjYjQ0Y2QwMTJjOGQzYjM5My4uYzQy
NDMwOTAzMDIzOTViNTE1ZTEzYzFlYzA0YjM1NDlmNjBmMDZhYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC04NywxMCArODcsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBt
b2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKQorICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVj
bGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJs
ZXMpCiAgICAgewogICAgICAgICBKU01vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0uaGVhcCkpIEpTTW9kdWxlUmVjb3Jk
KHZtLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSwgc291cmNlQ29kZSwgZGVjbGFyZWRWYXJpYWJsZXMs
IGxleGljYWxWYXJpYWJsZXMpOwotICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZXhl
Yywgdm0pOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBy
ZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBWTSYpOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiBnZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2V0LmNwcAppbmRleCA3Njc2MWIyZTU0YTJkYmE5ODU3NmJkMDNjZjU1ODNm
ZTQ2OWYxYTc4Li4zZGVjZTU5YTczN2JkNmVkZjVkNTVkMzNiMjA0MTRhZDczOGNlYzFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxNSArMjYsNzAgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1NldC5oIgogCi0jaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkNvcGllZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIk1h
cERhdGFJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTU2V0OjpzX2luZm8gPSB7ICJTZXQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTU2V0KSB9OwogCit2b2lkIEpTU2V0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBKU1NldCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1NldCo+KGNlbGwpOworICAgIHRo
aXNPYmplY3QtPkpTU2V0Ojp+SlNTZXQoKTsKK30KKwogU3RyaW5nIEpTU2V0Ojp0b1N0cmluZ05h
bWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqKQogewogICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIk9iamVjdCIpOwogfQogCitzaXplX3QgSlNTZXQ6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBj
ZWxsKQoreworICAgIEpTU2V0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU2V0Kj4oY2VsbCk7Cisg
ICAgc2l6ZV90IHNldERhdGFTaXplID0gdGhpc09iamVjdC0+bV9zZXREYXRhLmNhcGFjaXR5SW5C
eXRlcygpOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgc2V0RGF0YVNp
emU7Cit9CisKK3ZvaWQgSlNTZXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3Ip
OworICAgIGpzQ2FzdDxKU1NldCo+KGNlbGwpLT5tX3NldERhdGEudmlzaXRDaGlsZHJlbihjZWxs
LCB2aXNpdG9yKTsKK30KKwordm9pZCBKU1NldDo6Y29weUJhY2tpbmdTdG9yZShKU0NlbGwqIGNl
bGwsIENvcHlWaXNpdG9yJiB2aXNpdG9yLCBDb3B5VG9rZW4gdG9rZW4pCit7CisgICAgQmFzZTo6
Y29weUJhY2tpbmdTdG9yZShjZWxsLCB2aXNpdG9yLCB0b2tlbik7CisgICAganNDYXN0PEpTU2V0
Kj4oY2VsbCktPm1fc2V0RGF0YS5jb3B5QmFja2luZ1N0b3JlKHZpc2l0b3IsIHRva2VuKTsKK30K
KworYm9vbCBKU1NldDo6aGFzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gbV9zZXREYXRhLmNvbnRhaW5zKGV4ZWMsIHZhbHVlKTsKK30KKworc2l6ZV90IEpT
U2V0OjpzaXplKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gbV9zZXREYXRhLnNpemUo
ZXhlYyk7Cit9CisKK3ZvaWQgSlNTZXQ6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgbV9zZXREYXRhLnNldChleGVjLCB0aGlzLCB2YWx1ZSwgdmFsdWUpOworfQor
Cit2b2lkIEpTU2V0OjpjbGVhcihFeGVjU3RhdGUqKQoreworICAgIG1fc2V0RGF0YS5jbGVhcigp
OworfQorCitib29sIEpTU2V0OjpyZW1vdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIHJldHVybiBtX3NldERhdGEucmVtb3ZlKGV4ZWMsIHZhbHVlKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmgKaW5kZXggYjQ1OGE0NGVmNTJhMWQyMjQ4
NDBjZTUwZWZlNGRkMTQwM2I2MjBmZC4uODgwNWM0ZTYzYmRmODQ0NDk2YmQ1ODU1NmEzNzYxMTgz
MDY2ODIzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0NSArMjYs
MTAzIEBACiAjaWZuZGVmIEpTU2V0X2gKICNkZWZpbmUgSlNTZXRfaAogCisjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIk1h
cEJhc2UuaCIKKyNpbmNsdWRlICJNYXBEYXRhLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBKU1NldEl0ZXJhdG9yOwogCi1jbGFzcyBKU1NldCA6IHB1YmxpYyBNYXBCYXNlPEhhc2hNYXBC
dWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+PiB7Ci0gICAgdHlwZWRlZiBNYXBCYXNlPEhhc2hN
YXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+PiBCYXNlOworY2xhc3MgSlNTZXQgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKIAogICAgIGZyaWVuZCBjbGFzcyBKU1NldEl0ZXJhdG9yOwogCisg
ICAgLy8gT3VyIG1hcmtpbmcgZnVuY3Rpb25zIGV4cGVjdCBFbnRyeSB0byBtYWludGFpbiB0aGlz
IGxheW91dCwgYW5kIGhhdmUgYWxsCisgICAgLy8gZmllbGRzIGJlIFdyaXRlQmFycmllcjxVbmtu
b3duPgorICAgIGNsYXNzIEVudHJ5IHsKKyAgICBwcml2YXRlOgorICAgICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gbV9rZXk7CisKKyAgICBwdWJsaWM6CisgICAgICAgIGNvbnN0IFdyaXRlQmFy
cmllcjxVbmtub3duPiYga2V5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IG1fa2V5OworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+
JiB2YWx1ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2tleTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKKyAgICAgICAgeworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fa2V5KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgc2V0S2V5KFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwg
SlNWYWx1ZSBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fa2V5LnNldCh2bSwgb3duZXIs
IGtleSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldEtleVdpdGhvdXRXcml0ZUJhcnJp
ZXIoSlNWYWx1ZSBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fa2V5LnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoa2V5KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0VmFsdWUoVk0m
LCBjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGNsZWFyKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9rZXkuY2xlYXIoKTsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICB0eXBlZGVmIE1hcERhdGFJbXBsPEVudHJ5LCBKU1NldEl0
ZXJhdG9yPiBTZXREYXRhOworCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNTZXRU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNTZXQqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
c3RhdGljIEpTU2V0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
CiAgICAgICAgIEpTU2V0KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
U2V0Pih2bS5oZWFwKSkgSlNTZXQodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIGluc3RhbmNlLT5m
aW5pc2hDcmVhdGlvbihleGVjLCB2bSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgYWRkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCisgICAgc3RhdGljIEpT
U2V0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIG1fbWFwLT5hZGQoZXhlYywga2V5KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShl
eGVjLT52bSgpLCBzdHJ1Y3R1cmUpOwogICAgIH0KIAorICAgIGJvb2wgaGFzKEV4ZWNTdGF0ZSos
IEpTVmFsdWUpOworICAgIHNpemVfdCBzaXplKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYWRkKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIHZvaWQgY2xlYXIoRXhl
Y1N0YXRlKik7CisgICAgYm9vbCByZW1vdmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisKIHByaXZh
dGU6CiAgICAgSlNTZXQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9zZXREYXRhKHZtLCB0aGlzKQogICAgIHsK
ICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyBz
aXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZvaWQgY29weUJhY2tpbmdT
dG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7CiAgICAgc3RhdGljIFN0cmlu
ZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKKworICAgIFNldERh
dGEgbV9zZXREYXRhOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NldEl0ZXJhdG9yLmNwcAppbmRleCA4Mjg3MWJlN2M3NmE2NThhY2RmZjY1MDRmMmU1ZjAw
OGNhNjBmNzM1Li4yZjJkZWI1OGVkZDc0N2I5NGY3ODc0ZGVkZGY3NzRkYmFhYWNlZWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcApAQCAt
MzgsNyArMzgsNiBAQCB2b2lkIEpTU2V0SXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNTZXQqIGl0ZXJhdGVkT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICBtX3NldC5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBzZXRJdGVyYXRv
cih2bSwgbV9zZXQtPmltcGwoKS0+aGVhZCgpKTsKIH0KIAogdm9pZCBKU1NldEl0ZXJhdG9yOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC00Nyw3
ICs0Niw2IEBAIHZvaWQgSlNTZXRJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NldCk7Ci0gICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcik7CiB9CiAKIEpTVmFsdWUgSlNTZXRJdGVy
YXRvcjo6Y3JlYXRlUGFpcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBrZXksIEpTVmFs
dWUgdmFsdWUpCkBAIC02MSw5ICs1OSw4IEBAIEpTVmFsdWUgSlNTZXRJdGVyYXRvcjo6Y3JlYXRl
UGFpcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgdmFsCiAKIEpT
U2V0SXRlcmF0b3IqIEpTU2V0SXRlcmF0b3I6OmNsb25lKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8gY2xvbmUgPSBKU1NldEl0ZXJhdG9yOjpj
cmVhdGUodm0sIGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c2V0SXRlcmF0b3JTdHJ1
Y3R1cmUoKSwgbV9zZXQuZ2V0KCksIG1fa2luZCk7Ci0gICAgY2xvbmUtPnNldEl0ZXJhdG9yKHZt
LCBtX2l0ZXIuZ2V0KCkpOworICAgIGF1dG8gY2xvbmUgPSBKU1NldEl0ZXJhdG9yOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0
cnVjdHVyZSgpLCBtX3NldC5nZXQoKSwgbV9raW5kKTsKKyAgICBjbG9uZS0+bV9pdGVyYXRvciA9
IG1faXRlcmF0b3I7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmgKaW5kZXggNzgxYWZjYjhlMmEyNTM3NGU2NzUw
YTdjYTFhZDZhYTMwMDA3NjkxMS4uMjA5N2ZkYmNjZjM2NDBmNzJkNTQ0NDUwMTI3YTQzNTdkMzUz
MzM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3Iu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNSw3ICszNSw2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNTZXRJdGVyYXRv
ciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKLSAgICB0eXBlZGVmIEhhc2hNYXBCdWNrZXQ8
SGFzaE1hcEJ1Y2tldERhdGFLZXk+IEhhc2hNYXBCdWNrZXRUeXBlOwogcHVibGljOgogICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCkBAIC01Myw1MSArNTIsMzggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBI
YXNoTWFwQnVja2V0VHlwZSogYWR2YW5jZUl0ZXIoRXhlY1N0YXRlKiBleGVjKQorICAgIGJvb2wg
bmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiAgICAgewotICAgICAg
ICBIYXNoTWFwQnVja2V0VHlwZSogcHJldiA9IG1faXRlci5nZXQoKTsKLSAgICAgICAgaWYgKCFw
cmV2KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRU
eXBlKiBidWNrZXQgPSBtX2l0ZXItPm5leHQoKTsKLSAgICAgICAgd2hpbGUgKGJ1Y2tldCAmJiBi
dWNrZXQtPmRlbGV0ZWQoKSkgewotICAgICAgICAgICAgcHJldiA9IGJ1Y2tldDsKLSAgICAgICAg
ICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghYnVj
a2V0KSB7Ci0gICAgICAgICAgICBzZXRJdGVyYXRvcihleGVjLT52bSgpLCBudWxscHRyKTsKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHNldEl0ZXJhdG9y
KGV4ZWMtPnZtKCksIGJ1Y2tldCk7IC8vIFdlIGtlZXAgbV9pdGVyIG9uIHRoZSBsYXN0IHZhbHVl
IHNpbmNlIHRoZSBmaXJzdCB0aGluZyB3ZSBkbyBpbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGwgbmV4
dCgpLgotICAgICAgICByZXR1cm4gYnVja2V0OwotICAgIH0KLQotICAgIGJvb2wgbmV4dChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUmIHZhbHVlKQotICAgIHsKLSAgICAgICAgSGFzaE1hcEJ1Y2tl
dFR5cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGV4ZWMpOwotICAgICAgICBpZiAoIWJ1Y2tldCkK
KyAgICAgICAgV1RGOjpLZXlWYWx1ZVBhaXI8SlNWYWx1ZSwgSlNWYWx1ZT4gcGFpcjsKKyAgICAg
ICAgaWYgKCFtX2l0ZXJhdG9yLm5leHQocGFpcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KICAgICAgICAgaWYgKG1fa2luZCA9PSBJdGVyYXRlVmFsdWUgfHwgbV9raW5kID09IEl0ZXJh
dGVLZXkpCi0gICAgICAgICAgICB2YWx1ZSA9IGJ1Y2tldC0+a2V5KCk7CisgICAgICAgICAgICB2
YWx1ZSA9IHBhaXIua2V5OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1ZSA9IGNyZWF0
ZVBhaXIoZXhlYywgYnVja2V0LT5rZXkoKSwgYnVja2V0LT5rZXkoKSk7CisgICAgICAgICAgICB2
YWx1ZSA9IGNyZWF0ZVBhaXIoY2FsbEZyYW1lLCBwYWlyLmtleSwgcGFpci5rZXkpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIGZpbmlzaCgpCisgICAgeworICAgICAg
ICBtX2l0ZXJhdG9yLmZpbmlzaCgpOworICAgIH0KKwogICAgIEl0ZXJhdGlvbktpbmQga2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIEpTVmFsdWUgaXRlcmF0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgSlNTZXRJdGVyYXRvciogY2xvbmUoRXhl
Y1N0YXRlKik7CiAKLXByaXZhdGU6Ci0gICAgSlNTZXRJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU1NldCosIEl0ZXJhdGlvbktpbmQga2luZCkKLSAgICAgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCi0gICAgICAgICwgbV9raW5kKGtpbmQpCisgICAgSlNTZXQ6OlNldERh
dGE6Okl0ZXJhdG9yRGF0YSogaXRlcmF0b3JEYXRhKCkKICAgICB7CisgICAgICAgIHJldHVybiAm
bV9pdGVyYXRvcjsKICAgICB9CiAKLSAgICB2b2lkIHNldEl0ZXJhdG9yKFZNJiB2bSwgSGFzaE1h
cEJ1Y2tldFR5cGUqIGJ1Y2tldCkKK3ByaXZhdGU6CisgICAgSlNTZXRJdGVyYXRvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1NldCogaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktp
bmQga2luZCkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9pdGVy
YXRvcihpdGVyYXRlZE9iamVjdC0+bV9zZXREYXRhLmNyZWF0ZUl0ZXJhdG9yRGF0YSh0aGlzKSkK
KyAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICB7Ci0gICAgICAgIG1faXRlci5zZXRNYXlCZU51
bGwodm0sIHRoaXMsIGJ1Y2tldCk7IAogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1NldCopOwpAQCAtMTA1LDcgKzkxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICBXcml0ZUJhcnJpZXI8SlNTZXQ+IG1fc2V0OwotICAgIFdyaXRlQmFycmllcjxIYXNo
TWFwQnVja2V0VHlwZT4gbV9pdGVyOworICAgIEpTU2V0OjpTZXREYXRhOjpJdGVyYXRvckRhdGEg
bV9pdGVyYXRvcjsKICAgICBJdGVyYXRpb25LaW5kIG1fa2luZDsKIH07CiBTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNTZXRJdGVyYXRvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDllNGZlOTAwOTJmMzRkYTRjN2RhYmM0NDlhOTE4
OWQ4NGJhYTQ5OTMuLjU0ZDRjZWJmMGY5NWQ1ZjRmZmUzMjVhMGM4ZGJlNTZiMjFkZDAyZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC04MiwxMCArODIsOCBAQCBl
bnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIE1vZHVsZUVudmlyb25tZW50VHlwZSwKICAgICBS
ZWdFeHBPYmplY3RUeXBlLAogICAgIFByb3h5T2JqZWN0VHlwZSwKLSAgICBKU01hcFR5cGUsCi0g
ICAgSlNTZXRUeXBlLAogCi0gICAgTGFzdEpTQ09iamVjdFR5cGUgPSBKU1NldFR5cGUsCisgICAg
TGFzdEpTQ09iamVjdFR5cGUgPSBQcm94eU9iamVjdFR5cGUsCiB9OwogCiBDT01QSUxFX0FTU0VS
VChzaXplb2YoSlNUeXBlKSA9PSBzaXplb2YodWludDhfdCksIHNpemVvZl9qc3R5cGVfaXNfb25l
X2J5dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQmFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBCYXNlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRkNTg3ZjlmM2U2NDBhMDFiYjRjZDY4ODZjZGIwNzUx
NjEyZGU5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBCYXNlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1hcEJhc2UuaCIKLQotI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEhhc2hNYXBCdWNrZXRUeXBlPgotdm9pZCBNYXBCYXNlPEhhc2hNYXBCdWNrZXRU
eXBlPjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQot
ewotICAgIE1hcEJhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxNYXBCYXNlKj4oY2VsbCk7
Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXApOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
SGFzaE1hcEJ1Y2tldFR5cGU+Ci1zaXplX3QgTWFwQmFzZTxIYXNoTWFwQnVja2V0VHlwZT46OmVz
dGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQotewotICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRT
aXplKGNlbGwpICsgc3RhdGljX2Nhc3Q8TWFwQmFzZSo+KGNlbGwpLT5tX21hcC0+YXBwcm94aW1h
dGVTaXplKCk7Ci19Ci0KLXRlbXBsYXRlIGNsYXNzIE1hcEJhc2U8SGFzaE1hcEJ1Y2tldDxIYXNo
TWFwQnVja2V0RGF0YUtleVZhbHVlPj47Ci10ZW1wbGF0ZSBjbGFzcyBNYXBCYXNlPEhhc2hNYXBC
dWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+PjsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBCYXNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQxOWMwNGUyZjY5ZjczZDY1ZDY4NjMwMmZlMmQ5YTBmZWY0MjMyNGIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkhhc2hNYXBJbXBsLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwQnVja2V0VHlwZT4KLWNs
YXNzIE1hcEJhc2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwSW1wbDxIYXNoTWFwQnVja2V0VHlwZT4gSGFzaE1hcEltcGxUeXBlOwotICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOwotcHVibGljOgotCi0gICAgdHlwZWRlZiBIYXNoTWFwQnVj
a2V0VHlwZSBCdWNrZXRUeXBlOwotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3Qgc2l6ZShFeGVj
U3RhdGUqKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbWFwLT5zaXplKCk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSBib29sIGhhcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbWFwLT5oYXMoZXhlYywga2V5KTsKLSAgICB9Ci0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXIoRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAg
ICAgbV9tYXAtPmNsZWFyKGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBy
ZW1vdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX21hcC0+cmVtb3ZlKGV4ZWMsIGtleSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBI
YXNoTWFwQnVja2V0VHlwZSoqIGZpbmRCdWNrZXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtl
eSwgdWludDMyX3QgaGFzaCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21hcC0+ZmluZEJ1Y2tl
dChleGVjLCBrZXksIGhhc2gpOwotICAgIH0KLQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZIYXNoTWFwSW1wbCgpCi0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1h
cEJhc2U8SGFzaE1hcEJ1Y2tldFR5cGU+LCBtX21hcCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lO
TElORSBIYXNoTWFwSW1wbFR5cGUqIGltcGwoKSB7IHJldHVybiBtX21hcC5nZXQoKTsgfQotCi0g
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSkKLSAgICB7Ci0g
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICBIYXNoTWFwSW1wbFR5cGUqIGltcGwgPSBI
YXNoTWFwSW1wbFR5cGU6OmNyZWF0ZShleGVjLCB2bSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fbWFwLnNl
dCh2bSwgdGhpcywgaW1wbCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgTWFwQmFzZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCop
OwotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
LQotICAgIFdyaXRlQmFycmllcjxIYXNoTWFwSW1wbFR5cGU+IG1fbWFwOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNDNhZTM3Y2I0MmNiMDY3YWY3YzlmNGY1MDI2OWRjMDhkYjIyMzZk
Yy4uNWEyYjY5YWJjNDk2MjcwNTFmNWU5NjZmNzYzOTBlY2RkN2U5YTU0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApAQCAtNjEsMTEg
KzYxLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFw
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBh
c0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKICAgICBT
dHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPm1hcFN0cnVj
dHVyZSgpKTsKLSAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgSlNNYXAqIG1hcCA9IEpTTWFw
OjpjcmVhdGUoZXhlYywgdm0sIG1hcFN0cnVjdHVyZSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBKU01hcCogbWFwID0gSlNNYXA6
OmNyZWF0ZShleGVjLCBtYXBTdHJ1Y3R1cmUpOwogICAgIEpTVmFsdWUgaXRlcmFibGUgPSBleGVj
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoaXRlcmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGU2Mjlm
M2U4ODQ5NzQ5ZmI1OWRkNzkxMGQ3ZDljN2JiNTFlZmI4YzkuLjFlYzRkOTJlZjViOTIxNGI5NzQy
ZGFjNzI5NDZmOWRiMTI5MDgyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBNYXBJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIGlmIChpdGVyYXRv
ci0+bmV4dChjYWxsRnJhbWUsIHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoY2FsbEZyYW1lLCByZXN1bHQsIGZhbHNlKSk7
CisgICAgaXRlcmF0b3ItPmZpbmlzaCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3Jl
YXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoY2FsbEZyYW1lLCBqc1VuZGVmaW5lZCgpLCB0cnVlKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3Bw
CmluZGV4IDA5NDM1MTA3NDNkMmVhMmQwY2Y0NTE5MmFhZGU4ZGYyMTRiYzQzYzQuLmQ1MGY4MDdk
Njk5ZWRkOWFkOTQxZjg0ZjA2M2Y2YTExMWNjY2QzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNjgsMTMgKzY4LDE0IEBAIHZvaWQg
TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5jbGVhciwgbWFwUHJvdG9GdW5jQ2xlYXIsIERvbnRFbnVtLCAwKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5kZWxldGVLZXl3b3JkLCBtYXBQcm90b0Z1bmNEZWxldGUsIERvbnRFbnVtLCAxKTsKLSAg
ICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+Z2V0LCBtYXBQcm90b0Z1bmNHZXQsIERvbnRFbnVtLCAxLCBKU01hcEdldElu
dHJpbnNpYyk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhcywgbWFwUHJvdG9GdW5jSGFzLCBEb250RW51bSwg
MSwgSlNNYXBIYXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmdldCwgbWFwUHJvdG9GdW5jR2V0LCBEb250RW51
bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+aGFzLCBtYXBQcm90b0Z1bmNIYXMsIERvbnRFbnVtLCAxKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZXQs
IG1hcFByb3RvRnVuY1NldCwgRG9udEVudW0sIDIpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQ
dWJsaWNOYW1lKCksIG1hcFByb3RvRnVuY0tleXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIG1hcFByb3RvRnVuY1ZhbHVlcywgRG9udEVudW0s
IDApOwogCi0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCksIG1h
cFByb3RvRnVuY0dldCwgRG9udEVudW0sIDEsIEpTTWFwR2V0SW50cmluc2ljKTsKKyAgICAvLyBQ
cml2YXRlIGdldCAvIHNldCBvcGVyYXRpb25zLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByaXZh
dGVOYW1lKCksIG1hcFByb3RvRnVuY0dldCwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnNldFByaXZhdGVOYW1lKCksIG1hcFByb3RvRnVuY1NldCwgRG9udEVudW0sIDIpOwogCiAg
ICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFt
ZSgpLnN0cmluZygpLCBtYXBQcm90b0Z1bmNFbnRyaWVzKTsKQEAgLTkwLDIxICs5MSwxNiBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU01hcCogZ2V0TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKFVOTElLRUxZKCF0
aGlzVmFsdWUuaXNDZWxsKCkpKSB7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkgewog
ICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0KLSAgICBpZiAoTElLRUxZKHRoaXNWYWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTTWFw
VHlwZSkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNNYXAqPih0aGlzVmFsdWUpOwotICAgIHRo
cm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlv
biBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QiKSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0K
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZUZ1bmNJc01hcChFeGVjU3RhdGUq
IGV4ZWMpCi17Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHZhbHVlLmlzQ2VsbCgpICYm
IHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNNYXBUeXBlKSk7CisgICAgSlNNYXAqIG1hcCA9
IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPih0aGlzVmFsdWUpOworICAgIGlmICghbWFwKSB7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9w
ZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICByZXR1cm4gbWFwOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMTkxLDYg
KzE4NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0tleXMo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU01hcEl0
ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5t
YXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5KSk7CiB9CiAKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZUZ1bmNJc01hcChFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oanNEeW5hbWljQ2FzdDxK
U01hcCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByaXZhdGVGdW5jTWFwSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTTWFwKj4oZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpKTsKQEAgLTIwMywxMiArMjA0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcHJpdmF0ZUZ1bmNNYXBJdGVyYXRvck5leHQoRXhlY1N0YXRlKiBleGVjKQogICAgIEFTU0VS
VChqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPihleGVjLT50aGlzVmFsdWUoKSkpOwogICAg
IEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0ganNDYXN0PEpTTWFwSXRlcmF0b3IqPihleGVjLT50
aGlzVmFsdWUoKSk7CiAgICAgSlNWYWx1ZSBrZXksIHZhbHVlOwotICAgIGlmIChpdGVyYXRvci0+
bmV4dEtleVZhbHVlKGV4ZWMsIGtleSwgdmFsdWUpKSB7CisgICAgaWYgKGl0ZXJhdG9yLT5uZXh0
S2V5VmFsdWUoa2V5LCB2YWx1ZSkpIHsKICAgICAgICAgSlNBcnJheSogcmVzdWx0QXJyYXkgPSBq
c0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgcmVz
dWx0QXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGtleSk7CiAgICAgICAgIHJlc3VsdEFy
cmF5LT5wdXREaXJlY3RJbmRleChleGVjLCAxLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAgICAgfQorICAgIGl0ZXJhdG9yLT5maW5p
c2goKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuY3BwCmluZGV4IDI2NWEwZGE5OTA2NTIzODlkYWZmYjgxMDAxZGQxOGY5MTA3NTcwZWQuLjJj
YWY1OGM1MTZmNTRjZDU0ODYzYjdiNzE4NGJiZjk4NWI0M2YzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApAQCAtMTkx
LDYgKzE5MSwyMiBAQCB2b2lkIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0R2V0dGVyKEpTVmFsdWUg
Z2V0dGVyKQogICAgIG1fYXR0cmlidXRlcyAmPSB+UmVhZE9ubHk7CiB9CiAKKy8vIFNlZSBFUzUu
MSA5LjEyCitib29sIHNhbWVWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYSwgSlNWYWx1
ZSBiKQoreworICAgIGlmICghYS5pc051bWJlcigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
c3RyaWN0RXF1YWwoZXhlYywgYSwgYik7CisgICAgaWYgKCFiLmlzTnVtYmVyKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBkb3VibGUgeCA9IGEuYXNOdW1iZXIoKTsKKyAgICBkb3VibGUg
eSA9IGIuYXNOdW1iZXIoKTsKKyAgICBib29sIHhJc05hTiA9IHN0ZDo6aXNuYW4oeCk7CisgICAg
Ym9vbCB5SXNOYU4gPSBzdGQ6OmlzbmFuKHkpOworICAgIGlmICh4SXNOYU4gfHwgeUlzTmFOKQor
ICAgICAgICByZXR1cm4geElzTmFOICYmIHlJc05hTjsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PHVpbnQ2NF90Pih4KSA9PSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHkpOworfQorCiBib29sIFBy
b3BlcnR5RGVzY3JpcHRvcjo6ZXF1YWxUbyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKG90aGVyLm1fdmFsdWUuaXNFbXB0
eSgpICE9IG1fdmFsdWUuaXNFbXB0eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGFhNjFlZWE0OTVjNGQxYzlkNWEwZjgy
NDc5ZDMyNDUzNjY1NWEzNjUuLjU3MzZkNjJmM2UxNWU5NmE5OWJmNmMzZTJmYTAzNGMyNTgyOTdj
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVz
Y3JpcHRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVz
Y3JpcHRvci5oCkBAIC0zMiw2ICszMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBHZXR0
ZXJTZXR0ZXI7CiAKKy8vIFNlZSBFUzUuMSA5LjEyCitib29sIHNhbWVWYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKwogY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yIHsKIHB1Ymxp
YzoKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IDQzMDk4NmVmMmE2NDU2YTFlYWNmZDAw
ZmNlMGEwMzAxNzAxNGFkZjYuLmUzMDU2MWNlY2IxNGE3NjNhNmY5Yzg0ZmZhM2ViZTgwZWQ2MjVm
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTYyLDExICs2Miw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFs
T2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIEpT
U2V0KiBzZXQgPSBKU1NldDo6Y3JlYXRlKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpOwotICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgSlNT
ZXQqIHNldCA9IEpTU2V0OjpjcmVhdGUoZXhlYywgc2V0U3RydWN0dXJlKTsKICAgICBKU1ZhbHVl
IGl0ZXJhYmxlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBl
LmNwcAppbmRleCA1MTI4NzEwYjM5ODJhMWI4ODMxYWQ1YjFlODI3YWI4ZmU4MDY2YWQ1Li41YTEy
YzY4NzU0OTY3YWFiNDA4M2Y0Y2Y1ODUwZWEzNjBlYTY1YjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC01
OCw2ICs1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgU2V0SXRlcmF0b3JQcm90
b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIAogICAgIGlmIChpdGVyYXRvci0+
bmV4dChjYWxsRnJhbWUsIHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoY2FsbEZyYW1lLCByZXN1bHQsIGZhbHNlKSk7Cisg
ICAgaXRlcmF0b3ItPmZpbmlzaCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRl
SXRlcmF0b3JSZXN1bHRPYmplY3QoY2FsbEZyYW1lLCBqc1VuZGVmaW5lZCgpLCB0cnVlKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmlu
ZGV4IGYzNmI4YzUzNDQ3MGQwYTUzNDdkZDQxY2FmMzg1YjIxNDhiZGIwMzQuLjgwMDQ2ZDZkNTE0
NDA3Mzc0OTdhODhiNmJhYjU0NDliNjdkYmQ4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFNldFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmFkZCwgc2V0UHJvdG9GdW5jQWRkLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xlYXIs
IHNldFByb3RvRnVuY0NsZWFyLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+ZGVsZXRlS2V5d29yZCwgc2V0
UHJvdG9GdW5jRGVsZXRlLCBEb250RW51bSwgMSk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhcywgc2V0UHJv
dG9GdW5jSGFzLCBEb250RW51bSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhcywgc2V0
UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1
YmxpY05hbWUoKSwgc2V0UHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwogCiAgICAgSlNG
dW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAs
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJp
bmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzKTsKQEAgLTg1LDE0ICs4NSwxNiBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRo
aXNWYWx1ZSkKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUu
aXNDZWxsKCkpKSB7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICB0
aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxs
RnJhbWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
aWYgKExJS0VMWSh0aGlzVmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU1NldFR5cGUpKQotICAg
ICAgICByZXR1cm4ganNDYXN0PEpTU2V0Kj4odGhpc1ZhbHVlKTsKLSAgICB0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVyYXRpb24gY2FsbGVkIG9u
IG5vbi1TZXQgb2JqZWN0IikpOwotICAgIHJldHVybiBudWxscHRyOworICAgIEpTU2V0KiBzZXQg
PSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoIXNldCkgeworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldCBv
cGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHNldDsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xODIsNiAr
MTg0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcml2YXRlRnVuY1NldEl0ZXJh
dG9yTmV4dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJlc3VsdEFycmF5LT5wdXREaXJlY3RJ
bmRleChleGVjLCAwLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwogICAgIH0KKyAgICBpdGVyYXRvci0+ZmluaXNoKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKaW5kZXggZjIxOTBlOTU2ZmUxNzYwMjQ5OTI0NTNhNTJkZWU5NjZi
OTJhOWVjMy4uMWJlZTc3Zjg4ZGM4NjFmMmRhZTdjZGI3YTgwYmVkZmZiMjE4OGEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjUsNyArNjUsNiBAQAogI2luY2x1ZGUg
IkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgotI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVk
ZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIKQEAgLTI1NCwxMCArMjUz
LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICB3ZWJBc3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRo
aXMsIFdlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAjZW5kaWYKLSAgICBoYXNoTWFwQnVja2V0U2V0U3RydWN0dXJlLnNldCgqdGhpcywg
SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT46OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKLSAgICBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgqdGhp
cywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGhhc2hNYXBJbXBsU2V0U3RydWN0dXJlLnNl
dCgqdGhpcywgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgaGFzaE1hcEltcGxN
YXBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBC
dWNrZXREYXRhS2V5VmFsdWU+Pjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogCiAgICAgaXRlcmF0aW9uVGVybWluYXRvci5zZXQoKnRoaXMsIEpTRmluYWxPYmplY3Q6OmNy
ZWF0ZSgqdGhpcywgSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSwgMSkpKTsKICAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDJjMTI5NjkzNmFhZGE2OTA4
MjQwOTlmY2I1NGRlZTlhYzBmMTg4MzkuLmVhYmM0ZWI0M2JjODk0MjgzMmM1NGJjNmE4OWJhNTU3
NjNjZWZmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzM0LDEwICszMzQs
NiBAQCBwdWJsaWM6CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXZhbENvZGVCbG9ja1N0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZTsKLSAgICBT
dHJvbmc8U3RydWN0dXJlPiBoYXNoTWFwQnVja2V0U2V0U3RydWN0dXJlOwotICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGhhc2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVy
ZT4gaGFzaE1hcEltcGxTZXRTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1h
cEltcGxNYXBTdHJ1Y3R1cmU7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBpdGVyYXRpb25UZXJtaW5h
dG9yOwogICAgIFN0cm9uZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggZTk3ZDhjYTI0NGEyNmViNjI2ZmQzNzg5MGEzZDRi
YTFhYjY1MDVlZS4uNmI4MGVkY2JiZGUxNDA0MDA5ODZlMTNhYjM0Mzk3NGI2NzdiNmYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTE0OCw5ICsxNDgsNyBAQCBwcml2YXRlOgogICAg
IH07CiAKICAgICAvLyBUaGUgYm90dG9tIDYgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCi1w
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ0NvdW50ID0gNjsKLXByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFn
Q291bnQpIC0gMTsKICAgICBDT01QSUxFX0FTU0VSVChzX2ZsYWdDb3VudCA8PSBTdHJpbmdIYXNo
ZXI6OmZsYWdDb3VudCwgU3RyaW5nSGFzaGVyX3Jlc2VydmVzX2Vub3VnaF9iaXRzX2Zvcl9TdHJp
bmdJbXBsX2ZsYWdzKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnU3RyaW5nS2lu
ZENvdW50ID0gNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvSGFzaE1hcEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvSGFzaE1hcEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIz
MzUyNWQ2MzNkYTBlZWFhNmQ3NjBjNmI2ZGE5MDdlZGVlMzc3My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0hhc2hNYXBJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAK
LSNpZm5kZWYgV2ViQ29yZV9GV0RfSGFzaE1hcEltcGxfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9I
YXNoTWFwSW1wbF9oCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFzaE1hcEltcGwuaD4KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9NYXBCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL01h
cEJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQwMDBlYzRhMzA1M2JiY2E2
ZWVjYmZmNjIzNDllOTU4NmQ2YmYzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL01h
cEJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZX
RF9NYXBCYXNlX2gKLSNkZWZpbmUgV2ViQ29yZV9GV0RfTWFwQmFzZV9oCi0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvTWFwQmFzZS5oPgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA1NmQ5ZDNmNWU3MmQ3
MmE0MTFlZThhMTY1ZGYyYTkwOTcyOGMwYzgzLi5hMzI0OGY0MWY2YmFjOWNiYjA1MmQ1ZmI3Y2Yz
MWQ5NjYwYjliYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNjgsNyArMTM2OCw3IEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAg
ICAgICAgICBjYXNlIE1hcERhdGFTdGFydFZpc2l0RW50cnk6IHsKICAgICAgICAgICAgICAgICBK
U01hcEl0ZXJhdG9yKiBpdGVyYXRvciA9IG1hcEl0ZXJhdG9yU3RhY2subGFzdCgpOwogICAgICAg
ICAgICAgICAgIEpTVmFsdWUga2V5LCB2YWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0ZXJh
dG9yLT5uZXh0S2V5VmFsdWUobV9leGVjLCBrZXksIHZhbHVlKSkgeworICAgICAgICAgICAgICAg
IGlmICghaXRlcmF0b3ItPm5leHRLZXlWYWx1ZShrZXksIHZhbHVlKSkgewogICAgICAgICAgICAg
ICAgICAgICBtYXBJdGVyYXRvclN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcCo+KG9iamVjdCkpOwpAQCAtMjU0
NSw5ICsyNTQ1LDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOjpk
ZXNlcmlhbGl6ZSgpCiAgICAgICAgIG1hcE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAg
IGlmIChvdXRwdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3Zl
cmZsb3dFcnJvcik7Ci0gICAgICAgICAgICBKU01hcCogbWFwID0gSlNNYXA6OmNyZWF0ZShtX2V4
ZWMsIG1fZXhlYy0+dm0oKSwgbV9nbG9iYWxPYmplY3QtPm1hcFN0cnVjdHVyZSgpKTsKLSAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAg
ICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUo
bV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgICAgICAg
ICAgbV9nY0J1ZmZlci5hcHBlbmQobWFwKTsKICAgICAgICAgICAgIG91dHB1dE9iamVjdFN0YWNr
LmFwcGVuZChtYXApOwogICAgICAgICAgICAgbWFwU3RhY2suYXBwZW5kKG1hcCk7CkBAIC0yNTc2
LDkgKzI1NzQsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRl
c2VyaWFsaXplKCkKICAgICAgICAgc2V0T2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAg
aWYgKG91dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVy
Zmxvd0Vycm9yKTsKLSAgICAgICAgICAgIEpTU2V0KiBzZXQgPSBKU1NldDo6Y3JlYXRlKG1fZXhl
YywgbV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwotICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICAgICAg
ICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBKU1NldCogc2V0ID0gSlNTZXQ6OmNyZWF0ZSht
X2V4ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAg
ICBtX2djQnVmZmVyLmFwcGVuZChzZXQpOwogICAgICAgICAgICAgb3V0cHV0T2JqZWN0U3RhY2su
YXBwZW5kKHNldCk7CiAgICAgICAgICAgICBzZXRTdGFjay5hcHBlbmQoc2V0KTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGUzNTg5ZWY0
ZjY2MWE1ZTdmNTY4MmEyMzMwNzgwZTE3ZTI5OWYzOC4uODUxZTIxZjhlNjkzMWYyMWZkMzA4ZGYz
MWQ3MzRhYjI4OTI0ZTI1YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wOS0wNiAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIwNTUwNC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MTY0NQorCisgICAgICAgIEJyb2tlIHRoZSBpT1MgZGV2aWNlIGJ1aWxkIChSZXF1
ZXN0ZWQgYnkgcnlhbmhhZGRhZCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZl
cnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIk1ha2UgSlNNYXAgYW5kIEpTU2V0IGZhc3RlciIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk4OQor
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMDU1MDQKKwogMjAxNi0w
OS0wNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEpT
TWFwIGFuZCBKU1NldCBmYXN0ZXIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbnNlLXNldC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbnNlLXNldC5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiMGUzOWJmOWQ1ZWZiNWE3YTE2OWQ3ZTM3YTBk
NDhiNjhhNDRhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZW5zZS1zZXQuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwyOCArMCwwIEBACi0oZnVuY3Rpb24oKSB7Ci0gICAgCi0gICAgZnVuY3Rpb24gYmVuY2gobmFt
ZSwgZiwgYXJnKSB7Ci0gICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlOwotICAgICAgICB2YXIg
cmVzdWx0ID0gZihhcmcpOwotICAgICAgICB2YXIgZW5kID0gbmV3IERhdGU7Ci0gICAgICAgIGNv
bnN0IHZlcmJvc2UgPSBmYWxzZTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBw
cmludChuYW1lICsgIiAiICsgcmVzdWx0ICsgIiAiICsgKGVuZC1zdGFydCkgKyAibXMiKTsKLSAg
ICB9Ci0KLSAgICB2YXIgZGVuc2VTZXQgPSBuZXcgU2V0OwotICAgIHZhciBleGNsdWRlU2V0ID0g
WzEyMywgMTIzMCwgMTIzMDAsIDEyMzAwMCwgMjM0LCAyMzQwLCAyMzQwMF07Ci0gICAgZm9yICh2
YXIgaWR4ID0gMDsgaWR4IDwgNWU2OyArK2lkeCkgewotICAgICAgICBpZiAoZXhjbHVkZVNldC5p
bmNsdWRlcyhpZHgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRlbnNlU2V0LmFk
ZChpZHgpOwotICAgIH0KLQotICAgIGJlbmNoKCJEZW5zZSBTZXQgUHJvcGVydHkgRXhpc3RlbmNl
IiwgZnVuY3Rpb24ocykgewotICAgICAgICB2YXIgY291bnQgPSAwOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDVlNjsgKytpKQotICAgICAgICAgICAgaWYgKHMuaGFzKGkpKQotICAgICAg
ICAgICAgICAgIGNvdW50KysKLSAgICAgICAgcmV0dXJuIGNvdW50OwotICAgIH0sIGRlbnNlU2V0
KTsKLQotfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2xhcmdlLW1h
cC1pdGVyYXRpb24td2l0aC1hZGRpdGlvbnMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9s
YXJnZS1tYXAtaXRlcmF0aW9uLXdpdGgtYWRkaXRpb25zLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmYTJkMzVlNDQyMDhmOWY0ZjdkM2FiMjU2NTY1MTQxNWIwNDU5MmVjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2xhcmdlLW1hcC1pdGVyYXRpb24td2l0aC1hZGRpdGlvbnMuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwyNSArMCwwIEBACi1sZXQgY291bnRlciA9IDA7Ci1mdW5jdGlvbiBiYXIobWFw
KSB7Ci0gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG1hcCkgewotICAgICAgICBpZiAoTWF0
aC5yYW5kb20oKSA+IDAuOTUpIHsKLSAgICAgICAgICAgIG1hcC5zZXQoIiIgKyBjb3VudGVyLCBj
b3VudGVyKTsKLSAgICAgICAgICAgICsrY291bnRlcjsKLSAgICAgICAgfQotICAgIH0KLX0KLW5v
SW5saW5lKGJhcik7Ci0KLWZ1bmN0aW9uIGZvbygpIHsKLSAgICBsZXQgbWFwID0gbmV3IE1hcDsK
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykKLSAgICAgICAgbWFwLnNldChpLCBp
KzEpOwotCi0gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKLSAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDsgaSsrKQotICAgICAgICBiYXIobWFwKTsKLSAgICBjb25zdCB2ZXJib3NlID0gZmFs
c2U7Ci0gICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIHByaW50KERhdGUubm93KCkgLSBzdGFydCk7
Ci0KLX0KLWZvbygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbGFyZ2Ut
bWFwLWl0ZXJhdGlvbi13aXRoLW11dGF0aW9uLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
bGFyZ2UtbWFwLWl0ZXJhdGlvbi13aXRoLW11dGF0aW9uLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1YjRlNTFhYjg1NTI1YTYyOWUxODM5ZWU1ZmE5ZDQyNDI2MTE3NWFiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2xhcmdlLW1hcC1pdGVyYXRpb24td2l0aC1tdXRhdGlvbi5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDI1ICswLDAgQEAKLWZ1bmN0aW9uIGJhcihtYXApIHsKLSAgICBmb3IgKGxldCBb
a2V5LCB2YWx1ZV0gb2YgbWFwKSB7Ci0gICAgICAgIGlmICh2YWx1ZSAtIDEgIT09IGtleSkKLSAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGl0ZXJhdGlvbiEiKTsKLSAgICAgICAgaWYg
KE1hdGgucmFuZG9tKCkgPiAwLjk1KSB7Ci0gICAgICAgICAgICBtYXAuZGVsZXRlKGtleSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci1ub0lubGluZShiYXIpOwotCi1mdW5jdGlvbiBmb28oKSB7Ci0g
ICAgbGV0IG1hcCA9IG5ldyBNYXA7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4MDAwMDsgaSsr
KQotICAgICAgICBtYXAuc2V0KGksIGkrMSk7Ci0KLSAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygp
OwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspCi0gICAgICAgIGJhcihtYXApOwot
ICAgIGNvbnN0IHZlcmJvc2UgPSBmYWxzZTsKLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgcHJp
bnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsKLQotfQotZm9vKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9sYXJnZS1tYXAtaXRlcmF0aW9uLmpzIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvbGFyZ2UtbWFwLWl0ZXJhdGlvbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYWQwZDQzMTVlOTdlMGY0MzQ5YWZkMzBmMWU5YzUyODM1ZmNmMWIyNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9sYXJnZS1tYXAtaXRlcmF0aW9uLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBA
QAotZnVuY3Rpb24gYmFyKG1hcCkgewotICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBtYXAp
IHsKLSAgICAgICAgaWYgKHZhbHVlIC0gMSAhPT0ga2V5KQotICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgaXRlcmF0aW9uISIpOwotICAgIH0KLX0KLW5vSW5saW5lKGJhcik7Ci0KLWZ1
bmN0aW9uIGZvbygpIHsKLSAgICBsZXQgbWFwID0gbmV3IE1hcDsKLSAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspCi0gICAgICAgIG1hcC5zZXQoaSwgaSsxKTsKLQotICAgIGxldCBz
dGFydCA9IERhdGUubm93KCk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykKLSAg
ICAgICAgYmFyKG1hcCk7Ci0gICAgY29uc3QgdmVyYm9zZSA9IGZhbHNlOwotICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICBwcmludChEYXRlLm5vdygpIC0gc3RhcnQpOwotCi19Ci1mb28oKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL21hcC1nZXQtZ2V0LWNzZS5qcyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL21hcC1nZXQtZ2V0LWNzZS5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzJmMWY0ZmRkODBmNWY4ZWZjZjA5NjEwZGY4MzVjY2ZjMWVlNTQ3ZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9tYXAtZ2V0LWdldC1jc2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNyAr
MCwwIEBACi1mdW5jdGlvbiBiYXIobWFwLCBwKSB7Ci0gICAgcmV0dXJuIG1hcC5nZXQocCkgKyBt
YXAuZ2V0KHApOwotfQotbm9JbmxpbmUoYmFyKTsKLQotZnVuY3Rpb24gZm9vKCkgewotICAgIGxl
dCBtYXAgPSBuZXcgTWFwOwotICAgIGxldCBpdGVtcyA9IFsKLSAgICAgICAgWzEwLCA1MF0sCi0g
ICAgICAgIFsiNDUwIiwgNzhdLAotICAgICAgICBbe30sIHt9XSwKLSAgICAgICAgW1N5bWJvbCgp
LCB0cnVlXSwKLSAgICAgICAgW3VuZGVmaW5lZCwgbnVsbF0sCi0gICAgICAgIFt0cnVlLCBudWxs
XSwKLSAgICAgICAgW2ZhbHNlLCB0cnVlXSwKLSAgICAgICAgWzQ1Ljg3LCB7fV0KLSAgICBdOwot
ICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBpdGVtcykKLSAgICAgICAgbWFwLnNldChrZXks
IHZhbHVlKTsKLSAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpOwotICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgNTAwMDAwMDsgaSsrKQotICAgICAgICBiYXIobWFwLCBpdGVtc1tpICUgaXRlbXMubGVu
Z3RoXVswXSk7Ci0gICAgY29uc3QgdmVyYm9zZSA9IGZhbHNlOwotICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBwcmludChEYXRlLm5vdygpIC0gc3RhcnQpOwotfQotZm9vKCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtaGFzLWdldC1jc2Utb3Bwb3J0dW5pdHkuanMg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtaGFzLWdldC1jc2Utb3Bwb3J0dW5pdHkuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZGFhZjQ0MDJhYzU4OWQ1NmM0MTU2OWNk
ZDMwNmQ0YTE3MmVlMjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbWFwLWhhcy1nZXQtY3NlLW9wcG9ydHVuaXR5
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotZnVuY3Rpb24gYmFyKG1hcCwgcCkg
ewotICAgIGlmIChtYXAuaGFzKHApKQotICAgICAgICByZXR1cm4gbWFwLmdldChwKTsKLX0KLW5v
SW5saW5lKGJhcik7Ci0KLWZ1bmN0aW9uIGZvbygpIHsKLSAgICBsZXQgbWFwID0gbmV3IE1hcDsK
LSAgICBsZXQgaXRlbXMgPSBbCi0gICAgICAgIFsxMCwgNTBdLAotICAgICAgICBbIjQ1MCIsIDc4
XSwKLSAgICAgICAgW3t9LCB7fV0sCi0gICAgICAgIFtTeW1ib2woKSwgdHJ1ZV0sCi0gICAgICAg
IFt1bmRlZmluZWQsIG51bGxdLAotICAgICAgICBbdHJ1ZSwgbnVsbF0sCi0gICAgICAgIFtmYWxz
ZSwgdHJ1ZV0sCi0gICAgICAgIFs0NS44Nywge31dCi0gICAgXTsKLSAgICBmb3IgKGxldCBba2V5
LCB2YWx1ZV0gb2YgaXRlbXMpCi0gICAgICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7Ci0gICAgbGV0
IHN0YXJ0ID0gRGF0ZS5ub3coKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkr
KykKLSAgICAgICAgYmFyKG1hcCwgaXRlbXNbaSAlIGl0ZW1zLmxlbmd0aF1bMF0pOwotICAgIGNv
bnN0IHZlcmJvc2UgPSBmYWxzZTsKLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgcHJpbnQoRGF0
ZS5ub3coKSAtIHN0YXJ0KTsKLX0KLWZvbygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3Mvc3BhcnNlLXNldC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3NwYXJzZS1z
ZXQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhN2VhYWM1ODFlMTY0NDU5YWU0
Y2Y5NTdiYWUzMWI0MGEyNTBmMGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3BhcnNlLXNldC5qcworKysgL2Rl
di9udWxsCkBAIC0xLDI1ICswLDAgQEAKLShmdW5jdGlvbigpIHsKLSAgICAKLSAgICBmdW5jdGlv
biBiZW5jaChuYW1lLCBmLCBhcmcpIHsKLSAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGU7Ci0g
ICAgICAgIHZhciByZXN1bHQgPSBmKGFyZyk7Ci0gICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZTsK
LSAgICAgICAgY29uc3QgdmVyYm9zZSA9IGZhbHNlOwotICAgICAgICBpZiAodmVyYm9zZSkKLSAg
ICAgICAgICAgIHByaW50KG5hbWUgKyAiICIgKyByZXN1bHQgKyAiICIgKyAoZW5kLXN0YXJ0KSAr
ICJtcyIpOwotICAgIH0KLQotCi0gICAgdmFyIHNwYXJzZVNldCA9IG5ldyBTZXQ7Ci0gICAgZm9y
ICh2YXIgeCBvZiBbMTIzLCAxMjMwLCAxMjMwMCwgMTIzMDAwLCAyMzQsIDIzNDAsIDIzNDAwXSkg
ewotICAgICAgICBzcGFyc2VTZXQuYWRkKHgpOwotICAgIH0KLQotICAgIGJlbmNoKCJTcGFyc2Ug
U2V0IFByb3BlcnR5IEV4aXN0ZW5jZSIsIGZ1bmN0aW9uKHMpIHsKLSAgICAgICAgdmFyIGNvdW50
ID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1ZTY7ICsraSkKLSAgICAgICAgICAg
IGlmIChzLmhhcyhpKSkKLSAgICAgICAgICAgICAgICBjb3VudCsrCi0gICAgICAgIHJldHVybiBj
b3VudDsKLSAgICB9LCBzcGFyc2VTZXQpOwotfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL21hcC1jc2UtY29ycmVjdG5lc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtY3NlLWNvcnJl
Y3RuZXNzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmNlZWJiNzhlN2VkNDZl
NDg3ZjNkOWIyZWM3ZTM1NTBkODBjODUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL21hcC1jc2UtY29ycmVjdG5lc3MuanMKKysr
IC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1mdW5jdGlvbiBhc3NlcnQoYikgewotICAgIGlm
ICghYikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0ISIpOwotfQotbm9Jbmxp
bmUoYXNzZXJ0KTsKLQotZnVuY3Rpb24gdGVzdEhhcyhtYXAsIGtleSwgZikgewotICAgIGxldCBm
aXJzdCA9IG1hcC5oYXMoa2V5KTsKLSAgICBmKCk7Ci0gICAgbGV0IHNlY29uZCA9IG1hcC5oYXMo
a2V5KTsKLSAgICByZXR1cm4ge2ZpcnN0LCBzZWNvbmR9OwotfQotbm9JbmxpbmUodGVzdEhhcyk7
Ci0KLWZ1bmN0aW9uIHRlc3RHZXQobWFwLCBrZXksIGYpIHsKLSAgICBsZXQgZmlyc3QgPSBtYXAu
Z2V0KGtleSk7Ci0gICAgZigpOwotICAgIGxldCBzZWNvbmQgPSBtYXAuZ2V0KGtleSk7Ci0gICAg
cmV0dXJuIHtmaXJzdCwgc2Vjb25kfTsKLX0KLW5vSW5saW5lKHRlc3RHZXQpOwotCi1mdW5jdGlv
biBmb28oKSB7Ci0gICAgbGV0IG1hcCA9IG5ldyBNYXA7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDA7IGkrKykgewotICAgICAgICBsZXQga2V5ID0gaTsKLSAgICAgICAgbWFwLnNldChr
ZXksIGtleSk7Ci0gICAgICAgIGxldCBmID0gKCkgPT4gbWFwLmRlbGV0ZShrZXkpOwotICAgICAg
ICBub0lubGluZShmKTsKLSAgICAgICAgbGV0IHtmaXJzdCwgc2Vjb25kfSA9IHRlc3RIYXMobWFw
LCBrZXksIGYpOwotICAgICAgICBhc3NlcnQoZmlyc3QpOwotICAgICAgICBhc3NlcnQoIXNlY29u
ZCk7Ci0gICAgfQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICAg
ICAgbGV0IGtleSA9IGk7Ci0gICAgICAgIG1hcC5zZXQoa2V5LCBrZXkpOwotICAgICAgICBsZXQg
ZiA9ICgpID0+IHt9OwotICAgICAgICBub0lubGluZShmKTsKLSAgICAgICAgbGV0IHtmaXJzdCwg
c2Vjb25kfSA9IHRlc3RIYXMobWFwLCBrZXksIGYpOwotICAgICAgICBhc3NlcnQoZmlyc3QpOwot
ICAgICAgICBhc3NlcnQoc2Vjb25kKTsKLSAgICB9Ci0KLQotICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDAwOyBpKyspIHsKLSAgICAgICAgbGV0IGtleSA9IGk7Ci0gICAgICAgIGxldCB2YWx1
ZSA9IHt9OwotICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpOwotICAgICAgICBsZXQgZiA9ICgp
ID0+IG1hcC5kZWxldGUoa2V5KTsKLSAgICAgICAgbm9JbmxpbmUoZik7Ci0gICAgICAgIGxldCB7
Zmlyc3QsIHNlY29uZH0gPSB0ZXN0R2V0KG1hcCwga2V5LCBmKTsKLSAgICAgICAgYXNzZXJ0KGZp
cnN0ID09PSB2YWx1ZSk7Ci0gICAgICAgIGFzc2VydChzZWNvbmQgPT09IHVuZGVmaW5lZCk7Ci0g
ICAgfQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICAgICAgbGV0
IGtleSA9IGk7Ci0gICAgICAgIGxldCB2YWx1ZSA9IHt9OwotICAgICAgICBtYXAuc2V0KGtleSwg
dmFsdWUpOwotICAgICAgICBsZXQgZiA9ICgpID0+IHt9OwotICAgICAgICBub0lubGluZShmKTsK
LSAgICAgICAgbGV0IHtmaXJzdCwgc2Vjb25kfSA9IHRlc3RHZXQobWFwLCBrZXksIGYpOwotICAg
ICAgICBhc3NlcnQoZmlyc3QgPT09IHZhbHVlKTsKLSAgICAgICAgYXNzZXJ0KHNlY29uZCA9PT0g
dmFsdWUpOwotICAgIH0KLX0KLWZvbygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWFw
LWl0ZXJhdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL21hcC1pdGVyYXRpb24uanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MTMwZTNmNzJkMmZiNDU4MTc4MWYyZmFkYjhkZTg4NjI3
M2ZkZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdGlvbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDM5NSArMCww
IEBACi1mdW5jdGlvbiBhc3NlcnQoYikgewotICAgIGlmICghYikKLSAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgcmVzdWx0ISIpOwotfQotbm9JbmxpbmUoYXNzZXJ0KTsKLQotZnVuY3Rpb24g
dGVzdDEoKSB7Ci0gICAgbGV0IG1hcCA9IG5ldyBNYXA7Ci0gICAgbWFwLnNldCgyMCwgMzApOwot
ICAgIGxldCBpdGVyID0gbWFwW1N5bWJvbC5pdGVyYXRvcl0oKTsKLSAgICBsZXQge3ZhbHVlLCBk
b25lfSA9IGl0ZXIubmV4dCgpOwotICAgIGFzc2VydCh2YWx1ZVswXSA9PT0gMjApOwotICAgIGFz
c2VydCh2YWx1ZVsxXSA9PT0gMzApOwotICAgIGFzc2VydCghZG9uZSk7Ci0gICAgKHt2YWx1ZSwg
ZG9uZX0gPSBpdGVyLm5leHQoKSk7Ci0gICAgYXNzZXJ0KGRvbmUpOwotICAgIGFzc2VydCh2YWx1
ZSA9PT0gdW5kZWZpbmVkKTsKLX0KLWZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspCi0gICAg
dGVzdDEoKTsKLQotZnVuY3Rpb24gdGVzdDIoKSB7Ci0gICAgbGV0IG1hcCA9IG5ldyBNYXA7Ci0g
ICAgbWFwLnNldCgyMCwgMzApOwotICAgIGxldCBpdGVyID0gbWFwW1N5bWJvbC5pdGVyYXRvcl0o
KTsKLSAgICBsZXQge3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpOwotICAgIGFzc2VydCh2YWx1
ZVswXSA9PT0gMjApOwotICAgIGFzc2VydCh2YWx1ZVsxXSA9PT0gMzApOwotICAgIGFzc2VydCgh
ZG9uZSk7Ci0KLSAgICAoe3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpKTsKLSAgICBhc3NlcnQo
ZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVlID09PSB1bmRlZmluZWQpOwotCi0gICAgbWFwLnNldCg0
MCwgNTApOwotICAgICh7dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCkpOwotICAgIGFzc2VydChk
b25lKTsKLSAgICBhc3NlcnQodmFsdWUgPT09IHVuZGVmaW5lZCk7Ci19Ci1mb3IgKGxldCBpID0g
MDsgaSA8IDEwMDsgaSsrKQotICAgIHRlc3QyKCk7Ci0KLWZ1bmN0aW9uIHRlc3QzKCkgewotICAg
IGxldCBtYXAgPSBuZXcgTWFwOwotICAgIG1hcC5zZXQoMjAsIDMwKTsKLSAgICBtYXAuc2V0KDUw
LCA2MCk7Ci0gICAgbGV0IGl0ZXIgPSBtYXBbU3ltYm9sLml0ZXJhdG9yXSgpOwotICAgIGxldCB7
dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCk7Ci0gICAgYXNzZXJ0KHZhbHVlWzBdID09PSAyMCk7
Ci0gICAgYXNzZXJ0KHZhbHVlWzFdID09PSAzMCk7Ci0gICAgYXNzZXJ0KCFkb25lKTsKLQotICAg
ICh7dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCkpOwotICAgIGFzc2VydCghZG9uZSk7Ci0gICAg
YXNzZXJ0KHZhbHVlWzBdID09PSA1MCk7Ci0gICAgYXNzZXJ0KHZhbHVlWzFdID09PSA2MCk7Ci0K
LSAgICBtYXAuc2V0KCJmb28iLCAiYmFyIik7Ci0gICAgKHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5l
eHQoKSk7Ci0gICAgYXNzZXJ0KCFkb25lKTsKLSAgICBhc3NlcnQodmFsdWVbMF0gPT09ICJmb28i
KTsKLSAgICBhc3NlcnQodmFsdWVbMV0gPT09ICJiYXIiKTsKLQotICAgICh7dmFsdWUsIGRvbmV9
ID0gaXRlci5uZXh0KCkpOwotICAgIGFzc2VydChkb25lKTsKLSAgICBhc3NlcnQodmFsdWUgPT09
IHVuZGVmaW5lZCk7Ci19Ci1mb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQotICAgIHRlc3Qz
KCk7Ci0KLWZ1bmN0aW9uIHRlc3Q0KCkgewotICAgIGxldCBtYXAgPSBuZXcgTWFwOwotICAgIG1h
cC5zZXQoMjAsIDMwKTsKLSAgICBtYXAuc2V0KDUwLCA2MCk7Ci0gICAgbGV0IGl0ZXIgPSBtYXBb
U3ltYm9sLml0ZXJhdG9yXSgpOwotICAgIGxldCB7dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCk7
Ci0gICAgYXNzZXJ0KHZhbHVlWzBdID09PSAyMCk7Ci0gICAgYXNzZXJ0KHZhbHVlWzFdID09PSAz
MCk7Ci0gICAgYXNzZXJ0KCFkb25lKTsKLQotICAgIG1hcC5jbGVhcigpOwotCi0gICAgKHt2YWx1
ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSk7Ci0gICAgYXNzZXJ0KGRvbmUpOwotICAgIGFzc2VydCh2
YWx1ZSA9PT0gdW5kZWZpbmVkKTsKLX0KLWZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspCi0g
ICAgdGVzdDQoKTsKLQotZnVuY3Rpb24gdGVzdDUoKSB7Ci0gICAgbGV0IG1hcCA9IG5ldyBNYXA7
Ci0gICAgbWFwLnNldCgyMCwgMzApOwotICAgIG1hcC5zZXQoNTAsIDYwKTsKLSAgICBsZXQgaXRl
ciA9IG1hcFtTeW1ib2wuaXRlcmF0b3JdKCk7Ci0gICAgbGV0IHt2YWx1ZSwgZG9uZX0gPSBpdGVy
Lm5leHQoKTsKLSAgICBhc3NlcnQodmFsdWVbMF0gPT09IDIwKTsKLSAgICBhc3NlcnQodmFsdWVb
MV0gPT09IDMwKTsKLSAgICBhc3NlcnQoIWRvbmUpOwotCi0gICAgbWFwLmNsZWFyKCk7Ci0gICAg
bWFwLnNldCg1MCwgNjApOwotCi0gICAgKHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSk7Ci0g
ICAgYXNzZXJ0KCFkb25lKTsKLSAgICBhc3NlcnQodmFsdWVbMF0gPT09IDUwKTsKLSAgICBhc3Nl
cnQodmFsdWVbMV0gPT09IDYwKTsKLQotICAgICh7dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCkp
OwotICAgIGFzc2VydChkb25lKTsKLSAgICBhc3NlcnQodmFsdWUgPT09IHVuZGVmaW5lZCk7Ci19
Ci1mb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQotICAgIHRlc3Q1KCk7Ci0gCi1mdW5jdGlv
biB0ZXN0NigpIHsKLSAgICBsZXQgbWFwID0gbmV3IE1hcDsKLSAgICBtYXAuc2V0KDIwLCAzMCk7
Ci0gICAgbGV0IGkgPSAwOwotICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBtYXApIHsKLSAg
ICAgICAgbWFwLmRlbGV0ZShrZXkpOwotICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpOwotICAg
ICAgICBpKys7Ci0gICAgICAgIGlmIChpID09PSAxMDAwKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIGFzc2VydChpID09PSAxMDAwKTsKLX0KLXRlc3Q2KCk7Ci0KLWZ1bmN0aW9uIHRl
c3Q3KCkgewotICAgIGxldCBtYXAgPSBuZXcgTWFwOwotICAgIG1hcC5zZXQoMjAsIDMwKTsKLSAg
ICBsZXQgaSA9IDA7Ci0gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG1hcCkgewotICAgICAg
ICBtYXAuY2xlYXIoKTsKLSAgICAgICAgbWFwLnNldChrZXksIHZhbHVlKTsKLSAgICAgICAgaSsr
OwotICAgICAgICBpZiAoaSA9PT0gMTAwMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBhc3NlcnQoaSA9PT0gMTAwMCk7Ci19Ci10ZXN0NygpOwotCi1mdW5jdGlvbiB0ZXN0OCgpIHsK
LSAgICBsZXQgbWFwID0gbmV3IE1hcDsKLSAgICBtYXAuc2V0KDIwLCAzMCk7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykKLSAgICAgICAgbWFwLnNldChpLCBpKTsKLSAgICBsZXQg
aSA9IDA7Ci0gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG1hcCkgewotICAgICAgICBhc3Nl
cnQoa2V5ID09PSB2YWx1ZSk7Ci0gICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGtleSA9PT0gMjUw
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGFzc2VydChpID09PSAyNTEpOwotfQot
dGVzdDgoKTsKLQotZnVuY3Rpb24gdGVzdDkoKSB7Ci0gICAgYXNzZXJ0KDEvKC0wKSA9PT0gLUlu
ZmluaXR5KTsKLQotICAgIGxldCBtYXAgPSBuZXcgTWFwOwotICAgIG1hcC5zZXQoLTAsIDUwKTsg
Ly8gV2Ugc2hvdWxkIG5vcm1hbGl6ZSAtMCB0byArMCBpbiB0aGUga2V5LgotICAgIGZvciAobGV0
IFtrZXksIHZhbHVlXSBvZiBtYXApIHsKLSAgICAgICAgYXNzZXJ0KDEva2V5ID09PSBJbmZpbml0
eSk7Ci0gICAgfQotICAgIGFzc2VydChtYXAuZ2V0KDAuMCkgPT09IDUwKTsKLSAgICBhc3NlcnQo
bWFwLmdldCgwKSA9PT0gNTApOwotICAgIGFzc2VydChtYXAuZ2V0KC0wKSA9PT0gNTApOwotICAg
IGFzc2VydChtYXAuZ2V0KCswKSA9PT0gNTApOwotfQotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7
IGkrKykKLSAgICB0ZXN0OSgpOwotCi1mdW5jdGlvbiB0ZXN0MTAoKSB7Ci0gICAgbGV0IG1hcCA9
IG5ldyBNYXA7Ci0gICAgbWFwLnNldCgibmVnWmVybyIsIC0wKTsgLy8gV2Ugc2hvdWxkICpub3Qq
IG5vcm1hbGl6ZSAtMCB0byArMCBpbiB0aGUgdmFsdWUuCi0gICAgZm9yIChsZXQgW2tleSwgdmFs
dWVdIG9mIG1hcCkgewotICAgICAgICBhc3NlcnQoMS92YWx1ZSA9PT0gLUluZmluaXR5KTsKLSAg
ICB9Ci19Ci1mb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQotICAgIHRlc3QxMCgpOwotCi1m
dW5jdGlvbiB0ZXN0MTEoKSB7Ci0gICAgbGV0IG1hcCA9IG5ldyBNYXA7Ci0gICAgbWFwLnNldCgy
MCwgMzApOwotICAgIGxldCBpdGVyID0gbWFwLmtleXMoKTsKLSAgICBsZXQge3ZhbHVlLCBkb25l
fSA9IGl0ZXIubmV4dCgpOwotICAgIGFzc2VydCghZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVlID09
PSAyMCk7Ci0KLSAgICAoe3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpKTsKLSAgICBhc3NlcnQo
ZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVlID09PSB1bmRlZmluZWQpOwotCi0gICAgKHt2YWx1ZSwg
ZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAgICBhc3NlcnQoZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVl
ID09PSB1bmRlZmluZWQpOwotfQotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykKLSAgICB0
ZXN0MTEoKTsKLQotZnVuY3Rpb24gdGVzdDEyKCkgewotICAgIGxldCBtYXAgPSBuZXcgTWFwOwot
ICAgIG1hcC5zZXQoMjAsIDMwKTsKLSAgICBsZXQgaXRlciA9IG1hcC52YWx1ZXMoKTsKLSAgICBs
ZXQge3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpOwotICAgIGFzc2VydCghZG9uZSk7Ci0gICAg
YXNzZXJ0KHZhbHVlID09PSAzMCk7Ci0KLSAgICAoe3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgp
KTsKLSAgICBhc3NlcnQoZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVlID09PSB1bmRlZmluZWQpOwot
Ci0gICAgKHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAgICBhc3NlcnQoZG9uZSk7Ci0g
ICAgYXNzZXJ0KHZhbHVlID09PSB1bmRlZmluZWQpOwotfQotZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDA7IGkrKykKLSAgICB0ZXN0MTIoKTsKLQotZnVuY3Rpb24gdGVzdDEzKCkgewotICAgIGxldCBt
YXAgPSBuZXcgTWFwOwotICAgIG1hcC5zZXQoMjAsIDMwKTsKLSAgICBtYXAuc2V0KDUwLCA2MCk7
Ci0gICAgbGV0IGl0ZXIgPSBtYXAua2V5cygpOwotICAgIGxldCB7dmFsdWUsIGRvbmV9ID0gaXRl
ci5uZXh0KCk7Ci0gICAgYXNzZXJ0KCFkb25lKTsKLSAgICBhc3NlcnQodmFsdWUgPT09IDIwKTsK
LQotICAgIG1hcC5jbGVhcigpOwotICAgIG1hcC5zZXQoImZvbyIsICJiYXIiKTsKLQotICAgICh7
dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCkpOwotICAgIGFzc2VydCghZG9uZSk7Ci0gICAgYXNz
ZXJ0KHZhbHVlID09PSAiZm9vIik7Ci0KLSAgICAoe3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgp
KQotICAgIGFzc2VydChkb25lKTsKLSAgICBhc3NlcnQodmFsdWUgPT09IHVuZGVmaW5lZCk7Ci19
Ci1mb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQotICAgIHRlc3QxMygpOwotCi1mdW5jdGlv
biB0ZXN0MTQoKSB7Ci0gICAgbGV0IG1hcCA9IG5ldyBNYXA7Ci0gICAgbWFwLnNldCgyMCwgMzAp
OwotICAgIG1hcC5zZXQoNTAsIDYwKTsKLSAgICBsZXQgaXRlciA9IG1hcC52YWx1ZXMoKTsKLSAg
ICBsZXQge3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpOwotICAgIGFzc2VydCghZG9uZSk7Ci0g
ICAgYXNzZXJ0KHZhbHVlID09PSAzMCk7Ci0KLSAgICBtYXAuY2xlYXIoKTsKLSAgICBtYXAuc2V0
KCJmb28iLCAiYmFyIik7Ci0KLSAgICA7KHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAg
ICBhc3NlcnQoIWRvbmUpOwotICAgIGFzc2VydCh2YWx1ZSA9PT0gImJhciIpOwotCi0gICAgKHt2
YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAgICBhc3NlcnQoZG9uZSk7Ci0gICAgYXNzZXJ0
KHZhbHVlID09PSB1bmRlZmluZWQpOwotfQotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykK
LSAgICB0ZXN0MTQoKTsKLQotZnVuY3Rpb24gdGVzdDE1KCkgewotICAgIGxldCBtYXAgPSBuZXcg
TWFwOwotICAgIG1hcC5zZXQoMjAsIDMwKTsKLSAgICBtYXAuc2V0KDUwLCA2MCk7Ci0gICAgbGV0
IGl0ZXIgPSBtYXAua2V5cygpOwotCi0gICAgbGV0IHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQo
KTsKLSAgICBhc3NlcnQoIWRvbmUpOwotICAgIGFzc2VydCh2YWx1ZSA9PT0gMjApOwotCi0gICAg
Oyh7dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCkpCi0gICAgYXNzZXJ0KCFkb25lKTsKLSAgICBh
c3NlcnQodmFsdWUgPT09IDUwKTsKLQotICAgIG1hcC5jbGVhcigpOwotCi0gICAgbWFwLnNldCgi
Zm9vIiwgImJhciIpOwotCi0gICAgKHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAgICBh
c3NlcnQoIWRvbmUpOwotICAgIGFzc2VydCh2YWx1ZSA9PT0gImZvbyIpOwotCi0gICAgKHt2YWx1
ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAgICBhc3NlcnQoZG9uZSk7Ci0gICAgYXNzZXJ0KHZh
bHVlID09PSB1bmRlZmluZWQpOwotfQotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykKLSAg
ICB0ZXN0MTUoKTsKLQotZnVuY3Rpb24gdGVzdDE2KCkgewotICAgIGxldCBtYXAgPSBuZXcgTWFw
OwotICAgIG1hcC5zZXQoMjAsIDMwKTsKLSAgICBtYXAuc2V0KDUwLCA2MCk7Ci0gICAgbGV0IGl0
ZXIgPSBtYXAudmFsdWVzKCk7Ci0KLSAgICBsZXQge3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgp
OwotICAgIGFzc2VydCghZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVlID09PSAzMCk7Ci0KLSAgICA7
KHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAgICBhc3NlcnQoIWRvbmUpOwotICAgIGFz
c2VydCh2YWx1ZSA9PT0gNjApOwotCi0gICAgbWFwLmNsZWFyKCk7Ci0KLSAgICBtYXAuc2V0KCJm
b28iLCAiYmFyIik7Ci0KLSAgICAoe3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpKQotICAgIGFz
c2VydCghZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVlID09PSAiYmFyIik7Ci0KLSAgICAoe3ZhbHVl
LCBkb25lfSA9IGl0ZXIubmV4dCgpKQotICAgIGFzc2VydChkb25lKTsKLSAgICBhc3NlcnQodmFs
dWUgPT09IHVuZGVmaW5lZCk7Ci19Ci1mb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQotICAg
IHRlc3QxNigpOwotCi1mdW5jdGlvbiB0ZXN0MTcoKSB7Ci0gICAgbGV0IG1hcCA9IG5ldyBNYXA7
Ci0gICAgbWFwLnNldCgyMCwgMzApOwotICAgIG1hcC5zZXQoNTAsIDYwKTsKLSAgICBsZXQgaXRl
ciA9IG1hcC5rZXlzKCk7Ci0KLSAgICBsZXQge3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpOwot
ICAgIGFzc2VydCghZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVlID09PSAyMCk7Ci0KLSAgICA7KHt2
YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAgICBhc3NlcnQoIWRvbmUpOwotICAgIGFzc2Vy
dCh2YWx1ZSA9PT0gNTApOwotCi0gICAgbWFwLmNsZWFyKCk7Ci0KLSAgICBtYXAuc2V0KCJmb28i
LCAiYmFyIik7Ci0KLSAgICAoe3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpKQotICAgIGFzc2Vy
dCghZG9uZSk7Ci0gICAgYXNzZXJ0KHZhbHVlID09PSAiZm9vIik7Ci0KLSAgICAoe3ZhbHVlLCBk
b25lfSA9IGl0ZXIubmV4dCgpKQotICAgIGFzc2VydChkb25lKTsKLSAgICBhc3NlcnQodmFsdWUg
PT09IHVuZGVmaW5lZCk7Ci0KLSAgICBtYXAuc2V0KCJoZWxsbyIsICJ3b3JsZCIpOwotICAgICh7
dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCkpCi0gICAgYXNzZXJ0KGRvbmUpOwotICAgIGFzc2Vy
dCh2YWx1ZSA9PT0gdW5kZWZpbmVkKTsKLX0KLWZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKysp
Ci0gICAgdGVzdDE3KCk7Ci0KLWZ1bmN0aW9uIHRlc3QxOCgpIHsKLSAgICBsZXQgbWFwID0gbmV3
IE1hcDsKLSAgICBtYXAuc2V0KDIwLCAzMCk7Ci0gICAgbWFwLnNldCg1MCwgNjApOwotICAgIGxl
dCBpdGVyID0gbWFwLnZhbHVlcygpOwotCi0gICAgbGV0IHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5l
eHQoKTsKLSAgICBhc3NlcnQoIWRvbmUpOwotICAgIGFzc2VydCh2YWx1ZSA9PT0gMzApOwotCi0g
ICAgOyh7dmFsdWUsIGRvbmV9ID0gaXRlci5uZXh0KCkpCi0gICAgYXNzZXJ0KCFkb25lKTsKLSAg
ICBhc3NlcnQodmFsdWUgPT09IDYwKTsKLQotICAgIG1hcC5jbGVhcigpOwotCi0gICAgbWFwLnNl
dCgiZm9vIiwgImJhciIpOwotCi0gICAgKHt2YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAg
ICBhc3NlcnQoIWRvbmUpOwotICAgIGFzc2VydCh2YWx1ZSA9PT0gImJhciIpOwotCi0gICAgKHt2
YWx1ZSwgZG9uZX0gPSBpdGVyLm5leHQoKSkKLSAgICBhc3NlcnQoZG9uZSk7Ci0gICAgYXNzZXJ0
KHZhbHVlID09PSB1bmRlZmluZWQpOwotCi0gICAgbWFwLnNldCgiaGVsbG8iLCAid29ybGQiKTsK
LSAgICAoe3ZhbHVlLCBkb25lfSA9IGl0ZXIubmV4dCgpKQotICAgIGFzc2VydChkb25lKTsKLSAg
ICBhc3NlcnQodmFsdWUgPT09IHVuZGVmaW5lZCk7Ci19Ci1mb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgaSsrKQotICAgIHRlc3QxOCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>