<?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>216831</bug_id>
          
          <creation_ts>2020-09-22 09:35:25 -0700</creation_ts>
          <short_desc>Remove code behind ENABLE(MEDIA_SESSION), no ports enable it</short_desc>
          <delta_ts>2020-10-19 12:59:56 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=145411</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>rackler</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1690737</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-22 09:35:25 -0700</bug_when>
    <thetext>After talking with Eric Carlson, we think its time to remove all the code behind ENABLE(MEDIA_SESSION), no ports enable it and the spec has substantially changed since this was first implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690965</commentid>
    <comment_count>1</comment_count>
      <attachid>409436</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-22 18:29:49 -0700</bug_when>
    <thetext>Created attachment 409436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690984</commentid>
    <comment_count>2</comment_count>
      <attachid>409442</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-22 19:28:10 -0700</bug_when>
    <thetext>Created attachment 409442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691069</commentid>
    <comment_count>3</comment_count>
      <attachid>409460</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-23 04:37:20 -0700</bug_when>
    <thetext>Created attachment 409460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691071</commentid>
    <comment_count>4</comment_count>
      <attachid>409461</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-23 04:56:24 -0700</bug_when>
    <thetext>Created attachment 409461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691173</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-23 10:46:46 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 409461 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692957</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-29 09:36:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/69750841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693391</commentid>
    <comment_count>7</comment_count>
      <attachid>410124</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-30 08:33:44 -0700</bug_when>
    <thetext>Created attachment 410124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693397</commentid>
    <comment_count>8</comment_count>
      <attachid>410128</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-30 09:03:39 -0700</bug_when>
    <thetext>Created attachment 410128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693400</commentid>
    <comment_count>9</comment_count>
      <attachid>410129</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-30 09:11:03 -0700</bug_when>
    <thetext>Created attachment 410129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693425</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-30 10:11:01 -0700</bug_when>
    <thetext>Committed r267796: &lt;https://trac.webkit.org/changeset/267796&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410129.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694103</commentid>
    <comment_count>11</comment_count>
    <who name="Karl Rackler">rackler</who>
    <bug_when>2020-10-02 09:00:26 -0700</bug_when>
    <thetext>Reverted r267796 for reason:

This change is breaking the build on internal debug bots.

Committed r267883: &lt;https://trac.webkit.org/changeset/267883&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694113</commentid>
    <comment_count>12</comment_count>
    <who name="Karl Rackler">rackler</who>
    <bug_when>2020-10-02 09:25:12 -0700</bug_when>
    <thetext>After reviewing with Tim and Sam relanding patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694115</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-02 09:39:51 -0700</bug_when>
    <thetext>Committed r267885: &lt;https://trac.webkit.org/changeset/267885&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410129.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409436</attachid>
            <date>2020-09-22 18:29:49 -0700</date>
            <delta_ts>2020-09-22 19:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216831-20200922182948.patch</filename>
            <type>text/plain</type>
            <size>285799</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA5
LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29k
ZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNGVFcuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlOgorICAgICAgICBSZW1vdmUgb3B0aW9uIHRvIGJ1aWxkIHdpdGggTUVESUFfU0VTU0lP
Tiwgbm8gb25lIHdhcyBkb2luZyBpdC4KKwogMjAyMC0wOS0yMiAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgYnVpbGQgcnVsZXMgaW4gTWFrZWZp
bGVzIGFuZCBNYWtlZmlsZS5zaGFyZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1MikK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA5LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgY29kZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFi
bGUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NjgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgbWVkaWEgc2Vzc2lv
biByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9h
aXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXNlc3Npb246IFJlbW92ZWQuCisgICAgICAgIERlbGV0ZSBNb2R1bGVzL21lZGlhc2Vz
c2lvbiBhbmQgcGxhdGZvcm0vbWVkaWFzZXNzaW9uLiBNb3ZlIGZpbGVzIHRoYXQKKyAgICAgICAg
d2VyZSBhY3R1YWxseSB1c2VkIGZvciB0aGUgV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUIGZlYXR1
cmUgdG8gCisgICAgICAgIE1vZHVsZXMvYWlycGxheSB3aGVyZSBvdGhlciBwYXJ0cyBvZiB0aGF0
IGZlYXR1cmUgYXJlIGltcGxlbWVudGVkLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgUmVtb3ZlIGFsbCBj
b2RlIGluc2lkZSBFTkFCTEUoTUVESUFfU0VTU0lPTikuCisKIDIwMjAtMDktMjIgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIFN3aXRjaCB0byBuZXcg
ZmlsZSBuYW1lIGNvbnZlbnRpb24gZm9yIHBhcnRpYWwgaW50ZXJmYWNlcwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlh
Y2FwYWJpbGl0aWVzIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJvbHMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFyZWNvcmRlciIKLSAgICAiJHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9tZWRpYXNlc3Npb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvbWVkaWFzb3VyY2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjIgpAQCAt
MTM4LDcgKzEzNyw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbWVkaWFyZWNvcmRlciIKLSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vbWVkaWFzZXNzaW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2NrIgpAQCAtMTk3LDcgKzE5NSw2IEBAIHNl
dChXZWJDb3JlX0lETF9JTkNMVURFUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiCiAgICAgTW9kdWxl
cy9tZWRpYWNhcGFiaWxpdGllcwogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlcgotICAgIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbQogICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucwogICAgIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QKQEAgLTMyNiwxMCArMzIzLDYg
QEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5pZGwKICAgICBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlckVycm9yRXZlbnQuaWRsCiAKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50K01lZGlhU2Vzc2lvbi5pZGwKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJl
bW90ZUNvbnRyb2xzLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5p
ZGwKLQogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFjaytNZWRpYVNvdXJjZS5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTCtNZWRpYVNvdXJjZS5pZGwKICAgICBNb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlz
aW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xMzAsOSArMTMwLDYgQEAgTW9kdWxlcy9tZWRpYXJlY29yZGVyL0Jsb2JFdmVudC5jcHAK
IE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAogTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmNwcAogTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKLU1vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCi1Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90
ZUNvbnRyb2xzLmNwcAotTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAogTW9k
dWxlcy9tZWRpYXNvdXJjZS9ET01VUkxNZWRpYVNvdXJjZS5jcHAKIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0
cnkuY3BwCkBAIC0zMDkyLDggKzMwODksNiBAQCBKU01lZGlhUXVlcnlMaXN0LmNwcAogSlNNZWRp
YVF1ZXJ5TGlzdEV2ZW50LmNwcAogSlNNZWRpYVJlY29yZGVyLmNwcAogSlNNZWRpYVJlY29yZGVy
RXJyb3JFdmVudC5jcHAKLUpTTWVkaWFSZW1vdGVDb250cm9scy5jcHAKLUpTTWVkaWFTZXNzaW9u
LmNwcAogSlNNZWRpYVNvdXJjZS5jcHAKIEpTTWVkaWFTdHJlYW0uY3BwCiBKU01lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudCtN
ZWRpYVNlc3Npb24uaWRsCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lvbi5pZGwJKG5vbmV4
aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotLy8gRklYTUU6IFRoZXNlIGRvbid0IHNlZW0gdG8gYmUgaW4gYW55IGN1
cnJlbnQgc3BlY2lmaWNhdGlvbnMuIFdlIHNob3VsZCBjb25zaWRlciByZW1vdmluZyB0aGVtLgot
Ly8gU2VlIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxNjgzMS4KLVsKLSAgICBDb25kaXRpb25hbD1W
SURFTyZNRURJQV9TRVNTSU9OLAotICAgIEltcGxlbWVudGVkQnk9SFRNTE1lZGlhRWxlbWVudE1l
ZGlhU2Vzc2lvbgotXSBwYXJ0aWFsIGludGVyZmFjZSBIVE1MTWVkaWFFbGVtZW50IHsKLSAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7Ci0KLSAgICBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uPyBz
ZXNzaW9uOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hU
TUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3Bw
CShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDU5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lv
bi5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIEVOQUJMRShWSURFTykKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNl
c3Npb246OmtpbmQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQoZWxl
bWVudCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmtpbmQoKTsKLX0KLQotdm9pZCBIVE1MTWVkaWFF
bGVtZW50TWVkaWFTZXNzaW9uOjpzZXRLaW5kKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYga2luZCkKLXsKLSAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAg
cmV0dXJuIGVsZW1lbnQtPnNldEtpbmQoa2luZCk7Ci19Ci0KLU1lZGlhU2Vzc2lvbiogSFRNTE1l
ZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6c2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50
KQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVudC0+c2Vzc2lvbigp
OwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb246OnNldFNlc3Npb24oSFRN
TE1lZGlhRWxlbWVudCogZWxlbWVudCwgTWVkaWFTZXNzaW9uKiBzZXNzaW9uKQotewotICAgIEFT
U0VSVChlbGVtZW50KTsKLSAgICBlbGVtZW50LT5zZXRTZXNzaW9uKHNlc3Npb24pOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU0VTU0lPTikg
JiYgRU5BQkxFKFZJREVPKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Np
b24uaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oCShub25leGlzdGVudCkKQEAgLTEs
NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIEVOQUJMRShWSURF
TykKLQotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgY29uc3QgU3RyaW5nJiBraW5kKEhUTUxNZWRpYUVsZW1lbnQqKTsKLSAgICBzdGF0aWMg
dm9pZCBzZXRLaW5kKEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKLQotICAgIHN0
YXRpYyBNZWRpYVNlc3Npb24qIHNlc3Npb24oSFRNTE1lZGlhRWxlbWVudCopOwotICAgIHN0YXRp
YyB2b2lkIHNldFNlc3Npb24oSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhU2Vzc2lvbiopOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJ
T04pICYmIEVOQUJMRShWSURFTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuY3BwCShyZXZpc2lv
biAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJl
bW90ZUNvbnRyb2xzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiTWVkaWFSZW1vdGVDb250cm9scy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0KLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFSZW1vdGVDb250cm9scyk7Ci0K
LU1lZGlhUmVtb3RlQ29udHJvbHM6Ok1lZGlhUmVtb3RlQ29udHJvbHMoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgTWVkaWFTZXNzaW9uKiBzZXNzaW9uKQotICAgIDogbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKLXsKLX0K
LQotdm9pZCBNZWRpYVJlbW90ZUNvbnRyb2xzOjpjbGVhclNlc3Npb24oKQotewotICAgIG1fc2Vz
c2lvbiA9IG51bGxwdHI7Ci19Ci0KLU1lZGlhUmVtb3RlQ29udHJvbHM6On5NZWRpYVJlbW90ZUNv
bnRyb2xzKCkgPSBkZWZhdWx0OwotCi12b2lkIE1lZGlhUmVtb3RlQ29udHJvbHM6OnNldFByZXZp
b3VzVHJhY2tFbmFibGVkKGJvb2wgaXNFbmFibGVkKQotewotICAgIGlmIChtX3ByZXZpb3VzVHJh
Y2tFbmFibGVkID09IGlzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcmV2aW91
c1RyYWNrRW5hYmxlZCA9IGlzRW5hYmxlZDsKLQotICAgIGlmIChtX3Nlc3Npb24pCi0gICAgICAg
IG1fc2Vzc2lvbi0+Y29udHJvbElzRW5hYmxlZERpZENoYW5nZSgpOwotfQotCi12b2lkIE1lZGlh
UmVtb3RlQ29udHJvbHM6OnNldE5leHRUcmFja0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpCi17Ci0g
ICAgaWYgKG1fbmV4dFRyYWNrRW5hYmxlZCA9PSBpc0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fbmV4dFRyYWNrRW5hYmxlZCA9IGlzRW5hYmxlZDsKLQotICAgIGlmIChtX3Nlc3Np
b24pCi0gICAgICAgIG1fc2Vzc2lvbi0+Y29udHJvbElzRW5hYmxlZERpZENoYW5nZSgpOwotfQot
Ci19Ci0KLSNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU0VTU0lPTikgKi8KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90ZUNv
bnRyb2xzLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDc3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbjsKLQotY2xhc3MgTWVkaWFSZW1vdGVDb250cm9scyBm
aW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUmVtb3RlQ29udHJvbHM+LCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRp
YVJlbW90ZUNvbnRyb2xzKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhUmVtb3RlQ29u
dHJvbHM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVNlc3Np
b24qIHNlc3Npb24gPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTWVkaWFSZW1vdGVDb250cm9scyhjb250ZXh0LCBzZXNzaW9uKSk7Ci0gICAgfQotCi0gICAg
Ym9vbCBwcmV2aW91c1RyYWNrRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXNUcmFj
a0VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldFByZXZpb3VzVHJhY2tFbmFibGVkKGJvb2wpOwotCi0g
ICAgYm9vbCBuZXh0VHJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0VHJhY2tFbmFi
bGVkOyB9Ci0gICAgdm9pZCBzZXROZXh0VHJhY2tFbmFibGVkKGJvb2wpOwotCi0gICAgdXNpbmcg
UmVmQ291bnRlZDxNZWRpYVJlbW90ZUNvbnRyb2xzPjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50
ZWQ8TWVkaWFSZW1vdGVDb250cm9scz46OmRlcmVmOwotCi0gICAgdm9pZCBjbGVhclNlc3Npb24o
KTsKLQotICAgIHZpcnR1YWwgfk1lZGlhUmVtb3RlQ29udHJvbHMoKTsKLQotICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTWVkaWFSZW1vdGVDb250cm9sc0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAmbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9Ci0KLXByaXZhdGU6Ci0g
ICAgTWVkaWFSZW1vdGVDb250cm9scyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFTZXNz
aW9uKik7Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci0KLSAgICBib29sIG1fcHJldmlvdXNUcmFja0VuYWJsZWQgeyBmYWxzZSB9OwotICAg
IGJvb2wgbV9uZXh0VHJhY2tFbmFibGVkIHsgZmFsc2UgfTsKLQotICAgIE1lZGlhU2Vzc2lvbiog
bV9zZXNzaW9uIHsgbnVsbHB0ciB9OwotCi0gICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFs
IHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7
IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFSZW1vdGVDb250cm9scy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5pZGwJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJv
bHMuaWRsCShub25leGlzdGVudCkKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9TUVESUFfU0VT
U0lPTiwKLV0gaW50ZXJmYWNlIE1lZGlhUmVtb3RlQ29udHJvbHMgOiBFdmVudFRhcmdldCB7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKCk7Ci0KLSAg
ICBhdHRyaWJ1dGUgYm9vbGVhbiBwcmV2aW91c1RyYWNrRW5hYmxlZDsKLSAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiBuZXh0VHJhY2tFbmFibGVkOwotCi0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bnByZXZpb3VzdHJhY2s7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm5leHR0cmFjazsK
LX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwy
ODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKLQotI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hy
b21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTWVk
aWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBLaW5kIGtpbmQpCi0g
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9raW5kKGtpbmQpCi17Ci0gICAgLy8g
NC4gTWVkaWEgU2Vzc2lvbnMKLSAgICAvLyAzLiBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBt
ZWRpYSBzZXNzaW9uIHR5cGUgaXMgImNvbnRlbnQiLCB0aGVuIGNyZWF0ZSBhIG5ldyBtZWRpYSBy
ZW1vdGUgY29udHJvbGxlciBmb3IgbWVkaWEKLSAgICAvLyAgICBzZXNzaW9uLiAoT3RoZXJ3aXNl
IG1lZGlhIHNlc3Npb24gaGFzIG5vIG1lZGlhIHJlbW90ZSBjb250cm9sbGVyLikKLSAgICBpZiAo
bV9raW5kID09IEtpbmQ6OkNvbnRlbnQpCi0gICAgICAgIG1fY29udHJvbHMgPSBNZWRpYVJlbW90
ZUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpOwotCi0gICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2luZ2xldG9uKCkuYWRkTWVkaWFTZXNzaW9uKCp0aGlzKTsKLX0KLQotTWVkaWFTZXNz
aW9uOjp+TWVkaWFTZXNzaW9uKCkKLXsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0
b24oKS5yZW1vdmVNZWRpYVNlc3Npb24oKnRoaXMpOwotCi0gICAgaWYgKG1fY29udHJvbHMpCi0g
ICAgICAgIG1fY29udHJvbHMtPmNsZWFyU2Vzc2lvbigpOwotfQotCi1NZWRpYVJlbW90ZUNvbnRy
b2xzKiBNZWRpYVNlc3Npb246OmNvbnRyb2xzKCkKLXsKLSAgICByZXR1cm4gbV9jb250cm9scy5n
ZXQoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmFkZE1lZGlhRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50JiBlbGVtZW50KQotewotICAgIEFTU0VSVCghbV9wYXJ0aWNpcGF0aW5nRWxlbWVudHMu
Y29udGFpbnMoJmVsZW1lbnQpKTsKLSAgICBtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5hZGQoJmVs
ZW1lbnQpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6cmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKG1fcGFydGljaXBhdGluZ0VsZW1l
bnRzLmNvbnRhaW5zKCZlbGVtZW50KSk7Ci0gICAgbV9wYXJ0aWNpcGF0aW5nRWxlbWVudHMucmVt
b3ZlKCZlbGVtZW50KTsKLQotICAgIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoWyZdKCkgewot
ICAgICAgICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5yZW1vdmUoJmVsZW1lbnQpOwot
ICAgIH0pOwotCi0gICAgaWYgKG1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMp
Ci0gICAgICAgIG1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMtPnJlbW92ZSgm
ZWxlbWVudCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpjaGFuZ2VBY3RpdmVNZWRpYUVsZW1l
bnRzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCh2b2lkKT4mIHdvcmtlcikKLXsKLSAgICBpZiAo
UGFnZSAqcGFnZSA9IG1fZG9jdW1lbnQucGFnZSgpKSB7Ci0gICAgICAgIGJvb2wgaGFkQWN0aXZl
TWVkaWFFbGVtZW50cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmhhc0FjdGl2
ZU1lZGlhRWxlbWVudHMoKTsKLQotICAgICAgICB3b3JrZXIoKTsKLQotICAgICAgICBib29sIGhh
c0FjdGl2ZU1lZGlhRWxlbWVudHMgPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5o
YXNBY3RpdmVNZWRpYUVsZW1lbnRzKCk7Ci0gICAgICAgIGlmIChoYWRBY3RpdmVNZWRpYUVsZW1l
bnRzICE9IGhhc0FjdGl2ZU1lZGlhRWxlbWVudHMpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUo
KS5jbGllbnQoKS5oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5n
ZShoYXNBY3RpdmVNZWRpYUVsZW1lbnRzKTsKLSAgICB9IGVsc2UKLSAgICAgICAgd29ya2VyKCk7
Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjphZGRBY3RpdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBjaGFuZ2VBY3RpdmVNZWRpYUVsZW1lbnRzKFsmXSgp
IHsKLSAgICAgICAgbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuYWRkKCZlbGVtZW50KTsK
LSAgICB9KTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246OmlzTWVkaWFFbGVtZW50QWN0aXZlKEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIG1fYWN0aXZlUGFydGljaXBh
dGluZ0VsZW1lbnRzLmNvbnRhaW5zKCZlbGVtZW50KTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246
Omhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSBjb25zdAotewotICAgIHJldHVybiAhbV9hY3RpdmVQ
YXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6
c2V0TWV0YWRhdGEoY29uc3QgT3B0aW9uYWw8TWV0YWRhdGE+JiBvcHRpb25hbE1ldGFkYXRhKQot
ewotICAgIGlmICghb3B0aW9uYWxNZXRhZGF0YSkKLSAgICAgICAgbV9tZXRhZGF0YSA9IHsgfTsK
LSAgICBlbHNlIHsKLSAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBvcHRpb25hbE1ldGFkYXRhLnZh
bHVlKCk7Ci0gICAgICAgIG1fbWV0YWRhdGEgPSB7IG1ldGFkYXRhLnRpdGxlLCBtZXRhZGF0YS5h
cnRpc3QsIG1ldGFkYXRhLmFsYnVtLCBtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1ldGFkYXRhLmFy
dHdvcmspIH07Ci0gICAgfQotCi0gICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2RvY3VtZW50LnBhZ2Uo
KSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkubWVkaWFTZXNzaW9uTWV0YWRhdGFE
aWRDaGFuZ2UobV9tZXRhZGF0YSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpkZWFjdGl2YXRl
KCkKLXsKLSAgICAvLyA1LjEuMi4gT2JqZWN0IG1lbWJlcnMKLSAgICAvLyBXaGVuIHRoZSBkZWFj
dGl2YXRlKCkgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgLy8gMS4gTGV0IG1lZGlhIHNlc3Npb24gYmUgdGhlIGN1cnJl
bnQgbWVkaWEgc2Vzc2lvbi4KLSAgICAvLyAyLiBJbmRlZmluaXRlbHkgcGF1c2UgYWxsIG9mIG1l
ZGlhIHNlc3Npb27igJlzIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMuCi0gICAgLy8gMy4g
U2V0IG1lZGlhIHNlc3Npb24ncyByZXN1bWUgbGlzdCB0byBhbiBlbXB0eSBsaXN0LgotICAgIC8v
IDQuIFNldCBtZWRpYSBzZXNzaW9uJ3MgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyB0byBh
biBlbXB0eSBsaXN0LgotICAgIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoWyZdKCkgewotICAg
ICAgICB3aGlsZSAoIW1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIG1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLnRha2VBbnkoKS0+cGF1c2Uo
KTsKLSAgICB9KTsKLQotICAgIC8vIDUuIFJ1biB0aGUgbWVkaWEgc2Vzc2lvbiBkZWFjdGl2YXRp
b24gYWxnb3JpdGhtIGZvciBtZWRpYSBzZXNzaW9uLgotICAgIHJlbGVhc2VJbnRlcm5hbCgpOwot
fQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6cmVsZWFzZUludGVybmFsKCkKLXsKLSAgICAvLyA2LjUu
IFJlbGVhc2luZyBhIG1lZGlhIHNlc3Npb24KLSAgICAvLyAxLiBJZiBjdXJyZW50IG1lZGlhIHNl
c3Npb24ncyBjdXJyZW50IHN0YXRlIGlzIGlkbGUsIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBz
LgotICAgIGlmIChtX2N1cnJlbnRTdGF0ZSA9PSBTdGF0ZTo6SWRsZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gMi4gSWYgY3VycmVudCBtZWRpYSBzZXNzaW9uIHN0aWxsIGhhcyBvbmUgb3Ig
bW9yZSBhY3RpdmUgcGFydGljaXBhdGluZyBtZWRpYSBlbGVtZW50cywgdGhlbiB0ZXJtaW5hdGUg
dGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDMuIE9wdGlvbmFsbHksIGJhc2VkIG9u
IHBsYXRmb3JtIGNvbnZlbnRpb25zLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbGVhc2UgYW55IGN1
cnJlbnRseSBoZWxkIHBsYXRmb3JtIG1lZGlhIGZvY3VzCi0gICAgLy8gICAgZm9yIGN1cnJlbnQg
bWVkaWEgc2Vzc2lvbi4KLSAgICAvLyA0LiBPcHRpb25hbGx5LCBiYXNlZCBvbiBwbGF0Zm9ybSBj
b252ZW50aW9ucywgdGhlIHVzZXIgYWdlbnQgbXVzdCByZW1vdmUgYW55IHByZXZpb3VzbHkgZXN0
YWJsaXNoZWQgb25nb2luZyBtZWRpYQotICAgIC8vICAgIGludGVyZmFjZSBpbiB0aGUgdW5kZXJs
eWluZyBwbGF0Zm9ybeKAmXMgbm90aWZpY2F0aW9ucyBhcmVhIGFuZCBhbnkgb25nb2luZyBtZWRp
YSBpbnRlcmZhY2UgaW4gdGhlIHVuZGVybHlpbmcKLSAgICAvLyAgICBwbGF0Zm9ybSdzIGxvY2sg
c2NyZWVuIGFyZWEgZm9yIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiwgaWYgYW55LgotICAgIC8vIDUu
IE9wdGlvbmFsbHksIGJhc2VkIG9uIHBsYXRmb3JtIGNvbnZlbnRpb25zLCB0aGUgdXNlciBhZ2Vu
dCBtdXN0IHByZXZlbnQgYW55IGhhcmR3YXJlIGFuZC9vciBzb2Z0d2FyZSBtZWRpYSBrZXlzCi0g
ICAgLy8gICAgZnJvbSBjb250cm9sbGluZyBwbGF5YmFjayBvZiBjdXJyZW50IG1lZGlhIHNlc3Np
b24ncyBhY3RpdmUgcGFydGljaXBhdGluZyBtZWRpYSBlbGVtZW50cy4KLSAgICAvLyA2LiBTZXQg
Y3VycmVudCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBpZGxlLgotICAgIG1fY3Vy
cmVudFN0YXRlID0gU3RhdGU6OklkbGU7Ci19Ci0KLWJvb2wgTWVkaWFTZXNzaW9uOjppbnZva2Uo
KQotewotICAgIC8vIDQuNCBBY3RpdmF0aW5nIGEgbWVkaWEgc2Vzc2lvbgotICAgIC8vIDEuIElm
IHdlJ3JlIGFscmVhZHkgQUNUSVZFIHRoZW4gcmV0dXJuIHN1Y2Nlc3MuCi0gICAgaWYgKG1fY3Vy
cmVudFN0YXRlID09IFN0YXRlOjpBY3RpdmUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Ly8gMi4gT3B0aW9uYWxseSwgYmFzZWQgb24gcGxhdGZvcm0gY29udmVudGlvbnMsIHJlcXVlc3Qg
dGhlIG1vc3QgYXBwcm9wcmlhdGUgcGxhdGZvcm0tbGV2ZWwgbWVkaWEgZm9jdXMgZm9yIG1lZGlh
Ci0gICAgLy8gICAgc2Vzc2lvbiBiYXNlZCBvbiBpdHMgY3VycmVudCBtZWRpYSBzZXNzaW9uIHR5
cGUuCi0KLSAgICAvLyAzLiBSdW4gdGhlc2Ugc3Vic3RlcHMuLi4KLQotICAgIC8vIDQuIFNldCBv
dXIgY3VycmVudCBzdGF0ZSB0byBBQ1RJVkUgYW5kIHJldHVybiBzdWNjZXNzLgotICAgIG1fY3Vy
cmVudFN0YXRlID0gU3RhdGU6OkFjdGl2ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBN
ZWRpYVNlc3Npb246OmhhbmRsZUR1Y2tJbnRlcnJ1cHRpb24oKQotewotICAgIGZvciAoYXV0byog
ZWxlbWVudCA6IG1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzKQotICAgICAgICBlbGVtZW50
LT5zZXRTaG91bGREdWNrKHRydWUpOwotCi0gICAgbV9jdXJyZW50U3RhdGUgPSBTdGF0ZTo6SW50
ZXJydXB0ZWQ7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpoYW5kbGVVbmR1Y2tJbnRlcnJ1cHRp
b24oKQotewotICAgIGZvciAoYXV0byogZWxlbWVudCA6IG1fYWN0aXZlUGFydGljaXBhdGluZ0Vs
ZW1lbnRzKQotICAgICAgICBlbGVtZW50LT5zZXRTaG91bGREdWNrKGZhbHNlKTsKLQotICAgIG1f
Y3VycmVudFN0YXRlID0gU3RhdGU6OkFjdGl2ZTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246Omhh
bmRsZUluZGVmaW5pdGVQYXVzZUludGVycnVwdGlvbigpCi17Ci0gICAgc2FmZWx5SXRlcmF0ZUFj
dGl2ZU1lZGlhRWxlbWVudHMoW10oSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgewotICAgICAg
ICBlbGVtZW50LT5wYXVzZSgpOwotICAgIH0pOwotCi0gICAgbV9hY3RpdmVQYXJ0aWNpcGF0aW5n
RWxlbWVudHMuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpJZGxlOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6aGFuZGxlUGF1c2VJbnRlcnJ1cHRpb24oKQotewotICAgIG1f
Y3VycmVudFN0YXRlID0gU3RhdGU6OkludGVycnVwdGVkOwotCi0gICAgc2FmZWx5SXRlcmF0ZUFj
dGl2ZU1lZGlhRWxlbWVudHMoW10oSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgewotICAgICAg
ICBlbGVtZW50LT5wYXVzZSgpOwotICAgIH0pOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6aGFu
ZGxlVW5wYXVzZUludGVycnVwdGlvbigpCi17Ci0gICAgbV9jdXJyZW50U3RhdGUgPSBTdGF0ZTo6
QWN0aXZlOwotCi0gICAgc2FmZWx5SXRlcmF0ZUFjdGl2ZU1lZGlhRWxlbWVudHMoW10oSFRNTE1l
ZGlhRWxlbWVudCogZWxlbWVudCkgewotICAgICAgICBlbGVtZW50LT5wbGF5KCk7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjp0b2dnbGVQbGF5YmFjaygpCi17Ci0gICAgc2FmZWx5
SXRlcmF0ZUFjdGl2ZU1lZGlhRWxlbWVudHMoW10oSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkg
ewotICAgICAgICBpZiAoZWxlbWVudC0+cGF1c2VkKCkpCi0gICAgICAgICAgICBlbGVtZW50LT5w
bGF5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1lbnQtPnBhdXNlKCk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVt
ZW50cyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCopPiYgaGFuZGxl
cikKLXsKLSAgICBBU1NFUlQoIW1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMp
OwotCi0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gYWN0aXZlUGFydGljaXBhdGluZ0Vs
ZW1lbnRzQ29weSA9IG1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzOwotICAgIG1faXRlcmF0
ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMgPSAmYWN0aXZlUGFydGljaXBhdGluZ0VsZW1l
bnRzQ29weTsKLQotICAgIHdoaWxlICghYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzQ29weS5p
c0VtcHR5KCkpCi0gICAgICAgIGhhbmRsZXIoYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzQ29w
eS50YWtlQW55KCkpOwotCi0gICAgbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50
cyA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpza2lwVG9OZXh0VHJhY2soKQot
ewotICAgIGlmIChtX2NvbnRyb2xzICYmIG1fY29udHJvbHMtPm5leHRUcmFja0VuYWJsZWQoKSkK
LSAgICAgICAgbV9jb250cm9scy0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5uZXh0dHJhY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpza2lwVG9QcmV2aW91c1RyYWNr
KCkKLXsKLSAgICBpZiAobV9jb250cm9scyAmJiBtX2NvbnRyb2xzLT5wcmV2aW91c1RyYWNrRW5h
YmxlZCgpKQotICAgICAgICBtX2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnByZXZpb3VzdHJhY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpjb250cm9s
SXNFbmFibGVkRGlkQ2hhbmdlKCkKLXsKLSAgICAvLyBNZWRpYSByZW1vdGUgY29udHJvbHMgYXJl
IG9ubHkgYWxsb3dlZCBvbiBDb250ZW50IG1lZGlhIHNlc3Npb25zLgotICAgIEFTU0VSVChtX2tp
bmQgPT0gS2luZDo6Q29udGVudCk7Ci0KLSAgICAvLyBNZWRpYSBlbGVtZW50cyBiZWxvbmdpbmcg
dG8gQ29udGVudCBtZWRpYSBzZXNzaW9ucyBoYXZlIG11dHVhbGx5LWV4Y2x1c2l2ZSBwbGF5YmFj
ay4KLSAgICBBU1NFUlQobV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuc2l6ZSgpIDw9IDEp
OwotCi0gICAgaWYgKG1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9ICptX2FjdGl2
ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5iZWdpbigpOwotICAgIG1fZG9jdW1lbnQudXBkYXRlSXNQ
bGF5aW5nTWVkaWEoZWxlbWVudC0+ZWxlbWVudElEKCkpOwotfQotCi19Ci0KLSNlbmRpZiAvKiBF
TkFCTEUoTUVESUFfU0VTU0lPTikgKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotI2luY2x1ZGUgIk1lZGlhUmVtb3RlQ29udHJvbHMuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Np
b25NZXRhZGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwotCi1jbGFzcyBNZWRpYVNlc3Npb24gZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVNlc3Npb24+IHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEtpbmQg
eyBDb250ZW50LCBUcmFuc2llbnQsIFRyYW5zaWVudFNvbG8sIEFtYmllbnQgfTsKLSAgICBlbnVt
IGNsYXNzIFN0YXRlIHsgSWRsZSwgQWN0aXZlLCBJbnRlcnJ1cHRlZCB9OwotCi0gICAgc3RydWN0
IE1ldGFkYXRhIHsKLSAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICBTdHJpbmcgYXJ0aXN0
OwotICAgICAgICBTdHJpbmcgYWxidW07Ci0gICAgICAgIFN0cmluZyBhcnR3b3JrOwotICAgIH07
Ci0KLSAgICBzdGF0aWMgUmVmPE1lZGlhU2Vzc2lvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFT
ZXNzaW9uKGRvY3VtZW50LCBraW5kKSk7Ci0gICAgfQotCi0gICAgfk1lZGlhU2Vzc2lvbigpOwot
Ci0gICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgTWVkaWFSZW1v
dGVDb250cm9scyogY29udHJvbHMoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIFN0YXRlIGN1cnJl
bnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFN0YXRlOyB9Ci0gICAgYm9vbCBoYXNB
Y3RpdmVNZWRpYUVsZW1lbnRzKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldE1ldGFkYXRhKGNvbnN0
IE9wdGlvbmFsPE1ldGFkYXRhPiYpOwotCi0gICAgdm9pZCBkZWFjdGl2YXRlKCk7Ci0KLSAgICAv
LyBSdW5zIHRoZSBtZWRpYSBzZXNzaW9uIGludm9jYXRpb24gYWxnb3JpdGhtIGFuZCByZXR1cm5z
IHRydWUgb24gc3VjY2Vzcy4KLSAgICBib29sIGludm9rZSgpOwotCi0gICAgdm9pZCBoYW5kbGVE
dWNrSW50ZXJydXB0aW9uKCk7Ci0gICAgdm9pZCBoYW5kbGVJbmRlZmluaXRlUGF1c2VJbnRlcnJ1
cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZVBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgdm9pZCBo
YW5kbGVVbmR1Y2tJbnRlcnJ1cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZVVucGF1c2VJbnRlcnJ1
cHRpb24oKTsKLQotICAgIHZvaWQgdG9nZ2xlUGxheWJhY2soKTsKLSAgICB2b2lkIHNraXBUb05l
eHRUcmFjaygpOwotICAgIHZvaWQgc2tpcFRvUHJldmlvdXNUcmFjaygpOwotCi0gICAgdm9pZCBj
b250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNz
IEhUTUxNZWRpYUVsZW1lbnQ7Ci0KLSAgICBNZWRpYVNlc3Npb24oRG9jdW1lbnQmLCBLaW5kKTsK
LQotICAgIHZvaWQgYWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKLSAgICB2b2lk
IHJlbW92ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Jik7Ci0KLSAgICB2b2lkIHNhZmVs
eUl0ZXJhdGVBY3RpdmVNZWRpYUVsZW1lbnRzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChIVE1M
TWVkaWFFbGVtZW50Kik+Jik7Ci0gICAgdm9pZCBjaGFuZ2VBY3RpdmVNZWRpYUVsZW1lbnRzKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZCh2b2lkKT4mKTsKLSAgICB2b2lkIGFkZEFjdGl2ZU1lZGlh
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50Jik7Ci0gICAgYm9vbCBpc01lZGlhRWxlbWVudEFjdGl2
ZShIVE1MTWVkaWFFbGVtZW50Jik7Ci0KLSAgICB2b2lkIHJlbGVhc2VJbnRlcm5hbCgpOwotCi0g
ICAgU3RhdGUgbV9jdXJyZW50U3RhdGUgeyBTdGF0ZTo6SWRsZSB9OwotICAgIEhhc2hTZXQ8SFRN
TE1lZGlhRWxlbWVudCo+IG1fcGFydGljaXBhdGluZ0VsZW1lbnRzOwotICAgIEhhc2hTZXQ8SFRN
TE1lZGlhRWxlbWVudCo+IG1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzOwotICAgIEhhc2hT
ZXQ8SFRNTE1lZGlhRWxlbWVudCo+KiBtX2l0ZXJhdGVkQWN0aXZlUGFydGljaXBhdGluZ0VsZW1l
bnRzIHsgbnVsbHB0ciB9OwotCi0gICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7Ci0gICAgY29uc3Qg
S2luZCBtX2tpbmQ7Ci0gICAgUmVmUHRyPE1lZGlhUmVtb3RlQ29udHJvbHM+IG1fY29udHJvbHM7
Ci0gICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEgbV9tZXRhZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b24uaWRsCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25k
aXRpb25hbD1NRURJQV9TRVNTSU9OLAotICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAot
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi1dIGludGVyZmFjZSBNZWRpYVNlc3Npb24g
ewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcihvcHRp
b25hbCBNZWRpYVNlc3Npb25LaW5kIGtpbmQgPSAiY29udGVudCIpOwotCi0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIE1lZGlhU2Vzc2lvbktpbmQga2luZDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVkaWFSZW1vdGVDb250cm9scz8gY29udHJvbHM7Ci0KLSAgICB1bmRlZmluZWQgc2V0TWV0YWRh
dGEoTWVkaWFNZXRhZGF0YT8gbWV0YWRhdGEpOwotCi0gICAgdW5kZWZpbmVkIGRlYWN0aXZhdGUo
KTsKLX07Ci0KLWVudW0gTWVkaWFTZXNzaW9uS2luZCB7Ci0gICAgImNvbnRlbnQiLAotICAgICJ0
cmFuc2llbnQiLAotICAgICJ0cmFuc2llbnQtc29sbyIsCi0gICAgImFtYmllbnQiCi19OwotCi1k
aWN0aW9uYXJ5IE1lZGlhTWV0YWRhdGEgewotICAgIERPTVN0cmluZyB0aXRsZTsKLSAgICBET01T
dHJpbmcgYXJ0aXN0OwotICAgIERPTVN0cmluZyBhbGJ1bTsKLSAgICBVU1ZTdHJpbmcgYXJ0d29y
azsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25FdmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25FdmVudHMuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uRXZlbnRzLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIE1lZGlhRXZlbnRUeXBlIHsKLSAgICBQbGF5
UGF1c2UsCi0gICAgVHJhY2tOZXh0LAotICAgIFRyYWNrUHJldmlvdXMKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsMTcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJNZWRpYVNl
c3Npb24uaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5o
IgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb250ZW50U2Vzc2lvbktpbmQgPSAiY29udGVudCI7Ci0K
LU1lZGlhU2Vzc2lvbk1hbmFnZXImIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1hbmFnZXI7
Ci0gICAgcmV0dXJuIG1hbmFnZXI7Ci19Ci0KLU1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXIoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBtX2ludGVycnVwdGlvblBy
b3ZpZGVyID0gYWRvcHRSZWYobmV3IE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFj
KCp0aGlzKSk7Ci0gICAgbV9pbnRlcnJ1cHRpb25Qcm92aWRlci0+YmVnaW5MaXN0ZW5pbmdGb3JJ
bnRlcnJ1cHRpb25zKCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpo
YXNBY3RpdmVNZWRpYUVsZW1lbnRzKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8qIHNlc3Npb24g
OiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5oYXNBY3RpdmVNZWRpYUVsZW1l
bnRzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkTWVkaWFTZXNzaW9uKE1lZGlh
U2Vzc2lvbiYgc2Vzc2lvbikKLXsKLSAgICBtX3Nlc3Npb25zLmFkZCgmc2Vzc2lvbik7Ci19Ci0K
LXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlTWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lv
biYgc2Vzc2lvbikKLXsKLSAgICBtX3Nlc3Npb25zLnJlbW92ZSgmc2Vzc2lvbik7Ci19Ci0KLXZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6dG9nZ2xlUGxheWJhY2soKQotewotICAgIGZvciAoYXV0
byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgU3RyaW5nIHNlc3Npb25LaW5kID0g
c2Vzc2lvbi0+a2luZCgpOwotICAgICAgICBpZiAoc2Vzc2lvbi0+Y3VycmVudFN0YXRlKCkgPT0g
TWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlICYmIChzZXNzaW9uS2luZCA9PSBjb250ZW50U2Vz
c2lvbktpbmQgfHwgc2Vzc2lvbktpbmQgPT0gIiIpKQotICAgICAgICAgICAgc2Vzc2lvbi0+dG9n
Z2xlUGxheWJhY2soKTsKLSAgICB9Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2tp
cFRvTmV4dFRyYWNrKCkKLXsKLSAgICAvLyA1LjIuMiBXaGVuIHRoZSB1c2VyIHByZXNzZXMgdGhl
IE1lZGlhVHJhY2tOZXh0IG1lZGlhIGtleSwgdGhlbiBmb3IgZWFjaCBDb250ZW50LWJhc2VkIG1l
ZGlhIHNlc3Npb24gdGhhdCBpcwotICAgIC8vIGN1cnJlbnRseSBBQ1RJVkUgYW5kIGhhcyBhIG1l
ZGlhIHJlbW90ZSBjb250cm9sbGVyIHdpdGggaXRzIG5leHRUcmFja0VuYWJsZWQgYXR0cmlidXRl
IHNldCB0byB0cnVlLCBxdWV1ZSBhIHRhc2sKLSAgICAvLyB0byBmaXJlIGEgc2ltcGxlIGV2ZW50
IG5hbWVkIG5leHR0cmFjayBhdCBpdHMgbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuCi0gICAgZm9y
IChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+Y3Vy
cmVudFN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlICYmIHNlc3Npb24tPmtp
bmQoKSA9PSBjb250ZW50U2Vzc2lvbktpbmQpCi0gICAgICAgICAgICBzZXNzaW9uLT5za2lwVG9O
ZXh0VHJhY2soKTsKLSAgICB9Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2tpcFRv
UHJldmlvdXNUcmFjaygpCi17Ci0gICAgLy8gNS4yLjIgV2hlbiB0aGUgdXNlciBwcmVzc2VzIHRo
ZSBNZWRpYVRyYWNrUHJldmlvdXMgbWVkaWEga2V5LCB0aGVuIGZvciBlYWNoIENvbnRlbnQtYmFz
ZWQgbWVkaWEgc2Vzc2lvbiB0aGF0IGlzCi0gICAgLy8gY3VycmVudGx5IEFDVElWRSBhbmQgaGFz
IGEgbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIgd2l0aCBpdHMgcHJldmlvdXNUcmFja0VuYWJsZWQg
YXR0cmlidXRlIHNldCB0byB0cnVlLCBxdWV1ZSBhIHRhc2sKLSAgICAvLyB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIHByZXZpb3VzdHJhY2sgYXQgaXRzIG1lZGlhIHJlbW90ZSBjb250cm9s
bGVyLgotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgaWYg
KHNlc3Npb24tPmN1cnJlbnRTdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6U3RhdGU6OkFjdGl2ZSAm
JiBzZXNzaW9uLT5raW5kKCkgPT0gY29udGVudFNlc3Npb25LaW5kKQotICAgICAgICAgICAgc2Vz
c2lvbi0+c2tpcFRvUHJldmlvdXNUcmFjaygpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyOjpkaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBpbnRlcnJ1cHRpbmdDYXRlZ29yeSkKLXsKLSAg
ICAvLyA0LjUuMiBJbnRlcnJ1cHRpbmcgYSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gV2hlbiBhIHN0
YXJ0LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24gZXZlbnQgaXMgcmVjZWl2ZWQgZnJvbSB0
aGUgcGxhdGZvcm0sIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlCi0gICAgLy8gbWVk
aWEgc2Vzc2lvbiBpbnRlcnJ1cHRpb24gYWxnb3JpdGhtIGFnYWluc3QgYWxsIGtub3duIG1lZGlh
IHNlc3Npb25zLCBwYXNzaW5nIGluIGVhY2ggbWVkaWEgc2Vzc2lvbiBhcyBtZWRpYSBzZXNzaW9u
LgotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgLy8gMS4g
SWYgbWVkaWEgc2Vzc2lvbidzIGN1cnJlbnQgc3RhdGUgaXMgbm90IGFjdGl2ZSwgdGhlbiB0ZXJt
aW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUoKSAh
PSBNZWRpYVNlc3Npb246OlN0YXRlOjpBY3RpdmUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAvLyAyLiBMZXQgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgYmUg
dGhlIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgdGhhdCB0cmlnZ2VyZWQgdGhpcyBpbnRlcnJ1cHRp
b24uCi0gICAgICAgIC8vICAgIElmIHRoaXMgaW50ZXJydXB0aW9uIGhhcyBubyBrbm93biBtZWRp
YSBzZXNzaW9uIGNhdGVnb3J5LCBsZXQgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdv
cnkgYmUgRGVmYXVsdC4KLQotICAgICAgICAvLyAzLiBSdW4gdGhlc2Ugc3Vic3RlcHM6Ci0gICAg
ICAgIGlmIChpbnRlcnJ1cHRpbmdDYXRlZ29yeSA9PSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdD
YXRlZ29yeTo6Q29udGVudCkgewotICAgICAgICAgICAgLy8gLSAgSWYgaW50ZXJydXB0aW5nIG1l
ZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMgQ29udGVudDoKLSAgICAgICAgICAgIC8vICAgIElmIG1l
ZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENv
bnRlbnQgdGhlbiBpbmRlZmluaXRlbHkgcGF1c2UgYWxsIG9mIG1lZGlhCi0gICAgICAgICAgICAv
LyAgICBzZXNzaW9uJ3MgYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNl
dCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBpZGxlLgotICAgICAgICAgICAgaWYg
KHNlc3Npb24tPmtpbmQoKSA9PSBNZWRpYVNlc3Npb25LaW5kOjpEZWZhdWx0IHx8IHNlc3Npb24t
PmtpbmQoKSA9PSBNZWRpYVNlc3Npb25LaW5kOjpDb250ZW50KQotICAgICAgICAgICAgICAgIHNl
c3Npb24tPmhhbmRsZUluZGVmaW5pdGVQYXVzZUludGVycnVwdGlvbigpOwotICAgICAgICB9IGVs
c2UgaWYgKGludGVycnVwdGluZ0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0Nh
dGVnb3J5OjpUcmFuc2llbnQpIHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1l
ZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMgVHJhbnNpZW50OgotICAgICAgICAgICAgLy8gICBJZiBt
ZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBtZWRpYSBzZXNzaW9uIHR5cGUgaXMgRGVmYXVsdCBvciBD
b250ZW50IHRoZW4gZHVjayBhbGwgb2YgbWVkaWEgc2Vzc2lvbidzIGFjdGl2ZQotICAgICAgICAg
ICAgLy8gICBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIGFuZCBzZXQgbWVkaWEgc2Vzc2lv
bidzIGN1cnJlbnQgc3RhdGUgdG8gaW50ZXJydXB0ZWQuCi0gICAgICAgICAgICBpZiAoc2Vzc2lv
bi0+a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgp
ID09IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+
aGFuZGxlRHVja0ludGVycnVwdGlvbigpOwotICAgICAgICB9IGVsc2UgaWYgKGludGVycnVwdGlu
Z0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpUcmFuc2llbnRT
b2xvKSB7Ci0gICAgICAgICAgICAvLyAtIElmIGludGVycnVwdGluZyBtZWRpYSBzZXNzaW9uIGNh
dGVnb3J5IGlzIFRyYW5zaWVudCBTb2xvOgotICAgICAgICAgICAgLy8gICBJZiBtZWRpYSBzZXNz
aW9uJ3MgY3VycmVudCBtZWRpYSBzZXNzaW9uIHR5cGUgaXMgRGVmYXVsdCwgQ29udGVudCwgVHJh
bnNpZW50IG9yIFRyYW5zaWVudCBTb2xvIHRoZW4gcGF1c2UKLSAgICAgICAgICAgIC8vICAgYWxs
IG9mIG1lZGlhIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBh
bmQgc2V0IGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGN1cnJlbnQgc3RhdGUgdG8gaW50ZXJydXB0
ZWQuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2luZCgpICE9IE1lZGlhU2Vzc2lvbktpbmQ6
OkFtYmllbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxlUGF1c2VJbnRlcnJ1cHRp
b24oKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpk
aWRSZWNlaXZlRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW5nQ2F0ZWdvcnkgaW50ZXJydXB0aW5nQ2F0ZWdvcnkpCi17Ci0gICAgLy8gNC41LjIgSW50
ZXJydXB0aW5nIGEgbWVkaWEgc2Vzc2lvbgotICAgIC8vIFdoZW4gYW4gZW5kLW9mLWludGVycnVw
dGlvbiBub3RpZmljYXRpb24gZXZlbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgcGxhdGZvcm0sIHRo
ZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlCi0gICAgLy8gbWVkaWEgc2Vzc2lvbiBjb250
aW51YXRpb24gYWxnb3JpdGhtIGFnYWluc3QgYWxsIGtub3duIG1lZGlhIHNlc3Npb25zLCBwYXNz
aW5nIGluIGVhY2ggbWVkaWEgc2Vzc2lvbiBhcyBtZWRpYSBzZXNzaW9uLgotICAgIGZvciAoYXV0
byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgLy8gMS4gSWYgbWVkaWEgc2Vzc2lv
bidzIGN1cnJlbnQgc3RhdGUgaXMgbm90IGludGVycnVwdGVkLCB0aGVuIHRlcm1pbmF0ZSB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgKHNlc3Npb24tPmN1cnJlbnRTdGF0ZSgpICE9IE1lZGlhU2Vz
c2lvbjo6U3RhdGU6OkludGVycnVwdGVkKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgLy8gMi4gTGV0IGludGVycnVwdGluZyBtZWRpYSBzZXNzaW9uIGNhdGVnb3J5IGJlIHRoZSBt
ZWRpYSBzZXNzaW9uIGNhdGVnb3J5IHRoYXQgaW5pdGlhbGx5IHRyaWdnZXJlZCB0aGlzIGludGVy
cnVwdGlvbi4KLSAgICAgICAgLy8gICAgSWYgdGhpcyBpbnRlcnJ1cHRpb24gaGFzIG5vIGtub3du
IG1lZGlhIHNlc3Npb24gY2F0ZWdvcnksIGxldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBj
YXRlZ29yeSBiZSBEZWZhdWx0LgotCi0gICAgICAgIC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwczoK
LSAgICAgICAgaWYgKGludGVycnVwdGluZ0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVw
dGluZ0NhdGVnb3J5OjpUcmFuc2llbnQpIHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0
aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMgVHJhbnNpZW50OgotICAgICAgICAgICAgLy8g
ICBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBtZWRpYSBzZXNzaW9uIHR5cGUgaXMgRGVmYXVs
dCBvciBDb250ZW50LCB0aGVuIHVuZHVjayBhbGwgb2YgbWVkaWEgc2Vzc2lvbidzCi0gICAgICAg
ICAgICAvLyAgIGFjdGl2ZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIGFuZCBzZXQgbWVk
aWEgc2Vzc2lvbidzIGN1cnJlbnQgc3RhdGUgdG8gYWN0aXZlLgotICAgICAgICAgICAgaWYgKHNl
c3Npb24tPmtpbmQoKSA9PSBNZWRpYVNlc3Npb25LaW5kOjpEZWZhdWx0IHx8IHNlc3Npb24tPmtp
bmQoKSA9PSBNZWRpYVNlc3Npb25LaW5kOjpDb250ZW50KQotICAgICAgICAgICAgICAgIHNlc3Np
b24tPmhhbmRsZVVuZHVja0ludGVycnVwdGlvbigpOwotICAgICAgICB9IGVsc2UgaWYgKGludGVy
cnVwdGluZ0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpUcmFu
c2llbnRTb2xvKSB7Ci0gICAgICAgICAgICAvLyAtIElmIGludGVycnVwdGluZyBtZWRpYSBzZXNz
aW9uIGNhdGVnb3J5IGlzIFRyYW5zaWVudCBTb2xvOgotICAgICAgICAgICAgLy8gICBJZiBtZWRp
YSBzZXNzaW9uJ3MgY3VycmVudCBtZWRpYSBzZXNzaW9uIHR5cGUgaXMgRGVmYXVsdCwgQ29udGVu
dCwgVHJhbnNpZW50LCBvciBUcmFuc2llbnQgU29sbywgdGhlbgotICAgICAgICAgICAgLy8gICB1
bnBhdXNlIHRoZSBtZWRpYSBzZXNzaW9uJ3MgYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNp
cGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBhY3RpdmUuCi0g
ICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2luZCgpICE9IE1lZGlhU2Vzc2lvbktpbmQ6OkFtYmll
bnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxlVW5wYXVzZUludGVycnVwdGlvbigp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvKiBFTkFCTEUoTUVESUFfU0VTU0lPTikgKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbk1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbjsKLQotY2xhc3MgTWVkaWFTZXNzaW9uTWFu
YWdlciA6IHB1YmxpYyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlckNsaWVudCB7Ci0g
ICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE1lZGlhU2Vzc2lvbk1hbmFnZXI+OwotcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNZWRpYVNlc3Npb25NYW5hZ2VyJiBzaW5n
bGV0b24oKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlUGxheWJhY2soKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNraXBUb05leHRUcmFjaygpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2tpcFRvUHJldmlvdXNUcmFjaygpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpbmdDYXRlZ29yeSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRSZWNlaXZlRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW5nQ2F0ZWdvcnkpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBN
ZWRpYVNlc3Npb247Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyKCk7Ci0KLSAgICBib29sIGhh
c0FjdGl2ZU1lZGlhRWxlbWVudHMoKSBjb25zdDsKLQotICAgIHZvaWQgYWRkTWVkaWFTZXNzaW9u
KE1lZGlhU2Vzc2lvbiYpOwotICAgIHZvaWQgcmVtb3ZlTWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lv
biYpOwotCi0gICAgUmVmUHRyPE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyPiBtX2lu
dGVycnVwdGlvblByb3ZpZGVyOwotICAgIEhhc2hTZXQ8TWVkaWFTZXNzaW9uKj4gbV9zZXNzaW9u
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uTWV0YWRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCShyZXZpc2lvbiAyNjc0NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0
YS5oCShub25leGlzdGVudCkKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0KLSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGEgZmluYWwgewotcHVibGljOgotICAgIE1lZGlh
U2Vzc2lvbk1ldGFkYXRhKCkgPSBkZWZhdWx0OwotCi0gICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhcnRpc3QsIGNvbnN0IFN0cmluZyYg
YWxidW0sIGNvbnN0IFVSTCYgYXJ0d29ya1VSTCkKLSAgICAgICAgOiBtX3RpdGxlKHRpdGxlKQot
ICAgICAgICAsIG1fYXJ0aXN0KGFydGlzdCkKLSAgICAgICAgLCBtX2FsYnVtKGFsYnVtKQotICAg
ICAgICAsIG1fYXJ0d29ya1VSTChhcnR3b3JrVVJMKSB7IH0KLQotICAgIFN0cmluZyB0aXRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KLSAgICBTdHJpbmcgYXJ0aXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9hcnRpc3Q7IH0KLSAgICBTdHJpbmcgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX2Fs
YnVtOyB9Ci0gICAgVVJMIGFydHdvcmtVUkwoKSBjb25zdCB7IHJldHVybiBtX2FydHdvcmtVUkw7
IH0KLQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV90aXRsZTsKLSAgICBTdHJpbmcgbV9hcnRpc3Q7
Ci0gICAgU3RyaW5nIG1fYWxidW07Ci0gICAgVVJMIG1fYXJ0d29ya1VSTDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAko
cmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCShub25leGlzdGVudCkKQEAg
LTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KLQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBQbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyVHlwZT47Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9X
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkocmV2aXNpb24g
MjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQotCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAi
TG9nZ2luZy5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgiCi0j
aW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9B
bGdvcml0aG1zLmg+Ci0jaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3Qg
U2Vjb25kcyB0YXNrRGVsYXlJbnRlcnZhbCB7IDEwMF9tcyB9OwotCi0jZGVmaW5lIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUiBsb2dnZXIoKS5sb2dBbHdheXMKLQotc3RydWN0IENsaWVu
dFN0YXRlIHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0KLSAgICBleHBs
aWNpdCBDbGllbnRTdGF0ZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotICAgICAgICA6
IGNsaWVudChjbGllbnQpCi0gICAgICAgICwgY29udGV4dElkKGNvbnRleHRJZCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciA9PSAoQ2xpZW50U3RhdGUgY29uc3QmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnRleHRJZCA9PSBvdGhlci5jb250ZXh0SWQg
JiYgJmNsaWVudCA9PSAmb3RoZXIuY2xpZW50OwotICAgIH0KLQotICAgIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJDbGllbnQmIGNsaWVudDsKLSAgICBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZDsKLSAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0
YXRlRmxhZ3MgZmxhZ3MgeyBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpJc05vdFBsYXlpbmcgfTsK
LSAgICBib29sIHJlcXVlc3RlZFBpY2tlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBwcmV2aW91c2x5
UmVxdWVzdGVkUGlja2VyIHsgZmFsc2UgfTsKLSAgICBib29sIGNvbmZpZ3VyYXRpb25SZXF1aXJl
ZCB7IHRydWUgfTsKLSAgICBib29sIHBsYXllZFRvRW5kIHsgZmFsc2UgfTsKLX07Ci0KLXN0YXRp
YyBib29sIGZsYWdzQXJlU2V0KE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyB2YWx1ZSwg
dW5zaWduZWQgZmxhZ3MpCi17Ci0gICAgcmV0dXJuIHZhbHVlICYgZmxhZ3M7Ci19Ci0KLVN0cmlu
ZyBtZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdz
IGZsYWdzKQotewotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nOwotICAgIGlmIChmbGFncyAmIE1l
ZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJJc1Bs
YXlpbmdBdWRpbysiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdW
aWRlbykKLSAgICAgICAgc3RyaW5nLmFwcGVuZCgiSXNQbGF5aW5nVmlkZW8rIik7Ci0gICAgaWYg
KGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkKLSAgICAg
ICAgc3RyaW5nLmFwcGVuZCgiSXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSsiKTsKLSAgICBpZiAo
ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3Rl
bmVyKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJIYXNUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5l
cisiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFy
Z2V0TW9uaXRvcmluZykKLSAgICAgICAgc3RyaW5nLmFwcGVuZCgiUmVxdWlyZXNUYXJnZXRNb25p
dG9yaW5nKyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OkV4dGVybmFsRGV2aWNl
QXV0b1BsYXlDYW5kaWRhdGUpCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIkV4dGVybmFsRGV2aWNl
QXV0b1BsYXlDYW5kaWRhdGUrIik7Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6RGlk
UGxheVRvRW5kKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJEaWRQbGF5VG9FbmQrIik7Ci0gICAg
aWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVvKQotICAgICAgICBzdHJp
bmcuYXBwZW5kKCJIYXNBdWRpb09yVmlkZW8rIik7Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoIklzTm90UGxheWluZyIpOwotICAgIGVsc2UKLSAgICAg
ICAgc3RyaW5nLnJlc2l6ZShzdHJpbmcubGVuZ3RoKCkgLSAxKTsKLQotICAgIHJldHVybiBtYWtl
U3RyaW5nKCIgeyAiLCBzdHJpbmcudG9TdHJpbmcoKSwgIiB9Iik7Ci19Ci0KLWNsYXNzIFdlYk1l
ZGlhU2Vzc2lvbkxvZ2dlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViTWVkaWFTZXNz
aW9uTG9nZ2VyKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLQotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPiBjcmVhdGUoV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlciYgbWFuYWdlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4obWFuYWdlcik7Ci0gICAgfQotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIGlubGluZSB2b2lkIGxvZ0Fsd2F5cyhj
b25zdCBjaGFyKiBtZXRob2ROYW1lLCBDbGllbnRTdGF0ZSogc3RhdGUsIGNvbnN0IEFyZ3VtZW50
cyYuLi4gYXJndW1lbnRzKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFzdGF0ZS0+Y2xpZW50
LmFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBtX2xvZ2dlci0+bG9nQWx3YXlzKExvZ01lZGlhLCBtYWtlU3RyaW5nKCJXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjoiLCBtZXRob2ROYW1lLCAnICcpLCBzdGF0ZS0+Y29udGV4dElkLnRvVUludDY0
KCksIHN0YXRlLT5mbGFncywgYXJndW1lbnRzLi4uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKGNvbnN0IGNo
YXIqIG1ldGhvZE5hbWUsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKSBjb25zdAotICAg
IHsKLSAgICAgICAgaWYgKCFtX21hbmFnZXIuYWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbG9nZ2VyLT5sb2dBbHdheXMoTG9nTWVkaWEs
IG1ha2VTdHJpbmcoIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OiIsIG1ldGhvZE5hbWUsICcgJyks
IGFyZ3VtZW50cy4uLik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk1lZGlhU2Vz
c2lvbkxvZ2dlcj4oV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYpOwotICAgIFdlYk1lZGlhU2Vzc2lv
bkxvZ2dlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyKQotICAgICAgICA6IG1fbWFu
YWdlcihtYW5hZ2VyKQotICAgICAgICAsIG1fbG9nZ2VyKExvZ2dlcjo6Y3JlYXRlKHRoaXMpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBtX21hbmFnZXI7Ci0g
ICAgUmVmPExvZ2dlcj4gbV9sb2dnZXI7Ci19OwotCi1XZWJNZWRpYVNlc3Npb25Mb2dnZXImIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmxvZ2dlcigpCi17Ci0gICAgaWYgKCFtX2xvZ2dlcikKLSAg
ICAgICAgbV9sb2dnZXIgPSBXZWJNZWRpYVNlc3Npb25Mb2dnZXI6OmNyZWF0ZSgqdGhpcyk7Ci0K
LSAgICByZXR1cm4gKm1fbG9nZ2VyOwotfQotCi1ib29sIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiBhbGxPZihtX2Ns
aWVudFN0YXRlLCBbXSAoYXV0byYgc3RhdGUpIHsKLSAgICAgICAgcmV0dXJuIHN0YXRlLT5jbGll
bnQuYWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotICAgIH0pOwotfQotCi12b2lkIFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChi
b29sIGVuYWJsZWQpCi17Ci0gICAgaWYgKG1fbW9ja1BpY2tlckVuYWJsZWQgPT0gZW5hYmxlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fKTsKLSAgICBtX21vY2tQaWNrZXJFbmFibGVkID0gZW5hYmxlZDsKLX0KLQotdm9pZCBX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRl
IHN0YXRlKQotewotICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7
Ci0gICAgbW9ja1BpY2tlcigpLnNldFN0YXRlKG5hbWUsIHN0YXRlKTsKLX0KLQotdm9pZCBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQ
b3B1cCgpCi17Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsK
LSAgICBtb2NrUGlja2VyKCkuZGlzbWlzc1BvcHVwKCk7Ci19Ci0KLU1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlja2VyKCkKLXsKLSAg
ICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtl
VW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7Ci0KLSAgICByZXR1
cm4gKm1fcGlja2VyT3ZlcnJpZGUuZ2V0KCk7Ci19Ci0KLVdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXImIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnRhcmdldFBpY2tlcigpCi17Ci0g
ICAgaWYgKG1fbW9ja1BpY2tlckVuYWJsZWQpCi0gICAgICAgIHJldHVybiBtb2NrUGlja2VyKCk7
Ci0KLSAgICByZXR1cm4gcGxhdGZvcm1QaWNrZXIoKTsKLX0KLQotV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcigpCi0gICAgOiBtX3Rhc2tUaW1lcihSdW5Mb29w
OjpjdXJyZW50KCksIHRoaXMsICZXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXNrVGltZXJGaXJl
ZCkKLSAgICAsIG1fd2F0Y2hkb2dUaW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1RpbWVyRmlyZWQpCi17Ci19Ci0KLVdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXI6On5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyKCkgPSBkZWZhdWx0OwotCi1Q
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJD
bGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCi17Ci0gICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xpZW50LCBjb250ZXh0SWQpOwot
ICAgIEFTU0VSVChpbmRleCA9PSBub3RGb3VuZCk7Ci0gICAgaWYgKGluZGV4ICE9IG5vdEZvdW5k
KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCBjb250ZXh0SWQudG9VSW50NjQoKSk7Ci0gICAgbV9jbGllbnRTdGF0ZS5h
cHBlbmQobWFrZVVuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKLQotICAg
IGlmIChtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQp
Ci0gICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2soSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrIHwg
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKLQotICAgIHJldHVybiBjb250ZXh0SWQ7
Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlUGxheWJhY2tUYXJnZXRQ
aWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLXsKLSAgICBzaXplX3Qg
aW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5v
dEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0
ZVtpbmRleF0uZ2V0KCkpOwotCi0gICAgbV9jbGllbnRTdGF0ZS5yZW1vdmUoaW5kZXgpOwotICAg
IHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwg
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpyZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMoV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50KQotewotICAgIGlmIChtX2NsaWVudFN0YXRlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChzaXplX3QgaSA9IG1fY2xpZW50
U3RhdGUuc2l6ZSgpOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgIGlmICgmbV9jbGllbnRTdGF0ZVtp
IC0gMV0tPmNsaWVudCA9PSAmY2xpZW50KSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaSAtIDFdLmdldCgpKTsKLSAg
ICAgICAgICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGkgLSAxKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFz
ayB8IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wsIGJvb2wgdXNlRGFya0FwcGVh
cmFuY2UpCi17Ci0gICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xpZW50LCBjb250ZXh0SWQpOwot
ICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5k
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBjbGllbnRSZXF1ZXN0aW5nUGlja2VyID0g
bV9jbGllbnRTdGF0ZVtpbmRleF07Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3Rh
dGUpIHsKLSAgICAgICAgc3RhdGUtPnJlcXVlc3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVudFJl
cXVlc3RpbmdQaWNrZXI7Ci0gICAgICAgIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2Vy
ID0gc3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdl
dCgpKTsKLQotICAgIGJvb2wgaGFzQWN0aXZlUm91dGUgPSBmbGFnc0FyZVNldChtX2NsaWVudFN0
YXRlW2luZGV4XS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZp
Y2UpOwotICAgIHRhcmdldFBpY2tlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjbGllbnQu
cGxhdGZvcm1WaWV3KCksIEZsb2F0UmVjdChyZWN0KSwgaGFzQWN0aXZlUm91dGUsIHVzZURhcmtB
cHBlYXJhbmNlKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0
ZURpZENoYW5nZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgbmV3RmxhZ3MpCi17Ci0gICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xp
ZW50LCBjb250ZXh0SWQpOwotICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBjaGFuZ2Vk
Q2xpZW50U3RhdGUgPSBtX2NsaWVudFN0YXRlW2luZGV4XTsKLSAgICBNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3Mgb2xkRmxhZ3MgPSBjaGFuZ2VkQ2xpZW50U3RhdGUtPmZsYWdzOwotICAg
IGlmIChuZXdGbGFncyA9PSBvbGRGbGFncykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5n
ZXQoKSwgIm5ldyBmbGFncyA9ICIsIG5ld0ZsYWdzKTsKLQotICAgIGNoYW5nZWRDbGllbnRTdGF0
ZS0+ZmxhZ3MgPSBuZXdGbGFnczsKLQotICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFn
cyB1cGRhdGVDb25maWd1cmF0aW9uRmxhZ3MgPSBNZWRpYVByb2R1Y2VyOjpSZXF1aXJlc1BsYXli
YWNrVGFyZ2V0TW9uaXRvcmluZyB8IE1lZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5TGlzdGVuZXIgfCBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW87Ci0gICAg
aWYgKChvbGRGbGFncyAmIHVwZGF0ZUNvbmZpZ3VyYXRpb25GbGFncykgIT0gKG5ld0ZsYWdzICYg
dXBkYXRlQ29uZmlndXJhdGlvbkZsYWdzKSkKLSAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhU
YXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2spOwotCi0gICAgTWVkaWFQcm9kdWNlcjo6
TWVkaWFTdGF0ZUZsYWdzIHBsYXlpbmdUb1RhcmdldEZsYWdzID0gTWVkaWFQcm9kdWNlcjo6SXNQ
bGF5aW5nVG9FeHRlcm5hbERldmljZSB8IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvOwot
ICAgIGlmICgob2xkRmxhZ3MgJiBwbGF5aW5nVG9UYXJnZXRGbGFncykgIT0gKG5ld0ZsYWdzICYg
cGxheWluZ1RvVGFyZ2V0RmxhZ3MpKSB7Ci0gICAgICAgIGlmIChmbGFnc0FyZVNldChvbGRGbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pICYmICFmbGFnc0FyZVNldChuZXdGbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pICYmIGZsYWdzQXJlU2V0KG5ld0ZsYWdz
LCBNZWRpYVByb2R1Y2VyOjpEaWRQbGF5VG9FbmQpKQotICAgICAgICAgICAgY2hhbmdlZENsaWVu
dFN0YXRlLT5wbGF5ZWRUb0VuZCA9IHRydWU7Ci0gICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2so
V2F0Y2hkb2dUaW1lckNvbmZpZ3VyYXRpb25UYXNrKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fcGxh
eWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkgfHwgIWZs
YWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5
Q2FuZGlkYXRlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRG8gbm90IGludGVycnVwdCBh
bm90aGVyIGVsZW1lbnQgYWxyZWFkeSBwbGF5aW5nIHRvIGEgZGV2aWNlLgotICAgIGZvciAoYXV0
byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7Ci0gICAgICAgIGlmIChzdGF0ZSA9PSBjaGFuZ2Vk
Q2xpZW50U3RhdGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZmxhZ3NB
cmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2
aWNlKSAmJiBmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWlu
Z1ZpZGVvKSkgewotICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiByZXR1cm5pbmcgZWFybHkiKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvIG5vdCBiZWdpbiBwbGF5aW5nIHRv
IHRoZSBkZXZpY2UgdW5sZXNzIHBsYXliYWNrIGhhcyBqdXN0IHN0YXJ0ZWQuCi0gICAgaWYgKCFm
bGFnc0FyZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pIHx8IGZs
YWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKLSAg
ICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAicmV0dXJuaW5n
IGVhcmx5LCBwbGF5YmFjayBkaWRuJ3QganVzdCBzdGFydCIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAg
aWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdl
dCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoZmFsc2UpIik7Ci0g
ICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgZmFsc2UpOwotICAgIH0KLQotICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgY2hhbmdlZENsaWVudFN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0
U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKLSAgICBjaGFuZ2VkQ2xpZW50U3Rh
dGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjaGFuZ2VkQ2xpZW50U3Rh
dGUtPmNvbnRleHRJZCwgdHJ1ZSk7Ci0KLSAgICBpZiAoaW5kZXggJiYgbV9jbGllbnRTdGF0ZS5z
aXplKCkgPiAxKQotICAgICAgICBzdGQ6OnN3YXAobV9jbGllbnRTdGF0ZS5hdChpbmRleCksIG1f
Y2xpZW50U3RhdGUuYXQoMCkpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIHRhcmdldCkKLXsKLSAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJoYXMgYWN0aXZlIHJv
dXRlID0gIiwgdGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0
ID0gV1RGTW92ZSh0YXJnZXQpOwotICAgIG1fdGFyZ2V0Q2hhbmdlZCA9IHRydWU7Ci0gICAgc2No
ZWR1bGVEZWxheWVkVGFzayhUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spOwotfQotCi12
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKGJvb2wgYXZhaWxhYmxlKQotewotICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgYXZhaWxhYmxlKTsKLSAgICBtX2V4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlID0gYXZhaWxhYmxlOwotICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0
YXRlKQotICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIGF2YWlsYWJsZSk7Ci19Ci0KLXZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoKQotewot
ICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7Ci0gICAgbV9wbGF5
YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCA9IHRydWU7Ci0gICAgc2NoZWR1bGVEZWxheWVkVGFz
ayhUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spOwotfQotCi12b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmNvbmZpZ3VyZU5ld0NsaWVudHMoKQotewotICAgIGZvciAoYXV0byYgc3Rh
dGUgOiBtX2NsaWVudFN0YXRlKSB7Ci0gICAgICAgIGlmICghc3RhdGUtPmNvbmZpZ3VyYXRpb25S
ZXF1aXJlZCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHN0YXRlLT5jb25maWd1
cmF0aW9uUmVxdWlyZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwotCi0gICAgICAg
IGlmIChtX3BsYXliYWNrVGFyZ2V0KQotICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRQbGF5
YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFja1RhcmdldC5jb3B5UmVmKCkp
OwotICAgIH0KLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5
YmFja1RhcmdldENsaWVudHMoKQotewotICAgIGlmIChtX2NsaWVudFN0YXRlLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90IGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVk
UGlja2VyID0gbm90Rm91bmQ7Ci0gICAgc2l6ZV90IGluZGV4T2ZMYXN0Q2xpZW50VG9SZXF1ZXN0
UGlja2VyID0gbm90Rm91bmQ7Ci0gICAgc2l6ZV90IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFy
Z2V0ID0gbm90Rm91bmQ7Ci0gICAgYm9vbCBoYXZlQWN0aXZlUm91dGUgPSBtX3BsYXliYWNrVGFy
Z2V0ICYmIG1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCk7Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fY2xpZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0
byYgc3RhdGUgPSBtX2NsaWVudFN0YXRlW2ldOwotCi0gICAgICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIsIHJlcXVlc3RlZFBpY2tlciA9
ICIsIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIpOwotCi0gICAgICAgIGlmICgobV90YXJnZXRDaGFu
Z2VkIHx8IG1fcGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzZWQpICYmIHN0YXRlLT5yZXF1ZXN0
ZWRQaWNrZXIpCi0gICAgICAgICAgICBpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9
IGk7Ci0KLSAgICAgICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID09IG5vdEZv
dW5kICYmIGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VG9FeHRlcm5hbERldmljZSkpCi0gICAgICAgICAgICBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldCA9IGk7Ci0KLSAgICAgICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID09
IG5vdEZvdW5kICYmIGhhdmVBY3RpdmVSb3V0ZSAmJiBzdGF0ZS0+cHJldmlvdXNseVJlcXVlc3Rl
ZFBpY2tlcikKLSAgICAgICAgICAgIGluZGV4T2ZMYXN0Q2xpZW50VG9SZXF1ZXN0UGlja2VyID0g
aTsKLSAgICB9Ci0KLSAgICBpZiAoaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgIT0g
bm90Rm91bmQpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaW5kZXhP
ZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXI7Ci0gICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxh
eVRvVGFyZ2V0ID09IG5vdEZvdW5kICYmIGluZGV4T2ZMYXN0Q2xpZW50VG9SZXF1ZXN0UGlja2Vy
ICE9IG5vdEZvdW5kKQotICAgICAgICBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IGlu
ZGV4T2ZMYXN0Q2xpZW50VG9SZXF1ZXN0UGlja2VyOwotICAgIGlmIChpbmRleE9mQ2xpZW50V2ls
bFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBoYXZlQWN0aXZlUm91dGUgJiYgZmxhZ3NBcmVT
ZXQobV9jbGllbnRTdGF0ZVswXS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkV4dGVybmFsRGV2aWNl
QXV0b1BsYXlDYW5kaWRhdGUpICYmICFmbGFnc0FyZVNldChtX2NsaWVudFN0YXRlWzBdLT5mbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQotICAgICAgICBpbmRleE9mQ2xpZW50
V2lsbFBsYXlUb1RhcmdldCA9IDA7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2xp
ZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0
YXRlW2ldOwotCi0gICAgICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KQotICAgICAgICAgICAgc3Rh
dGUtPmNsaWVudC5zZXRQbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCAqbV9wbGF5YmFj
a1RhcmdldC5jb3B5UmVmKCkpOwotCi0gICAgICAgIGlmIChpICE9IGluZGV4T2ZDbGllbnRXaWxs
UGxheVRvVGFyZ2V0IHx8ICFoYXZlQWN0aXZlUm91dGUpIHsKLSAgICAgICAgICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKLSAgICAgICAgICAgIHN0YXRl
LT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwg
ZmFsc2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIg
JiYgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkgewotICAgICAgICAgICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5n
IHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkIik7Ci0gICAgICAgICAgICBzdGF0ZS0+
Y2xpZW50LnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKHN0YXRlLT5jb250ZXh0SWQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGUtPmNvbmZpZ3VyYXRpb25SZXF1aXJlZCA9IGZh
bHNlOwotICAgICAgICBpZiAobV90YXJnZXRDaGFuZ2VkIHx8IG1fcGxheWJhY2tUYXJnZXRQaWNr
ZXJEaXNtaXNzZWQpCi0gICAgICAgICAgICBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyID0gZmFsc2U7
Ci0gICAgfQotCi0gICAgaWYgKGhhdmVBY3RpdmVSb3V0ZSAmJiBpbmRleE9mQ2xpZW50V2lsbFBs
YXlUb1RhcmdldCAhPSBub3RGb3VuZCkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50
U3RhdGVbaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXRdOwotICAgICAgICBpZiAoIWZsYWdz
QXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERl
dmljZSkpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dCh0cnVlKSIpOwotICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5
YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIG1fdGFyZ2V0Q2hhbmdlZCA9IGZhbHNlOwotICAgIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIo
KTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVQbGF5YmFja1Rh
cmdldE1vbml0b3JpbmcoKQotewotICAgIGJvb2wgbW9uaXRvcmluZ1JlcXVpcmVkID0gZmFsc2U7
Ci0gICAgYm9vbCBoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciA9IGZhbHNlOwotICAgIGJvb2wgaGF2
ZUNsaWVudFdpdGhNZWRpYSA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVu
dFN0YXRlKSB7Ci0gICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
Xywgc3RhdGUuZ2V0KCkpOwotICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNl
cjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpIHsKLSAgICAgICAgICAgIG1vbml0
b3JpbmdSZXF1aXJlZCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzUGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlMaXN0ZW5lcikKLSAgICAgICAgICAgIGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVy
ID0gdHJ1ZTsKLSAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc0F1
ZGlvT3JWaWRlbykKLSAgICAgICAgICAgIGhhdmVDbGllbnRXaXRoTWVkaWEgPSB0cnVlOwotICAg
IH0KLQotICAgIGlmIChtb25pdG9yaW5nUmVxdWlyZWQgfHwgKGhhc0F2YWlsYWJpbGl0eUxpc3Rl
bmVyICYmIGhhdmVDbGllbnRXaXRoTWVkaWEpKSB7Ci0gICAgICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0YXJ0aW5nIG1vbml0b3JpbmciKTsKLSAgICAgICAg
dGFyZ2V0UGlja2VyKCkuc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19f
LCAic3RvcHBpbmcgbW9uaXRvcmluZyIpOwotICAgICAgICB0YXJnZXRQaWNrZXIoKS5zdG9wTW9u
aXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOwotICAgIH0KLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzY2hlZHVsZURlbGF5ZWRUYXNrKENvbmZpZ3VyYXRpb25UYXNrcyB0YXNrcykK
LXsKLSAgICBtX3Rhc2tGbGFncyB8PSB0YXNrczsKLSAgICBtX3Rhc2tUaW1lci5zdGFydE9uZVNo
b3QodGFza0RlbGF5SW50ZXJ2YWwpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnRhc2tUaW1lckZpcmVkKCkKLXsKLSAgICBpZiAobV90YXNrRmxhZ3MgJiBJbml0aWFsQ29uZmln
dXJhdGlvblRhc2spCi0gICAgICAgIGNvbmZpZ3VyZU5ld0NsaWVudHMoKTsKLSAgICBpZiAobV90
YXNrRmxhZ3MgJiBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spCi0gICAgICAgIGNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cygpOwotICAgIGlmIChtX3Rhc2tGbGFncyAmIFRhcmdl
dE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzaykKLSAgICAgICAgY29uZmlndXJlUGxheWJhY2tU
YXJnZXRNb25pdG9yaW5nKCk7Ci0gICAgaWYgKG1fdGFza0ZsYWdzICYgV2F0Y2hkb2dUaW1lckNv
bmZpZ3VyYXRpb25UYXNrKQotICAgICAgICBjb25maWd1cmVXYXRjaGRvZ1RpbWVyKCk7Ci0KLSAg
ICBtX3Rhc2tGbGFncyA9IE5vVGFzazsKLX0KLQotc2l6ZV90IFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmZpbmQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCogY2xpZW50LCBQbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLXsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fY2xpZW50U3RhdGUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1f
Y2xpZW50U3RhdGVbaV0tPmNvbnRleHRJZCA9PSBjb250ZXh0SWQgJiYgJm1fY2xpZW50U3RhdGVb
aV0tPmNsaWVudCA9PSBjbGllbnQpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gbm90Rm91bmQ7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29u
ZmlndXJlV2F0Y2hkb2dUaW1lcigpCi17Ci0gICAgc3RhdGljIGNvbnN0IFNlY29uZHMgd2F0Y2hk
b2dUaW1lckludGVydmFsQWZ0ZXJQYXVzaW5nIHsgMV9oIH07Ci0gICAgc3RhdGljIGNvbnN0IFNl
Y29uZHMgd2F0Y2hkb2dUaW1lckludGVydmFsQWZ0ZXJQbGF5aW5nVG9FbmQgeyA4X21pbiB9Owot
Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3Rp
dmVSb3V0ZSgpKSB7Ci0gICAgICAgIGlmIChtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewot
ICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3Rv
cHBpbmcgdGltZXIiKTsKLSAgICAgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSB7
IH07Ci0gICAgICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wgc3RvcFRpbWVyID0gZmFsc2U7Ci0gICAg
Ym9vbCBkaWRQbGF5VG9FbmQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGll
bnRTdGF0ZSkgewotCi0gICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgc3RhdGUuZ2V0KCksICIgcGxheWVkVG9FbmQgPSAiLCBzdGF0ZS0+cGxheWVkVG9FbmQp
OwotCi0gICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywg
TWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKQotICAgICAgICAgICAgc3RvcFRpbWVyID0g
dHJ1ZTsKLSAgICAgICAgaWYgKHN0YXRlLT5wbGF5ZWRUb0VuZCkKLSAgICAgICAgICAgIGRpZFBs
YXlUb0VuZCA9IHRydWU7Ci0gICAgICAgIHN0YXRlLT5wbGF5ZWRUb0VuZCA9IGZhbHNlOwotICAg
IH0KLQotICAgIGlmIChzdG9wVGltZXIpIHsKLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJ
T05NQU5BR0VSKF9fZnVuY19fLCAic3RvcHBpbmcgdGltZXIiKTsKLSAgICAgICAgbV9jdXJyZW50
V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKLSAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBTZWNvbmRzIGludGVydmFsID0gZGlkUGxheVRvRW5kID8g
d2F0Y2hkb2dUaW1lckludGVydmFsQWZ0ZXJQbGF5aW5nVG9FbmQgOiB3YXRjaGRvZ1RpbWVySW50
ZXJ2YWxBZnRlclBhdXNpbmc7Ci0gICAgICAgIGlmIChpbnRlcnZhbCAhPSBtX2N1cnJlbnRXYXRj
aGRvZ0ludGVydmFsIHx8ICFtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAg
ICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAidGltZXIgc2No
ZWR1bGVkIGZvciAiLCBpbnRlcnZhbC52YWx1ZSgpLCAiIHNlY29uZHMiKTsKLSAgICAgICAgbV9j
dXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IGludGVydmFsOwotICAgIH0KLX0KLQotdm9pZCBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjp3YXRjaGRvZ1RpbWVyRmlyZWQoKQotewotICAgIGlmICghbV9w
bGF5YmFja1RhcmdldCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICB0YXJnZXRQaWNrZXIoKS5pbnZhbGlkYXRlUGxh
eWJhY2tUYXJnZXRzKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5o
CShub25leGlzdGVudCkKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCi0KLSNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
IgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCIKLSNpbmNsdWRlICJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIgotI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybVZpZXcuaCIKLSNpbmNsdWRlICJQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBDbGllbnRTdGF0ZTsKLWNsYXNzIEludFJlY3Q7Ci1jbGFzcyBXZWJNZWRp
YVNlc3Npb25Mb2dnZXI7Ci1jbGFzcyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50OwotCi1j
bGFzcyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXI6OkNsaWVudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcik7Ci1wdWJsaWM6Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlciYgc2hhcmVkKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJiwgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
IGFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGll
bnQmLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFsbFBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50cyhXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IEludFJl
Y3QmLCBib29sLCBib29sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaWVudFN0YXRlRGlk
Q2hhbmdlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MpOwotCi0gICAgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7Ci0KLXByb3Rl
Y3RlZDoKLSAgICBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKCk7Ci0gICAgdmlydHVhbCB+V2ViTWVk
aWFTZXNzaW9uTWFuYWdlcigpOwotCi0gICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyJiBwbGF0Zm9ybVBpY2tlcigpID0gMDsKLSAgICBzdGF0aWMgV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlciYgcGxhdGZvcm1NYW5hZ2VyKCk7Ci0KLXByaXZhdGU6Ci0KLSAgICBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiB0YXJnZXRQaWNrZXIoKTsKLSAgICBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgbW9ja1BpY2tlcigpOwotCi0gICAg
Ly8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50Ci0gICAgdm9pZCBzZXRQbGF5YmFj
a1RhcmdldChSZWY8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKCkgb3ZlcnJp
ZGU7Ci0KLSAgICBzaXplX3QgZmluZChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KiwgUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcik7Ci0KLSAgICB2b2lkIGNvbmZpZ3Vy
ZVBsYXliYWNrVGFyZ2V0Q2xpZW50cygpOwotICAgIHZvaWQgY29uZmlndXJlTmV3Q2xpZW50cygp
OwotICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCk7Ci0gICAgdm9p
ZCBjb25maWd1cmVXYXRjaGRvZ1RpbWVyKCk7Ci0KLSAgICBlbnVtIENvbmZpZ3VyYXRpb25UYXNr
RmxhZ3MgewotICAgICAgICBOb1Rhc2sgPSAwLAotICAgICAgICBJbml0aWFsQ29uZmlndXJhdGlv
blRhc2sgPSAxIDw8IDAsCi0gICAgICAgIFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayA9
IDEgPDwgMSwKLSAgICAgICAgVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrID0gMSA8
PCAyLAotICAgICAgICBXYXRjaGRvZ1RpbWVyQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDMsCi0g
ICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIENvbmZpZ3VyYXRpb25UYXNrczsKLSAgICBTdHJp
bmcgdG9TdHJpbmcoQ29uZmlndXJhdGlvblRhc2tzKTsKLQotICAgIHZvaWQgc2NoZWR1bGVEZWxh
eWVkVGFzayhDb25maWd1cmF0aW9uVGFza3MpOwotICAgIHZvaWQgdGFza1RpbWVyRmlyZWQoKTsK
LQotICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7Ci0KLSAgICBXZWJNZWRpYVNlc3Npb25M
b2dnZXImIGxvZ2dlcigpOwotCi0gICAgUnVuTG9vcDo6VGltZXI8V2ViTWVkaWFTZXNzaW9uTWFu
YWdlcj4gbV90YXNrVGltZXI7Ci0gICAgUnVuTG9vcDo6VGltZXI8V2ViTWVkaWFTZXNzaW9uTWFu
YWdlcj4gbV93YXRjaGRvZ1RpbWVyOwotCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDbGll
bnRTdGF0ZT4+IG1fY2xpZW50U3RhdGU7Ci0gICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+
IG1fcGxheWJhY2tUYXJnZXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrPiBtX3BpY2tlck92ZXJyaWRlOwotICAgIENvbmZpZ3VyYXRp
b25UYXNrcyBtX3Rhc2tGbGFncyB7IE5vVGFzayB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJN
ZWRpYVNlc3Npb25Mb2dnZXI+IG1fbG9nZ2VyOwotICAgIFNlY29uZHMgbV9jdXJyZW50V2F0Y2hk
b2dJbnRlcnZhbDsKLSAgICBib29sIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgeyBm
YWxzZSB9OwotICAgIGJvb2wgbV90YXJnZXRDaGFuZ2VkIHsgZmFsc2UgfTsKLSAgICBib29sIG1f
cGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tb2Nr
UGlja2VyRW5hYmxlZCB7IGZhbHNlIH07Ci19OwotCi1TdHJpbmcgbWVkaWFQcm9kdWNlclN0YXRl
U3RyaW5nKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgTG9nQXJndW1lbnQ7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncz4gewotICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIGZsYWdz
KSB7IHJldHVybiBXZWJDb3JlOjptZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoZmxhZ3MpOyB9Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oCShu
b25leGlzdGVudCkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi0jaW5jbHVkZSAi
TWVkaWFQbGF5YmFja1RhcmdldC5oIgotI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybVZpZXcuaCIKLSNpbmNsdWRlICJQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgewotcHVibGljOgotICAg
IHZpcnR1YWwgfldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoUGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXliYWNrVGFyZ2V0
UGlja2VyV2FzRGlzbWlzc2VkKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBQbGF0Zm9ybVZpZXcqIHBsYXRmb3JtVmlldygpIGNvbnN0
ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fp
cnBsYXkvUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9QbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXJUeXBlPjsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWly
cGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKKyNpbmNsdWRl
ICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0FsZ29yaXRo
bXMuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBTZWNvbmRz
IHRhc2tEZWxheUludGVydmFsIHsgMTAwX21zIH07CisKKyNkZWZpbmUgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSIGxvZ2dlcigpLmxvZ0Fsd2F5cworCitzdHJ1Y3QgQ2xpZW50U3RhdGUg
eworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgIGV4cGxpY2l0IENs
aWVudFN0YXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAgICAgIDogY2xpZW50
KGNsaWVudCkKKyAgICAgICAgLCBjb250ZXh0SWQoY29udGV4dElkKQorICAgIHsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yID09IChDbGllbnRTdGF0ZSBjb25zdCYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gY29udGV4dElkID09IG90aGVyLmNvbnRleHRJZCAmJiAmY2xp
ZW50ID09ICZvdGhlci5jbGllbnQ7CisgICAgfQorCisgICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ckNsaWVudCYgY2xpZW50OworICAgIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkOworICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFn
cyBmbGFncyB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9OworICAgIGJv
b2wgcmVxdWVzdGVkUGlja2VyIHsgZmFsc2UgfTsKKyAgICBib29sIHByZXZpb3VzbHlSZXF1ZXN0
ZWRQaWNrZXIgeyBmYWxzZSB9OworICAgIGJvb2wgY29uZmlndXJhdGlvblJlcXVpcmVkIHsgdHJ1
ZSB9OworICAgIGJvb2wgcGxheWVkVG9FbmQgeyBmYWxzZSB9OworfTsKKworc3RhdGljIGJvb2wg
ZmxhZ3NBcmVTZXQoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHZhbHVlLCB1bnNpZ25l
ZCBmbGFncykKK3sKKyAgICByZXR1cm4gdmFsdWUgJiBmbGFnczsKK30KKworU3RyaW5nIG1lZGlh
UHJvZHVjZXJTdGF0ZVN0cmluZyhNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3Mp
Cit7CisgICAgU3RyaW5nQnVpbGRlciBzdHJpbmc7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9k
dWNlcjo6SXNQbGF5aW5nQXVkaW8pCisgICAgICAgIHN0cmluZy5hcHBlbmQoIklzUGxheWluZ0F1
ZGlvKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKQor
ICAgICAgICBzdHJpbmcuYXBwZW5kKCJJc1BsYXlpbmdWaWRlbysiKTsKKyAgICBpZiAoZmxhZ3Mg
JiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKQorICAgICAgICBzdHJp
bmcuYXBwZW5kKCJJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKyIpOworICAgIGlmIChmbGFncyAm
IE1lZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIpCisg
ICAgICAgIHN0cmluZy5hcHBlbmQoIkhhc1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyKyIpOwor
ICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25p
dG9yaW5nKQorICAgICAgICBzdHJpbmcuYXBwZW5kKCJSZXF1aXJlc1RhcmdldE1vbml0b3Jpbmcr
Iik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxh
eUNhbmRpZGF0ZSkKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiRXh0ZXJuYWxEZXZpY2VBdXRvUGxh
eUNhbmRpZGF0ZSsiKTsKKyAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpEaWRQbGF5VG9F
bmQpCisgICAgICAgIHN0cmluZy5hcHBlbmQoIkRpZFBsYXlUb0VuZCsiKTsKKyAgICBpZiAoZmxh
Z3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCisgICAgICAgIHN0cmluZy5hcHBl
bmQoIkhhc0F1ZGlvT3JWaWRlbysiKTsKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAg
ICAgc3RyaW5nLmFwcGVuZCgiSXNOb3RQbGF5aW5nIik7CisgICAgZWxzZQorICAgICAgICBzdHJp
bmcucmVzaXplKHN0cmluZy5sZW5ndGgoKSAtIDEpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmco
IiB7ICIsIHN0cmluZy50b1N0cmluZygpLCAiIH0iKTsKK30KKworY2xhc3MgV2ViTWVkaWFTZXNz
aW9uTG9nZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25Mb2dn
ZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+IGNyZWF0ZShXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyJiBtYW5hZ2VyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPihtYW5hZ2VyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKGNvbnN0IGNo
YXIqIG1ldGhvZE5hbWUsIENsaWVudFN0YXRlKiBzdGF0ZSwgY29uc3QgQXJndW1lbnRzJi4uLiBh
cmd1bWVudHMpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIXN0YXRlLT5jbGllbnQuYWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbG9n
Z2VyLT5sb2dBbHdheXMoTG9nTWVkaWEsIG1ha2VTdHJpbmcoIldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OiIsIG1ldGhvZE5hbWUsICcgJyksIHN0YXRlLT5jb250ZXh0SWQudG9VSW50NjQoKSwgc3Rh
dGUtPmZsYWdzLCBhcmd1bWVudHMuLi4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0
aG9kTmFtZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIW1fbWFuYWdlci5hbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbV9sb2dnZXItPmxvZ0Fsd2F5cyhMb2dNZWRpYSwgbWFrZVN0
cmluZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0aG9kTmFtZSwgJyAnKSwgYXJndW1l
bnRzLi4uKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJNZWRpYVNlc3Npb25Mb2dnZXI+IHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFTZXNzaW9uTG9n
Z2VyPihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJik7CisgICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2Vy
KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIpCisgICAgICAgIDogbV9tYW5hZ2VyKG1h
bmFnZXIpCisgICAgICAgICwgbV9sb2dnZXIoTG9nZ2VyOjpjcmVhdGUodGhpcykpCisgICAgewor
ICAgIH0KKworICAgIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1fbWFuYWdlcjsKKyAgICBSZWY8
TG9nZ2VyPiBtX2xvZ2dlcjsKK307CisKK1dlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6bG9nZ2VyKCkKK3sKKyAgICBpZiAoIW1fbG9nZ2VyKQorICAgICAgICBt
X2xvZ2dlciA9IFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcjo6Y3JlYXRlKCp0aGlzKTsKKworICAgIHJl
dHVybiAqbV9sb2dnZXI7Cit9CisKK2Jvb2wgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFsbE9mKG1fY2xpZW50U3Rh
dGUsIFtdIChhdXRvJiBzdGF0ZSkgeworICAgICAgICByZXR1cm4gc3RhdGUtPmNsaWVudC5hbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxlZCA9PSBlbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18p
OworICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOworfQorCit2b2lkIFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUp
Cit7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKKyAgICBt
b2NrUGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOworfQorCit2b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6Om1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkK
K3sKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1v
Y2tQaWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsKK30KKworTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQoreworICAgIGlmICgh
bV9waWNrZXJPdmVycmlkZSkKKyAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKKworICAgIHJldHVybiAqbV9w
aWNrZXJPdmVycmlkZS5nZXQoKTsKK30KKworV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFyZ2V0UGlja2VyKCkKK3sKKyAgICBpZiAo
bV9tb2NrUGlja2VyRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIG1vY2tQaWNrZXIoKTsKKworICAg
IHJldHVybiBwbGF0Zm9ybVBpY2tlcigpOworfQorCitXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyKCkKKyAgICA6IG1fdGFza1RpbWVyKFJ1bkxvb3A6OmN1cnJl
bnQoKSwgdGhpcywgJldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnRhc2tUaW1lckZpcmVkKQorICAg
ICwgbV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCkKK3sKK30KKworV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CisKK1BsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRk
UGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYg
Y2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
K3sKKyAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7CisgICAgQVNT
RVJUKGluZGV4ID09IG5vdEZvdW5kKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sIGNvbnRleHRJZC50b1VJbnQ2NCgpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVuZCht
YWtlVW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOworCisgICAgaWYgKG1f
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKKyAgICAg
ICAgc2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRD
bGllbnRzQ29uZmlndXJhdGlvblRhc2spOworCisgICAgcmV0dXJuIGNvbnRleHRJZDsKK30KKwor
dm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQoreworICAgIHNpemVfdCBpbmRleCA9
IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQp
OworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQUxX
QVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4
XS5nZXQoKSk7CisKKyAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7CisgICAgc2NoZWR1
bGVEZWxheWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRD
bGllbnRzQ29uZmlndXJhdGlvblRhc2spOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnJlbW92ZUFsbFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50cyhXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50JiBjbGllbnQpCit7CisgICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gbV9jbGllbnRTdGF0ZS5z
aXplKCk7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgaWYgKCZtX2NsaWVudFN0YXRlW2kgLSAxXS0+
Y2xpZW50ID09ICZjbGllbnQpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOworICAgICAgICAg
ICAgbV9jbGllbnRTdGF0ZS5yZW1vdmUoaSAtIDEpOworICAgICAgICB9CisgICAgfQorICAgIHNj
aGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwgVGFy
Z2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkK
K3sKKyAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7CisgICAgQVNT
RVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8mIGNsaWVudFJlcXVlc3RpbmdQaWNrZXIgPSBtX2NsaWVu
dFN0YXRlW2luZGV4XTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewor
ICAgICAgICBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyID0gc3RhdGUgPT0gY2xpZW50UmVxdWVzdGlu
Z1BpY2tlcjsKKyAgICAgICAgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0
ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOworICAgIH0KKworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwor
CisgICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5k
ZXhdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSk7Cisg
ICAgdGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNsaWVudC5wbGF0Zm9y
bVZpZXcoKSwgRmxvYXRSZWN0KHJlY3QpLCBoYXNBY3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFu
Y2UpOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlRGlkQ2hh
bmdlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3Rh
dGVGbGFncyBuZXdGbGFncykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNv
bnRleHRJZCk7CisgICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKKyAgICBpZiAoaW5kZXgg
PT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGNoYW5nZWRDbGllbnRT
dGF0ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhdOworICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3Rh
dGVGbGFncyBvbGRGbGFncyA9IGNoYW5nZWRDbGllbnRTdGF0ZS0+ZmxhZ3M7CisgICAgaWYgKG5l
d0ZsYWdzID09IG9sZEZsYWdzKQorICAgICAgICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAi
bmV3IGZsYWdzID0gIiwgbmV3RmxhZ3MpOworCisgICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFn
cyA9IG5ld0ZsYWdzOworCisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHVwZGF0
ZUNvbmZpZ3VyYXRpb25GbGFncyA9IE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJn
ZXRNb25pdG9yaW5nIHwgTWVkaWFQcm9kdWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlMaXN0ZW5lciB8IE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKKyAgICBpZiAoKG9s
ZEZsYWdzICYgdXBkYXRlQ29uZmlndXJhdGlvbkZsYWdzKSAhPSAobmV3RmxhZ3MgJiB1cGRhdGVD
b25maWd1cmF0aW9uRmxhZ3MpKQorICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1v
bml0b3JpbmdDb25maWd1cmF0aW9uVGFzayk7CisKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0
YXRlRmxhZ3MgcGxheWluZ1RvVGFyZ2V0RmxhZ3MgPSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdU
b0V4dGVybmFsRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW87CisgICAgaWYg
KChvbGRGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZsYWdzKSAhPSAobmV3RmxhZ3MgJiBwbGF5aW5n
VG9UYXJnZXRGbGFncykpIHsKKyAgICAgICAgaWYgKGZsYWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgIWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlh
UHJvZHVjZXI6OkRpZFBsYXlUb0VuZCkpCisgICAgICAgICAgICBjaGFuZ2VkQ2xpZW50U3RhdGUt
PnBsYXllZFRvRW5kID0gdHJ1ZTsKKyAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhXYXRjaGRv
Z1RpbWVyQ29uZmlndXJhdGlvblRhc2spOworICAgIH0KKworICAgIGlmICghbV9wbGF5YmFja1Rh
cmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSB8fCAhZmxhZ3NBcmVT
ZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkV4dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRh
dGUpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEbyBub3QgaW50ZXJydXB0IGFub3RoZXIg
ZWxlbWVudCBhbHJlYWR5IHBsYXlpbmcgdG8gYSBkZXZpY2UuCisgICAgZm9yIChhdXRvJiBzdGF0
ZSA6IG1fY2xpZW50U3RhdGUpIHsKKyAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRT
dGF0ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChmbGFnc0FyZVNldChz
dGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYm
IGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8p
KSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IHN0YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRG8gbm90IGJlZ2luIHBsYXlpbmcgdG8gdGhlIGRl
dmljZSB1bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qgc3RhcnRlZC4KKyAgICBpZiAoIWZsYWdzQXJl
U2V0KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgfHwgZmxhZ3NBcmVT
ZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgeworICAgICAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJyZXR1cm5pbmcgZWFybHks
IHBsYXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAgICBpZiAoc3Rh
dGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIg
Y2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKKyAgICAgICAg
c3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4
dElkLCBmYWxzZSk7CisgICAgfQorCisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VS
KF9fZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOworICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+Y2xp
ZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+Y29u
dGV4dElkLCB0cnVlKTsKKworICAgIGlmIChpbmRleCAmJiBtX2NsaWVudFN0YXRlLnNpemUoKSA+
IDEpCisgICAgICAgIHN0ZDo6c3dhcChtX2NsaWVudFN0YXRlLmF0KGluZGV4KSwgbV9jbGllbnRT
dGF0ZS5hdCgwKSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJh
Y2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQoreworICAgIEFMV0FZ
U19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgImhhcyBhY3RpdmUgcm91dGUgPSAi
LCB0YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOworICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZN
b3ZlKHRhcmdldCk7CisgICAgbV90YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKKyAgICBzY2hlZHVsZURl
bGF5ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFu
Z2UoYm9vbCBhdmFpbGFibGUpCit7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VS
KF9fZnVuY19fLCBhdmFpbGFibGUpOworICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGUgPSBhdmFpbGFibGU7CisgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpCisg
ICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFu
Z2Uoc3RhdGUtPmNvbnRleHRJZCwgYXZhaWxhYmxlKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCgpCit7CisgICAgQUxX
QVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKKyAgICBtX3BsYXliYWNrVGFy
Z2V0UGlja2VyRGlzbWlzc2VkID0gdHJ1ZTsKKyAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdl
dENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6Y29uZmlndXJlTmV3Q2xpZW50cygpCit7CisgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1f
Y2xpZW50U3RhdGUpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVk
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc3RhdGUtPmNvbmZpZ3VyYXRpb25S
ZXF1aXJlZCA9IGZhbHNlOworICAgICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZSkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CisKKyAgICAgICAgaWYgKG1f
cGxheWJhY2tUYXJnZXQpCisgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFy
Z2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7CisgICAg
fQorfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFy
Z2V0Q2xpZW50cygpCit7CisgICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzaXplX3QgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIg
PSBub3RGb3VuZDsKKyAgICBzaXplX3QgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIg
PSBub3RGb3VuZDsKKyAgICBzaXplX3QgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBu
b3RGb3VuZDsKKyAgICBib29sIGhhdmVBY3RpdmVSb3V0ZSA9IG1fcGxheWJhY2tUYXJnZXQgJiYg
bV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvJiBzdGF0
ZSA9IG1fY2xpZW50U3RhdGVbaV07CisKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3Rh
dGUtPnJlcXVlc3RlZFBpY2tlcik7CisKKyAgICAgICAgaWYgKChtX3RhcmdldENoYW5nZWQgfHwg
bV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkgJiYgc3RhdGUtPnJlcXVlc3RlZFBpY2tl
cikKKyAgICAgICAgICAgIGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gaTsKKwor
ICAgICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYg
ZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVy
bmFsRGV2aWNlKSkKKyAgICAgICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0g
aTsKKworICAgICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91
bmQgJiYgaGF2ZUFjdGl2ZVJvdXRlICYmIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2Vy
KQorICAgICAgICAgICAgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBpOworICAg
IH0KKworICAgIGlmIChpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciAhPSBub3RGb3Vu
ZCkKKyAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mQ2xpZW50
VGhhdFJlcXVlc3RlZFBpY2tlcjsKKyAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJn
ZXQgPT0gbm90Rm91bmQgJiYgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgIT0gbm90
Rm91bmQpCisgICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaW5kZXhPZkxh
c3RDbGllbnRUb1JlcXVlc3RQaWNrZXI7CisgICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRv
VGFyZ2V0ID09IG5vdEZvdW5kICYmIGhhdmVBY3RpdmVSb3V0ZSAmJiBmbGFnc0FyZVNldChtX2Ns
aWVudFN0YXRlWzBdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxh
eUNhbmRpZGF0ZSkgJiYgIWZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbMF0tPmZsYWdzLCBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCisgICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxh
eVRvVGFyZ2V0ID0gMDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0
ZS5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07
CisKKyAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCisgICAgICAgICAgICBzdGF0ZS0+Y2xp
ZW50LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0
LmNvcHlSZWYoKSk7CisKKyAgICAgICAgaWYgKGkgIT0gaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9U
YXJnZXQgfHwgIWhhdmVBY3RpdmVSb3V0ZSkgeworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAgICAgICAgICAgc3RhdGUtPmNsaWVu
dC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGUtPnJlcXVlc3RlZFBpY2tlciAmJiBtX3Bs
YXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgcGxheWJh
Y2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQu
cGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoc3RhdGUtPmNvbnRleHRJZCk7CisgICAg
ICAgIH0KKworICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0gZmFsc2U7Cisg
ICAgICAgIGlmIChtX3RhcmdldENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21p
c3NlZCkKKyAgICAgICAgICAgIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoaGF2ZUFjdGl2ZVJvdXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFy
Z2V0ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtp
bmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldF07CisgICAgICAgIGlmICghZmxhZ3NBcmVTZXQo
c3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkg
eworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBz
dGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUp
Iik7CisgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFy
Z2V0KHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgbV90
YXJnZXRDaGFuZ2VkID0gZmFsc2U7CisgICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworfQor
Cit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9u
aXRvcmluZygpCit7CisgICAgYm9vbCBtb25pdG9yaW5nUmVxdWlyZWQgPSBmYWxzZTsKKyAgICBi
b29sIGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVyID0gZmFsc2U7CisgICAgYm9vbCBoYXZlQ2xpZW50
V2l0aE1lZGlhID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUp
IHsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSk7CisgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpSZXF1
aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgeworICAgICAgICAgICAgbW9uaXRvcmluZ1Jl
cXVpcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlm
IChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUxpc3RlbmVyKQorICAgICAgICAgICAgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSB0cnVl
OworICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZp
ZGVvKQorICAgICAgICAgICAgaGF2ZUNsaWVudFdpdGhNZWRpYSA9IHRydWU7CisgICAgfQorCisg
ICAgaWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAoaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYg
aGF2ZUNsaWVudFdpdGhNZWRpYSkpIHsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOworICAgICAgICB0YXJnZXRQ
aWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9w
cGluZyBtb25pdG9yaW5nIik7CisgICAgICAgIHRhcmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5n
UGxheWJhY2tUYXJnZXRzKCk7CisgICAgfQorfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzIHRhc2tzKQoreworICAg
IG1fdGFza0ZsYWdzIHw9IHRhc2tzOworICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCh0YXNr
RGVsYXlJbnRlcnZhbCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1Rp
bWVyRmlyZWQoKQoreworICAgIGlmIChtX3Rhc2tGbGFncyAmIEluaXRpYWxDb25maWd1cmF0aW9u
VGFzaykKKyAgICAgICAgY29uZmlndXJlTmV3Q2xpZW50cygpOworICAgIGlmIChtX3Rhc2tGbGFn
cyAmIFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzaykKKyAgICAgICAgY29uZmlndXJlUGxh
eWJhY2tUYXJnZXRDbGllbnRzKCk7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0TW9uaXRv
cmluZ0NvbmZpZ3VyYXRpb25UYXNrKQorICAgICAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1v
bml0b3JpbmcoKTsKKyAgICBpZiAobV90YXNrRmxhZ3MgJiBXYXRjaGRvZ1RpbWVyQ29uZmlndXJh
dGlvblRhc2spCisgICAgICAgIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIoKTsKKworICAgIG1fdGFz
a0ZsYWdzID0gTm9UYXNrOworfQorCitzaXplX3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Zmlu
ZChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9jbGllbnRT
dGF0ZVtpXS0+Y29udGV4dElkID09IGNvbnRleHRJZCAmJiAmbV9jbGllbnRTdGF0ZVtpXS0+Y2xp
ZW50ID09IGNsaWVudCkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIHJldHVy
biBub3RGb3VuZDsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVX
YXRjaGRvZ1RpbWVyKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRjaGRvZ1RpbWVy
SW50ZXJ2YWxBZnRlclBhdXNpbmcgeyAxX2ggfTsKKyAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3
YXRjaGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCB7IDhfbWluIH07CisKKyAgICBp
ZiAoIW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRl
KCkpIHsKKyAgICAgICAgaWYgKG1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0
aW1lciIpOworICAgICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKKyAg
ICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYm9vbCBzdG9wVGltZXIgPSBmYWxzZTsKKyAgICBib29sIGRp
ZFBsYXlUb0VuZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CisKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBz
dGF0ZS5nZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7CisKKyAg
ICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5
aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCisgICAgICAgICAgICBzdG9wVGltZXIgPSB0cnVlOwor
ICAgICAgICBpZiAoc3RhdGUtPnBsYXllZFRvRW5kKQorICAgICAgICAgICAgZGlkUGxheVRvRW5k
ID0gdHJ1ZTsKKyAgICAgICAgc3RhdGUtPnBsYXllZFRvRW5kID0gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKHN0b3BUaW1lcikgeworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1lciIpOworICAgICAgICBtX2N1cnJlbnRXYXRjaGRv
Z0ludGVydmFsID0geyB9OworICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIFNlY29uZHMgaW50ZXJ2YWwgPSBkaWRQbGF5VG9FbmQgPyB3YXRjaGRv
Z1RpbWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCA6IHdhdGNoZG9nVGltZXJJbnRlcnZhbEFm
dGVyUGF1c2luZzsKKyAgICAgICAgaWYgKGludGVydmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50
ZXJ2YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICBtX3dh
dGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKKyAgICAgICAgfQorICAgICAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJ0aW1lciBzY2hlZHVsZWQg
Zm9yICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vjb25kcyIpOworICAgICAgICBtX2N1cnJlbnRX
YXRjaGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7CisgICAgfQorfQorCit2b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCgpCit7CisgICAgaWYgKCFtX3BsYXliYWNr
VGFyZ2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18pOworICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rh
cmdldHMoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNl
c3Npb25NYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
aXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1
ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlci5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2Nr
LmgiCisjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlldy5o
IgorI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKKyNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENsaWVudFN0YXRl
OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcjsKK2NsYXNzIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQ7CisKK2NsYXNzIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKTsKK3B1YmxpYzoKKworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWQoKTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dDo6U3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlQWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXJDbGllbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UmVjdCYsIGJvb2wsIGJvb2wpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViTWVkaWFTZXNzaW9uTWFu
YWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CisKKyAgICBib29sIGFsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyKCk7CisKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXImIHBsYXRmb3JtUGlj
a2VyKCkgPSAwOworICAgIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBwbGF0Zm9ybU1h
bmFnZXIoKTsKKworcHJpdmF0ZToKKworICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXImIHRhcmdldFBpY2tlcigpOworICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrJiBtb2NrUGlja2VyKCk7CisKKyAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyOjpDbGllbnQKKyAgICB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgcGxheWJhY2tU
YXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoKSBvdmVycmlkZTsKKworICAgIHNpemVfdCBmaW5kKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQqLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyKTsKKworICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRzKCk7
CisgICAgdm9pZCBjb25maWd1cmVOZXdDbGllbnRzKCk7CisgICAgdm9pZCBjb25maWd1cmVQbGF5
YmFja1RhcmdldE1vbml0b3JpbmcoKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIo
KTsKKworICAgIGVudW0gQ29uZmlndXJhdGlvblRhc2tGbGFncyB7CisgICAgICAgIE5vVGFzayA9
IDAsCisgICAgICAgIEluaXRpYWxDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMCwKKyAgICAgICAg
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAxLAorICAgICAgICBUYXJnZXRN
b25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDIsCisgICAgICAgIFdhdGNoZG9nVGlt
ZXJDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMywKKyAgICB9OworICAgIHR5cGVkZWYgdW5zaWdu
ZWQgQ29uZmlndXJhdGlvblRhc2tzOworICAgIFN0cmluZyB0b1N0cmluZyhDb25maWd1cmF0aW9u
VGFza3MpOworCisgICAgdm9pZCBzY2hlZHVsZURlbGF5ZWRUYXNrKENvbmZpZ3VyYXRpb25UYXNr
cyk7CisgICAgdm9pZCB0YXNrVGltZXJGaXJlZCgpOworCisgICAgdm9pZCB3YXRjaGRvZ1RpbWVy
RmlyZWQoKTsKKworICAgIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgbG9nZ2VyKCk7CisKKyAgICBS
dW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Rhc2tUaW1lcjsKKyAgICBS
dW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3dhdGNoZG9nVGltZXI7CisK
KyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENsaWVudFN0YXRlPj4gbV9jbGllbnRTdGF0ZTsK
KyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+IG1f
cGlja2VyT3ZlcnJpZGU7CisgICAgQ29uZmlndXJhdGlvblRhc2tzIG1fdGFza0ZsYWdzIHsgTm9U
YXNrIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4gbV9sb2dn
ZXI7CisgICAgU2Vjb25kcyBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsOworICAgIGJvb2wgbV9l
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Rhcmdl
dENoYW5nZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21p
c3NlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX21vY2tQaWNrZXJFbmFibGVkIHsgZmFsc2UgfTsK
K307CisKK1N0cmluZyBtZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhXZWJDb3JlOjpNZWRp
YVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIFdlYkNvcmU6Om1lZGlh
UHJvZHVjZXJTdGF0ZVN0cmluZyhmbGFncyk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CisjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
CisKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCisjaW5jbHVkZSAiTWVkaWFQcm9k
dWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlldy5oIgorI2luY2x1ZGUgIlBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpID0g
ZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtVmlldyogcGxhdGZv
cm1WaWV3KCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2
NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMjIyMiw2ICsyMjIyLDcgQEAKIAkJN0FGOUIyMEQxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwOTE4Q0ZCNUYyMDBDNjRCRUYgLyogSlNWVFRSZWdpb24u
aCAqLzsgfTsKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIx
OENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QkU3NDI3Mzgx
RkE5MDZGQkI0RjBGMkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAv
KiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovOyB9OworCQk3QzAyMzIwQjI1MUFEOTIwMDBCQTdC
QjYgLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RDc4QzFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHAgKi87IH07CiAJCTdDMDI5QzZFMjQ5M0M4RjgwMDI2ODIwNCAv
KiBDb2xvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzAyOUM2RDI0OTNDOEY4MDAyNjgyMDQgLyogQ29sb3JUeXBlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTg0M0ZFMUM4QjcyODMw
MDJFQjk3MyAvKiBBdXRvZmlsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MxODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxOTNCQkIxRjVF
MEVFRDAwODhGM0U2IC8qIENhbnZhc0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxOTNCQjYxRjVFMEVCOTAwODhGM0U2IC8qIENhbnZh
c0RpcmVjdGlvbi5oICovOyB9OwpAQCAtNDA5MSwxOCArNDA5Miw4IEBACiAJCUM2RjA5MDBBMTQz
MjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOTAwMTE0MzI3QjYxMDA2ODU4NDkgLyogTXV0
YXRpb25DYWxsYmFjay5oICovOyB9OwogCQlDNkYwOTAwRjE0MzI3QjYxMDA2ODU4NDkgLyogTXV0
YXRpb25PYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzZGMDkwMDYxNDMyN0I2MTAwNjg1ODQ5IC8qIE11dGF0aW9uT2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNkYwOTAyRDE0
MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOTAyNTE0MzI3RDRGMDA2ODU4NDkgLyog
SlNNdXRhdGlvbk9ic2VydmVyLmggKi87IH07Ci0JCUM5MDI3RjQyMUIxRDBBRDIwMEJGQkZFRiAv
KiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM5MDI3RjQwMUIxRDBBRDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaCAqLzsgfTsK
LQkJQzkwODQzRDAxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5MDg0M0NFMUIxOEU0
N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xzLmggKi87IH07Ci0JCUM5MEY2NTU1MUIy
MjUzQjEwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5MEY2NTUzMUIyMjUzOTYwMDIxNjNBMSAv
KiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLzsgfTsKLQkJQzkwRjY1NTYxQjIyNTNCRTAwMjE2
M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM5MEY2NTU0MUIyMjUzOTYwMDIxNjNBMSAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyLmggKi87IH07Ci0JCUM5MzdGRThEMUIxRjY4MjEwMDhFQ0M1RCAvKiBIVE1MTWVk
aWFFbGVtZW50TWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDOTY4QjJFNjFCMUU3MkY3MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVu
dE1lZGlhU2Vzc2lvbi5oICovOyB9OwotCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5NkY1RUMxMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oICovOyB9OwotCQlDOTZGNUVDNzFCNTg3
MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk2RjVFQzMxQjU4NzIy
NjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcCAqLzsgfTsK
LQkJQzk2RjVFQzgxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OTZGNUVDNDFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXIuaCAqLzsgfTsKIAkJQzk5MDU4MTMxRTMyQzc1RjAwNzNCRERBIC8qIFN1Y2Nlc3NPci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk5MDU4MTIxRTMy
QjczNDAwNzNCRERBIC8qIFN1Y2Nlc3NPci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUM5RDQ2NzA1MUU2MEM0NjUwMDgxOTVGQiAvKiBBdXRvcGxh
eUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OUQ0NjcwNDFFNjBDM0VCMDA4MTk1RkIgLyogQXV0b3BsYXlFdmVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUM5RDg1MUYwMUIzOURDNzgwMDg1
MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzlEODUxRUUxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vz
c2lvbk1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJQzlGODdDRkUxQjI4RjQwRTAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlGODdDRkQx
QjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1
MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0E2QzE1
MzAyMjBCOThDQzAwNTVDQkZDIC8qIEpTVmFsdWVJbldyYXBwZWRPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUFFM0I4MUZCODBFQUUwMEY1
RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0E3RTlCNDkyNDM2MURDNTAwNEU4OUY2IC8qIENv
bnRlbnRmdWxQYWludENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENBN0U5QjQ3MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRD
aGVja2VyLmggKi87IH07CkBAIC0xNDE1OCwyNyArMTQxNDksMTAgQEAKIAkJQzZGMDkxN0UxNDNB
MkJCOTAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOTAyNkI2MzFCMUNGNUFCMDAxRDk5QTcgLyog
SlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWVkaWFSZW1vdGVDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM5MDI2QjY0MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3RlQ29udHJvbHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVJlbW90ZUNvbnRyb2xz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZF
RiAvKiBNZWRpYVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI3RjNGMUIxRDBBRDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Np
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwMjdGNDAxQjFEMEFEMjAwQkZC
RkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwODQzQ0QxQjE4
RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFSZW1vdGVDb250cm9scy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5MDg0M0NFMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90
ZUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUmVtb3Rl
Q29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwRjY1NTMxQjIyNTM5
NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUM5MEY2NTU0MUIyMjUzOTYwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25N
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkzNDU4QkIxQjE4RDc3RTAw
ODhFRTEyIC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1lZGlhUmVtb3RlQ29udHJvbHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OTY4QjJFNTFCMUU3MDQ1MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9ICJIVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lvbi5pZGwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlDOTY4QjJFNjFCMUU3MkY3MDBFRjFGODEgLyogSFRNTE1lZGlh
RWxlbWVudE1lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVk
aWFTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NjhCMkU3MUIxRTc3
ODEwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTZGNUVDMTFCNTg3MjI2MDA5MUVB
OUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzk2RjVFQzIxQjU4NzIyNjAwOTFFQTlE
IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUMzMUI1ODcyMjYw
MDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUM0MUI1ODcyMjYw
MDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEg
LyogU3VjY2Vzc09yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1Y2Nlc3NPci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDOUQ0NjcwNDFFNjBDM0VCMDA4MTk1RkIgLyogQXV0b3BsYXlFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvcGxheUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUM5RDg1MUVFMUIzOURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25NZXRhZGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3
RDggLyogSlNNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
OURBREJDQTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzlGODdDRkQxQjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkV2ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2OTksMjMgKzE2NjczLDYgQEAKIAkJMDcw
OUQ3OEIxQUU1NTUyRTAwNEU0MkY4IC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzk2OEIyRTUxQjFFNzA0NTAwRUYxRjgxIC8q
IEhUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbCAqLywKLQkJCQlDOTY4QjJFNzFCMUU3
NzgxMDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHAgKi8sCi0JCQkJ
Qzk2OEIyRTYxQjFFNzJGNzAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24u
aCAqLywKLQkJCQlDOTA4NDNDRDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9s
cy5jcHAgKi8sCi0JCQkJQzkwODQzQ0UxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29u
dHJvbHMuaCAqLywKLQkJCQlDOTM0NThCQjFCMThENzdFMDA4OEVFMTIgLyogTWVkaWFSZW1vdGVD
b250cm9scy5pZGwgKi8sCi0JCQkJQzkwMjdGM0YxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vz
c2lvbi5jcHAgKi8sCi0JCQkJQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lv
bi5oICovLAotCQkJCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaWRs
ICovLAotCQkJCUM5Rjg3Q0ZEMUIyOEU1RjYwMDk3OUI4MyAvKiBNZWRpYVNlc3Npb25FdmVudHMu
aCAqLywKLQkJCQlDOTBGNjU1MzFCMjI1Mzk2MDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAgKi8sCi0JCQkJQzkwRjY1NTQxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCAqLywKLQkJCQlDOUQ4NTFFRTFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaCAqLywKLQkJCQk0NDZEQzY0NjI0QTI5RDlCMDA2MUYzOTAgLyogUGxheWJhY2tU
YXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAotCQkJCTA3MDlENzhDMUFFNTU1NTQw
MDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKLQkJCQkwNzA5RDc4RDFB
RTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oICovLAotCQkJCTA3MDlE
Nzk0MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yNjg2MCw3ICsyNjgxNyw2IEBACiAJCQkJNjU4MkExNDgwOTk5OUQ2QzAwQkVFQjZE
IC8qIG1hYyAqLywKIAkJCQk5QUM2RjAyMDIxMTQ4RjFFMDBDQkRBMDYgLyogbWVkaWFjYXBhYmls
aXRpZXMgKi8sCiAJCQkJNEQzQjUwMTIyMTdFNThBMzAwNjY1REIxIC8qIG1lZGlhcmVjb3JkZXIg
Ki8sCi0JCQkJQzk2RjVFQkYxQjU4NzIyNjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAqLywKIAkJ
CQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8sCiAJCQkJNTlDNzdG
MTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCiAJCQkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5
NUI0IC8qIG5ldHdvcmsgKi8sCkBAIC0yNzE2MywyNSArMjcxMTksNiBAQAogCQkJcGF0aCA9IFdI
TFNMOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQzk2RjVFQkYxQjU4NzIy
NjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJQzk2RjVFQzAxQjU4NzIyNjAwOTFFQTlEIC8qIG1hYyAqLywKLQkJ
CQlDOTZGNUVDMzFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXIuY3BwICovLAotCQkJCUM5NkY1RUM0MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovLAotCQkJKTsKLQkJCXBhdGggPSBtZWRpYXNlc3Np
b247Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlDOTZGNUVDMDFCNTg3MjI2
MDA5MUVBOUQgLyogbWFjICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9
ICgKLQkJCQlDOTZGNUVDMTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJNYWMuaCAqLywKLQkJCQlDOTZGNUVDMjFCNTg3MjI2MDA5MUVBOUQgLyogTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0gKi8sCi0JCQkpOwotCQkJcGF0aCA9
IG1hYzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUNEMERCQjNFMTQyMjc0
RTYwMDI4MDI2MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0yNzU2Miw5ICsyNzQ5OSwxMyBAQAogCQlDRTI2MTY5RDE4N0U2NTU0MDA3OTU1
RjMgLyogYWlycGxheSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNDQ2REM2NDYyNEEyOUQ5QjAwNjFGMzkwIC8qIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29u
dGV4dElkZW50aWZpZXIuaCAqLywKIAkJCQlBNURFQkQ5RjE2RkI5MDg3MDA4MzZGRTAgLyogV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgKi8sCiAJCQkJQTVERUJEQTAx
NkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQu
aCAqLywKIAkJCQlBNURFQkRBMTE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5pZGwgKi8sCisJCQkJMDcwOUQ3OEMxQUU1NTU1NDAwNEU0MkY4
IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLAorCQkJCTA3MDlENzhEMUFFNTU1NTQw
MDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJMDcwOUQ3OTQxQUU1
NUEyOTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gYWlycGxheTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTU2
MSw3ICszMTUwMiw2IEBACiAJCQkJQThFQTdDQUIwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxNYXJx
dWVlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQTUwQ0Q2MzMxMDAwRkFEQTc1
IC8qIEhUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU2MUIwQkQ5
RTEwMDc3MTg0RSAvKiBIVE1MTWVkaWFFbGVtZW50RW51bXMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUM5MzdGRThEMUIxRjY4MjEwMDhFQ0M1RCAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzMTJFQTIyRkNEN0M2MDAxMjA0RUMgLyogSFRNTE1l
ZGlhRWxlbWVudFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGNDBB
MTkxNkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQky
RjMxRTA3NTFGQTNCNjJCMDBFMDU5QkEgLyogSFRNTE1lbnVJdGVtRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjkwMywyMyArMzI4NDMsMTYgQEAKIAkJCQk0MTRCN0ZBRDI0RDgxQ0MxMDAz
M0Q0NDIgLyogTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0RDczRjk0RTIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3NkU4OTYyM0MzNTM3QjAwM0U4M0ZFIC8qIE1l
ZGlhUmVjb3JkZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzkwODQzRDAxQjE4RTQ3
RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
OEFDQThGMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRpYVJlbW90ZVNvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRUVGQ0Q3QTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUJGOURCM0MxRDM5NzNBRDAwMjZBRUI3IC8qIE1lZGlh
U2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQjEyNEQ4RDFEMzgwQjcwMDBFQ0RGQjAgLyog
TWVkaWFTYW1wbGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREJFQUVBRDE5RDkyQjZD
MDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExN0QyNzVFMUVBQzU3OTgwMEJGMDFFNyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlGODdDRkUxQjI4RjQwRTAwOTc5QjgzIC8qIE1lZGlh
U2Vzc2lvbkV2ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBOTU5M0YyNDEyQkFFMDAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0NDYw
QTIyNDEyOTk0NTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUM5NkY1RUM4MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzk2RjVFQzUxQjU4NzIyNjAwOTFF
QTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmggaW4gSGVhZGVycyAq
LywKLQkJCQlDOTBGNjU1NjFCMjI1M0JFMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3RjdBRUYyMTM5QkY2RjAwRkJBN0VDIC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2MzhBOTkxODg0NDg3MjAw
RTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5
RDg1MUYwMUIzOURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM4QjVBNzE4MDQ3NEY3MDAxNkU2ODUgLyog
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTE0Niw4ICsz
NTA3OSw2IEBACiAJCQkJMUIxMjREOEYxRDM4MEJCNjAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZG
T2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQkVBRUFDMTlEOTJCNkMwMEJFQkE4OCAvKiBN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk1OTM1
MjQxMjNDQjgwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAq
LywKLQkJCQlDOTZGNUVDNzFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQzkwRjY1NTUxQjIyNTNCMTAwMjE2
M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhB
OUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDREM4QjVBNjE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxMzNDQjhCMjBGODBFOTkwMEU4OUIxMSAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNTUy
Nyw2ICszNTQ1OCw3IEBACiAJCQkJREVDQTgwNTYxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRT
b3VyY2UyNzcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwNTcxRjlGRUQ2QTAwRTNCNjYx
IC8qIFVuaWZpZWRTb3VyY2UyNzguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwNTgxRjlG
RUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNzkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0MwMjMyMEIyNTFBRDkyMDAwQkE3QkI2IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwNTkxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3Vy
Y2UyODAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwNUExRjlGRUQ2QTAwRTNCNjYxIC8q
IFVuaWZpZWRTb3VyY2UyODEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwNUIxRjlGRUQ2
QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyODIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCwxMCArMjk4LDYgQEAKICNp
bmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKLSNlbmRpZgotCiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCiAjZW5kaWYKQEAgLTQxNzUsMjIgKzQxNzEsNiBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSh1aW50CiAgICAgc3RhdGUgfD0g
TWVkaWFTdHJlYW1UcmFjazo6Y2FwdHVyZVN0YXRlKCp0aGlzKTsKICNlbmRpZgogCi0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0gICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHNvdXJjZUVsZW1l
bnQgPSBIVE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKHNvdXJjZUVsZW1lbnRJRCkpIHsK
LSAgICAgICAgaWYgKHNvdXJjZUVsZW1lbnQtPmlzUGxheWluZygpKQotICAgICAgICAgICAgc3Rh
dGUgfD0gTWVkaWFQcm9kdWNlcjo6SXNTb3VyY2VFbGVtZW50UGxheWluZzsKLQotICAgICAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IHNvdXJjZUVsZW1lbnQtPnNlc3Npb24oKSkgewotICAgICAgICAg
ICAgaWYgKGF1dG8qIGNvbnRyb2xzID0gc2Vzc2lvbi0+Y29udHJvbHMoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChjb250cm9scy0+cHJldmlvdXNUcmFja0VuYWJsZWQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgfD0gTWVkaWFQcm9kdWNlcjo6SXNQcmV2aW91c1RyYWNrQ29udHJvbEVu
YWJsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzLT5uZXh0VHJhY2tFbmFibGVkKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlIHw9IE1lZGlhUHJvZHVjZXI6OklzTmV4dFRyYWNr
Q29udHJvbEVuYWJsZWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYK
LQogICAgIGlmIChtX3VzZXJIYXNJbnRlcmFjdGVkV2l0aE1lZGlhRWxlbWVudCkKICAgICAgICAg
c3RhdGUgfD0gTWVkaWFQcm9kdWNlcjo6SGFzVXNlckludGVyYWN0ZWRXaXRoTWVkaWFFbGVtZW50
OwogCkBAIC03NDU5LDE3ICs3NDM5LDYgQEAgdm9pZCBEb2N1bWVudDo6cGxheWJhY2tUYXJnZXRQ
aWNrZXJXYXNEaQogCiAjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
IAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1NZWRpYVNlc3Npb24mIERvY3VtZW50Ojpk
ZWZhdWx0TWVkaWFTZXNzaW9uKCkKLXsKLSAgICBpZiAoIW1fZGVmYXVsdE1lZGlhU2Vzc2lvbikK
LSAgICAgICAgbV9kZWZhdWx0TWVkaWFTZXNzaW9uID0gTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuICptX2RlZmF1bHRNZWRpYVNlc3Np
b247Ci19Ci0KLSNlbmRpZgotCiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3VtZW50
OjpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSBjb25zdAogewogICAg
IGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw2IEBAIGNsYXNzIE1lZGlh
UGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50OwogY2xhc3Mg
TWVkaWFRdWVyeUxpc3Q7CiBjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKLWNsYXNzIE1lZGlhU2Vz
c2lvbjsKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogY2xhc3MgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGVGaWx0ZXI7CkBAIC0xMDk1LDEwICsxMDk0
LDYgQEAgcHVibGljOgogICAgIGJvb2wgdmlkZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUo
KSBjb25zdDsKICAgICBib29sIG1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSgpIGNvbnN0Owog
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgTWVkaWFTZXNzaW9uJiBkZWZhdWx0TWVk
aWFTZXNzaW9uKCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRD
aGFuZ2UoUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZURp
ZENoYW5nZSgpOwpAQCAtMTk1MCwxMCArMTk0NSw2IEBAIHByaXZhdGU6CiAgICAgVGFyZ2V0Q2xp
ZW50VG9JZE1hcCBtX2NsaWVudFRvSURNYXA7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotICAgIFJlZlB0cjxNZWRpYVNlc3Npb24+IG1fZGVmYXVsdE1lZGlhU2Vzc2lvbjsK
LSNlbmRpZgotCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgUmVmUHRyPElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5PiBtX2lkYkNvbm5lY3Rpb25Qcm94eTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiAy
Njc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBAIE1lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1W
SURFTwogTWVkaWFEZXZpY2VzIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFLZXlTZXNz
aW9uIGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQQogTWVkaWFRdWVyeUxpc3QKLU1lZGlhUmVt
b3RlQ29udHJvbHMgY29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTgogTWVkaWFSZWNvcmRlciBjb25k
aXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhU291cmNlIGNvbmRpdGlvbmFsPU1FRElBX1NPVVJD
RQogTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
NSwxMCArMTM1LDYgQEAKICNpbmNsdWRlICJXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbi5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCkBAIC0zMTYsMzAg
KzMxMiw2IEBAIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+JiBIVE1MTWVkaWFFbGUKICAgICBy
ZXR1cm4gZWxlbWVudHM7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLXR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgSFRNTE1lZGlhRWxlbWVudCo+IElEVG9FbGVtZW50TWFwOwotCi1z
dGF0aWMgSURUb0VsZW1lbnRNYXAmIGVsZW1lbnRJRHNUb0VsZW1lbnRzKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SURUb0VsZW1lbnRNYXA+IG1hcDsKLSAgICByZXR1cm4gbWFwOwot
fQotCi1IVE1MTWVkaWFFbGVtZW50KiBIVE1MTWVkaWFFbGVtZW50OjplbGVtZW50V2l0aElEKHVp
bnQ2NF90IGlkKQotewotICAgIGlmIChpZCA9PSBIVE1MTWVkaWFFbGVtZW50SW52YWxpZElEKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBlbGVtZW50SURzVG9FbGVtZW50
cygpLmdldChpZCk7Ci19Ci0KLXN0YXRpYyB1aW50NjRfdCBuZXh0RWxlbWVudElEKCkKLXsKLSAg
ICBzdGF0aWMgdWludDY0X3QgZWxlbWVudElEID0gMDsKLSAgICByZXR1cm4gKytlbGVtZW50SUQ7
Ci19Ci0jZW5kaWYKLQogc3RydWN0IE1lZGlhRWxlbWVudFNlc3Npb25JbmZvIHsKICAgICBjb25z
dCBNZWRpYUVsZW1lbnRTZXNzaW9uKiBzZXNzaW9uOwogICAgIE1lZGlhRWxlbWVudFNlc3Npb246
OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2U7CkBAIC01MTUsMTMgKzQ4Nyw2IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoSW5pdGlhbGl6YXQKICAgICB9CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIG1fZWxlbWVudElEID0gbmV4dEVsZW1lbnRJ
RCgpOwotICAgIGVsZW1lbnRJRHNUb0VsZW1lbnRzKCkuYWRkKG1fZWxlbWVudElELCB0aGlzKTsK
LQotICAgIHNldFNlc3Npb25JbnRlcm5hbChkb2N1bWVudC5kZWZhdWx0TWVkaWFTZXNzaW9uKCkp
OwotI2VuZGlmCi0KICAgICByZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCk7CiAKICNpZiBV
U0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpAQCAtNTg2LDE1ICs1NTEsNiBAQCBI
VE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgaWYgKG1faXNvbGF0ZWRX
b3JsZCkKICAgICAgICAgbV9pc29sYXRlZFdvcmxkLT5jbGVhcldyYXBwZXJzKCk7CiAKLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIG1fc2Vz
c2lvbi0+cmVtb3ZlTWVkaWFFbGVtZW50KCp0aGlzKTsKLSAgICAgICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICBlbGVtZW50SURzVG9FbGVtZW50cygpLnJlbW92ZShtX2VsZW1l
bnRJRCk7Ci0jZW5kaWYKLQogICAgIG1fc2Vla1Rhc2tRdWV1ZS5jbG9zZSgpOwogICAgIG1fcmVz
dW1lVGFza1F1ZXVlLmNsb3NlKCk7CiAgICAgbV9wcm9taXNlVGFza1F1ZXVlLmNsb3NlKCk7CkBA
IC0zNDUwLDMxICszNDA2LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwo
KQogCiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CiAKLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICAgICAgLy8gNi4zIEFjdGl2YXRpbmcgYSBtZWRp
YSBzZXNzaW9uIGZyb20gYSBtZWRpYSBlbGVtZW50Ci0gICAgICAgIC8vIFdoZW4gdGhlIHBsYXko
KSBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHBhdXNlZCBhdHRyaWJ1dGUgaXMgdHJ1ZSwgYW5kIHRo
ZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBoYXMgdGhlIHZhbHVlCi0gICAgICAgIC8vIEhBVkVfRlVU
VVJFX0RBVEEgb3IgSEFWRV9FTk9VR0hfREFUQSwgdGhlbgotICAgICAgICAvLyAxLiBMZXQgbWVk
aWEgc2Vzc2lvbiBiZSB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbi4KLSAg
ICAgICAgLy8gMi4gSWYgd2UgYXJlIG5vdCBjdXJyZW50bHkgaW4gbWVkaWEgc2Vzc2lvbidzIGxp
c3Qgb2YgYWN0aXZlIHBhcnRpY2lwYXRpbmcgbWVkaWEgZWxlbWVudHMgdGhlbiBhcHBlbmQKLSAg
ICAgICAgLy8gICAgb3Vyc2VsdmVzIHRvIHRoaXMgbGlzdC4KLSAgICAgICAgLy8gMy4gTGV0IGFj
dGl2YXRlZCBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIG1lZGlhIHNlc3Npb24gaW52b2Nh
dGlvbiBhbGdvcml0aG0gZm9yIG1lZGlhIHNlc3Npb24uCi0gICAgICAgIC8vIDQuIElmIGFjdGl2
YXRlZCBpcyBmYWlsdXJlLCBwYXVzZSBvdXJzZWx2ZXMuCi0gICAgICAgIGlmIChtX3JlYWR5U3Rh
dGUgPT0gSEFWRV9FTk9VR0hfREFUQSB8fCBtX3JlYWR5U3RhdGUgPT0gSEFWRV9GVVRVUkVfREFU
QSkgewotICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbikgewotICAgICAgICAgICAgICAgIG1fc2Vz
c2lvbi0+YWRkQWN0aXZlTWVkaWFFbGVtZW50KCp0aGlzKTsKLQotICAgICAgICAgICAgICAgIGlm
IChtX3Nlc3Npb24tPmtpbmQoKSA9PSBNZWRpYVNlc3Npb25LaW5kOjpDb250ZW50KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5mb2N1c2VkQ29udGVu
dE1lZGlhRWxlbWVudERpZENoYW5nZShtX2VsZW1lbnRJRCk7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX3Nlc3Npb24tPmludm9rZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHBhdXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBpZiAo
bV9yZWFkeVN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKQogICAgICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkud2FpdGluZ0V2ZW50KTsKICAgICB9IGVsc2UgaWYgKG1fcmVhZHlT
dGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKQpAQCAtMzY3NywxMSArMzYwOCw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXQKIAogICAgICAgICB1cGRhdGVTaG91bGRQ
bGF5KCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICAgICAgZG9jdW1lbnQoKS51
cGRhdGVJc1BsYXlpbmdNZWRpYShtX2VsZW1lbnRJRCk7Ci0jZWxzZQogICAgICAgICBkb2N1bWVu
dCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCiAgICAgICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwpA
QCAtNTA2OCwxMSArNDk5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJD
aGFyYWMKICAgICAgICAgc2V0QXV0b3BsYXlFdmVudFBsYXliYWNrU3RhdGUoQXV0b3BsYXlFdmVu
dFBsYXliYWNrU3RhdGU6OlByZXZlbnRlZEF1dG9wbGF5KTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
TUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1fZWxl
bWVudElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwot
I2VuZGlmCiAKICAgICBjaGVja0ZvckF1ZGlvQW5kVmlkZW8oKTsKICAgICB1cGRhdGVTbGVlcERp
c2FibGluZygpOwpAQCAtNTI0NSwxMiArNTE2OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlVm9sdW1lKCkKICAgICAgICAgbV9wbGF5ZXItPnNldFZvbHVtZShlZmZlY3RpdmVWb2x1
bWUoKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgZG9jdW1lbnQo
KS51cGRhdGVJc1BsYXlpbmdNZWRpYShtX2VsZW1lbnRJRCk7Ci0jZWxzZQogICAgIGRvY3VtZW50
KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKLSNlbmRpZgotCiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIH0KIApAQCAtNTM2NywxMSArNTI4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0UGxheWluZyhib29sIHAKICAgICBpZiAobV9wbGF5aW5nKQogICAgICAgICBzY2hl
ZHVsZU5vdGlmeUFib3V0UGxheWluZygpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0g
ICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYShtX2VsZW1lbnRJRCk7Ci0jZWxzZQog
ICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKLSNlbmRpZgogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3Rh
dGUoKTsKQEAgLTc1OTUsMTEgKzc1MDksOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZU1lZGlhU3RhdGUoCiAKICAgICBtX21lZGlhU3RhdGUgPSBzdGF0ZTsKICAgICBtX21lZGlhU2Vz
c2lvbi0+bWVkaWFTdGF0ZURpZENoYW5nZShtX21lZGlhU3RhdGUpOwotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9lbGVtZW50
SUQpOwotI2Vsc2UKKwogICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKLSNl
bmRpZgogfQogI2VuZGlmCiAKQEAgLTc3MDQsMTEgKzc2MTUsNiBAQCBkb3VibGUgSFRNTE1lZGlh
RWxlbWVudDo6ZWZmZWN0aXZlVm9sdW1lCiAgICAgZG91YmxlIHZvbHVtZU11bHRpcGxpZXIgPSBw
YWdlID8gcGFnZS0+bWVkaWFWb2x1bWUoKSA6IDE7CiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
KQogICAgICAgICB2b2x1bWVNdWx0aXBsaWVyICo9IG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUo
KTsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBpZiAobV9zaG91bGREdWNrKQotICAg
ICAgICB2b2x1bWVNdWx0aXBsaWVyICo9IDAuMjU7Ci0jZW5kaWYKLQogICAgIHJldHVybiBtX3Zv
bHVtZSAqIHZvbHVtZU11bHRpcGxpZXI7CiB9CiAKQEAgLTc3NjksNzAgKzc2NzUsNiBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmNhblNhdmVNZWRpYURhdGEoCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLWRvdWJsZSBIVE1MTWVkaWFFbGVtZW50
OjpwbGF5ZXJWb2x1bWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVy
LT52b2x1bWUoKSA6IDA7Ci19Ci0KLU1lZGlhU2Vzc2lvbiogSFRNTE1lZGlhRWxlbWVudDo6c2Vz
c2lvbigpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPE1lZGlhU2Vzc2lvbj4gc2Vzc2lvbiA9IG1fc2Vz
c2lvbi5nZXQoKTsKLSAgICBpZiAoc2Vzc2lvbiAmJiBzZXNzaW9uID09ICZkb2N1bWVudCgpLmRl
ZmF1bHRNZWRpYVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1
cm4gc2Vzc2lvbi5nZXQoKTsKLX0KLQotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTZXNzaW9u
KE1lZGlhU2Vzc2lvbiogc2Vzc2lvbikKLXsKLSAgICAvLyA2LjEuIEV4dGVuc2lvbnMgdG8gdGhl
IEhUTUxNZWRpYUVsZW1lbnQgaW50ZXJmYWNlCi0gICAgLy8gMS4gTGV0IG0gYmUgdGhlIG1lZGlh
IGVsZW1lbnQgaW4gcXVlc3Rpb24uCi0gICAgLy8gMi4gTGV0IG9sZCBtZWRpYSBzZXNzaW9uIGJl
IG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiwgaWYgaXQgaGFzIG9uZSwgYW5kIG51bGwgb3Ro
ZXJ3aXNlLgotICAgIC8vIDMuIExldCBt4oCZcyBjdXJyZW50IG1lZGlhIHNlc3Npb24gYmUgdGhl
IG5ldyB2YWx1ZSBvciB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHTigJlzIG1lZGlhIHNl
c3Npb24gaWYgdGhlIG5ldyB2YWx1ZSBpcyBudWxsLgotICAgIC8vIDQuIExldCBuZXcgbWVkaWEg
c2Vzc2lvbiBiZSBt4oCZcyBjdXJyZW50IG1lZGlhIHNlc3Npb24uCi0KLSAgICAvLyA1LiBVcGRh
dGUgbWVkaWEgc2Vzc2lvbnM6IElmIG9sZCBtZWRpYSBzZXNzaW9uIGFuZCBuZXcgbWVkaWEgc2Vz
c2lvbiBhcmUgdGhlIHNhbWUgKHdoZXRoZXIgYm90aCBudWxsIG9yIGJvdGggdGhlIHNhbWUgbWVk
aWEgc2Vzc2lvbiksIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgotICAgIGlmIChtX3Nlc3Np
b24uZ2V0KCkgPT0gc2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fc2Vzc2lv
bikgewotICAgICAgICAvLyA2LiBJZiBtIGlzIGFuIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFu
dCBvZiBvbGQgbWVkaWEgc2Vzc2lvbiwgdGhlbiBwYXVzZSBtIGFuZCByZW1vdmUgbSBmcm9tIG9s
ZCBtZWRpYSBzZXNzaW9u4oCZcyBsaXN0IG9mIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMu
Ci0gICAgICAgIGlmIChtX3Nlc3Npb24tPmlzTWVkaWFFbGVtZW50QWN0aXZlKCp0aGlzKSkKLSAg
ICAgICAgICAgIHBhdXNlKCk7Ci0KLSAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVNZWRpYUVsZW1l
bnQoKnRoaXMpOwotCi0gICAgICAgIC8vIDcuIElmIG9sZCBtZWRpYSBzZXNzaW9uIGlzIG5vdCBu
dWxsIGFuZCBubyBsb25nZXIgaGFzIG9uZSBvciBtb3JlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNp
cGFudHMsIHRoZW4gcnVuIHRoZSBtZWRpYSBzZXNzaW9uIGRlYWN0aXZhdGlvbiBhbGdvcml0aG0g
Zm9yIG9sZCBtZWRpYSBzZXNzaW9uLgotICAgICAgICBpZiAoIW1fc2Vzc2lvbi0+aGFzQWN0aXZl
TWVkaWFFbGVtZW50cygpKQotICAgICAgICAgICAgbV9zZXNzaW9uLT5kZWFjdGl2YXRlKCk7Ci0g
ICAgfQotCi0gICAgaWYgKHNlc3Npb24pCi0gICAgICAgIHNldFNlc3Npb25JbnRlcm5hbCgqc2Vz
c2lvbik7Ci0gICAgZWxzZQotICAgICAgICBzZXRTZXNzaW9uSW50ZXJuYWwoZG9jdW1lbnQoKS5k
ZWZhdWx0TWVkaWFTZXNzaW9uKCkpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNl
c3Npb25JbnRlcm5hbChNZWRpYVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAgbV9zZXNzaW9uID0g
JnNlc3Npb247Ci0gICAgc2Vzc2lvbi5hZGRNZWRpYUVsZW1lbnQoKnRoaXMpOwotICAgIG1fa2lu
ZCA9IHNlc3Npb24ua2luZCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3Vs
ZER1Y2soYm9vbCBkdWNrKQotewotICAgIGlmIChtX3Nob3VsZER1Y2sgPT0gZHVjaykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9zaG91bGREdWNrID0gZHVjazsKLSAgICB1cGRhdGVWb2x1bWUo
KTsKLX0KLQotI2VuZGlmCi0KIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWxsb3dzTWVkaWFEb2N1
bWVudElubGluZVBsYXliYWNrQ2hhbmdlZCgpCiB7CiAgICAgaWYgKHBvdGVudGlhbGx5UGxheWlu
ZygpICYmIG1fbWVkaWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNr
KCkgJiYgIWlzRnVsbHNjcmVlbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODAsMjEgKzQ4MCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsK
ICAgICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZSk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBXRUJDT1JFX0VYUE9SVCBk
b3VibGUgcGxheWVyVm9sdW1lKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBTdHJpbmcmIGtpbmQoKSBj
b25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICB2b2lkIHNldEtpbmQoY29uc3QgU3RyaW5nJiBr
aW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KLQotICAgIE1lZGlhU2Vzc2lvbiogc2Vzc2lvbigpIGNv
bnN0OwotICAgIHZvaWQgc2V0U2Vzc2lvbihNZWRpYVNlc3Npb24qKTsKLQotICAgIHZvaWQgc2V0
U2hvdWxkRHVjayhib29sKTsKLQotICAgIHN0YXRpYyBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50
V2l0aElEKHVpbnQ2NF90KTsKLSAgICB1aW50NjRfdCBlbGVtZW50SUQoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnRJRDsgfQotI2VuZGlmCi0KICAgICBSZWZQdHI8VmlkZW9QbGF5YmFja1F1YWxp
dHk+IGdldFZpZGVvUGxheWJhY2tRdWFsaXR5KCk7CiAKICAgICBNZWRpYVBsYXllcjo6UHJlbG9h
ZCBwcmVsb2FkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByZWxvYWQ7IH0KQEAgLTcwMiwxMCAr
Njg3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlk
ZTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBzZXRTZXNz
aW9uSW50ZXJuYWwoTWVkaWFTZXNzaW9uJik7Ci0jZW5kaWYKLQogICAgIFN0cmluZyBtZWRpYVBs
YXllclJlZmVycmVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyVXNl
ckFnZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTEwMzcsMTMgKzEwMTgsNiBAQCBwcml2YXRl
OgogICAgIC8vIGNhbGxpbmcgdGhlIG1lZGlhIGVuZ2luZSByZWN1cnNpdmVseS4KICAgICBpbnQg
bV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjayB7IDAgfTsKIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIFN0cmluZyBtX2tpbmQ7Ci0gICAgUmVmUHRyPE1lZGlhU2Vzc2lvbj4g
bV9zZXNzaW9uOwotICAgIGJvb2wgbV9zaG91bGREdWNrIHsgZmFsc2UgfTsKLSAgICB1aW50NjRf
dCBtX2VsZW1lbnRJRDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBS
ZWZQdHI8TWVkaWFTb3VyY2U+IG1fbWVkaWFTb3VyY2U7CiAgICAgdW5zaWduZWQgbV9kcm9wcGVk
VmlkZW9GcmFtZXMgeyAwIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2MywxMiArNDYzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Ms
IHVpbnQ2NF90KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChBdXRv
cGxheUV2ZW50LCBPcHRpb25TZXQ8QXV0b3BsYXlFdmVudEZsYWdzPikgeyB9CiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLSAgICB2aXJ0dWFsIHZvaWQgaGFzTWVkaWFTZXNzaW9uV2l0aEFj
dGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG1l
ZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKGNvbnN0IE1lZGlhU2Vzc2lvbk1ldGFkYXRhJikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdl
KHVpbnQ2NF90KSB7IH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAgICAgdmly
dHVhbCBib29sIHdyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVjdG9yPHVp
bnQ4X3Q+JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgdW53cmFw
Q3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MywxMCArMTUzLDYgQEAKICNpbmNsdWRlICJTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgiCiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAjaW5j
bHVkZSAiSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCiAjZW5kaWYKQEAgLTIwNjIsMzEgKzIwNTgs
NiBAQCB2b2lkIFBhZ2U6OnJlc3VtZUFsbE1lZGlhQnVmZmVyaW5nKCkKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLXZvaWQgUGFnZTo6aGFuZGxlTWVkaWFFdmVudChN
ZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCi17Ci0gICAgc3dpdGNoIChldmVudFR5cGUpIHsKLSAg
ICBjYXNlIE1lZGlhRXZlbnRUeXBlOjpQbGF5UGF1c2U6Ci0gICAgICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNpbmdsZXRvbigpLnRvZ2dsZVBsYXliYWNrKCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTWVkaWFFdmVudFR5cGU6OlRyYWNrTmV4dDoKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2luZ2xldG9uKCkuc2tpcFRvTmV4dFRyYWNrKCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTWVkaWFFdmVudFR5cGU6OlRyYWNrUHJldmlvdXM6Ci0gICAgICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb1ByZXZpb3VzVHJhY2soKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotfQotCi12b2lkIFBhZ2U6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJs
ZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKLXsKLSAgICBpZiAoSFRNTE1lZGlhRWxlbWVu
dCogZWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6OmVsZW1lbnRXaXRoSUQoZWxlbWVudElEKSkK
LSAgICAgICAgZWxlbWVudC0+c2V0Vm9sdW1lKHZvbHVtZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
Ci19Ci0KLSNlbmRpZgotCiB1bnNpZ25lZCBQYWdlOjpzdWJmcmFtZUNvdW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbWFpbkZyYW1lKCkudHJlZSgpLmRlc2NlbmRhbnRDb3VudCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMCArNjMsNiBAQAogI2luY2x1ZGUgIkFwcGxpY2F0
aW9uTWFuaWZlc3QuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5j
bHVkZSAiTWVkaWFTZXNzaW9uRXZlbnRzLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQu
aCIKICNlbmRpZgpAQCAtNjU2LDExICs2NTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5V
c2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZSkgeyBtX2NhblVzZUNyZWRlbnRpYWxTdG9y
YWdlID0gY2FuVXNlOyB9CiAgICAgYm9vbCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlTWVkaWFFdmVudChNZWRp
YUV2ZW50VHlwZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWb2x1bWVPZk1lZGlhRWxl
bWVudChkb3VibGUsIHVpbnQ2NF90KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIGFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVtb3ZlUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
Zmllcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ci5jcHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgiCi0KLSNpZiBFTkFCTEUo
TUVESUFfU0VTU0lPTikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1NZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlcjo6TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIoTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IG1fY2xpZW50
KCZjbGllbnQpCi17Ci19Ci0KLU1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOjp+TWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIoKSA9IGRlZmF1bHQ7Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlci5oCShub25leGlzdGVudCkKQEAgLTEsNjkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJfaAotI2Rl
ZmluZSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcl9oCi0KLSNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotZW51bSBjbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSB7
Ci0gICAgQ29udGVudCwKLSAgICBUcmFuc2llbnQsCi0gICAgVHJhbnNpZW50U29sbwotfTsKLQot
Y2xhc3MgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQgewotcHVibGljOgot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlv
bihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW5nQ2F0ZWdvcnkpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfk1lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotfTsKLQotY2xh
c3MgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcj4gewotcHVibGljOgotICAgIGV4cGxpY2l0
IE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyKE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyQ2xpZW50Jik7Ci0gICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXIoKTsKLQotICAgIC8vIFRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KLSAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5MaXN0ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpID0gMDsKLQotICAg
IE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7
IHJldHVybiAqbV9jbGllbnQ7IH0KLQotcHJpdmF0ZToKLSAgICBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2VuZGlmIC8qIE1lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJN
YWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24v
bWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
TWFjX2gKLSNkZWZpbmUgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWNfaAotCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykKLQotI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMgOiBwdWJsaWMgTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIgewotcHVibGljOgotICAgIHVzaW5nIE1lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOjpNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlcjsKLQotICAgIHZvaWQgYmVnaW5MaXN0ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpIG92ZXJyaWRlOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXJNYWMoKSA9IGRlZmF1bHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQotCi0jZW5kaWYgLyog
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWNfaCAqLwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXNlc3Npb24vbWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tCShyZXZp
c2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vbWFj
L01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tCShub25leGlzdGVudCkKQEAg
LTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCIKLQotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IENG
U3RyaW5nUmVmIGNhbGxEaWRCZWdpblJpbmdpbmdOb3RpZmljYXRpb24gPSBDRlNUUigiQ2FsbERp
ZEJlZ2luUmluZ2luZyIpOwotc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGNhbGxEaWRFbmRSaW5n
aW5nTm90aWZpY2F0aW9uID0gQ0ZTVFIoIkNhbGxEaWRFbmRSaW5naW5nIik7Ci1zdGF0aWMgY29u
c3QgQ0ZTdHJpbmdSZWYgY2FsbERpZENvbm5lY3ROb3RpZmljYXRpb24gPSBDRlNUUigiQ2FsbERp
ZENvbm5lY3QiKTsKLQotc3RhdGljIHZvaWQgY2FsbERpZEJlZ2luUmluZ2luZyhDRk5vdGlmaWNh
dGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkKiwg
Q0ZEaWN0aW9uYXJ5UmVmKQotewotICAgIEFTU0VSVF9BUkcob2JzZXJ2ZXIsIG9ic2VydmVyKTsK
LSAgICBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlciogcHJvdmlkZXIgPSAoTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIqKW9ic2VydmVyOwotICAgIHByb3ZpZGVyLT5jbGll
bnQoKS5kaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpbmdDYXRlZ29yeTo6VHJhbnNpZW50KTsKLX0KLQotc3RhdGljIHZvaWQgY2Fs
bERpZEVuZFJpbmdpbmcoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBD
RlN0cmluZ1JlZiwgY29uc3Qgdm9pZCosIENGRGljdGlvbmFyeVJlZikKLXsKLSAgICBBU1NFUlRf
QVJHKG9ic2VydmVyLCBvYnNlcnZlcik7Ci0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJNYWMqIHByb3ZpZGVyID0gKE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFj
KilvYnNlcnZlcjsKLSAgICBwcm92aWRlci0+Y2xpZW50KCkuZGlkUmVjZWl2ZUVuZE9mSW50ZXJy
dXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpUcmFu
c2llbnQpOwotfQotCi1zdGF0aWMgdm9pZCBjYWxsRGlkQ29ubmVjdChDRk5vdGlmaWNhdGlvbkNl
bnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkKiwgQ0ZEaWN0
aW9uYXJ5UmVmKQotewotICAgIEFTU0VSVF9BUkcob2JzZXJ2ZXIsIG9ic2VydmVyKTsKLSAgICBN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyogcHJvdmlkZXIgPSAoTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMqKW9ic2VydmVyOwotICAgIE1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvblByb3ZpZGVyQ2xpZW50JiBjbGllbnQgPSBwcm92aWRlci0+Y2xpZW50KCk7Ci0g
ICAgY2xpZW50LmRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeTo6VHJhbnNpZW50KTsKLSAgICBjbGllbnQuZGlkUmVj
ZWl2ZVN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW5nQ2F0ZWdvcnk6OkNvbnRlbnQpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyTWFjOjpiZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKQotewotICAgIENG
Tm90aWZpY2F0aW9uQ2VudGVyUmVmIG5vdGlmaWNhdGlvbkNlbnRlciA9IENGTm90aWZpY2F0aW9u
Q2VudGVyR2V0RGlzdHJpYnV0ZWRDZW50ZXIoKTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFk
ZE9ic2VydmVyKG5vdGlmaWNhdGlvbkNlbnRlciwgdGhpcywgY2FsbERpZEJlZ2luUmluZ2luZywg
Y2FsbERpZEJlZ2luUmluZ2luZ05vdGlmaWNhdGlvbiwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25T
dXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9u
Q2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCB0aGlzLCBjYWxsRGlkRW5kUmlu
Z2luZywgY2FsbERpZEVuZFJpbmdpbmdOb3RpZmljYXRpb24sIG51bGxwdHIsIENGTm90aWZpY2F0
aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSAgICBDRk5vdGlmaWNh
dGlvbkNlbnRlckFkZE9ic2VydmVyKG5vdGlmaWNhdGlvbkNlbnRlciwgdGhpcywgY2FsbERpZENv
bm5lY3QsIGNhbGxEaWRDb25uZWN0Tm90aWZpY2F0aW9uLCBudWxscHRyLCBDRk5vdGlmaWNhdGlv
blN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci19Ci0KLXZvaWQgTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWM6OnN0b3BMaXN0ZW5pbmdGb3JJbnRlcnJ1cHRp
b25zKCkKLXsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZUV2ZXJ5T2JzZXJ2ZXIoQ0ZO
b3RpZmljYXRpb25DZW50ZXJHZXREaXN0cmlidXRlZENlbnRlcigpLCB0aGlzKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pICYm
IFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjg1LDExICsyODUsNiBAQAogI2luY2x1ZGUgIldlYktpdEF1ZGlv
Q29udGV4dC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRl
ICJNZWRpYVNlc3Npb24uaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0jZW5k
aWYKLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSAiTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIKICNlbmRpZgpAQCAtNDI4Niw1NyArNDI4MSw4IEBA
IGJvb2wgSW50ZXJuYWxzOjplbGVtZW50SXNCbG9ja2luZ0Rpc3BsYXkKIHsKICAgICByZXR1cm4g
ZWxlbWVudC5pc0Rpc2FibGluZ1NsZWVwKCk7CiB9Ci0KICNlbmRpZiAvLyBFTkFCTEUoVklERU8p
CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotdm9pZCBJbnRlcm5hbHM6OnNlbmRNZWRp
YVNlc3Npb25TdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVy
cnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNp
bmdsZXRvbigpLmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKGNhdGVn
b3J5KTsKLX0KLQotdm9pZCBJbnRlcm5hbHM6OnNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVw
dGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29y
eSkKLXsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oY2F0ZWdvcnkpOwotfQotCi1TdHJpbmcgSW50ZXJu
YWxzOjptZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoTWVkaWFTZXNzaW9uKiBzZXNzaW9uKSBjb25z
dAotewotICAgIHN3aXRjaCAoc2Vzc2lvbi0+Y3VycmVudFN0YXRlKCkpIHsKLSAgICBjYXNlIE1l
ZGlhU2Vzc2lvbjo6U3RhdGU6OkFjdGl2ZToKLSAgICAgICAgcmV0dXJuICJhY3RpdmUiOwotICAg
IGNhc2UgTWVkaWFTZXNzaW9uOjpTdGF0ZTo6SW50ZXJydXB0ZWQ6Ci0gICAgICAgIHJldHVybiAi
aW50ZXJydXB0ZWQiOwotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpTdGF0ZTo6SWRsZToKLSAgICAg
ICAgcmV0dXJuICJpZGxlIjsKLSAgICB9Ci19Ci0KLWRvdWJsZSBJbnRlcm5hbHM6Om1lZGlhRWxl
bWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAg
IEFTU0VSVF9BUkcoZWxlbWVudCwgZWxlbWVudCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPnBsYXll
clZvbHVtZSgpOwotfQotCi12b2lkIEludGVybmFsczo6c2VuZE1lZGlhQ29udHJvbEV2ZW50KE1l
ZGlhQ29udHJvbEV2ZW50IGV2ZW50KQotewotICAgIC8vIEZJWE1FOiBObyBnb29kIHJlYXNvbiB0
byB1c2UgYSBzaW5nbGUgZnVuY3Rpb24gd2l0aCBhbiBhcmd1bWVudCBpbnN0ZWFkIG9mIHRocmVl
IGZ1bmN0aW9ucy4KLSAgICBzd2l0Y2ggKGV2ZW50KSB7Ci0gICAgY2FzZSBNZWRpQ29udHJvbEV2
ZW50OjpQbGF5UGF1c2U6Ci0gICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigp
LnRvZ2dsZVBsYXliYWNrKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaUNvbnRyb2xF
dmVudDo6TmV4dFRyYWNrOgotICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24o
KS5za2lwVG9OZXh0VHJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpQ29udHJv
bEV2ZW50OjpQcmV2aW91c1RyYWNrOgotICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5n
bGV0b24oKS5za2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKIHZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoY29uc3QgVmFy
aWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+
PiYgY29udGV4dFZhcmlhbnQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCAr
NDEsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVk
ZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKFZJREVPKQogI2luY2x1ZGUgIk1lZGlhRWxlbWVudFNlc3Npb24uaCIKICNlbmRpZgpAQCAt
NjY2LDE1ICs2NjIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbGVtZW50SXNCbG9ja2luZ0Rpc3Bs
YXlTbGVlcChIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotICAgIHZvaWQgc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRp
b25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkpOwotICAgIHZv
aWQgc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vz
c2lvbkludGVycnVwdGluZ0NhdGVnb3J5KTsKLSAgICBTdHJpbmcgbWVkaWFTZXNzaW9uQ3VycmVu
dFN0YXRlKE1lZGlhU2Vzc2lvbiYpIGNvbnN0OwotICAgIGRvdWJsZSBtZWRpYUVsZW1lbnRQbGF5
ZXJWb2x1bWUoSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwotICAgIGVudW0gY2xhc3MgTWVkaWFD
b250cm9sRXZlbnQgeyBQbGF5UGF1c2UsIE5leHRUcmFjaywgUHJldmlvdXNUcmFjayB9OwotICAg
IHZvaWQgc2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50KTsKLSNlbmRpZgot
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sKTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYg
ZGV2aWNlTmFtZSwgY29uc3QgU3RyaW5nJiBkZXZpY2VTdGF0ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE4ICs0Niw2IEBA
IGVudW0gUmVzb3VyY2VMb2FkUHJpb3JpdHkgewogICAgICJSZXNvdXJjZUxvYWRQcmlvcml0eVZl
cnlIaWdoIgogfTsKIAotW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIGVudW0gTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgewotICAgICJjb250ZW50IiwKLSAgICAidHJhbnNpZW50
IiwKLSAgICAidHJhbnNpZW50LXNvbG8iCi19OwotCi1bQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lP
Tl0gZW51bSBNZWRpYUNvbnRyb2xFdmVudCB7Ci0gICAgInBsYXktcGF1c2UiLAotICAgICJuZXh0
LXRyYWNrIiwKLSAgICAicHJldmlvdXMtdHJhY2siCi19OwotCiBlbnVtIEF1dG9GaWxsQnV0dG9u
VHlwZSB7CiAgICAgIk5vbmUiLAogICAgICJDb250YWN0cyIsCkBAIC02OTYsMTEgKzY4NCw2IEBA
IGVudW0gQ29udGVudFNpemVDYXRlZ29yeSB7CiAKICAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1h
eVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24o
RE9NU3RyaW5nIGludGVycnVwdGlvblR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5k
ZWZpbmVkIGVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJpbmcgZmxhZ3MpOwotICAg
IFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSB1bmRlZmluZWQgc2VuZE1lZGlhU2Vzc2lvblN0
YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0
ZWdvcnkgY2F0ZWdvcnkpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSB1bmRlZmlu
ZWQgc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vz
c2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KTsKLSAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU0VTU0lPTl0gRE9NU3RyaW5nIG1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShNZWRpYVNlc3Np
b24gc2Vzc2lvbik7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIGRvdWJsZSBtZWRp
YUVsZW1lbnRQbGF5ZXJWb2x1bWUoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50KTsKLSAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gdW5kZWZpbmVkIHNlbmRNZWRpYUNvbnRyb2xFdmVudChN
ZWRpYUNvbnRyb2xFdmVudCBldmVudCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmlu
ZWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKICAgICBbQ29uZGl0aW9uYWw9VklE
RU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogICAgIFtDb25kaXRp
b25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChvcHRp
b25hbCBib29sZWFuIHN1c3BlbmRlZFVuZGVyTG9jayA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA5LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgY29kZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04p
LCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNjgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZXMgYWxsIGNvZGUgaW4gRU5BQkxFKE1FRElBX1NFU1NJT04pIGFu
ZCBhbGwgbWVkaWEgc2Vzc2lvbgorICAgICAgICByZWxhdGVkIFNQSS4gSXQgd2FzIG5ldmVyIGVu
YWJsZWQgYW5kIG5vdGhpbmcgZXZlciBhZG9wdGVkIGl0LgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgUmVtb3ZlIG1lZGlhIHNlc3Npb24gcmVsYXRl
ZCBmaWxlcy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICog
U2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFNoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg6IFJlbW92
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFk
YXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisgICAgICAgIFJlbW92ZSBhbGwgY29kZSBpbiBFTkFCTEUoTUVESUFfU0VTU0lPTikuCisKIDIw
MjAtMDktMjIgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gUkVHUkVTU0lPTihyMjY3Mzk4KTogc2V2ZXJhbCBoaWRwaSB0ZXN0cyBhcmUgZmFpbGluZwpJ
bmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDYgQEAgU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHREYXRhLmNwcAogU2hhcmVkL1dlYkltYWdlLmNwcAogU2hhcmVkL1dlYktleWJvYXJk
RXZlbnQuY3BwIEBuby11bmlmeQogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcCBAbm8tdW5p
ZnkKLVNoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKIFNoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmNwcAogU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwIEBuby11bmlmeQogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zODAsNyArMzc5LDYgQEAgVUlQcm9jZXNz
L0FQSS9DL1dLSGl0VGVzdFJlc3VsdC5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFz
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCi1VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Np
b25NZXRhZGF0YS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAKIFVJ
UHJvY2Vzcy9BUEkvQy9XS01vY2tEaXNwbGF5LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01l
ZGlhRGV2aWNlLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjY3NDUw
KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0y
MjYsMTUgKzIyNiwxMiBAQCBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNh
CiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAKIFVJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCiBVSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
Y3BwCi1VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAotVUlQcm9jZXNz
L1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAKIFVJUHJvY2Vzcy9XZWJNZW1v
cnlQcmVzc3VyZUhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvV0tJbWFnZVByZXZpZXdWaWV3Q29udHJv
bGxlci5tbQogCiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhUmVjb3JkLmNwcAogCiBVSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0TWVudUxpc3RlbmVyLmNwcAotVUlQcm9jZXNzL0FQSS9DL1dL
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVGVzdGluZ1N1
cHBvcnQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlz
aW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMCArMTA5LDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWV0YWRhdGEuaD4K
LSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlIDxXZWJDb3JlL0Nh
cHR1cmVEZXZpY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4KQEAg
LTIxMTcsMzIgKzIxMTMsNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+Ojpk
ZWNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLXZv
aWQgQXJndW1lbnRDb2RlcjxNZWRpYVNlc3Npb25NZXRhZGF0YT46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgcmVzdWx0KQotewotICAgIGVuY29k
ZXIgPDwgcmVzdWx0LmFydGlzdCgpOwotICAgIGVuY29kZXIgPDwgcmVzdWx0LmFsYnVtKCk7Ci0g
ICAgZW5jb2RlciA8PCByZXN1bHQudGl0bGUoKTsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC5hcnR3
b3JrVVJMKCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVNlc3Npb25NZXRhZGF0YT46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgcmVzdWx0KQot
ewotICAgIFN0cmluZyBhcnRpc3QsIGFsYnVtLCB0aXRsZTsKLSAgICBVUkwgYXJ0d29ya1VSTDsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydGlzdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsYnVtKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGl0bGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrVVJMKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJlc3VsdCA9IE1lZGlhU2Vzc2lvbk1ldGFkYXRhKHRpdGxlLCBhcnRpc3QsIGFsYnVt
LCBhcnR3b3JrVVJMKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBl
bmNvZGVyIDw8IHBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24g
MjY3NDUwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE4NywxMCArMTg3LDYgQEAgY2xhc3MgQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdHJ1Y3QgTWVkaWFDb25zdHJh
aW50czsKICNlbmRpZgpAQCAtNjM1LDEzICs2MzEsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6CiB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWV0YWRhdGE+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsK
LX07Ci0jZW5kaWYKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yRGF0YT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+IGRlY29kZShEZWNvZGVyJik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0
YS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgiCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotUmVmPFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhPiBXZWJNZWRpYVNl
c3Npb25NZXRhZGF0YTo6Y3JlYXRlKGNvbnN0IE1lZGlhU2Vzc2lvbk1ldGFkYXRhJiBtZXRhZGF0
YSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSht
ZXRhZGF0YSkpOwotfQotCi1XZWJNZWRpYVNlc3Npb25NZXRhZGF0YTo6V2ViTWVkaWFTZXNzaW9u
TWV0YWRhdGEoY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKQotICAgIDogbV9t
ZXRhZGF0YShtZXRhZGF0YSkKLXsKLX0KLQotV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE6On5XZWJN
ZWRpYVNlc3Npb25NZXRhZGF0YSgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJNZWRpYVNlc3Npb25N
ZXRhZGF0YV9oCi0jZGVmaW5lIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhX2gKLQotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNlc3Npb25NZXRhZGF0YS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpNZWRpYVNlc3Np
b25NZXRhZGF0YT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViTWVkaWFTZXNzaW9uTWV0
YWRhdGE+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpOwotICAg
IH5XZWJNZWRpYVNlc3Npb25NZXRhZGF0YSgpOwotCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3Qg
eyByZXR1cm4gbV9tZXRhZGF0YS50aXRsZSgpOyB9Ci0gICAgU3RyaW5nIGFydGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0aXN0KCk7IH0KLSAgICBTdHJpbmcgYWxidW0oKSBjb25z
dCB7IHJldHVybiBtX21ldGFkYXRhLmFsYnVtKCk7IH0KLSAgICBTdHJpbmcgYXJ0d29ya1VSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0d29ya1VSTCgpLnN0cmluZygpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEoY29uc3QgV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsKLQotICAgIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1l
dGFkYXRhIG1fbWV0YWRhdGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLy8gV2ViTWVkaWFTZXNzaW9uTWV0
YWRhdGFfaApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24g
MjY3NDUwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzksMTEgKzE3OSw2IEBAIHB1YmxpYzoKICAgICAgICAgV2Vic2l0ZVBvbGlj
aWVzLAogICAgICAgICBXaW5kb3dGZWF0dXJlcywKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQotICAgICAgICBNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIsCi0gICAgICAgIE1lZGlhU2Vzc2lv
bk1ldGFkYXRhLAotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICAgICBXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLAogICAgICAgICBXZWJBdXRoZW50aWNhdGlv
blBhbmVsLApAQCAtNDI4LDExICs0MjMsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PEFQSTo6T2JqZWN0CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJzaXRlUG9saWNpZXMs
CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXaW5kb3dGZWF0dXJlcywKIAotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLAotICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVkaWFTZXNzaW9uTWV0
YWRhdGEsCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgICAgIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLAogICAgICAgICBB
UEk6Ok9iamVjdDo6VHlwZTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDggKzEwNSw2IEBA
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSGl0VGVzdFJlc3UKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLSWNvbkRhdGFiYXNlKiBXS0ljb25EYXRhYmFzZVJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLSW5zcGVjdG9yKiBXS0luc3BlY3RvclJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlciogV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIqIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmOwotdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYVNlc3Npb25NZXRhZGF0YSogV0tNZWRpYVNlc3Npb25N
ZXRhZGF0YVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTWVzc2FnZUxpc3RlbmVy
KiBXS01lc3NhZ2VMaXN0ZW5lclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2
aWdhdGlvbkFjdGlvbiogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9uRGF0YVJlZjsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDExNSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0K
LSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY29u
c3QgY2hhciogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCi17
Ci0gICAgcmV0dXJuICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIiOwotfQotCi1SZWY8V2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNy
ZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKHByb2Nlc3NQb29sKSk7Ci19Ci0KLVdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKLSAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHBy
b2Nlc3NQb29sKSB7IH0KLQotLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLQotdm9pZCBXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXI6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKLXsKLSAgICBB
UEk6Ok9iamVjdDo6cmVmKCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKLXsKLSAgICBBUEk6Ok9iamVjdDo6ZGVyZWYo
KTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmluaXRpYWxpemVDbGll
bnQoY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17
Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi1ib29sIFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcjo6dmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIGF0dHJpYnV0ZSkgY29uc3QKLXsKLSAgICBp
ZiAoIW1fZm9jdXNlZE1lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIG1fcGxheWJhY2tBdHRyaWJ1dGVzICYgYXR0cmlidXRlOwotfQotCi12b2lkIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSBhdHRyaWJ1dGUsIGJvb2wgdmFsdWUp
Ci17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBtX3BsYXliYWNrQXR0cmlidXRlcyB8PSBhdHRy
aWJ1dGU7Ci0gICAgZWxzZQotICAgICAgICBtX3BsYXliYWNrQXR0cmlidXRlcyAmPSB+YXR0cmli
dXRlOwotCi0gICAgbV9jbGllbnQuZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUodGhpcywgYXR0
cmlidXRlLCB2YWx1ZSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpz
ZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSkKLXsKLSAgICBpZiAo
IW1fZm9jdXNlZE1lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFdlYlBh
Z2VQcm94eSogcHJveHkgPSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPmZpcnN0KQotICAgICAgICBw
cm94eS0+c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBtX2ZvY3VzZWRNZWRpYUVsZW1l
bnQtPnNlY29uZCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjp1cGRh
dGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFTdGF0ZShXZWJQYWdlUHJveHkqIHByb3h5LCB1
aW50NjRfdCBlbGVtZW50SUQsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFn
cyBmbGFncykKLXsKLSAgICBpZiAobV9mb2N1c2VkTWVkaWFFbGVtZW50KSB7Ci0gICAgICAgIGlm
IChwcm94eSA9PSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPmZpcnN0ICYmIGVsZW1lbnRJRCA9PSBt
X2ZvY3VzZWRNZWRpYUVsZW1lbnQtPnNlY29uZCkgewotICAgICAgICAgICAgdXBkYXRlUGxheWJh
Y2tBdHRyaWJ1dGUoSXNQbGF5aW5nLCBmbGFncyAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Oklz
U291cmNlRWxlbWVudFBsYXlpbmcpOwotICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tBdHRyaWJ1
dGUoSXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZCwgZmxhZ3MgJiBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpJc05leHRUcmFja0NvbnRyb2xFbmFibGVkKTsKLSAgICAgICAgICAgIHVwZGF0ZVBsYXli
YWNrQXR0cmlidXRlKElzUHJldmlvdXNUcmFja0NvbnRyb2xFbmFibGVkLCBmbGFncyAmIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6OklzUHJldmlvdXNUcmFja0NvbnRyb2xFbmFibGVkKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldEZv
Y3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5JiBwcm94eSwgdWludDY0X3QgZWxlbWVudElE
KQotewotICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IG1ha2VVbmlxdWU8Rm9jdXNlZE1lZGlh
RWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlcjo6Y2xlYXJGb2N1c2VkTWVkaWFFbGVtZW50KCkKLXsKLSAgICBtX2ZvY3VzZWRN
ZWRpYUVsZW1lbnQgPSBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKHJldmlzaW9uIDI2
NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIldlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdHlwZWRlZiBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5
KiwgdWludDY0X3Q+IEZvY3VzZWRNZWRpYUVsZW1lbnQ7Ci0KLWNsYXNzIFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
Ok1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7Ci0KLSAg
ICBzdGF0aWMgUmVmPFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4gY3JlYXRlKFdlYlByb2Nl
c3NQb29sKik7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJDbGllbnRCYXNlKik7Ci0KLSAgICBib29sIHZhbHVlRm9yUGxheWJhY2tB
dHRyaWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSkgY29u
c3Q7Ci0gICAgdm9pZCB1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFTdGF0ZShXZWJQ
YWdlUHJveHkqLCB1aW50NjRfdCwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZs
YWdzKTsKLSAgICB2b2lkIHNldFZvbHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVudChkb3VibGUpOwot
Ci0gICAgdm9pZCBzZXRGb2N1c2VkTWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIGNsZWFyRm9jdXNlZE1lZGlhRWxlbWVudCgpOwotCi0gICAgdXNpbmcgQVBJ
OjpPYmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKFdlYlByb2Nlc3NQb29s
Kik7Ci0KLSAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAotICAgIHZvaWQgcmVmV2ViQ29udGV4
dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1l
bnQoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgdXBkYXRlUGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSwgYm9vbCk7Ci0KLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8Rm9jdXNlZE1lZGlhRWxlbWVudD4gbV9mb2N1c2VkTWVkaWFFbGVtZW50Owot
ICAgIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGVzIG1fcGxheWJh
Y2tBdHRyaWJ1dGVzIHsgMCB9OwotICAgIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVu
dCBtX2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAJKHJldmlz
aW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckNsaWVudC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckNsaWVudC5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
aCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyQ2xpZW50OjpkaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZShXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIqIG1hbmFnZXIsIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRy
aWJ1dGUgcGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKCFtX2NsaWVu
dC5kaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9j
bGllbnQuZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUodG9BUEkobWFuYWdlciksIHBsYXliYWNr
QXR0cmlidXRlLCB2YWx1ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ckNsaWVudF9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIkFQSUNs
aWVudC5oIgotI2luY2x1ZGUgIldLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBD
bGllbnRUcmFpdHM8V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlPiB7Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50VjA+IFZl
cnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcjsKLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xp
ZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
QmFzZT4gewotcHVibGljOgotICAgIHZvaWQgZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUoV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKiwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5
YmFja0F0dHJpYnV0ZSwgYm9vbCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLy8gV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDEyICsyNDQsNiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFTZXNzaW9uTWV0YWRhdGEuaD4KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCIKICNlbmRpZgpA
QCAtNjA2NywyNCArNjA2MSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBs
YXliYWMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNr
KCkpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi12b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCi17Ci0gICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SGFuZGxlTWVkaWFFdmVudChldmVudFR5cGUpKTsKLX0KLQotdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2
NF90IGVsZW1lbnRJRCkKLXsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZvbHVtZU9mTWVkaWFF
bGVtZW50KHZvbHVtZSwgZWxlbWVudElEKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCBtYXlTdGFydE1lZGlhKQogewog
ICAgIGlmIChtYXlTdGFydE1lZGlhID09IG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdykKQEAg
LTg5ODksMTIgKzg5NjUsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVT
bmFwCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbmV3U3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJ
RCkKIHsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIqIGZvY3VzTWFuYWdlciA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnN1cHBsZW1l
bnQ8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpOwotICAgIEFTU0VSVChmb2N1c01hbmFn
ZXIpOwotICAgIGZvY3VzTWFuYWdlci0+dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlh
U3RhdGUodGhpcywgc291cmNlRWxlbWVudElELCBuZXdTdGF0ZSk7Ci0jZW5kaWYKLQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFtX3Byb2Nlc3MtPnRocm90dGxlcigpLnNob3Vs
ZEJlUnVubmFibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTE0MywyNiArOTExMyw2IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpub3dQbGF5aW5nSW5mb0NhbGxiYWMKIH0KICNlbmRpZgogCi0jaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCi12b2lkIFdlYlBhZ2VQcm94eTo6aGFzTWVkaWFTZXNzaW9u
V2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKLXsKLSAgICBtX2hh
c01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzID0gc3RhdGU7Ci19Ci0KLXZvaWQg
V2ViUGFnZVByb3h5OjptZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRhdGEpCi17Ci0gICAgUmVmPFdlYk1lZGlhU2Vz
c2lvbk1ldGFkYXRhPiB3ZWJNZXRhZGF0YSA9IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpjcmVh
dGUobWV0YWRhdGEpOwotICAgIG1fdWlDbGllbnQtPm1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hh
bmdlKCp0aGlzLCB3ZWJNZXRhZGF0YS5wdHIoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojpm
b2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVtZW50SUQpCi17
Ci0gICAgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKiBmb2N1c01hbmFnZXIgPSBwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4o
KTsKLSAgICBBU1NFUlQoZm9jdXNNYW5hZ2VyKTsKLSAgICBmb2N1c01hbmFnZXItPnNldEZvY3Vz
ZWRNZWRpYUVsZW1lbnQoKnRoaXMsIGVsZW1lbnRJRCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVu
dCwgT3B0aW9uU2V0PEF1dG9wbGF5RXZlbnRGbGFncz4gZmxhZ3MpCiB7CiAgICAgbV91aUNsaWVu
dC0+aGFuZGxlQXV0b3BsYXlFdmVudCgqdGhpcywgZXZlbnQsIGZsYWdzKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTY5
LDEyICsxNjksNiBAQCBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogI2luY2x1
ZGUgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIE1lZGlhU2Vzc2lv
bk1ldGFkYXRhOwotfQotI2VuZGlmCi0KICNpZiBVU0UoRElSRUNUMkQpCiBpbnRlcmZhY2UgSUQz
RDExRGV2aWNlMTsKICNlbmRpZgpAQCAtMTM0NCwxMiArMTMzOCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgdm9pZCByZXN1bWVBbGxNZWRpYVBs
YXliYWNrKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBib29sIGhhc01lZGlh
U2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNZWRp
YVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50czsgfQotICAgIHZvaWQgaGFuZGxlTWVkaWFF
dmVudChXZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSk7Ci0gICAgdm9pZCBzZXRWb2x1bWVPZk1lZGlh
RWxlbWVudChkb3VibGUsIHVpbnQ2NF90KTsKLSNlbmRpZgotICAgICAgICAKICNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQogICAgIHZvaWQgZGlkQWxsb3dQb2ludGVyTG9jaygpOwogICAgIHZvaWQg
ZGlkRGVueVBvaW50ZXJMb2NrKCk7CkBAIC0xNDc1LDEyICsxNDYzLDYgQEAgcHVibGljOgogICAg
IHZvaWQgbm93UGxheWluZ0luZm9DYWxsYmFjayhib29sLCBib29sLCBjb25zdCBTdHJpbmcmLCBk
b3VibGUsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIGhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRp
YUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wpOwotICAgIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsKLSAgICB2b2lk
IGZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90KTsKLSNlbmRpZgot
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEFQSTo6SGl0VGVzdFJlc3VsdCogbGFzdE1vdXNlTW92
ZUhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RNb3VzZU1vdmVIaXRUZXN0UmVz
dWx0LmdldCgpOyB9CiAgICAgdm9pZCBwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9j
YXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCk7CkBAIC0yNzc4LDEwICsyNzYwLDYgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNOZXZlclJpY2hseUVkaXRhYmxlRm9yVG91Y2hCYXIgeyBmYWxzZSB9
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBib29sIG1faGFzTWVk
aWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMgeyBmYWxzZSB9OwotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBib29sIG1fcmVxdWlyZXNUYXJnZXRNb25pdG9yaW5nIHsgZmFsc2UgfTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00NzQsMTIgKzQ3NCw2IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgSXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2Uo
dW5zaWduZWQgc3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKICAgICBIYW5kbGVBdXRv
cGxheUV2ZW50KGVudW06dWludDhfdCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRp
b25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPiBmbGFncykKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotICAgIEhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRz
RGlkQ2hhbmdlKGJvb2wgc3RhdGUpCi0gICAgTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2Uo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEgbWV0YWRhdGEpOwotICAgIEZvY3VzZWRDb250
ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90IGVsZW1lbnRJRCkKLSNlbmRpZgotCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KHN0
cnVjdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhIHJlc3VsdCwgYm9vbCBjb250ZW50UHJl
dmVudHNEZWZhdWx0LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNjc0
NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4OCw5ICsyODgsNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bv
b2woQVBJOjpQcm9jCiAgICAgYWRkU3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBh
ZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSNpZiBFTkFCTEUo
TUVESUFfU0VTU0lPTikKLSAgICBhZGRTdXBwbGVtZW50PFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcj4oKTsKLSNlbmRpZgogCiAgICAgcHJvY2Vzc1Bvb2xzKCkuYXBwZW5kKHRoaXMpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2
NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDEwICs1OSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0jZW5k
aWYKLQogI2lmIFVTRShTT1VQKQogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtQcm94eVNl
dHRpbmdzLmg+CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTAgKzYwLDYgQEAgY2xhc3Mg
V2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7Ci0KLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOwotI2Vu
ZGlmCiB9CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtMTYxLDEwICsxNTcsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1
dG9wbGF5RXZlbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50
LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgeyB9CiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFE
aWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbk1l
dGFkYXRhKikgeyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgSEFW
RShBUFBfTElOS1MpCiAgICAgdmlydHVhbCBib29sIHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9u
c0ZvckVsZW1lbnQoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKikgeyByZXR1cm4gdHJ1ZTsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9u
IDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw2IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5OwogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYkljb25EYXRh
YmFzZTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5OwotY2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyOwotY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE7CiBjbGFzcyBXZWJOb3Rp
ZmljYXRpb247CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJO
b3RpZmljYXRpb25Qcm92aWRlcjsKQEAgLTEzNiw4ICsxMzQsNiBAQCBXS19BRERfQVBJX01BUFBJ
TkcoV0tIVFRQQ29va2llU3RvcmVSZWYsCiBXS19BRERfQVBJX01BUFBJTkcoV0tIaXRUZXN0UmVz
dWx0UmVmLCBBUEk6OkhpdFRlc3RSZXN1bHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJY29uRGF0
YWJhc2VSZWYsIFdlYkljb25EYXRhYmFzZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0luc3BlY3Rv
clJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCi1XS19BRERfQVBJX01BUFBJTkcoV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJSZWYsIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcikKLVdLX0FERF9B
UElfTUFQUElORyhXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmLCBXZWJNZWRpYVNlc3Npb25NZXRh
ZGF0YSkKIFdLX0FERF9BUElfTUFQUElORyhXS01lc3NhZ2VMaXN0ZW5lclJlZiwgQVBJOjpNZXNz
YWdlTGlzdGVuZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBB
UEk6Ok5hdmlnYXRpb25BY3Rpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0
YVJlZiwgQVBJOjpOYXZpZ2F0aW9uRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDE2
ICs0NDEsNiBAQCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0CiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmPihXS1dl
YnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3JlKCkpOwogfQogCi1XS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlclJlZiBXS0NvbnRleHRHZXRNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIoV0tD
b250ZXh0UmVmIGNvbnRleHQpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnN1cHBsZW1lbnQ8V2Vi
S2l0OjpXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCkpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oY29udGV4dCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0KLQogV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0
b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk+KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDYgQEAgV0tfRVhQT1JU
IFdLQ29va2llTWFuYWdlclJlZiBXS0NvbnRleHRHZQogV0tfRVhQT1JUIFdLR2VvbG9jYXRpb25N
YW5hZ2VyUmVmIFdLQ29udGV4dEdldEdlb2xvY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29u
dGV4dCk7CiBXS19FWFBPUlQgV0tJY29uRGF0YWJhc2VSZWYgV0tDb250ZXh0R2V0SWNvbkRhdGFi
YXNlKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYgV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdlTWFuYWdlcihXS0NvbnRleHRSZWYg
Y29udGV4dCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURh
dGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUpOwotV0tfRVhQT1JUIFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyUmVmIFdLQ29udGV4dEdldE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihXS0NvbnRl
eHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29u
dGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQ
T1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1h
bmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3JlKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCShub25leGlz
dGVudCkKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiV0tB
UElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyR2V0VHlwZUlEKCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4g
dG9BUEkoV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpBUElUeXBlKTsKLSNlbHNlCi0gICAg
cmV0dXJuIHRvQVBJKEFQSTo6T2JqZWN0OjpUeXBlOjpOdWxsKTsKLSNlbmRpZgotfQotCi12b2lk
IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Q2xpZW50KFdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
QmFzZSogY2xpZW50KQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHRvSW1wbCht
YW5hZ2VyKS0+aW5pdGlhbGl6ZUNsaWVudChjbGllbnQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0obWFuYWdlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7Ci0jZW5kaWYKLX0KLQotYm9v
bCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclZhbHVlRm9yUGxheWJhY2tBdHRyaWJ1dGUoV0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYgbWFuYWdlciwgV0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJQbGF5YmFja0F0dHJpYnV0ZSBhdHRyaWJ1dGUpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0gICAgcmV0dXJuIHRvSW1wbChtYW5hZ2VyKS0+dmFsdWVGb3JQbGF5YmFja0F0dHJp
YnV0ZShhdHRyaWJ1dGUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7Ci0gICAg
VU5VU0VEX1BBUkFNKGF0dHJpYnV0ZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0K
LXZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJTZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVs
ZW1lbnQoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYgbWFuYWdlciwgZG91YmxlIHZvbHVt
ZSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB0b0ltcGwobWFuYWdlciktPnNl
dFZvbHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVudCh2b2x1bWUpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obWFuYWdlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHZvbHVtZSk7Ci0jZW5kaWYKLX0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyX2gKLSNkZWZpbmUgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJfaAotCi0j
aW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVk
ZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotZW51bSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmli
dXRlIHsKLSAgICBJc1BsYXlpbmcgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKLSAgICBJ
c1ByZXZpb3VzVHJhY2tDb250cm9sRW5hYmxlZCA9IDEgPDwgMSwKLSAgICBJc05leHRUcmFja0Nv
bnRyb2xFbmFibGVkICAgICA9IDEgPDwgMiwKLX07Ci10eXBlZGVmIHVpbnQzMl90IFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGVzOwotCi0vLyBNZWRpYSBTZXNzaW9u
IEZvY3VzIE1hbmFnZXIgQ2xpZW50Ci10eXBlZGVmIHZvaWQgKCpXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlckRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlKShXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlclJlZiBtYW5hZ2VyLCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmli
dXRlIHBsYXliYWNrQXR0cmlidXRlLCBib29sIHZhbHVlLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNl
IHsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZlcnNpb247Ci0gICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNs
aWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xp
ZW50VjAgewotICAgIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAg
ICAgICAgICAgYmFzZTsKLQotICAgIC8vIFZlcnNpb24gMC4KLSAgICBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlIGRpZENoYW5nZVBsYXliYWNrQXR0
cmlidXRlOwotfSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudFYwOwotCi1XS19FWFBP
UlQgV0tUeXBlSUQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJHZXRUeXBlSUQoKTsKLQotV0tf
RVhQT1JUIHZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJTZXRDbGllbnQoV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJSZWYgbWFuYWdlciwgY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnRCYXNlKiBjbGllbnQpOwotCi1XS19FWFBPUlQgYm9vbCBXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlclZhbHVlRm9yUGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJSZWYsIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUp
OwotV0tfRVhQT1JUIHZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJTZXRWb2x1bWVPZkZv
Y3VzZWRNZWRpYUVsZW1lbnQoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYsIGRvdWJsZSk7
Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcl9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAkocmV2aXNpb24gMjY3
NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRh
ZGF0YS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIKLQot
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLTWVkaWFTZXNzaW9u
TWV0YWRhdGFHZXRUeXBlSUQoKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJl
dHVybiB0b0FQSShXZWJNZWRpYVNlc3Npb25NZXRhZGF0YTo6QVBJVHlwZSk7Ci0jZWxzZQotICAg
IHJldHVybiB0b0FQSShBUEk6Ok9iamVjdDo6VHlwZTo6TnVsbCk7Ci0jZW5kaWYKLX0KLQotV0tT
dHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlUaXRsZShXS01lZGlhU2Vzc2lvbk1l
dGFkYXRhUmVmIG1ldGFkYXRhKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJl
dHVybiB0b0NvcGllZEFQSSh0b0ltcGwobWV0YWRhdGEpLT50aXRsZSgpKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQot
Ci1XS1N0cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFydGlzdChXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwobWV0YWRhdGEpLT5hcnRpc3QoKSk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5k
aWYKLX0KLQotV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBbGJ1bShXS01l
ZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwobWV0YWRhdGEpLT5hbGJ1bSgpKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKLSAgICByZXR1cm4gbnVsbHB0cjsK
LSNlbmRpZgotfQotCi1XS1VSTFJlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFydHdvcmtV
UkwoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKG1ldGFkYXRhKS0+
YXJ0d29ya1VSTCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAkocmV2aXNpb24gMjY3
NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRh
ZGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YV9oCi0jZGVmaW5lIFdLTWVkaWFTZXNzaW9uTWV0YWRh
dGFfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVz
Ci0jaW5jbHVkZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0
ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLTWVkaWFTZXNzaW9uTWV0
YWRhdGFHZXRUeXBlSUQoKTsKLQotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9u
TWV0YWRhdGFDb3B5VGl0bGUoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSk7Ci1X
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBcnRpc3QoV0tN
ZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSk7Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYg
V0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBbGJ1bShXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVm
IG1ldGFkYXRhKTsKLVdLX0VYUE9SVCBXS1VSTFJlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29w
eUFydHdvcmtVUkwoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSk7Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAko
cmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTEgKzk0LDYgQEAKICNpbmNsdWRlICJXZWJDb250
ZXh0TWVudUl0ZW0uaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5j
bHVkZSAiV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
U2Vzc2lvbkV2ZW50cy5oPgotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRl
ICJWZXJzaW9uQ2hlY2tzLmgiCiAjZW5kaWYKQEAgLTIwMjgsMTUgKzIwMjMsNiBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICBtX2NsaWVudC5k
aWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UodG9BUEkoJnBhZ2Up
LCB0b0FQSSh1c2VySW5mbyksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0K
IAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgICAgICB2b2lkIG1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEqIG1ldGFkYXRhKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
Lm1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgbV9jbGllbnQubWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UodG9B
UEkoJnBhZ2UpLCB0b0FQSShtZXRhZGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIHZvaWQg
cmVxdWVzdFBvaW50ZXJMb2NrKFdlYlBhZ2VQcm94eSogcGFnZSkgZmluYWwKICAgICAgICAgewpA
QCAtMjcyNyw0MyArMjcxMyw2IEBAIHZvaWQgV0tQYWdlRGlkRGVueVBvaW50ZXJMb2NrKFdLUGFn
ZVJlZiAKICNlbmRpZgogfQogCi1ib29sIFdLUGFnZUhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVN
ZWRpYUVsZW1lbnRzKFdLUGFnZVJlZiBwYWdlKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQotICAgIHJldHVybiB0b0ltcGwocGFnZSktPmhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRp
YUVsZW1lbnRzKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBXS1BhZ2VIYW5kbGVNZWRpYUV2ZW50KFdLUGFnZVJl
ZiBwYWdlLCBXS01lZGlhRXZlbnRUeXBlIHdrRXZlbnRUeXBlKQotewotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZTsKLQotICAgIHN3aXRjaCAo
d2tFdmVudFR5cGUpIHsKLSAgICBjYXNlIGtXS01lZGlhRXZlbnRUeXBlUGxheVBhdXNlOgotICAg
ICAgICBldmVudFR5cGUgPSBNZWRpYUV2ZW50VHlwZTo6UGxheVBhdXNlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIGtXS01lZGlhRXZlbnRUeXBlVHJhY2tOZXh0OgotICAgICAgICBldmVudFR5
cGUgPSBNZWRpYUV2ZW50VHlwZTo6VHJhY2tOZXh0OwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IGtXS01lZGlhRXZlbnRUeXBlVHJhY2tQcmV2aW91czoKLSAgICAgICAgZXZlbnRUeXBlID0gTWVk
aWFFdmVudFR5cGU6OlRyYWNrUHJldmlvdXM7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgdG9JbXBsKHBhZ2UpLT5oYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSAgICBVTlVTRURfUEFSQU0od2tFdmVudFR5cGUpOwot
I2VuZGlmCi19Ci0KIHZvaWQgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5UmVmKQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+cG9zdE1lc3NhZ2VUb0luamVjdGVk
QnVuZGxlKHRvSW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b0ltcGwobWVzc2FnZUJv
ZHlSZWYpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQ
cml2YXRlLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDE5ICsxNTEsOCBAQCBl
bnVtIHsKIH07CiB0eXBlZGVmIHVpbnQzMl90IFdLTWVkaWFTdGF0ZTsKIAotCiBXS19FWFBPUlQg
V0tNZWRpYVN0YXRlIFdLUGFnZUdldE1lZGlhU3RhdGUoV0tQYWdlUmVmIHBhZ2UpOwogCi1lbnVt
IHsKLSAgICBrV0tNZWRpYUV2ZW50VHlwZVBsYXlQYXVzZSwKLSAgICBrV0tNZWRpYUV2ZW50VHlw
ZVRyYWNrTmV4dCwKLSAgICBrV0tNZWRpYUV2ZW50VHlwZVRyYWNrUHJldmlvdXMKLX07Ci10eXBl
ZGVmIHVpbnQzMl90IFdLTWVkaWFFdmVudFR5cGU7Ci0KLVdLX0VYUE9SVCBib29sIFdLUGFnZUhh
c01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKFdLUGFnZVJlZiBwYWdlKTsKLVdL
X0VYUE9SVCB2b2lkIFdLUGFnZUhhbmRsZU1lZGlhRXZlbnQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVk
aWFFdmVudFR5cGUgZXZlbnQpOwotCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VMb2FkVVJMV2l0aFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwg
Ym9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlUG9z
dFByZXNlbnRhdGlvblVwZGF0ZUZ1bmN0aW9uKShXS0Vycm9yUmVmLCB2b2lkKik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgJKHJldmlz
aW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNiBAQCB0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VJc1BsYXlpbmdBdWRpb0RpZENoCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xp
Y3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiB1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiwgV0tTZWN1cml0eU9yaWdpblJlZiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4sIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmIGRldmljZXNSZXF1
ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZENs
aWNrQXV0b0ZpbGxCdXR0b25DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VNZWRp
YVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tNZWRp
YVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0
eXBlZGVmIHZvaWQgKCpXS0hhbmRsZUF1dG9wbGF5RXZlbnRDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIFdLQXV0b3BsYXlFdmVudCBldmVudCwgV0tBdXRvcGxheUV2ZW50RmxhZ3MgZmxhZ3MsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tGdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogdHlwZWRlZiB2b2lkICgqV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjaykoV0tQYWdl
UmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtNTAzLDcgKzUwMiw3IEBAIHR5
cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjUgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRB
bGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNj
cmlwdEFsZXJ0OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CiAgICAgV0tQ
YWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAg
ICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9u
TWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJl
IG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogfSBXS1BhZ2VVSUNsaWVudFY1OwogCiB0
eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY2IHsKQEAgLTU3Niw3ICs1NzUsNyBAQCB0eXBl
ZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY2IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxl
cnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3Jp
cHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRD
b25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNj
cmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNl
c3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1l
ZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8g
VXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNp
b24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC02NTYsNyArNjU1LDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWNyB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZh
U2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7
IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBW
ZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtNzQwLDcgKzczOSw3
IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjggewogICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFn
ZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVz
ZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogICAgIAog
ICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC04Mjgs
NyArODI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWOSB7CiAgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAg
ICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0g
ICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2Uu
CiAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAt
OTE5LDcgKzkxOCw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjEwIHsKICAgICBX
S1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAg
ICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAg
IFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhW
NSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsK
ICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
NTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZv
aWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENo
YW5nZS4KICAgICAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQ
YWdlOwpAQCAtMTAxNCw3ICsxMDEzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRW
MTEgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9y
VXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNh
dGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlLgogCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5l
d1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlTmV3UGFnZTsKQEAgLTExMTIsNyArMTExMSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJ
Q2xpZW50VjEyIHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNh
dGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVj
YXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENo
YW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRh
RGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNl
c3Npb25NZXRhZGF0YURpZENoYW5nZS4KICAgICAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQ
YWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtMTIxMyw3ICsxMjEyLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgV0tQYWdlVUlDbGllbnRWMTMgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxi
YWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1D
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29u
ZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9t
cHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlw
dFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNz
aW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRv
IGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogCiAgICAgLy8gVmVyc2lvbiA2Lgog
ICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTEzMTcsNyArMTMxNiw3IEBAIHR5cGVk
ZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxl
cnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3Jp
cHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRD
b25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNj
cmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNl
c3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1l
ZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8g
VXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNp
b24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE3MDgsMTEgKzE3MDgsNiBAQAogCQlDNUZBMUVEMzE4RTEwNjIyMDBCM0Y0
MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM1RkExRUQxMThFMTA2MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlS
b3V0ZVBpY2tlci5oICovOyB9OwogCQlDNkE0Q0EwQjIyNTI4OTk4MDAxNjkyODkgLyogV0tCdW5k
bGVQYWdlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNkE0Q0EwOTIyNTI4OTk4MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzZBNENBMEMyMjUyODk5
ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2QTRDQTBBMjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRs
ZVBhZ2VNYWMubW0gKi87IH07Ci0JCUM5OEM0OEE2MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM5OEM0OEE0MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuaCAqLzsgfTsKLQkJQzk4QzQ4QUExQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDOThDNDhBODFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlDOUMxODMzQzFCNzQwMjZEMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDOUMxODMzODFCNzNGRDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyQ2xpZW50LmggKi87IH07Ci0JCUM5Q0Q0Mzk4MUI0QjAwMUQwMDIzOUUzMyAvKiBXZWJNZWRp
YVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzlDRDQzOTQxQjRCMDAwRTAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFk
YXRhLmggKi87IH07Ci0JCUM5Q0Q0MzlEMUI0QjAyNEYwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lv
bk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDOUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBMDUzOTc5
MjNFRTMyNDQwMEE1NTNEQyAvKiBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTA1Mzk3ODIz
RUUzMjQ0MDBBNTUzREMgLyogQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oICov
OyB9OwogCQlDRDAwM0E1MzE5RDQ5QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qw
MDNBNTExOUQ0OUI1RDAwNUFCQ0UwIC8qIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCAqLzsg
fTsKIAkJQ0QwQzY4MzEyMDFGRDEwMTAwQTU5NDA5IC8qIFdLRnVsbFNjcmVlblZpZXdDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBD
NjgyRjIwMUZEMTAxMDBBNTk0MDkgLyogV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIuaCAqLzsg
fTsKQEAgLTUwNjMsMTYgKzUwNTgsNiBAQAogCQlDNUZBMUVEMjE4RTEwNjIyMDBCM0Y0MDIgLyog
V0tBaXJQbGF5Um91dGVQaWNrZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXS0FpclBsYXlSb3V0ZVBpY2tlci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0FpclBs
YXlSb3V0ZVBpY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZBNENBMDky
MjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1
bmRsZVBhZ2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZBNENBMEEyMjUy
ODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLQnVuZGxlUGFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzk4QzQ4
QTMxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOThDNDhBNDFCNkZENEMz
MDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDOThDNDhBNzFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDOThDNDhBODFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlDMTgzMzcx
QjczRkQ2QTAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUMxODMz
ODFCNzNGRDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUNENDM5MzFCNEIw
MDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUNENDM5NDFCNEIwMDBFMDAyMzlFMzMgLyogV2Vi
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzlDRDQzOTkxQjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tNZWRpYVNlc3Npb25NZXRhZGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5Q0Q0MzlBMUI0QjAyNDIwMDIz
OUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EwNTM5NzgyM0VFMzI0NDAwQTU1M0RDIC8qIENvbnRlbnRBc1N0cmluZ0luY2x1
ZGVzQ2hpbGRGcmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEFzU3RyaW5nSW5jbHVkZXND
aGlsZEZyYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDAwM0E1MDE5RDQ5
QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDsg
cGF0aCA9IE1lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMDAzQTUxMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDsgcGF0aCA9IE1lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE0Myw4ICs2
MTI4LDYgQEAKIAkJCQlDMDMzN0REMjEyN0EyQTBFMDA4RkY0RjQgLyogV2ViS2V5Ym9hcmRFdmVu
dC5jcHAgKi8sCiAJCQkJQkM5QkE1MDIxNjk3QzQ1MzAwRTQ0NjE2IC8qIFdlYktpdDJJbml0aWFs
aXplLmNwcCAqLywKIAkJCQlCQzlCQTUwMzE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRp
YWxpemUuaCAqLywKLQkJCQlDOUNENDM5MzFCNEIwMDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNz
aW9uTWV0YWRhdGEuY3BwICovLAotCQkJCUM5Q0Q0Mzk0MUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJN
ZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAogCQkJCTkwNTYyMEU4MTJCQzI0OEIwMDA3OTlCNiAv
KiBXZWJNZW1vcnlTYW1wbGVyLmNwcCAqLywKIAkJCQk5MDU2MjBFOTEyQkMyNDhCMDAwNzk5QjYg
LyogV2ViTWVtb3J5U2FtcGxlci5oICovLAogCQkJCUMwMzM3REFGMTI3QTI4RDAwMDhGRjRGNCAv
KiBXZWJNb3VzZUV2ZW50LmNwcCAqLywKQEAgLTkwNzAsMTAgKzkwNTMsNiBAQAogCQkJCUJDMUJF
MUYxMTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvblByb3ZpZGVyLmNwcCAqLywKIAkJ
CQlCQzFCRTFGMDEyRDU0REJEMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25Qcm92aWRlci5oICov
LAogCQkJCTUxQzhFMTlCMUYyMTYxNzIwMEJGNzMxQiAvKiBXZWJJY29uRGF0YWJhc2UuaCAqLywK
LQkJCQlDOThDNDhBMzFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyLmNwcCAqLywKLQkJCQlDOThDNDhBNDFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmggKi8sCi0JCQkJQzlDMTgzMzcxQjczRkQ2QTAwNzAzNkE3IC8qIFdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAgKi8sCi0JCQkJQzlDMTgzMzgxQjcz
RkQ2QTAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oICovLAog
CQkJCTJEM0VGNDQwMTkxNzY0NjMwMDAzNDE4NCAvKiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIu
Y3BwICovLAogCQkJCTJEM0VGNDQxMTkxNzY0NjMwMDAzNDE4NCAvKiBXZWJNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaCAqLywKIAkJCQk3Q0NDQzhGODFBNUY1MEZEMDA4RkIwREEgLyogV2ViTmF2aWdh
dGlvblN0YXRlLmNwcCAqLywKQEAgLTkyNzYsMTAgKzkyNTUsNiBAQAogCQkJCTUxQTlFMTA4MTMx
NUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwICovLAogCQkJCTUx
QTlFMTA5MTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCAqLywK
IAkJCQkyRDc5MEE5RTFBRDcxNjQ5MDBBQjkwQjMgLyogV0tMYXlvdXRNb2RlLmggKi8sCi0JCQkJ
Qzk4QzQ4QTcxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNw
cCAqLywKLQkJCQlDOThDNDhBODFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaCAqLywKLQkJCQlDOUNENDM5OTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNl
c3Npb25NZXRhZGF0YS5jcHAgKi8sCi0JCQkJQzlDRDQzOUExQjRCMDI0MjAwMjM5RTMzIC8qIFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLywKIAkJCQk1Q0FCREM4NDIyQzQwRkNDMDAxRURFOEUg
LyogV0tNZXNzYWdlTGlzdGVuZXIuY3BwICovLAogCQkJCTVDQUJEQzg1MjJDNDBGQ0MwMDFFREU4
RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5oICovLAogCQkJCUMxMUUxNjkzMjEyQjg3QzUwMDk4NUZG
NiAvKiBXS01vY2tEaXNwbGF5LmNwcCAqLywKQEAgLTExMzQxLDkgKzExMzE2LDYgQEAKIAkJCQlC
QzlCQTUwNTE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxpemUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNjI4MEM3MTkxOTk1MEMwMDZBRDlGOSAvKiBXZWJLaXRQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDAwM0E1MzE5RDQ5QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzk4QzQ4QTYxQjZGRDRDMzAwMTQ1
MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QzlDMTgzM0MxQjc0MDI2RDAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlDRDQzOTgxQjRCMDAxRDAwMjM5RTMzIC8qIFdl
Yk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjVCRUMyNjI0MDBG
NEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQz
RUY0NDMxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTA5ODU0RUQxMkJDNEUxODAwMEFEMDgwIC8qIFdlYk1lbW9yeVNhbXBs
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2NDIsOCArMTE2MTQsNiBAQAogCQkJCTUxQTlFMTBC
MTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENzkwQTlGMUFENzE2NDkwMEFCOTBCMyAvKiBXS0xheW91dE1vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDRTkxMjE0MjI5M0MyODAwMDVCRUM3OCAvKiBXS01haW4uaCBpbiBI
ZWFkZXJzICovLAotCQkJCUM5OEM0OEFBMUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlDRDQzOUQxQjRCMDI0RjAwMjM5
RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQw
RUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0FCREM4NjIyQzQwRkRFMDAxRURFOEUgLyogV0tNZXNzYWdlTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBX
S01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3MCwyNSArMTE3
MCw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW4KICAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVBdXRvcGxheUV2ZW50KGV2ZW50
LCBmbGFncykpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLXZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5n
ZShib29sIHN0YXRlKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Okhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKHN0YXRlKSk7
Ci19Ci0KLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjptZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5n
ZShjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRhdGEpCi17Ci0gICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2Uo
bWV0YWRhdGEpKTsKLX0KLQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRDb250ZW50TWVk
aWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90IGVsZW1lbnRJRCkKLXsKLSAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENo
YW5nZShlbGVtZW50SUQpKTsKLX0KLQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykK
IAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzM2
LDEyICszMzYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2Uo
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzLCB1aW50NjRfdCkgZmluYWw7
CiAgICAgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9w
dGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+KSBmaW5hbDsKIAotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotICAgIHZvaWQgaGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlh
RWxlbWVudHNEaWRDaGFuZ2UoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBtZWRpYVNlc3Npb25NZXRh
ZGF0YURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpIGZpbmFs
OwotICAgIHZvaWQgZm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3Qp
IGZpbmFsOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICBib29sIHdyYXBD
cnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwg
VmVjdG9yPHVpbnQ4X3Q+JikgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxOTgsMTggKzUxOTgsNiBAQCB2b2lkIFdlYlBhZ2U6OnN0b3BNZWRpYUNhcHR1cmUoKQogI2Vu
ZGlmCiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLXZvaWQgV2ViUGFnZTo6aGFuZGxl
TWVkaWFFdmVudCh1aW50MzJfdCBldmVudFR5cGUpCi17Ci0gICAgbV9wYWdlLT5oYW5kbGVNZWRp
YUV2ZW50KHN0YXRpY19jYXN0PE1lZGlhRXZlbnRUeXBlPihldmVudFR5cGUpKTsKLX0KLQotdm9p
ZCBXZWJQYWdlOjpzZXRWb2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUgdm9sdW1lLCB1aW50NjRf
dCBlbGVtZW50SUQpCi17Ci0gICAgbV9wYWdlLT5zZXRWb2x1bWVPZk1lZGlhRWxlbWVudCh2b2x1
bWUsIGVsZW1lbnRJRCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQYWdlOjpzZXRNYXlTdGFydE1l
ZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3RhcnRNZWRpYSkKIHsKICAgICBpZiAobWF5U3RhcnRN
ZWRpYSA9PSBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk2NywxMSArOTY3LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWF5U3RhcnRNZWRpYVdoZW5J
bldpbmRvdyhib29sKTsKICAgICB2b2lkIHN0b3BNZWRpYUNhcHR1cmUoKTsKIAotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotICAgIHZvaWQgaGFuZGxlTWVkaWFFdmVudCh1aW50MzJfdCAvKiBX
ZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSAqLyk7Ci0gICAgdm9pZCBzZXRWb2x1bWVPZk1lZGlhRWxl
bWVudChkb3VibGUsIHVpbnQ2NF90KTsKLSNlbmRpZgotCiAgICAgdm9pZCB1cGRhdGVNYWluRnJh
bWVTY3JvbGxPZmZzZXRQaW5uaW5nKCk7CiAKICAgICBib29sIG1haW5GcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlcigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjc0NTApCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC00MTEsMTEgKzQxMSw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW4KICAgICBTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wg
bWF5U3RhcnRNZWRpYSkKICAgICBTdG9wTWVkaWFDYXB0dXJlKCkKIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIEhhbmRsZU1lZGlhRXZlbnQodWludDMyX3QgZXZlbnRUeXBlKQotICAg
IFNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJ
RCkKLSNlbmRpZgotCiAgICAgU2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGJvb2wg
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKQogICAgIFNldENhblJ1bk1vZGFsKGJvb2wg
Y2FuUnVuTW9kYWwpCiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCShyZXZpc2lvbiAyNjc0NTAp
CisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE1
LDcgKzExNSw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8KIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVESU8gUFJJVkFURSBP
RkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9NRURJQV9DQVBUVVJFIFBSSVZBVEUgT0ZGKQotV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NFU1NJT04gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU09VUkNFIFBSSVZBVEUgT0ZGKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mg
UFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVE
SUFfU1RSRUFNIFBSSVZBVEUgT0ZGKQpJbmRleDogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQko
cmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDYgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJ
TikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUFUSE1MICJUb2dnbGUgTWF0aE1M
IHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01F
RElBX0NBUFRVUkUgIlRvZ2dsZSBNZWRpYSBDYXB0dXJlIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQgIlRv
Z2dsZSBkZWZpbml0aW9uIG9mIG1lZGlhIGNvbnRyb2xzIGluIEphdmFzY3JpcHQiIFBSSVZBVEUg
T04pCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NFU1NJT04gIlRvZ2ds
ZSBNZWRpYSBTZXNzaW9uIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9NRURJQV9TT1VSQ0UgIlRvZ2dsZSBNZWRpYSBTb3VyY2Ugc3VwcG9ydCIg
UFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MgIlRvZ2dsZSBNZWRpYSBTdGF0aXN0aWNzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9TVFJFQU0gIlRvZ2dsZSBNZWRpYSBT
dHJlYW0gc3VwcG9ydCIgUFJJVkFURSBPRkYpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjc0NTIpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wOS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGNvZGUgYmVoaW5kIEVO
QUJMRShNRURJQV9TRVNTSU9OKSwgbm8gcG9ydHMgZW5hYmxlIGl0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0
dXJlTGlzdC5wbToKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggTUVE
SUFfU0VTU0lPTiBlbmFibGVkLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBh
Z2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRp
b25zKToKKyAgICAgICAgVXBkYXRlIG5hbWVzIHRvIG5ldyAndW51c2VkJyBuYW1pbmcuCisKIDIw
MjAtMDktMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBNYWtlIFRMU1ZlcnNpb24gQVBJIHRlc3RzIG1vcmUgcm9idXN0LgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQkocmV2aXNpb24gMjY3NDUwKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksNyArMTE5LDYgQEAgbXkgKAogICAgICRtYXRobWxTdXBwb3J0LAogICAgICRtZWRpYUNh
cHR1cmVTdXBwb3J0LAogICAgICRtZWRpYUNvbnRyb2xzU2NyaXB0U3VwcG9ydCwKLSAgICAkbWVk
aWFTZXNzaW9uU3VwcG9ydCwKICAgICAkbWVkaWFTb3VyY2VTdXBwb3J0LAogICAgICRtZWRpYVN0
YXRpc3RpY3NTdXBwb3J0LAogICAgICRtZWRpYVN0cmVhbVN1cHBvcnQsCkBAIC0zOTksOSArMzk4
LDYgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJtZWRpYS1jb250cm9scy1z
Y3JpcHQiLCBkZXNjID0+ICJUb2dnbGUgZGVmaW5pdGlvbiBvZiBtZWRpYSBjb250cm9scyBpbiBK
YXZhc2NyaXB0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQ
VCIsIHZhbHVlID0+IFwkbWVkaWFDb250cm9sc1NjcmlwdFN1cHBvcnQgfSwKIAotICAgIHsgb3B0
aW9uID0+ICJtZWRpYS1zZXNzaW9uIiwgZGVzYyA9PiAiVG9nZ2xlIE1lZGlhIFNlc3Npb24gc3Vw
cG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9NRURJQV9TRVNTSU9OIiwgdmFsdWUgPT4g
XCRtZWRpYVNlc3Npb25TdXBwb3J0IH0sCi0KICAgICB7IG9wdGlvbiA9PiAibWVkaWEtc291cmNl
IiwgZGVzYyA9PiAiVG9nZ2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX01FRElBX1NPVVJDRSIsIHZhbHVlID0+IFwkbWVkaWFTb3VyY2VTdXBwb3J0IH0s
CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiAyNjc0NTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw3IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJv
bGxlcjo6Y3JlYXRlT3RoZXJQYWcKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAg
ICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCiAgICAgICAgIDAsIC8vIHJ1bkphdmFT
Y3JpcHRQcm9tcHQKLSAgICAgICAgMCwgLy8gbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UK
KyAgICAgICAgMCwgLy8gdW51c2VkNQogICAgICAgICBjcmVhdGVPdGhlclBhZ2UsCiAgICAgICAg
IHJ1bkphdmFTY3JpcHRBbGVydCwKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0K
QEAgLTcxNSw3ICs3MTUsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0
aE9wCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAogICAgICAgICAwLCAvLyBydW5K
YXZhU2NyaXB0Q29uZmlybQogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0Ci0gICAg
ICAgIDAsIC8vIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlCisgICAgICAgIDAsIC8vIHVu
dXNlZDUKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAgICBydW5KYXZhU2NyaXB0QWxl
cnQsCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wOS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGNvZGUgYmVoaW5kIEVOQUJMRShNRURJQV9TRVNTSU9OKSwgbm8gcG9y
dHMgZW5hYmxlIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTY4MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgYWx3YXlzIHNraXBwZWQgTWVkaWEgU2Vzc2lvbiB0ZXN0cy4KKworICAgICAg
ICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgKiBtZWRpYS9zZXNzaW9uOiBSZW1vdmVkLgorCiAyMDIwLTA5LTIyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IEJpcXVhZEZpbHRl
ck5vZGUncyBsb3dwYXNzICYgaGlnaHBhc3MgZmlsdGVycwpJbmRleDogTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTE2LDkgKzE5MTYsNiBAQCBmYXN0L2ltYWdlcy9hbmltYXRlZC13ZWJw
Lmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE0NjE4MiBlZGl0aW5nL3NlbGVjdGlvbi9s
ZWFrLWRvY3VtZW50LXdpdGgtc2VsZWN0aW9uLWluc2lkZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotIyBNZWRpYSBTZXNzaW9ucyBpcyBub3QgeWV0IGVuYWJsZWQgYnkgZGVmYXVsdDogRU5BQkxF
KE1FRElBX1NFU1NJT04pCi1tZWRpYS9zZXNzaW9uIFsgU2tpcCBdCi0KICMgRXhwZXJpbWVudGFs
IEgyNjUgc3VwcG9ydC4KIHdlYnJ0Yy9oMjY1Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkluZGV4
OiBMYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIExheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTI1OCw4ICsyNTgsNiBAQCBtZWRpYS9wcmVzZW50YXRpb25tb2RlY2hhbmdlZC1m
aXJlZC1vbmNlCiBtZWRpYS9wcm9ncmVzcy1ldmVudHMtZ2VuZXJhdGVkLWNvcnJlY3RseS5odG1s
IFsgU2tpcCBdCiBtZWRpYS9yZW1vdGVwbGF5YmFjay1wcm9tcHQuaHRtbCBbIFNraXAgXQogCi1t
ZWRpYS9zZXNzaW9uIFsgU2tpcCBdCi0KIG1lZGlhL3RyYWNrL2F1ZGlvL2F1ZGlvLXRyYWNrLW1r
di12b3JiaXMtYWRkdHJhY2suaHRtbCBbIFNraXAgXQogbWVkaWEvdHJhY2svYXVkaW8vYXVkaW8t
dHJhY2stbWt2LXZvcmJpcy1lbmFibGVkLmh0bWwgWyBTa2lwIF0KIG1lZGlhL3RyYWNrL2F1ZGlv
L2F1ZGlvLXRyYWNrLW1rdi12b3JiaXMtbGFuZ3VhZ2UuaHRtbCBbIFNraXAgXQpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1
cHRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKQEAgLTEsMTIgKzAsMCBAQAotJ0NvbnRlbnQnIHN0YXJ0IG9mIGludGVycnVwdGlvbiBldmVu
dHMgc2hvdWxkIGluZGVmaW5pdGVseSBwYXVzZSAnQ29udGVudCcgbWVkaWEgc2Vzc2lvbnMuCi0K
LQotV2FpdGluZyBmb3IgQ29udGVudCBtZWRpYSB0byBiZWdpbiBwbGF5aW5nLgotTWVkaWEgYmVn
YW4gcGxheWluZy4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRl
KHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotU2VuZGluZyAnQ29udGVudCcgc3RhcnQtb2YtaW50
ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0
YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oImNvbnRlbnQiKSkKLVRoZSBtZWRpYSBlbGVt
ZW50IHdhcyBwYXVzZWQuCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLmh0bWwJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1p
bnRlcnJ1cHRpb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3Qu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNz
aW9uOwotICAgIAotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVk
aWFTZXNzaW9uKCJjb250ZW50Iik7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiV2FpdGlu
ZyBmb3IgQ29udGVudCBtZWRpYSB0byBiZWdpbiBwbGF5aW5nLiIpCi0gICAgICAgICAgICB2aWRl
by5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0g
ICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHZpZGVvLm9u
cGxheWluZyA9IGJlZ2FuUGxheWluZzsKLSAgICAgICAgICAgIHZpZGVvLm9uY2FucGxheXRocm91
Z2ggPSBjYW5wbGF5dGhyb3VnaDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNhbnBs
YXl0aHJvdWdoKCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAg
ICAgICAgdmlkZW8ub25wYXVzZSA9IHBhdXNlZDsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nICdDb250ZW50JyBzdGFy
dC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLiIpOwotICAgICAgICAgICAgICAgIHJ1bign
aW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9u
KCJjb250ZW50IiknKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIHBhdXNlZChldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
aGUgbWVkaWEgZWxlbWVudCB3YXMgcGF1c2VkLiIpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2lu
dGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaWRsZSIpOwotCi0g
ICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD4nQ29udGVudCcgc3RhcnQgb2YgaW50
ZXJydXB0aW9uIGV2ZW50cyBzaG91bGQgaW5kZWZpbml0ZWx5IHBhdXNlICdDb250ZW50JyBtZWRp
YSBzZXNzaW9ucy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgY29udHJvbHM+IDwvdmlkZW8+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRl
bnQtc2Vzc2lvbi1mb2N1cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1m
b2N1cy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMiArMCwwIEBACi1QbGF5aW5n
IGEgbWVkaWEgZWxlbWVudCBiZWxvbmdpbmcgdG8gYSBDb250ZW50IG1lZGlhIHNlc3Npb24gc2hv
dWxkIHBhdXNlIG90aGVyIHBsYXlpbmcgQ29udGVudCBtZWRpYSBlbGVtZW50cy4KLQotCi1FVkVO
VChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRlbzEucGF1c2VkID09ICd0cnVlJykgT0sK
LUJlZ2luIHBsYXlpbmcgZmlyc3QgdmlkZW8uCi1FVkVOVChwbGF5aW5nKQotRmlyc3QgdmlkZW8g
YmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlbzEucGF1c2VkID09ICdmYWxzZScpIE9LCi0K
LVNldHRpbmcgdXAgc2Vjb25kIHZpZGVvLgotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RF
RCAodmlkZW8xLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKHZpZGVvMi5wYXVzZWQg
PT0gJ3RydWUnKSBPSwotQmVnaW4gcGxheWluZyBzZWNvbmQgdmlkZW8uCi1FVkVOVChwbGF5aW5n
KQotU2Vjb25kIHZpZGVvIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8yLnBhdXNlZCA9
PSAnZmFsc2UnKSBPSwotRVZFTlQocGF1c2UpCi1FWFBFQ1RFRCAodmlkZW8xLnBhdXNlZCA9PSAn
dHJ1ZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vY29udGVudC1zZXNzaW9uLWZvY3VzLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1zZXNzaW9uLWZvY3VzLmh0bWwJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uLCB2aWRlbzEsIHZpZGVv
MjsKLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0KLSAgICAgICAgICAgIHZp
ZGVvMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbzEiKTsKLSAgICAgICAgICAgIHdh
aXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmdWaWRlbzEsIGZhbHNlLCB0
cnVlLCB2aWRlbzEpOwotICAgICAgICAgICAgdmlkZW8xLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZp
ZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvMS5zZXNzaW9u
ID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxh
eWluZ1ZpZGVvMSwgZmFsc2UsIHRydWUsIHZpZGVvMSk7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBiZWdpblBsYXlpbmdWaWRlbzEoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgndmlkZW8xLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBjb25z
b2xlV3JpdGUoIkJlZ2luIHBsYXlpbmcgZmlyc3QgdmlkZW8uIik7Ci0gICAgICAgICAgICB2aWRl
bzEucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nVmlk
ZW8xKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkZpcnN0IHZp
ZGVvIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMS5w
YXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
Iik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNldHRpbmcgdXAgc2Vjb25kIHZpZGVvLiIp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidmlkZW8yIik7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdo
JywgYmVnaW5QbGF5aW5nVmlkZW8yLCBmYWxzZSwgdHJ1ZSwgdmlkZW8yKTsKLSAgICAgICAgICAg
IHZpZGVvMi5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5n
Iik7Ci0gICAgICAgICAgICB2aWRlbzIuc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB3
YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmdWaWRlbzIsIGZhbHNlLCB0cnVlLCB2
aWRlbzIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlp
bmdWaWRlbzIoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlk
ZW8xLnBhdXNlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8yLnBh
dXNlZCcsIHRydWUpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwYXVzZScsIHBhdXNlZFZp
ZGVvMSwgZmFsc2UsIHRydWUsIHZpZGVvMSk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
QmVnaW4gcGxheWluZyBzZWNvbmQgdmlkZW8uIik7Ci0gICAgICAgICAgICB2aWRlbzIucGxheSgp
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmdW5jdGlvbiBwYXVzZWRWaWRlbzEoZXZl
bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8xLnBhdXNlZCcs
IHRydWUpOwotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gYmVnYW5QbGF5aW5nVmlkZW8yKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoIlNlY29uZCB2aWRlbyBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCd2aWRlbzIucGF1c2VkJywgZmFsc2UpOwotICAgICAgICB9Ci0gICAgPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+UGxheWlu
ZyBhIG1lZGlhIGVsZW1lbnQgYmVsb25naW5nIHRvIGEgQ29udGVudCBtZWRpYSBzZXNzaW9uIHNo
b3VsZCBwYXVzZSBvdGhlciBwbGF5aW5nIENvbnRlbnQgbWVkaWEgZWxlbWVudHMuPC9wPgotICAg
IDx2aWRlbyBpZD0idmlkZW8xIiAvPgotICAgIDx2aWRlbyBpZD0idmlkZW8yIiAvPgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250cm9scy1leGlz
dGVuY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vY29udHJvbHMtZXhpc3RlbmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UtZXhwZWN0ZWQudHh0
CShub25leGlzdGVudCkKQEAgLTEsMTIgKzAsMCBAQAotT25seSBDb250ZW50IE1lZGlhIFNlc3Np
b25zIHNob3VsZCBoYXZlIG1lZGlhIHJlbW90ZSBjb250cm9scyBhZnRlciBjcmVhdGlvbi4KLQot
UlVOKHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCdjb250ZW50JykpCi1FWFBFQ1RFRCAoc2Vz
c2lvbi5jb250cm9scyAhPSAnbnVsbCcpIE9LCi1SVU4oc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Np
b24oJ3RyYW5zaWVudCcpKQotRVhQRUNURUQgKHNlc3Npb24uY29udHJvbHMgPT0gJ251bGwnKSBP
SwotUlVOKHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQtc29sbycpKQotRVhQ
RUNURUQgKHNlc3Npb24uY29udHJvbHMgPT0gJ251bGwnKSBPSwotUlVOKHNlc3Npb24gPSBuZXcg
TWVkaWFTZXNzaW9uKCdhbWJpZW50JykpCi1FWFBFQ1RFRCAoc2Vzc2lvbi5jb250cm9scyA9PSAn
bnVsbCcpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L2NvbnRyb2xzLWV4aXN0ZW5jZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vY29udHJvbHMtZXhpc3RlbmNlLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udHJvbHMtZXhpc3RlbmNlLmh0bWwJKG5vbmV4aXN0
ZW50KQpAQCAtMSwzMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotICAgIAotICAgICAg
ICBmdW5jdGlvbiBkb1Rlc3QgKCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Npb24gPSBu
ZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0gICAgICAgICAgICBydW4oInNlc3Npb24gPSBu
ZXcgTWVkaWFTZXNzaW9uKCdjb250ZW50JykiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
c2Vzc2lvbi5jb250cm9scyIsIG51bGwsICchPScpOwotCi0gICAgICAgICAgICBzZXNzaW9uID0g
bmV3IE1lZGlhU2Vzc2lvbigidHJhbnNpZW50Iik7Ci0gICAgICAgICAgICBydW4oInNlc3Npb24g
PSBuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQnKSIpOwotICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJzZXNzaW9uLmNvbnRyb2xzIiwgbnVsbCk7Ci0KLSAgICAgICAgICAgIHNlc3Npb24gPSBu
ZXcgTWVkaWFTZXNzaW9uKCJ0cmFuc2llbnQtc29sbyIpOwotICAgICAgICAgICAgcnVuKCJzZXNz
aW9uID0gbmV3IE1lZGlhU2Vzc2lvbigndHJhbnNpZW50LXNvbG8nKSIpOwotICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJzZXNzaW9uLmNvbnRyb2xzIiwgbnVsbCk7Ci0KLSAgICAgICAgICAgIHNl
c3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJhbWJpZW50Iik7Ci0gICAgICAgICAgICBydW4oInNl
c3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCdhbWJpZW50JykiKTsKLSAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgic2Vzc2lvbi5jb250cm9scyIsIG51bGwpOwotCi0gICAgICAgICAgICBlbmRUZXN0
KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iZG9U
ZXN0KCkiPgotICAgIDxwPk9ubHkgQ29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91bGQgaGF2ZSBt
ZWRpYSByZW1vdGUgY29udHJvbHMgYWZ0ZXIgY3JlYXRpb24uPC9wPgotPC9ib2R5PgotPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9kZWZhdWx0LXNlc3Npb24tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVmYXVsdC1z
ZXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9kZWZhdWx0LXNlc3Npb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAg
LTEsNiArMCwwIEBACi1OZXcgbWVkaWEgZWxlbWVudHMgYXJlIGFzc2lnbmVkIHRvIHRoZSBEZWZh
dWx0IG1lZGlhIHNlc3Npb24sIHdoaWNoIGlzIG5vdCBleHBvc2VkIHRocm91Z2ggdGhlIHNlc3Np
b24gYXR0cmlidXRlLgotCi1SVU4oYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYXVkaW8nKSkKLUVYUEVDVEVEIChhdWRpb0VsZW1lbnQuc2Vzc2lvbiA9PSAnbnVsbCcpIE9L
Ci1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQt
c2Vzc2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVm
YXVsdC1zZXNzaW9uLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vZGVmYXVsdC1zZXNzaW9uLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Li4v
dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ci0gICAgICAgIGZ1bmN0aW9uIGRvVGVzdCAoKSAKLSAgICAgICAgewotICAgICAgICAgICAg
dmFyIGF1ZGlvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImF1ZGlvIik7Ci0gICAg
ICAgICAgICBydW4oImF1ZGlvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlv
JykiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiYXVkaW9FbGVtZW50LnNlc3Npb24iLCBu
dWxsKTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4KLSAgICA8cD5OZXcgbWVkaWEgZWxl
bWVudHMgYXJlIGFzc2lnbmVkIHRvIHRoZSBEZWZhdWx0IG1lZGlhIHNlc3Npb24sIHdoaWNoIGlz
IG5vdCBleHBvc2VkIHRocm91Z2ggdGhlIHNlc3Npb24gYXR0cmlidXRlLjwvcD4KLTwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRp
YS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1jb250
ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Np
b25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDIxICswLDAgQEAKLSdDb250ZW50
JyBzZXNzaW9ucyB0aGF0IGFyZSBhY3RpdmUgc2hvdWxkIHJlc3BvbmQgdG8gUGxheS9QYXVzZSBt
ZWRpYSBjb250cm9sIGV2ZW50cy4KLQotCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVE
IChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykg
T0sKLUlkbGUgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2Ug
ZXZlbnRzLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1TZW5kaW5nIFBs
YXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVu
dCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi0K
LVBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVY
UEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMu
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotU2VuZGlu
ZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9s
RXZlbnQoInBsYXktcGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBP
SwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBh
dXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1jb250
ZW50LXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy5odG1s
CShub25leGlzdGVudCkKQEAgLTEsNjEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsKLQotICAgICAgICBm
dW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcg
TWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0KLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQo
KTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlp
bmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4v
Y29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247
Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmcsIGZhbHNl
LCB0cnVlLCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlp
bmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJl
bnRTdGF0ZShzZXNzaW9uKScsICJpZGxlIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiSWRsZSBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxh
eS9QYXVzZSBldmVudHMuIik7Ci0KLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1
c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIFBsYXkvUGF1c2Ug
bWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlh
Q29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJQbGF5aW5nIG1lZGlh
LiIpOwotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xl
V3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
J3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Np
b25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIlNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAg
ICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2Ui
KScpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAg
IDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidD
b250ZW50JyBzZXNzaW9ucyB0aGF0IGFyZSBhY3RpdmUgc2hvdWxkIHJlc3BvbmQgdG8gUGxheS9Q
YXVzZSBtZWRpYSBjb250cm9sIGV2ZW50cy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4K
LTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1w
YXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNzaW9ucy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50
cy1pbi1kZWZhdWx0LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZh
dWx0LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4ICswLDAgQEAK
LSdEZWZhdWx0JyBtZWRpYSBzZXNzaW9ucyBzaG91bGQgcmVzcG9uZCB0byBwbGF5L3BhdXNlIG1l
ZGlhIGV2ZW50cy4KLQotCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRlby5w
YXVzZWQgPT0gJ3RydWUnKSBPSwotU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVO
KGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKSkKLUVYUEVDVEVE
ICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotCi1QbGF5aW5nIG1lZGlhLgotRVZFTlQocGxh
eWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdm
YWxzZScpIE9LCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxz
LnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVvLnBh
dXNlZCA9PSAndHJ1ZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWRlZmF1bHQtc2Vzc2lvbnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVk
aWEtZXZlbnRzLWluLWRlZmF1bHQtc2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZh
dWx0LXNlc3Npb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0OSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3Qu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwot
ICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7
Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250
ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdh
blBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIFBsYXkvUGF1
c2UgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1l
ZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJQbGF5aW5nIG1l
ZGlhLiIpOwotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25z
b2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUGxheS9QYXVz
ZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVk
aWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidEZWZhdWx0JyBtZWRpYSBzZXNzaW9ucyBzaG91bGQg
cmVzcG9uZCB0byBwbGF5L3BhdXNlIG1lZGlhIGV2ZW50cy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2
aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVz
ZS1tZWRpYS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVk
aWEtZXZlbnRzLWluLW5vbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDQxICswLDAgQEAKLSdUcmFuc2llbnQnLCAnVHJhbnNpZW50IFNvbG8nLCBhbmQg
J0FtYmllbnQnIHNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIG1lZGlh
IGNvbnRyb2wgZXZlbnRzLgotCi0KLS0tLQotVGVzdGluZyAidHJhbnNpZW50IiBzZXNzaW9uIGtp
bmQKLS0tLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVn
YW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVD
VEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3Rp
dmUnKSBPSwotTm9uLUNvbnRlbnQgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRv
IFBsYXkvUGF1c2UgZXZlbnRzLgotU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVO
KGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKSkKLUVYUEVDVEVE
ICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLS0tLQotVGVzdGluZyAidHJhbnNpZW50LXNv
bG8iIHNlc3Npb24ga2luZAotLS0tCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVWRU5UKHBsYXlp
bmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFs
c2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1Ob24tQ29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91bGQg
bm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMuCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVk
aWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVz
ZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotLS0tCi1UZXN0aW5n
ICJhbWJpZW50IiBzZXNzaW9uIGtpbmQKLS0tLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FVkVO
VChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0
YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotTm9uLUNvbnRlbnQgTWVkaWEgU2Vzc2lvbnMg
c2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2UgZXZlbnRzLgotU2VuZGluZyBQbGF5L1Bh
dXNlIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBs
YXktcGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVORCBP
RiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRp
YS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLW5vbi1jb250
ZW50LXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMu
aHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0KLSAgICAg
ICAgZnVuY3Rpb24gcnVuQWxsVGVzdHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywg
YmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHJ1blRlc3QoInRyYW5zaWVudCIpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdChzZXNzaW9uS2luZCkgCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnLS0tJyk7Ci0gICAgICAgICAgICBjb25zb2xlV3Jp
dGUoJ1Rlc3RpbmcgIicgKyBzZXNzaW9uS2luZCArICciIHNlc3Npb24ga2luZCcpOwotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCctLS0nKTsKLQotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBN
ZWRpYVNlc3Npb24oc2Vzc2lvbktpbmQpOwotCi0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5k
TWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2
aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWlu
ZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAg
dmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5n
KGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2Fu
IHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZh
bHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIk5vbi1D
b250ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIGV2
ZW50cy4iKTsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUGxheS9QYXVz
ZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVk
aWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAodmlkZW8uc2Vzc2lvbi5raW5kID09ICJ0cmFuc2llbnQiKQotICAg
ICAgICAgICAgICAgIHJ1blRlc3QoInRyYW5zaWVudC1zb2xvIik7Ci0gICAgICAgICAgICBlbHNl
IGlmICh2aWRlby5zZXNzaW9uLmtpbmQgPT0gInRyYW5zaWVudC1zb2xvIikKLSAgICAgICAgICAg
ICAgICBydW5UZXN0KCJhbWJpZW50Iik7Ci0gICAgICAgICAgICBlbHNlIGlmICh2aWRlby5zZXNz
aW9uLmtpbmQgPT0gImFtYmllbnQiKQotICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmYWlsVGVzdCgiVW5leHBlY3RlZCBzZXNzaW9u
IGtpbmQiKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJydW5BbGxUZXN0cygpIj4KLSAgICA8cD4nVHJhbnNpZW50JywgJ1RyYW5zaWVudCBTb2xvJywg
YW5kICdBbWJpZW50JyBzZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBt
ZWRpYSBjb250cm9sIGV2ZW50cy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNl
c3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL3JlbGVhc2luZy1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysr
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE1ICswLDAgQEAKLVNlc3Npb25zIHRoYXQgYXJlIGV4cGxp
Y2l0bHkgcmVsZWFzZWQgc2hvdWxkIGhhdmUgdGhlaXIgbWVkaWEgZWxlbWVudHMgaW5kZWZpbml0
ZWx5IHBhdXNlZCBhbmQgZ28gaW50byBhbiBJZGxlIHN0YXRlLgotCi0KLUVWRU5UKGNhbnBsYXl0
aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5
aW5nIG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RF
RCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlh
U2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLVJVTihzZXNzaW9u
LmRlYWN0aXZhdGUoKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotRVhQ
RUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lk
bGUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9y
ZWxlYXNpbmctc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3JlbGVhc2luZy1zZXNzaW9ucy5odG1sCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL3JlbGVhc2luZy1zZXNzaW9ucy5odG1sCShub25leGlzdGVu
dCkKQEAgLTEsNTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAg
IDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsKLQotICAgICAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9u
KCJjb250ZW50Iik7Ci0KLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAg
ICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAg
ICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3Vu
dGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAg
ICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRl
byk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7
Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiQmVnaW4gcGxheWluZyBtZWRpYS4iKTsKLSAg
ICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJl
Z2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJN
ZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5w
YXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAgICAgcnVuKCdzZXNzaW9uLmRl
YWN0aXZhdGUoKScpOwotCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcs
IHRydWUpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbiknLCAiaWRsZSIpOwotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAg
ICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5T
ZXNzaW9ucyB0aGF0IGFyZSBleHBsaWNpdGx5IHJlbGVhc2VkIHNob3VsZCBoYXZlIHRoZWlyIG1l
ZGlhIGVsZW1lbnRzIGluZGVmaW5pdGVseSBwYXVzZWQgYW5kIGdvIGludG8gYW4gSWRsZSBzdGF0
ZS48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9u
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDMw
ICswLDAgQEAKLU5ldyBtZWRpYSBzZXNzaW9ucyBzaG91bGQgYmUgaW4gYW4gSWRsZSBzdGF0ZSBh
ZnRlciBjcmVhdGlvbi4KLQotCi0tLS0KLVRlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24oJ2NvbnRl
bnQnKSIKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pID09ICdpZGxlJykgT0sKLS0tLQotCi0tLS0KLVRlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24o
J3RyYW5zaWVudCcpIgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLS0tLQotVGVzdGluZyAibmV3IE1lZGlh
U2Vzc2lvbigndHJhbnNpZW50LXNvbG8nKSIKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLS0tLQotCi0tLS0KLVRlc3Rp
bmcgIm5ldyBNZWRpYVNlc3Npb24oJ2FtYmllbnQnKSIKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVk
aWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLS0tLQotCi0tLS0K
LVRlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24oKSIKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFT
ZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLS0tLQotCi1FTkQgT0Yg
VEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3Jl
YXRpb24uaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8t
dGVzdC5qcz48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0g
ICAgICAgIGZ1bmN0aW9uIGRvVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0U2Vz
c2lvbktpbmQoImNvbnRlbnQiKTsKLSAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgidHJhbnNp
ZW50Iik7Ci0gICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoInRyYW5zaWVudC1zb2xvIik7Ci0g
ICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoImFtYmllbnQiKTsKLSAgICAgICAgICAgIHRlc3RT
ZXNzaW9uS2luZCgpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAg
ICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gdGVzdFNlc3Npb25L
aW5kKHNlc3Npb25LaW5kKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxi
cj4tLS0iKTsKLQotICAgICAgICAgICAgaWYgKHNlc3Npb25LaW5kICE9IHVuZGVmaW5lZCkgewot
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdGluZyBcIm5ldyBNZWRpYVNlc3Npb24o
JyIgKyBzZXNzaW9uS2luZCArICInKVwiIik7Ci0gICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5l
dyBNZWRpYVNlc3Npb24oc2Vzc2lvbktpbmQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3RpbmcgXCJuZXcgTWVkaWFTZXNzaW9uKClcIiIp
OwotICAgICAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKScsICJpZGxlIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIi0tLSIpOwotICAgICAg
ICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4KLSAg
ICA8cD5OZXcgbWVkaWEgc2Vzc2lvbnMgc2hvdWxkIGJlIGluIGFuIElkbGUgc3RhdGUgYWZ0ZXIg
Y3JlYXRpb24uPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEv
c2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmct
c2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTQgKzAsMCBAQAotV2hl
biBzd2l0Y2hpbmcgbWVkaWEgc2Vzc2lvbnMsIG1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0byB0
aGUgb2xkIHNlc3Npb24gc2hvdWxkIGJlIHBhdXNlZC4KLQotCi1SVU4oc2Vzc2lvbiA9IG5ldyBN
ZWRpYVNlc3Npb24oImNvbnRlbnQiKSkKLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQg
KHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5aW5nIG1lZGlhLgotRVZFTlQo
cGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICdmYWxzZScpIE9LCi1SVU4odmlkZW8uc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oInRyYW5z
aWVudCIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1FTkQgT0YgVEVT
VAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3N3aXRjaGluZy1zZXNzaW9ucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNl
c3Npb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vc3dpdGNoaW5nLXNlc3Npb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Zp
ZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAg
IHZhciBzZXNzaW9uOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewot
ICAgICAgICAgICAgcnVuKCdzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpJyk7
Ci0KLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgdmlkZW8u
c3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAg
ICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZl
bnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiQmVnaW4gcGxheWluZyBtZWRpYS4iKTsKLSAgICAgICAgICAgIHZp
ZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhl
dmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBw
bGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxz
ZSk7Ci0KLSAgICAgICAgICAgIHJ1bigndmlkZW8uc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24o
InRyYW5zaWVudCIpJyk7Ci0KLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2Vk
JywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPldoZW4gc3dp
dGNoaW5nIG1lZGlhIHNlc3Npb25zLCBtZWRpYSBlbGVtZW50cyBiZWxvbmdpbmcgdG8gdGhlIG9s
ZCBzZXNzaW9uIHNob3VsZCBiZSBwYXVzZWQuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNr
LW1lZGlhLWV2ZW50cy1kaXNhYmxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtZGlzYWJsZWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNr
LW1lZGlhLWV2ZW50cy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NiArMCwwIEBACi1QcmV2aW91cy9OZXh0IFRyYWNrIGV2ZW50cyBzaG91bGQgbm90IGJlIGZpcmVk
IGlmIHByZXZpb3VzL25leHRUcmFja0VuYWJsZWQgYXJlICdmYWxzZScuCi0KLQotRVZFTlQoY2Fu
cGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2lu
IHBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVY
UEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMu
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotU2VuZGlu
ZyBOZXh0IFRyYWNrIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9s
RXZlbnQoIm5leHQtdHJhY2siKSkKLVNlbmRpbmcgUHJldmlvdXMgVHJhY2sgbWVkaWEgZXZlbnQu
Ci1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicHJldmlvdXMtdHJhY2siKSkK
LUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVk
aWEtZXZlbnRzLWRpc2FibGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
c2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtZGlzYWJsZWQuaHRtbAkocmV2aXNpb24gMjY3NDUw
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtZGlzYWJs
ZWQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDY4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb24sIGNvbnRy
b2xzOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAg
ICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLSAgICAgICAgICAgIGNv
bnRyb2xzID0gc2Vzc2lvbi5jb250cm9sczsKLSAgICAgICAgICAgIGNvbnRyb2xzLm5leHRUcmFj
a0VuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbnRyb2xzLnByZXZpb3VzVHJhY2tFbmFi
bGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ25leHR0cmFjaycsIHNraXBU
b05leHRUcmFjaywgZmFsc2UsIHRydWUsIGNvbnRyb2xzKTsKLSAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgncHJldmlvdXN0cmFjaycsIHNraXBUb1ByZXZpb3VzVHJhY2ssIGZhbHNlLCB0cnVlLCBj
b250cm9scyk7Ci0KLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAg
IHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAgICAg
ICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGlu
ZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB3
YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0K
LSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiQmVnaW4gcGxheWluZyBtZWRpYS4iKTsKLSAgICAg
ICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2Fu
UGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRp
YSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVz
ZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0
YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJTZW5kaW5nIE5leHQgVHJhY2sgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVu
KCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJuZXh0LXRyYWNrIiknKTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUHJldmlv
dXMgVHJhY2sgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMu
c2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwcmV2aW91cy10cmFjayIpJyk7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoImVuZFRlc3QoKSIsIDIwMCk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNraXBUb05leHRUcmFjayhl
dmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgZmFpbFRlc3QoIm5leHQtdHJhY2sgZXZlbnRz
IHNob3VsZCBub3QgYmUgZmlyZWQuIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBz
a2lwVG9QcmV2aW91c1RyYWNrKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsVGVz
dCgicHJldmlvdXMtdHJhY2sgZXZlbnRzIHNob3VsZCBub3QgYmUgZmlyZWQuIik7Ci0gICAgICAg
IH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAg
ICA8cD5QcmV2aW91cy9OZXh0IFRyYWNrIGV2ZW50cyBzaG91bGQgbm90IGJlIGZpcmVkIGlmIHBy
ZXZpb3VzL25leHRUcmFja0VuYWJsZWQgYXJlICdmYWxzZScuPC9wPgotICAgIDx2aWRlbyBpZD0i
dmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50
cy1pbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29udGVudC1z
ZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOSArMCwwIEBACi0nQ29u
dGVudCcgc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIHNob3VsZCByZXNwb25kIHRvIFByZXZpb3Vz
L05leHQgVHJhY2sgbWVkaWEgY29udHJvbCBldmVudHMuCi0KLQotRVZFTlQoY2FucGxheXRocm91
Z2gpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9u
KSA9PSAnaWRsZScpIE9LCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUJl
Z2luIHBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4K
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5h
bHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotU2Vu
ZGluZyBOZXh0IFRyYWNrIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250
cm9sRXZlbnQoIm5leHQtdHJhY2siKSkKLUVWRU5UKG5leHR0cmFjaykKLVNlbmRpbmcgUHJldmlv
dXMgVHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVu
dCgicHJldmlvdXMtdHJhY2siKSkKLUVWRU5UKHByZXZpb3VzdHJhY2spCi1FTkQgT0YgVEVTVAot
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1j
b250ZW50LXNlc3Npb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy5odG1sCShyZXZpc2lv
biAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50
cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Zp
ZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAg
IHZhciBzZXNzaW9uLCBjb250cm9sczsKLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50
Iik7Ci0gICAgICAgICAgICBjb250cm9scyA9IHNlc3Npb24uY29udHJvbHM7Ci0gICAgICAgICAg
ICBjb250cm9scy5uZXh0VHJhY2tFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbnRyb2xz
LnByZXZpb3VzVHJhY2tFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgn
bmV4dHRyYWNrJywgc2tpcFRvTmV4dFRyYWNrLCBmYWxzZSwgdHJ1ZSwgY29udHJvbHMpOwotICAg
ICAgICAgICAgd2FpdEZvckV2ZW50KCdwcmV2aW91c3RyYWNrJywgc2tpcFRvUHJldmlvdXNUcmFj
aywgZmFsc2UsIHRydWUsIGNvbnRyb2xzKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxh
eWluZyk7Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIu
Li9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lv
bjsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFs
c2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxh
eWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3Vy
cmVudFN0YXRlKHNlc3Npb24pJywgImlkbGUiKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdp
biBwbGF5aW5nIG1lZGlhLiIpOwotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVy
bmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0KLSAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgTmV4dCBUcmFjayBtZWRpYSBldmVu
dC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZl
bnQoIm5leHQtdHJhY2siKScpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gc2tpcFRvTmV4dFRyYWNrKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoIlNlbmRpbmcgUHJldmlvdXMgVHJhY2sgbWVkaWEgZXZlbnQuIik7Ci0gICAg
ICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInByZXZpb3VzLXRy
YWNrIiknKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNraXBUb1ByZXZpb3VzVHJh
Y2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQot
ICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxw
PidDb250ZW50JyBzZXNzaW9ucyB0aGF0IGFyZSBhY3RpdmUgc2hvdWxkIHJlc3BvbmQgdG8gUHJl
dmlvdXMvTmV4dCBUcmFjayBtZWRpYSBjb250cm9sIGV2ZW50cy48L3A+Ci0gICAgPHZpZGVvIGlk
PSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vdHJhbnNpZW50LWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LWludGVycnVwdGlvbnMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Ry
YW5zaWVudC1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4
ICswLDAgQEAKLSdUcmFuc2llbnQnIGludGVycnVwdGlvbiBldmVudHMgc2hvdWxkIGR1Y2sgYXVk
aW8gZm9yICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy4KLQotCi1XYWl0aW5nIGZvciBDb250ZW50
IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLU1lZGlhIGJl
Z2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0
ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFFbGVt
ZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpKSA9PSAnMScp
IE9LCi1TZW5kaW5nICdUcmFuc2llbnQnIHN0YXJ0LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRp
b24uCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFydE9mSW50ZXJydXB0aW9uTm90
aWZpY2F0aW9uKCJ0cmFuc2llbnQiKSkKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9u
Q3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpbnRlcnJ1cHRlZCcpIE9LCi1FWFBFQ1RFRCAoaW50
ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dmlkZW8iKSkgPT0gJzAuMjUnKSBPSwotU2VuZGluZyAnVHJhbnNpZW50JyBlbmQtb2YtaW50ZXJy
dXB0aW9uIG5vdGlmaWNhdGlvbi4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkVuZE9m
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQiKSkKLUVYUEVDVEVEIChpbnRlcm5h
bHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotRVhQ
RUNURUQgKGludGVybmFscy5tZWRpYUVsZW1lbnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZpZGVvIikpID09ICcxJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LWludGVycnVwdGlvbnMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1pbnRlcnJ1cHRpb25z
Lmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJh
bnNpZW50LWludGVycnVwdGlvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlk
ZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAg
dmFyIHNlc3Npb247Ci0gICAgCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLQotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24o
ImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJXYWl0aW5nIGZvciBDb250
ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuIikKLSAgICAgICAgICAgIHZhciB2aWRlbyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50
KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICB2aWRlby5zcmMg
PSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAg
ICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHZpZGVvLnZvbHVtZSA9
IDE7Ci0gICAgICAgICAgICB2aWRlby5vbnBsYXlpbmcgPSBiZWdhblBsYXlpbmc7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikucGxheSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7
Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24p
JywgImFjdGl2ZSIpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1l
ZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSkn
LCAxKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyAnVHJhbnNpZW50
JyBzdGFydC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLiIpOwotICAgICAgICAgICAgICAg
IHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFydE9mSW50ZXJydXB0aW9uTm90aWZp
Y2F0aW9uKCJ0cmFuc2llbnQiKScpOwotCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdp
bnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImludGVycnVwdGVk
Iik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFFbGVtZW50
UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpKScsIDAuMjUpOwot
Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nICdUcmFuc2llbnQnIGVuZC1v
Zi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50
ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJh
bnNpZW50IiknKTsKLQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1l
ZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLSAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYUVsZW1lbnRQbGF5ZXJWb2x1bWUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpJywgMSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidUcmFuc2llbnQn
IGludGVycnVwdGlvbiBldmVudHMgc2hvdWxkIGR1Y2sgYXVkaW8gZm9yICdDb250ZW50JyBtZWRp
YSBzZXNzaW9ucy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJy
dXB0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi90cmFuc2llbnQtc29sby1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtc29sby1pbnRl
cnJ1cHRpb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4ICswLDAgQEAKLSdU
cmFuc2llbnQgU29sbycgaW50ZXJydXB0aW9uIGV2ZW50cyBzaG91bGQgcGF1c2UgZWxlbWVudHMg
YmVsb25naW5nIHRvICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy4KLQotCi1XYWl0aW5nIGZvciBD
b250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLU1l
ZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJl
bnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ2ZhbHNlJykgT0sKLVNlbmRpbmcgJ1RyYW5zaWVudCBTb2xvJyBzdGFydC1vZi1pbnRlcnJ1
cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRP
ZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50LXNvbG8iKSkKLUVYUEVDVEVEIChp
bnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpbnRlcnJ1cHRl
ZCcpIE9LCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLVNlbmRpbmcgJ1Ry
YW5zaWVudCBTb2xvJyBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4KLVJVTihpbnRl
cm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFu
c2llbnQtc29sbyIpKQotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdm
YWxzZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3RyYW5zaWVudC1zb2xvLWludGVycnVwdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1zb2xvLWludGVycnVwdGlvbnMuaHRtbAkocmV2
aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtc29s
by1pbnRlcnJ1cHRpb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRl
c3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBz
ZXNzaW9uOwotICAgIAotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0KLSAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiV2FpdGluZyBmb3IgQ29udGVudCBtZWRpYSB0byBiZWdpbiBw
bGF5aW5nLiIpCi0KLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAg
IHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAgICAg
ICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGlu
ZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB2
aWRlby5vbnBsYXlpbmcgPSBiZWdhblBsYXlpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAg
dmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5n
KGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB2aWRlby5vbnBsYXlpbmcgPSBudWxsOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlp
bmcuIik7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNl
c3Npb24pJywgImFjdGl2ZSIpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8u
cGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5n
ICdUcmFuc2llbnQgU29sbycgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4iKTsK
LSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRPZklu
dGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50LXNvbG8iKScpOwotCi0gICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNl
c3Npb24pJywgImludGVycnVwdGVkIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2Vu
ZGluZyAnVHJhbnNpZW50IFNvbG8nIGVuZC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLiIp
OwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25FbmRPZklu
dGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50LXNvbG8iKScpOwotCi0gICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNl
c3Npb24pJywgImFjdGl2ZSIpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8u
cGF1c2VkJywgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD4nVHJhbnNpZW50IFNvbG8nIGludGVycnVwdGlvbiBl
dmVudHMgc2hvdWxkIHBhdXNlIGVsZW1lbnRzIGJlbG9uZ2luZyB0byAnQ29udGVudCcgbWVkaWEg
c2Vzc2lvbnMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+
Cg==
</data>
<flag name="commit-queue"
          id="425156"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409442</attachid>
            <date>2020-09-22 19:28:10 -0700</date>
            <delta_ts>2020-09-23 04:37:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216831-20200922192809.patch</filename>
            <type>text/plain</type>
            <size>291906</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA5
LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29k
ZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNGVFcuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlOgorICAgICAgICBSZW1vdmUgb3B0aW9uIHRvIGJ1aWxkIHdpdGggTUVESUFfU0VTU0lP
Tiwgbm8gb25lIHdhcyBkb2luZyBpdC4KKwogMjAyMC0wOS0yMiAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgYnVpbGQgcnVsZXMgaW4gTWFrZWZp
bGVzIGFuZCBNYWtlZmlsZS5zaGFyZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1MikK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA5LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgY29kZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFi
bGUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NjgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgbWVkaWEgc2Vzc2lv
biByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9h
aXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXNlc3Npb246IFJlbW92ZWQuCisgICAgICAgIERlbGV0ZSBNb2R1bGVzL21lZGlhc2Vz
c2lvbiBhbmQgcGxhdGZvcm0vbWVkaWFzZXNzaW9uLiBNb3ZlIGZpbGVzIHRoYXQKKyAgICAgICAg
d2VyZSBhY3R1YWxseSB1c2VkIGZvciB0aGUgV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUIGZlYXR1
cmUgdG8gCisgICAgICAgIE1vZHVsZXMvYWlycGxheSB3aGVyZSBvdGhlciBwYXJ0cyBvZiB0aGF0
IGZlYXR1cmUgYXJlIGltcGxlbWVudGVkLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgUmVtb3ZlIGFsbCBj
b2RlIGluc2lkZSBFTkFCTEUoTUVESUFfU0VTU0lPTikuCisKIDIwMjAtMDktMjIgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIFN3aXRjaCB0byBuZXcg
ZmlsZSBuYW1lIGNvbnZlbnRpb24gZm9yIHBhcnRpYWwgaW50ZXJmYWNlcwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlh
Y2FwYWJpbGl0aWVzIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJvbHMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFyZWNvcmRlciIKLSAgICAiJHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9tZWRpYXNlc3Npb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvbWVkaWFzb3VyY2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjIgpAQCAt
MTM4LDcgKzEzNyw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbWVkaWFyZWNvcmRlciIKLSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vbWVkaWFzZXNzaW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2NrIgpAQCAtMTk3LDcgKzE5NSw2IEBAIHNl
dChXZWJDb3JlX0lETF9JTkNMVURFUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiCiAgICAgTW9kdWxl
cy9tZWRpYWNhcGFiaWxpdGllcwogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlcgotICAgIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbQogICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucwogICAgIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QKQEAgLTMyNiwxMCArMzIzLDYg
QEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5pZGwKICAgICBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlckVycm9yRXZlbnQuaWRsCiAKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50K01lZGlhU2Vzc2lvbi5pZGwKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJl
bW90ZUNvbnRyb2xzLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5p
ZGwKLQogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFjaytNZWRpYVNvdXJjZS5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTCtNZWRpYVNvdXJjZS5pZGwKICAgICBNb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjc0NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsOSArMTU2LDYgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXJlY29yZGVyL0Jsb2JFdmVudC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJv
ckV2ZW50LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlh
RWxlbWVudCtNZWRpYVNlc3Npb24uaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNv
dXJjZS9BdWRpb1RyYWNrK01lZGlhU291cmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9ET01VUkwrTWVkaWFTb3VyY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNv
cHkpCkBAIC05NjAsMTQgKzk2MCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNYXBFbGVtZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWFycXVlZUVsZW1lbnQuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50K01lZGlh
U2Vzc2lvbi5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50K1JlbW90ZVBsYXliYWNr
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1M
TWVkaWFFbGVtZW50K1JlbW90ZVBsYXliYWNrLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudC5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1l
bnRNZWRpYVNlc3Npb24uY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxh
eWJhY2suY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNZWRpYUVsZW1lbnRSZW1vdGVQbGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTEyMjgsMTAg
KzEyMjQsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUmVjb3JkZXIu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJl
Y29yZGVyRXJyb3JFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNv
bnRyb2xzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTZXNzaW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBWUEFU
SCA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYWNvbnRyb2xzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFyZWNvcmRlciBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbiBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwK
QEAgLTI1Niw5ICsyNTUsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJh
Y2srTWVkaWFTb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2
NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDEyICs4Nyw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAog
ICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAogCi0gICAg
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uRXZlbnRzLmgKLSAgICBNb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Np
b24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCi0gICAgTW9kdWxlcy9t
ZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCi0gICAgTW9kdWxlcy9tZWRpYXNl
c3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oCi0KICAgICBNb2R1bGVzL21lZGlh
c291cmNlL1NhbXBsZU1hcC5oCiAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdl
LmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDkgKzEzMCw2IEBAIE1vZHVsZXMv
bWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuY3BwCiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHAKIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVu
dC5jcHAKIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCi1N
b2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmNwcAotTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5jcHAKLU1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKIE1vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFT
b3VyY2UuY3BwCiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcApAQCAtMzA5Miw4ICszMDg5LDYgQEAg
SlNNZWRpYVF1ZXJ5TGlzdC5jcHAKIEpTTWVkaWFRdWVyeUxpc3RFdmVudC5jcHAKIEpTTWVkaWFS
ZWNvcmRlci5jcHAKIEpTTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuY3BwCi1KU01lZGlhUmVtb3Rl
Q29udHJvbHMuY3BwCi1KU01lZGlhU2Vzc2lvbi5jcHAKIEpTTWVkaWFTb3VyY2UuY3BwCiBKU01l
ZGlhU3RyZWFtLmNwcAogSlNNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIEpT
QXBwbGVQYXlTaGlwcGluZ01ldGhvZC5jcHAKIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVj
dGVkRXZlbnQuY3BwCiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxl
UGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAorTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuY3Bw
CiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q29udGFjdEZpZWxkLmNwcAogTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheUVycm9yLmNwcApAQCAtODgsNyArODksNiBAQCBNb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlCiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQotTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAKIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KQEAgLTUyMSw3
ICs1MjEsNiBAQCBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2CiBwbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbQotcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlck1hYy5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPUy5tbSBAbm8tdW5pZnkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNz
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lvbi5pZGwJKHJldmlzaW9uIDI2NzQ1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVk
aWFTZXNzaW9uLmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBGSVhNRTogVGhlc2UgZG9uJ3Qg
c2VlbSB0byBiZSBpbiBhbnkgY3VycmVudCBzcGVjaWZpY2F0aW9ucy4gV2Ugc2hvdWxkIGNvbnNp
ZGVyIHJlbW92aW5nIHRoZW0uCi0vLyBTZWUgaHR0cHM6Ly93ZWJraXQub3JnL2IvMjE2ODMxLgot
WwotICAgIENvbmRpdGlvbmFsPVZJREVPJk1FRElBX1NFU1NJT04sCi0gICAgSW1wbGVtZW50ZWRC
eT1IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uCi1dIHBhcnRpYWwgaW50ZXJmYWNlIEhUTUxN
ZWRpYUVsZW1lbnQgewotICAgIGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKLQotICAgIGF0dHJp
YnV0ZSBNZWRpYVNlc3Npb24/IHNlc3Npb247Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxl
bWVudE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCShu
b25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50TWVkaWFTZXNzaW9uLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYg
RU5BQkxFKFZJREVPKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IFN0cmluZyYgSFRN
TE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6a2luZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50
KQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVudC0+a2luZCgpOwot
fQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb246OnNldEtpbmQoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiBraW5kKQotewotICAgIEFT
U0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVudC0+c2V0S2luZChraW5kKTsKLX0KLQot
TWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uOjpzZXNzaW9uKEhUTUxN
ZWRpYUVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIHJldHVy
biBlbGVtZW50LT5zZXNzaW9uKCk7Ci19Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vz
c2lvbjo6c2V0U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBNZWRpYVNlc3Npb24q
IHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIGVsZW1lbnQtPnNldFNlc3Np
b24oc2Vzc2lvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVO
QUJMRShNRURJQV9TRVNTSU9OKSAmJiBFTkFCTEUoVklERU8pICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1l
ZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Np
b24gewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGtpbmQoSFRNTE1lZGlhRWxl
bWVudCopOwotICAgIHN0YXRpYyB2b2lkIHNldEtpbmQoSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0
IFN0cmluZyYpOwotCi0gICAgc3RhdGljIE1lZGlhU2Vzc2lvbiogc2Vzc2lvbihIVE1MTWVkaWFF
bGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgc2V0U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50Kiwg
TWVkaWFTZXNzaW9uKik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5jcHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuY3BwCShub25leGlzdGVudCkKQEAgLTEs
NzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVJlbW90ZUNvbnRyb2xzLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRp
YVJlbW90ZUNvbnRyb2xzKTsKLQotTWVkaWFSZW1vdGVDb250cm9sczo6TWVkaWFSZW1vdGVDb250
cm9scyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVNlc3Npb24qIHNlc3Np
b24pCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKLSAgICAsIG1fc2Vz
c2lvbihzZXNzaW9uKQotewotfQotCi12b2lkIE1lZGlhUmVtb3RlQ29udHJvbHM6OmNsZWFyU2Vz
c2lvbigpCi17Ci0gICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKLX0KLQotTWVkaWFSZW1vdGVDb250
cm9sczo6fk1lZGlhUmVtb3RlQ29udHJvbHMoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgTWVkaWFSZW1v
dGVDb250cm9sczo6c2V0UHJldmlvdXNUcmFja0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpCi17Ci0g
ICAgaWYgKG1fcHJldmlvdXNUcmFja0VuYWJsZWQgPT0gaXNFbmFibGVkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3ByZXZpb3VzVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYg
KG1fc2Vzc2lvbikKLSAgICAgICAgbV9zZXNzaW9uLT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdl
KCk7Ci19Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250cm9sczo6c2V0TmV4dFRyYWNrRW5hYmxlZChi
b29sIGlzRW5hYmxlZCkKLXsKLSAgICBpZiAobV9uZXh0VHJhY2tFbmFibGVkID09IGlzRW5hYmxl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uZXh0VHJhY2tFbmFibGVkID0gaXNFbmFibGVk
OwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAgICAgbV9zZXNzaW9uLT5jb250cm9sSXNFbmFi
bGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9O
KSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1v
dGVDb250cm9scy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5oCShub25l
eGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBN
ZWRpYVJlbW90ZUNvbnRyb2xzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFSZW1vdGVD
b250cm9scz4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKLSAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKE1lZGlhUmVtb3RlQ29udHJvbHMpOwotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TWVkaWFSZW1vdGVDb250cm9scz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIE1lZGlhU2Vzc2lvbiogc2Vzc2lvbiA9IG51bGxwdHIpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJlbW90ZUNvbnRyb2xzKGNvbnRleHQsIHNlc3Np
b24pKTsKLSAgICB9Ci0KLSAgICBib29sIHByZXZpb3VzVHJhY2tFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmV2aW91c1RyYWNrRW5hYmxlZDsgfQotICAgIHZvaWQgc2V0UHJldmlvdXNUcmFj
a0VuYWJsZWQoYm9vbCk7Ci0KLSAgICBib29sIG5leHRUcmFja0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX25leHRUcmFja0VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldE5leHRUcmFja0VuYWJsZWQo
Ym9vbCk7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhUmVtb3RlQ29udHJvbHM+OjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVJlbW90ZUNvbnRyb2xzPjo6ZGVyZWY7Ci0KLSAg
ICB2b2lkIGNsZWFyU2Vzc2lvbigpOwotCi0gICAgdmlydHVhbCB+TWVkaWFSZW1vdGVDb250cm9s
cygpOwotCi0gICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVJlbW90ZUNvbnRyb2xzRXZlbnRUYXJnZXRJbnRl
cmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7IH0KLQotcHJpdmF0ZToKLSAgICBNZWRpYVJlbW90ZUNvbnRyb2xzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBNZWRpYVNlc3Npb24qKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotICAgIGJvb2wgbV9wcmV2aW91c1RyYWNrRW5h
YmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX25leHRUcmFja0VuYWJsZWQgeyBmYWxzZSB9Owot
Ci0gICAgTWVkaWFTZXNzaW9uKiBtX3Nlc3Npb24geyBudWxscHRyIH07Ci0KLSAgICB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlk
bAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFSZW1vdGVDb250cm9scy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBD
b25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAotXSBpbnRlcmZhY2UgTWVkaWFSZW1vdGVDb250cm9s
cyA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
Y29uc3RydWN0b3IoKTsKLQotICAgIGF0dHJpYnV0ZSBib29sZWFuIHByZXZpb3VzVHJhY2tFbmFi
bGVkOwotICAgIGF0dHJpYnV0ZSBib29sZWFuIG5leHRUcmFja0VuYWJsZWQ7Ci0KLSAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9ucHJldmlvdXN0cmFjazsKLSAgICBhdHRyaWJ1dGUgRXZlbnRI
YW5kbGVyIG9ubmV4dHRyYWNrOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMjY3NDUwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAko
bm9uZXhpc3RlbnQpCkBAIC0xLDI4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlh
U2Vzc2lvbi5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJDaHJv
bWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5j
bHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1NZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbihEb2N1bWVudCYgZG9j
dW1lbnQsIEtpbmQga2luZCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2tp
bmQoa2luZCkKLXsKLSAgICAvLyA0LiBNZWRpYSBTZXNzaW9ucwotICAgIC8vIDMuIElmIG1lZGlh
IHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyAiY29udGVudCIsIHRoZW4g
Y3JlYXRlIGEgbmV3IG1lZGlhIHJlbW90ZSBjb250cm9sbGVyIGZvciBtZWRpYQotICAgIC8vICAg
IHNlc3Npb24uIChPdGhlcndpc2UgbWVkaWEgc2Vzc2lvbiBoYXMgbm8gbWVkaWEgcmVtb3RlIGNv
bnRyb2xsZXIuKQotICAgIGlmIChtX2tpbmQgPT0gS2luZDo6Q29udGVudCkKLSAgICAgICAgbV9j
b250cm9scyA9IE1lZGlhUmVtb3RlQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7Ci0K
LSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5hZGRNZWRpYVNlc3Npb24oKnRo
aXMpOwotfQotCi1NZWRpYVNlc3Npb246On5NZWRpYVNlc3Npb24oKQotewotICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnJlbW92ZU1lZGlhU2Vzc2lvbigqdGhpcyk7Ci0KLSAg
ICBpZiAobV9jb250cm9scykKLSAgICAgICAgbV9jb250cm9scy0+Y2xlYXJTZXNzaW9uKCk7Ci19
Ci0KLU1lZGlhUmVtb3RlQ29udHJvbHMqIE1lZGlhU2Vzc2lvbjo6Y29udHJvbHMoKQotewotICAg
IHJldHVybiBtX2NvbnRyb2xzLmdldCgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6YWRkTWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKCFtX3Bh
cnRpY2lwYXRpbmdFbGVtZW50cy5jb250YWlucygmZWxlbWVudCkpOwotICAgIG1fcGFydGljaXBh
dGluZ0VsZW1lbnRzLmFkZCgmZWxlbWVudCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpyZW1v
dmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBBU1NFUlQo
bV9wYXJ0aWNpcGF0aW5nRWxlbWVudHMuY29udGFpbnMoJmVsZW1lbnQpKTsKLSAgICBtX3BhcnRp
Y2lwYXRpbmdFbGVtZW50cy5yZW1vdmUoJmVsZW1lbnQpOwotCi0gICAgY2hhbmdlQWN0aXZlTWVk
aWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIG1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRz
LnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgfSk7Ci0KLSAgICBpZiAobV9pdGVyYXRlZEFjdGl2ZVBh
cnRpY2lwYXRpbmdFbGVtZW50cykKLSAgICAgICAgbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRp
bmdFbGVtZW50cy0+cmVtb3ZlKCZlbGVtZW50KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNo
YW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYg
d29ya2VyKQotewotICAgIGlmIChQYWdlICpwYWdlID0gbV9kb2N1bWVudC5wYWdlKCkpIHsKLSAg
ICAgICAgYm9vbCBoYWRBY3RpdmVNZWRpYUVsZW1lbnRzID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2luZ2xldG9uKCkuaGFzQWN0aXZlTWVkaWFFbGVtZW50cygpOwotCi0gICAgICAgIHdvcmtlcigp
OwotCi0gICAgICAgIGJvb2wgaGFzQWN0aXZlTWVkaWFFbGVtZW50cyA9IE1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNpbmdsZXRvbigpLmhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKTsKLSAgICAgICAgaWYg
KGhhZEFjdGl2ZU1lZGlhRWxlbWVudHMgIT0gaGFzQWN0aXZlTWVkaWFFbGVtZW50cykKLSAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVN
ZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGhhc0FjdGl2ZU1lZGlhRWxlbWVudHMpOwotICAgIH0gZWxz
ZQotICAgICAgICB3b3JrZXIoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmFkZEFjdGl2ZU1l
ZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQotewotICAgIGNoYW5nZUFjdGl2
ZU1lZGlhRWxlbWVudHMoWyZdKCkgewotICAgICAgICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVt
ZW50cy5hZGQoJmVsZW1lbnQpOwotICAgIH0pOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aXNN
ZWRpYUVsZW1lbnRBY3RpdmUoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1
cm4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuY29udGFpbnMoJmVsZW1lbnQpOwotfQot
Ci1ib29sIE1lZGlhU2Vzc2lvbjo6aGFzQWN0aXZlTWVkaWFFbGVtZW50cygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICFtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5pc0VtcHR5KCk7Ci19Ci0K
LXZvaWQgTWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0YShjb25zdCBPcHRpb25hbDxNZXRhZGF0YT4m
IG9wdGlvbmFsTWV0YWRhdGEpCi17Ci0gICAgaWYgKCFvcHRpb25hbE1ldGFkYXRhKQotICAgICAg
ICBtX21ldGFkYXRhID0geyB9OwotICAgIGVsc2UgewotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9
IG9wdGlvbmFsTWV0YWRhdGEudmFsdWUoKTsKLSAgICAgICAgbV9tZXRhZGF0YSA9IHsgbWV0YWRh
dGEudGl0bGUsIG1ldGFkYXRhLmFydGlzdCwgbWV0YWRhdGEuYWxidW0sIG1fZG9jdW1lbnQuY29t
cGxldGVVUkwobWV0YWRhdGEuYXJ0d29yaykgfTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byogcGFn
ZSA9IG1fZG9jdW1lbnQucGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5t
ZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShtX21ldGFkYXRhKTsKLX0KLQotdm9pZCBNZWRp
YVNlc3Npb246OmRlYWN0aXZhdGUoKQotewotICAgIC8vIDUuMS4yLiBPYmplY3QgbWVtYmVycwot
ICAgIC8vIFdoZW4gdGhlIGRlYWN0aXZhdGUoKSBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIg
YWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAvLyAxLiBMZXQgbWVkaWEg
c2Vzc2lvbiBiZSB0aGUgY3VycmVudCBtZWRpYSBzZXNzaW9uLgotICAgIC8vIDIuIEluZGVmaW5p
dGVseSBwYXVzZSBhbGwgb2YgbWVkaWEgc2Vzc2lvbuKAmXMgYXVkaW8tcHJvZHVjaW5nIHBhcnRp
Y2lwYW50cy4KLSAgICAvLyAzLiBTZXQgbWVkaWEgc2Vzc2lvbidzIHJlc3VtZSBsaXN0IHRvIGFu
IGVtcHR5IGxpc3QuCi0gICAgLy8gNC4gU2V0IG1lZGlhIHNlc3Npb24ncyBhdWRpby1wcm9kdWNp
bmcgcGFydGljaXBhbnRzIHRvIGFuIGVtcHR5IGxpc3QuCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFF
bGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIHdoaWxlICghbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxl
bWVudHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVu
dHMudGFrZUFueSgpLT5wYXVzZSgpOwotICAgIH0pOwotCi0gICAgLy8gNS4gUnVuIHRoZSBtZWRp
YSBzZXNzaW9uIGRlYWN0aXZhdGlvbiBhbGdvcml0aG0gZm9yIG1lZGlhIHNlc3Npb24uCi0gICAg
cmVsZWFzZUludGVybmFsKCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpyZWxlYXNlSW50ZXJu
YWwoKQotewotICAgIC8vIDYuNS4gUmVsZWFzaW5nIGEgbWVkaWEgc2Vzc2lvbgotICAgIC8vIDEu
IElmIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGN1cnJlbnQgc3RhdGUgaXMgaWRsZSwgdGhlbiB0
ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKG1fY3VycmVudFN0YXRlID09IFN0YXRlOjpJ
ZGxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyAyLiBJZiBjdXJyZW50IG1lZGlhIHNlc3Np
b24gc3RpbGwgaGFzIG9uZSBvciBtb3JlIGFjdGl2ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1l
bnRzLCB0aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIW1fYWN0aXZlUGFydGlj
aXBhdGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gMy4g
T3B0aW9uYWxseSwgYmFzZWQgb24gcGxhdGZvcm0gY29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50
IG11c3QgcmVsZWFzZSBhbnkgY3VycmVudGx5IGhlbGQgcGxhdGZvcm0gbWVkaWEgZm9jdXMKLSAg
ICAvLyAgICBmb3IgY3VycmVudCBtZWRpYSBzZXNzaW9uLgotICAgIC8vIDQuIE9wdGlvbmFsbHks
IGJhc2VkIG9uIHBsYXRmb3JtIGNvbnZlbnRpb25zLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92
ZSBhbnkgcHJldmlvdXNseSBlc3RhYmxpc2hlZCBvbmdvaW5nIG1lZGlhCi0gICAgLy8gICAgaW50
ZXJmYWNlIGluIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3Jt4oCZcyBub3RpZmljYXRpb25zIGFyZWEg
YW5kIGFueSBvbmdvaW5nIG1lZGlhIGludGVyZmFjZSBpbiB0aGUgdW5kZXJseWluZwotICAgIC8v
ICAgIHBsYXRmb3JtJ3MgbG9jayBzY3JlZW4gYXJlYSBmb3IgY3VycmVudCBtZWRpYSBzZXNzaW9u
LCBpZiBhbnkuCi0gICAgLy8gNS4gT3B0aW9uYWxseSwgYmFzZWQgb24gcGxhdGZvcm0gY29udmVu
dGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcHJldmVudCBhbnkgaGFyZHdhcmUgYW5kL29yIHNv
ZnR3YXJlIG1lZGlhIGtleXMKLSAgICAvLyAgICBmcm9tIGNvbnRyb2xsaW5nIHBsYXliYWNrIG9m
IGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGFjdGl2ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1l
bnRzLgotICAgIC8vIDYuIFNldCBjdXJyZW50IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRl
IHRvIGlkbGUuCi0gICAgbV9jdXJyZW50U3RhdGUgPSBTdGF0ZTo6SWRsZTsKLX0KLQotYm9vbCBN
ZWRpYVNlc3Npb246Omludm9rZSgpCi17Ci0gICAgLy8gNC40IEFjdGl2YXRpbmcgYSBtZWRpYSBz
ZXNzaW9uCi0gICAgLy8gMS4gSWYgd2UncmUgYWxyZWFkeSBBQ1RJVkUgdGhlbiByZXR1cm4gc3Vj
Y2Vzcy4KLSAgICBpZiAobV9jdXJyZW50U3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAvLyAyLiBPcHRpb25hbGx5LCBiYXNlZCBvbiBwbGF0Zm9ybSBj
b252ZW50aW9ucywgcmVxdWVzdCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBwbGF0Zm9ybS1sZXZlbCBt
ZWRpYSBmb2N1cyBmb3IgbWVkaWEKLSAgICAvLyAgICBzZXNzaW9uIGJhc2VkIG9uIGl0cyBjdXJy
ZW50IG1lZGlhIHNlc3Npb24gdHlwZS4KLQotICAgIC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwcy4u
LgotCi0gICAgLy8gNC4gU2V0IG91ciBjdXJyZW50IHN0YXRlIHRvIEFDVElWRSBhbmQgcmV0dXJu
IHN1Y2Nlc3MuCi0gICAgbV9jdXJyZW50U3RhdGUgPSBTdGF0ZTo6QWN0aXZlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6aGFuZGxlRHVja0ludGVycnVwdGlvbigp
Ci17Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVu
dHMpCi0gICAgICAgIGVsZW1lbnQtPnNldFNob3VsZER1Y2sodHJ1ZSk7Ci0KLSAgICBtX2N1cnJl
bnRTdGF0ZSA9IFN0YXRlOjpJbnRlcnJ1cHRlZDsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246Omhh
bmRsZVVuZHVja0ludGVycnVwdGlvbigpCi17Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9h
Y3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnNldFNob3VsZER1
Y2soZmFsc2UpOwotCi0gICAgbV9jdXJyZW50U3RhdGUgPSBTdGF0ZTo6QWN0aXZlOwotfQotCi12
b2lkIE1lZGlhU2Vzc2lvbjo6aGFuZGxlSW5kZWZpbml0ZVBhdXNlSW50ZXJydXB0aW9uKCkKLXsK
LSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQtPnBhdXNlKCk7Ci0gICAgfSk7Ci0KLSAgICBt
X2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5jbGVhcigpOwotICAgIG1fY3VycmVudFN0YXRl
ID0gU3RhdGU6OklkbGU7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpoYW5kbGVQYXVzZUludGVy
cnVwdGlvbigpCi17Ci0gICAgbV9jdXJyZW50U3RhdGUgPSBTdGF0ZTo6SW50ZXJydXB0ZWQ7Ci0K
LSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQtPnBhdXNlKCk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgTWVkaWFTZXNzaW9uOjpoYW5kbGVVbnBhdXNlSW50ZXJydXB0aW9uKCkKLXsKLSAgICBtX2N1
cnJlbnRTdGF0ZSA9IFN0YXRlOjpBY3RpdmU7Ci0KLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVk
aWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1l
bnQtPnBsYXkoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnRvZ2dsZVBsYXli
YWNrKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVk
aWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGlmIChlbGVtZW50LT5wYXVzZWQoKSkKLSAg
ICAgICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZWxl
bWVudC0+cGF1c2UoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNhZmVseUl0
ZXJhdGVBY3RpdmVNZWRpYUVsZW1lbnRzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChIVE1MTWVk
aWFFbGVtZW50Kik+JiBoYW5kbGVyKQotewotICAgIEFTU0VSVCghbV9pdGVyYXRlZEFjdGl2ZVBh
cnRpY2lwYXRpbmdFbGVtZW50cyk7Ci0KLSAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBh
Y3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5ID0gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxl
bWVudHM7Ci0gICAgbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyA9ICZhY3Rp
dmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5OwotCi0gICAgd2hpbGUgKCFhY3RpdmVQYXJ0aWNp
cGF0aW5nRWxlbWVudHNDb3B5LmlzRW1wdHkoKSkKLSAgICAgICAgaGFuZGxlcihhY3RpdmVQYXJ0
aWNpcGF0aW5nRWxlbWVudHNDb3B5LnRha2VBbnkoKSk7Ci0KLSAgICBtX2l0ZXJhdGVkQWN0aXZl
UGFydGljaXBhdGluZ0VsZW1lbnRzID0gbnVsbHB0cjsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246
OnNraXBUb05leHRUcmFjaygpCi17Ci0gICAgaWYgKG1fY29udHJvbHMgJiYgbV9jb250cm9scy0+
bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICBtX2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm5leHR0cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246
OnNraXBUb1ByZXZpb3VzVHJhY2soKQotewotICAgIGlmIChtX2NvbnRyb2xzICYmIG1fY29udHJv
bHMtPnByZXZpb3VzVHJhY2tFbmFibGVkKCkpCi0gICAgICAgIG1fY29udHJvbHMtPmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucHJldmlvdXN0cmFja0V2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKLX0KLQotdm9pZCBN
ZWRpYVNlc3Npb246OmNvbnRyb2xJc0VuYWJsZWREaWRDaGFuZ2UoKQotewotICAgIC8vIE1lZGlh
IHJlbW90ZSBjb250cm9scyBhcmUgb25seSBhbGxvd2VkIG9uIENvbnRlbnQgbWVkaWEgc2Vzc2lv
bnMuCi0gICAgQVNTRVJUKG1fa2luZCA9PSBLaW5kOjpDb250ZW50KTsKLQotICAgIC8vIE1lZGlh
IGVsZW1lbnRzIGJlbG9uZ2luZyB0byBDb250ZW50IG1lZGlhIHNlc3Npb25zIGhhdmUgbXV0dWFs
bHktZXhjbHVzaXZlIHBsYXliYWNrLgotICAgIEFTU0VSVChtX2FjdGl2ZVBhcnRpY2lwYXRpbmdF
bGVtZW50cy5zaXplKCkgPD0gMSk7Ci0KLSAgICBpZiAobV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxl
bWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50ID0gKm1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLmJlZ2luKCk7Ci0gICAg
bV9kb2N1bWVudC51cGRhdGVJc1BsYXlpbmdNZWRpYShlbGVtZW50LT5lbGVtZW50SUQoKSk7Ci19
Ci0KLX0KLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5oCShub25leGlzdGVudCkKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiTWVkaWFSZW1vdGVDb250cm9scy5oIgot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBEb2N1bWVudDsKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci0KLWNsYXNzIE1lZGlhU2Vz
c2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbj4gewotcHVibGljOgot
ICAgIGVudW0gY2xhc3MgS2luZCB7IENvbnRlbnQsIFRyYW5zaWVudCwgVHJhbnNpZW50U29sbywg
QW1iaWVudCB9OwotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBJZGxlLCBBY3RpdmUsIEludGVycnVw
dGVkIH07Ci0KLSAgICBzdHJ1Y3QgTWV0YWRhdGEgewotICAgICAgICBTdHJpbmcgdGl0bGU7Ci0g
ICAgICAgIFN0cmluZyBhcnRpc3Q7Ci0gICAgICAgIFN0cmluZyBhbGJ1bTsKLSAgICAgICAgU3Ry
aW5nIGFydHdvcms7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBLaW5kIGtpbmQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24oZG9jdW1lbnQsIGtpbmQpKTsKLSAgICB9Ci0KLSAg
ICB+TWVkaWFTZXNzaW9uKCk7Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tp
bmQ7IH0KLSAgICBNZWRpYVJlbW90ZUNvbnRyb2xzKiBjb250cm9scygpOwotCi0gICAgV0VCQ09S
RV9FWFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3Rh
dGU7IH0KLSAgICBib29sIGhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSBjb25zdDsKLQotICAgIHZv
aWQgc2V0TWV0YWRhdGEoY29uc3QgT3B0aW9uYWw8TWV0YWRhdGE+Jik7Ci0KLSAgICB2b2lkIGRl
YWN0aXZhdGUoKTsKLQotICAgIC8vIFJ1bnMgdGhlIG1lZGlhIHNlc3Npb24gaW52b2NhdGlvbiBh
bGdvcml0aG0gYW5kIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIGJvb2wgaW52b2tlKCk7
Ci0KLSAgICB2b2lkIGhhbmRsZUR1Y2tJbnRlcnJ1cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZUlu
ZGVmaW5pdGVQYXVzZUludGVycnVwdGlvbigpOwotICAgIHZvaWQgaGFuZGxlUGF1c2VJbnRlcnJ1
cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZVVuZHVja0ludGVycnVwdGlvbigpOwotICAgIHZvaWQg
aGFuZGxlVW5wYXVzZUludGVycnVwdGlvbigpOwotCi0gICAgdm9pZCB0b2dnbGVQbGF5YmFjaygp
OwotICAgIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7Ci0gICAgdm9pZCBza2lwVG9QcmV2aW91c1Ry
YWNrKCk7Ci0KLSAgICB2b2lkIGNvbnRyb2xJc0VuYWJsZWREaWRDaGFuZ2UoKTsKLQotcHJpdmF0
ZToKLSAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKLQotICAgIE1lZGlhU2Vzc2lv
bihEb2N1bWVudCYsIEtpbmQpOwotCi0gICAgdm9pZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCYpOwotICAgIHZvaWQgcmVtb3ZlTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQm
KTsKLQotICAgIHZvaWQgc2FmZWx5SXRlcmF0ZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1lbnQqKT4mKTsKLSAgICB2b2lkIGNoYW5nZUFj
dGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYpOwotICAg
IHZvaWQgYWRkQWN0aXZlTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKLSAgICBib29s
IGlzTWVkaWFFbGVtZW50QWN0aXZlKEhUTUxNZWRpYUVsZW1lbnQmKTsKLQotICAgIHZvaWQgcmVs
ZWFzZUludGVybmFsKCk7Ci0KLSAgICBTdGF0ZSBtX2N1cnJlbnRTdGF0ZSB7IFN0YXRlOjpJZGxl
IH07Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gbV9wYXJ0aWNpcGF0aW5nRWxlbWVu
dHM7Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5n
RWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4qIG1faXRlcmF0ZWRBY3Rp
dmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMgeyBudWxscHRyIH07Ci0KLSAgICBEb2N1bWVudCYgbV9k
b2N1bWVudDsKLSAgICBjb25zdCBLaW5kIG1fa2luZDsKLSAgICBSZWZQdHI8TWVkaWFSZW1vdGVD
b250cm9scz4gbV9jb250cm9sczsKLSAgICBNZWRpYVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRh
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLyogRU5BQkxFKE1FRElB
X1NFU1NJT04pICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPU1FRElBX1NFU1NJT04sCi0gICAgRXhwb3J0TWFj
cm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLV0gaW50
ZXJmYWNlIE1lZGlhU2Vzc2lvbiB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlhU2Vzc2lvbktpbmQga2luZCA9ICJjb250ZW50
Iik7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTZXNzaW9uS2luZCBraW5kOwotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVJlbW90ZUNvbnRyb2xzPyBjb250cm9sczsKLQotICAg
IHVuZGVmaW5lZCBzZXRNZXRhZGF0YShNZWRpYU1ldGFkYXRhPyBtZXRhZGF0YSk7Ci0KLSAgICB1
bmRlZmluZWQgZGVhY3RpdmF0ZSgpOwotfTsKLQotZW51bSBNZWRpYVNlc3Npb25LaW5kIHsKLSAg
ICAiY29udGVudCIsCi0gICAgInRyYW5zaWVudCIsCi0gICAgInRyYW5zaWVudC1zb2xvIiwKLSAg
ICAiYW1iaWVudCIKLX07Ci0KLWRpY3Rpb25hcnkgTWVkaWFNZXRhZGF0YSB7Ci0gICAgRE9NU3Ry
aW5nIHRpdGxlOwotICAgIERPTVN0cmluZyBhcnRpc3Q7Ci0gICAgRE9NU3RyaW5nIGFsYnVtOwot
ICAgIFVTVlN0cmluZyBhcnR3b3JrOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkV2ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkV2ZW50cy5oCShyZXZpc2lv
biAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25FdmVudHMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gTWVkaWFF
dmVudFR5cGUgewotICAgIFBsYXlQYXVzZSwKLSAgICBUcmFja05leHQsCi0gICAgVHJhY2tQcmV2
aW91cwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NDUw
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFu
YWdlci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnRlbnRTZXNzaW9u
S2luZCA9ICJjb250ZW50IjsKLQotTWVkaWFTZXNzaW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNz
aW9uTWFuYWdlcj4gbWFuYWdlcjsKLSAgICByZXR1cm4gbWFuYWdlcjsKLX0KLQotTWVkaWFTZXNz
aW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdlcigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIG1faW50ZXJydXB0aW9uUHJvdmlkZXIgPSBhZG9wdFJlZihuZXcgTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMoKnRoaXMpKTsKLSAgICBtX2ludGVycnVwdGlvblByb3ZpZGVy
LT5iZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKTsKLSNlbmRpZgotfQotCi1ib29sIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6Omhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSBjb25zdAotewotICAg
IGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24t
Pmhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQotewotICAgIG1fc2Vzc2lvbnMu
YWRkKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVNZWRp
YVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQotewotICAgIG1fc2Vzc2lvbnMucmVtb3Zl
KCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5YmFj
aygpCi17Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICBT
dHJpbmcgc2Vzc2lvbktpbmQgPSBzZXNzaW9uLT5raW5kKCk7Ci0gICAgICAgIGlmIChzZXNzaW9u
LT5jdXJyZW50U3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlN0YXRlOjpBY3RpdmUgJiYgKHNlc3Np
b25LaW5kID09IGNvbnRlbnRTZXNzaW9uS2luZCB8fCBzZXNzaW9uS2luZCA9PSAiIikpCi0gICAg
ICAgICAgICBzZXNzaW9uLT50b2dnbGVQbGF5YmFjaygpOwotICAgIH0KLX0KLQotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpza2lwVG9OZXh0VHJhY2soKQotewotICAgIC8vIDUuMi4yIFdoZW4g
dGhlIHVzZXIgcHJlc3NlcyB0aGUgTWVkaWFUcmFja05leHQgbWVkaWEga2V5LCB0aGVuIGZvciBl
YWNoIENvbnRlbnQtYmFzZWQgbWVkaWEgc2Vzc2lvbiB0aGF0IGlzCi0gICAgLy8gY3VycmVudGx5
IEFDVElWRSBhbmQgaGFzIGEgbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIgd2l0aCBpdHMgbmV4dFRy
YWNrRW5hYmxlZCBhdHRyaWJ1dGUgc2V0IHRvIHRydWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRv
IGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbmV4dHRyYWNrIGF0IGl0cyBtZWRpYSByZW1vdGUg
Y29udHJvbGxlci4KLSAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAg
ICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlN0YXRlOjpB
Y3RpdmUgJiYgc2Vzc2lvbi0+a2luZCgpID09IGNvbnRlbnRTZXNzaW9uS2luZCkKLSAgICAgICAg
ICAgIHNlc3Npb24tPnNraXBUb05leHRUcmFjaygpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpza2lwVG9QcmV2aW91c1RyYWNrKCkKLXsKLSAgICAvLyA1LjIuMiBXaGVu
IHRoZSB1c2VyIHByZXNzZXMgdGhlIE1lZGlhVHJhY2tQcmV2aW91cyBtZWRpYSBrZXksIHRoZW4g
Zm9yIGVhY2ggQ29udGVudC1iYXNlZCBtZWRpYSBzZXNzaW9uIHRoYXQgaXMKLSAgICAvLyBjdXJy
ZW50bHkgQUNUSVZFIGFuZCBoYXMgYSBtZWRpYSByZW1vdGUgY29udHJvbGxlciB3aXRoIGl0cyBw
cmV2aW91c1RyYWNrRW5hYmxlZCBhdHRyaWJ1dGUgc2V0IHRvIHRydWUsIHF1ZXVlIGEgdGFzawot
ICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcHJldmlvdXN0cmFjayBhdCBpdHMg
bWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuCi0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNz
aW9ucykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+Y3VycmVudFN0YXRlKCkgPT0gTWVkaWFTZXNz
aW9uOjpTdGF0ZTo6QWN0aXZlICYmIHNlc3Npb24tPmtpbmQoKSA9PSBjb250ZW50U2Vzc2lvbktp
bmQpCi0gICAgICAgICAgICBzZXNzaW9uLT5za2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0gICAgfQot
fQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0
aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGludGVycnVw
dGluZ0NhdGVnb3J5KQotewotICAgIC8vIDQuNS4yIEludGVycnVwdGluZyBhIG1lZGlhIHNlc3Np
b24KLSAgICAvLyBXaGVuIGEgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbiBldmVu
dCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9ybSwgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0
IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9uIGludGVycnVwdGlvbiBhbGdvcml0aG0gYWdh
aW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMsIHBhc3NpbmcgaW4gZWFjaCBtZWRpYSBzZXNz
aW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9u
cykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSBpcyBu
b3QgYWN0aXZlLCB0aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgKHNlc3Np
b24tPmN1cnJlbnRTdGF0ZSgpICE9IE1lZGlhU2Vzc2lvbjo6U3RhdGU6OkFjdGl2ZSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIDIuIExldCBpbnRlcnJ1cHRpbmcgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSBiZSB0aGUgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSB0aGF0IHRyaWdn
ZXJlZCB0aGlzIGludGVycnVwdGlvbi4KLSAgICAgICAgLy8gICAgSWYgdGhpcyBpbnRlcnJ1cHRp
b24gaGFzIG5vIGtub3duIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnksIGxldCBpbnRlcnJ1cHRpbmcg
bWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSBEZWZhdWx0LgotCi0gICAgICAgIC8vIDMuIFJ1biB0
aGVzZSBzdWJzdGVwczoKLSAgICAgICAgaWYgKGludGVycnVwdGluZ0NhdGVnb3J5ID09IE1lZGlh
U2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpDb250ZW50KSB7Ci0gICAgICAgICAgICAvLyAt
ICBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBpcyBDb250ZW50OgotICAg
ICAgICAgICAgLy8gICAgSWYgbWVkaWEgc2Vzc2lvbidzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiB0
eXBlIGlzIERlZmF1bHQgb3IgQ29udGVudCB0aGVuIGluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2Yg
bWVkaWEKLSAgICAgICAgICAgIC8vICAgIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5n
IHBhcnRpY2lwYW50cyBhbmQgc2V0IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlk
bGUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6
OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQp
Ci0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxlSW5kZWZpbml0ZVBhdXNlSW50ZXJydXB0
aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudCkgewotICAgICAgICAgICAgLy8g
LSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0g
ICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24g
dHlwZSBpcyBEZWZhdWx0IG9yIENvbnRlbnQgdGhlbiBkdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9u
J3MgYWN0aXZlCi0gICAgICAgICAgICAvLyAgIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMg
YW5kIHNldCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAg
ICAgICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkgPT0gTWVkaWFTZXNzaW9uS2luZDo6RGVmYXVs
dCB8fCBzZXNzaW9uLT5raW5kKCkgPT0gTWVkaWFTZXNzaW9uS2luZDo6Q29udGVudCkKLSAgICAg
ICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVEdWNrSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5n
Q2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8pIHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0
aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMgVHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAg
ICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBE
ZWZhdWx0LCBDb250ZW50LCBUcmFuc2llbnQgb3IgVHJhbnNpZW50IFNvbG8gdGhlbiBwYXVzZQot
ICAgICAgICAgICAgLy8gICBhbGwgb2YgbWVkaWEgc2Vzc2lvbidzIGFjdGl2ZSBhdWRpby1wcm9k
dWNpbmcgcGFydGljaXBhbnRzIGFuZCBzZXQgY3VycmVudCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAgICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkg
IT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkKLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5o
YW5kbGVQYXVzZUludGVycnVwdGlvbigpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlv
bihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBpbnRlcnJ1cHRpbmdDYXRlZ29yeSkK
LXsKLSAgICAvLyA0LjUuMiBJbnRlcnJ1cHRpbmcgYSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gV2hl
biBhbiBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBm
cm9tIHRoZSBwbGF0Zm9ybSwgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAv
LyBtZWRpYSBzZXNzaW9uIGNvbnRpbnVhdGlvbiBhbGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24g
bWVkaWEgc2Vzc2lvbnMsIHBhc3NpbmcgaW4gZWFjaCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNl
c3Npb24uCi0gICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICAv
LyAxLiBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSBpcyBub3QgaW50ZXJydXB0ZWQs
IHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiAoc2Vzc2lvbi0+Y3VycmVu
dFN0YXRlKCkgIT0gTWVkaWFTZXNzaW9uOjpTdGF0ZTo6SW50ZXJydXB0ZWQpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAvLyAyLiBMZXQgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Np
b24gY2F0ZWdvcnkgYmUgdGhlIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgdGhhdCBpbml0aWFsbHkg
dHJpZ2dlcmVkIHRoaXMgaW50ZXJydXB0aW9uLgotICAgICAgICAvLyAgICBJZiB0aGlzIGludGVy
cnVwdGlvbiBoYXMgbm8ga25vd24gbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSwgbGV0IGludGVycnVw
dGluZyBtZWRpYSBzZXNzaW9uIGNhdGVnb3J5IGJlIERlZmF1bHQuCi0KLSAgICAgICAgLy8gMy4g
UnVuIHRoZXNlIHN1YnN0ZXBzOgotICAgICAgICBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0g
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudCkgewotICAgICAgICAg
ICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBpcyBUcmFuc2ll
bnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNl
c3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRlbnQsIHRoZW4gdW5kdWNrIGFsbCBvZiBtZWRp
YSBzZXNzaW9uJ3MKLSAgICAgICAgICAgIC8vICAgYWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0
aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBhY3RpdmUu
Ci0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRl
ZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0g
ICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxlVW5kdWNrSW50ZXJydXB0aW9uKCk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8pIHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50
ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMgVHJhbnNpZW50IFNvbG86Ci0gICAg
ICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlw
ZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2llbnQsIG9yIFRyYW5zaWVudCBTb2xvLCB0aGVu
Ci0gICAgICAgICAgICAvLyAgIHVucGF1c2UgdGhlIG1lZGlhIHNlc3Npb24ncyBhY3RpdmUgYXVk
aW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQgc2V0IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50
IHN0YXRlIHRvIGFjdGl2ZS4KLSAgICAgICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVk
aWFTZXNzaW9uS2luZDo6QW1iaWVudCkKLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVV
bnBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5oCShub25leGlzdGVudCkKQEAg
LTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRl
ICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFTZXNzaW9uOwotCi1j
bGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyIDogcHVibGljIE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyQ2xpZW50IHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFT
ZXNzaW9uTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE1lZGlh
U2Vzc2lvbk1hbmFnZXImIHNpbmdsZXRvbigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0
b2dnbGVQbGF5YmFjaygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2tpcFRvTmV4dFRyYWNr
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBza2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZp
Y2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5KSBvdmVycmlkZTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlv
bihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6
Ci0gICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lvbjsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFn
ZXIoKTsKLQotICAgIGJvb2wgaGFzQWN0aXZlTWVkaWFFbGVtZW50cygpIGNvbnN0OwotCi0gICAg
dm9pZCBhZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7Ci0gICAgdm9pZCByZW1vdmVNZWRp
YVNlc3Npb24oTWVkaWFTZXNzaW9uJik7Ci0KLSAgICBSZWZQdHI8TWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uUHJvdmlkZXI+IG1faW50ZXJydXB0aW9uUHJvdmlkZXI7Ci0gICAgSGFzaFNldDxNZWRp
YVNlc3Npb24qPiBtX3Nlc3Npb25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVNlc3Npb25NZXRhZGF0YSBmaW5hbCB7
Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEoKSA9IGRlZmF1bHQ7Ci0KLSAgICBN
ZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFy
dGlzdCwgY29uc3QgU3RyaW5nJiBhbGJ1bSwgY29uc3QgVVJMJiBhcnR3b3JrVVJMKQotICAgICAg
ICA6IG1fdGl0bGUodGl0bGUpCi0gICAgICAgICwgbV9hcnRpc3QoYXJ0aXN0KQotICAgICAgICAs
IG1fYWxidW0oYWxidW0pCi0gICAgICAgICwgbV9hcnR3b3JrVVJMKGFydHdvcmtVUkwpIHsgfQot
Ci0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQotICAgIFN0cmlu
ZyBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2FydGlzdDsgfQotICAgIFN0cmluZyBhbGJ1bSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWxidW07IH0KLSAgICBVUkwgYXJ0d29ya1VSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXJ0d29ya1VSTDsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3RpdGxlOwot
ICAgIFN0cmluZyBtX2FydGlzdDsKLSAgICBTdHJpbmcgbV9hbGJ1bTsKLSAgICBVUkwgbV9hcnR3
b3JrVVJMOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9QbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllci5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgotCi0jaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDUzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1vY2suaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50
LmgiCi0jaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KLSNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0YXRpYyBjb25zdCBTZWNvbmRzIHRhc2tEZWxheUludGVydmFsIHsgMTAwX21zIH07
Ci0KLSNkZWZpbmUgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSIGxvZ2dlcigpLmxvZ0Fs
d2F5cwotCi1zdHJ1Y3QgQ2xpZW50U3RhdGUgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKLQotICAgIGV4cGxpY2l0IENsaWVudFN0YXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQpCi0gICAgICAgIDogY2xpZW50KGNsaWVudCkKLSAgICAgICAgLCBjb250ZXh0SWQo
Y29udGV4dElkKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yID09IChDbGllbnRT
dGF0ZSBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29udGV4dElk
ID09IG90aGVyLmNvbnRleHRJZCAmJiAmY2xpZW50ID09ICZvdGhlci5jbGllbnQ7Ci0gICAgfQot
Ci0gICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50OwotICAgIFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkOwotICAgIFdlYkNvcmU6Ok1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBmbGFncyB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVj
ZXI6OklzTm90UGxheWluZyB9OwotICAgIGJvb2wgcmVxdWVzdGVkUGlja2VyIHsgZmFsc2UgfTsK
LSAgICBib29sIHByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIgeyBmYWxzZSB9OwotICAgIGJvb2wg
Y29uZmlndXJhdGlvblJlcXVpcmVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgcGxheWVkVG9FbmQgeyBm
YWxzZSB9OwotfTsKLQotc3RhdGljIGJvb2wgZmxhZ3NBcmVTZXQoTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIHZhbHVlLCB1bnNpZ25lZCBmbGFncykKLXsKLSAgICByZXR1cm4gdmFsdWUg
JiBmbGFnczsKLX0KLQotU3RyaW5nIG1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhNZWRpYVByb2R1
Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmc7
Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8pCi0gICAgICAg
IHN0cmluZy5hcHBlbmQoIklzUGxheWluZ0F1ZGlvKyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlh
UHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJJc1BsYXlp
bmdWaWRlbysiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4
dGVybmFsRGV2aWNlKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJJc1BsYXlpbmdUb0V4dGVybmFs
RGV2aWNlKyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIpCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIkhhc1Rhcmdl
dEF2YWlsYWJpbGl0eUxpc3RlbmVyKyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6
OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKQotICAgICAgICBzdHJpbmcuYXBwZW5k
KCJSZXF1aXJlc1RhcmdldE1vbml0b3JpbmcrIik7Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9k
dWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSkKLSAgICAgICAgc3RyaW5nLmFw
cGVuZCgiRXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSsiKTsKLSAgICBpZiAoZmxhZ3Mg
JiBNZWRpYVByb2R1Y2VyOjpEaWRQbGF5VG9FbmQpCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIkRp
ZFBsYXlUb0VuZCsiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09y
VmlkZW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIkhhc0F1ZGlvT3JWaWRlbysiKTsKLSAgICBp
ZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgc3RyaW5nLmFwcGVuZCgiSXNOb3RQbGF5aW5n
Iik7Ci0gICAgZWxzZQotICAgICAgICBzdHJpbmcucmVzaXplKHN0cmluZy5sZW5ndGgoKSAtIDEp
OwotCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIiB7ICIsIHN0cmluZy50b1N0cmluZygpLCAiIH0i
KTsKLX0KLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXZWJNZWRpYVNlc3Npb25Mb2dnZXIpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVNlc3Np
b25Mb2dnZXI+IGNyZWF0ZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPihtYW5hZ2Vy
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5s
aW5lIHZvaWQgbG9nQWx3YXlzKGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUsIENsaWVudFN0YXRlKiBz
dGF0ZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoIXN0YXRlLT5jbGllbnQuYWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIG1fbG9nZ2VyLT5sb2dBbHdheXMoTG9nTWVkaWEsIG1ha2VT
dHJpbmcoIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OiIsIG1ldGhvZE5hbWUsICcgJyksIHN0YXRl
LT5jb250ZXh0SWQudG9VSW50NjQoKSwgc3RhdGUtPmZsYWdzLCBhcmd1bWVudHMuLi4pOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9p
ZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9kTmFtZSwgY29uc3QgQXJndW1lbnRzJi4uLiBh
cmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1fbWFuYWdlci5hbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9sb2dnZXIt
PmxvZ0Fsd2F5cyhMb2dNZWRpYSwgbWFrZVN0cmluZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
IiwgbWV0aG9kTmFtZSwgJyAnKSwgYXJndW1lbnRzLi4uKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJik7
Ci0gICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1hbmFn
ZXIpCi0gICAgICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCi0gICAgICAgICwgbV9sb2dnZXIoTG9n
Z2VyOjpjcmVhdGUodGhpcykpCi0gICAgewotICAgIH0KLQotICAgIFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXImIG1fbWFuYWdlcjsKLSAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKLX07Ci0KLVdlYk1l
ZGlhU2Vzc2lvbkxvZ2dlciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bG9nZ2VyKCkKLXsKLSAg
ICBpZiAoIW1fbG9nZ2VyKQotICAgICAgICBtX2xvZ2dlciA9IFdlYk1lZGlhU2Vzc2lvbkxvZ2dl
cjo6Y3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9sb2dnZXI7Ci19Ci0KLWJvb2wgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGFsbE9mKG1fY2xpZW50U3RhdGUsIFtdIChhdXRvJiBzdGF0ZSkgewotICAgICAg
ICByZXR1cm4gc3RhdGUtPmNsaWVudC5hbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAobV9tb2NrUGlja2Vy
RW5hYmxlZCA9PSBlbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwotICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBl
bmFibGVkOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCi17Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJ
T05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtb2NrUGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3Rh
dGUpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKLXsKLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18pOwotICAgIG1vY2tQaWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsKLX0K
LQotTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
Om1vY2tQaWNrZXIoKQotewotICAgIGlmICghbV9waWNrZXJPdmVycmlkZSkKLSAgICAgICAgbV9w
aWNrZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+
KCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9waWNrZXJPdmVycmlkZS5nZXQoKTsKLX0KLQotV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
dGFyZ2V0UGlja2VyKCkKLXsKLSAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxlZCkKLSAgICAgICAg
cmV0dXJuIG1vY2tQaWNrZXIoKTsKLQotICAgIHJldHVybiBwbGF0Zm9ybVBpY2tlcigpOwotfQot
Ci1XZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKCkKLSAgICA6
IG1fdGFza1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJldlYk1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnRhc2tUaW1lckZpcmVkKQotICAgICwgbV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6OmN1
cnJlbnQoKSwgdGhpcywgJldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJl
ZCkKLXsKLX0KLQotV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6fldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIoKSA9IGRlZmF1bHQ7Ci0KLVBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLXsKLSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZj
bGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ID09IG5vdEZvdW5kKTsKLSAgICBp
ZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBBTFdBWVNf
TE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIGNvbnRleHRJZC50b1VJbnQ2NCgpKTsK
LSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQs
IGNvbnRleHRJZCkpOwotCi0gICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
fHwgbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFs
Q29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spOwotCi0g
ICAgcmV0dXJuIGNvbnRleHRJZDsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpy
ZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xp
ZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQotewotICAgIHNpemVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKLSAg
ICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7Ci0KLSAgICBtX2NsaWVudFN0YXRl
LnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRNb25pdG9yaW5n
Q29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spOwotfQot
Ci12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUFsbFBsYXliYWNrVGFyZ2V0UGlj
a2VyQ2xpZW50cyhXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQpCi17Ci0gICAg
aWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gbV9jbGllbnRTdGF0ZS5zaXplKCk7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAg
aWYgKCZtX2NsaWVudFN0YXRlW2kgLSAxXS0+Y2xpZW50ID09ICZjbGllbnQpIHsKLSAgICAgICAg
ICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0
ZVtpIC0gMV0uZ2V0KCkpOwotICAgICAgICAgICAgbV9jbGllbnRTdGF0ZS5yZW1vdmUoaSAtIDEp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRv
cmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsK
LX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENs
aWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9v
bCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKLXsKLSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZj
bGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBp
ZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGNsaWVu
dFJlcXVlc3RpbmdQaWNrZXIgPSBtX2NsaWVudFN0YXRlW2luZGV4XTsKLSAgICBmb3IgKGF1dG8m
IHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBzdGF0ZS0+cmVxdWVzdGVkUGlja2Vy
ID0gc3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1BpY2tlcjsKLSAgICAgICAgc3RhdGUtPnByZXZp
b3VzbHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwot
ICAgIH0KLQotICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9j
bGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwotCi0gICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZs
YWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5kZXhdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQ
bGF5aW5nVG9FeHRlcm5hbERldmljZSk7Ci0gICAgdGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGNsaWVudC5wbGF0Zm9ybVZpZXcoKSwgRmxvYXRSZWN0KHJlY3QpLCBoYXNB
Y3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFuY2UpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmNsaWVudFN0YXRlRGlkQ2hhbmdlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGll
bnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBuZXdGbGFncykKLXsKLSAgICBzaXpl
X3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ICE9
IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8mIGNoYW5nZWRDbGllbnRTdGF0ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhdOwot
ICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBvbGRGbGFncyA9IGNoYW5nZWRDbGll
bnRTdGF0ZS0+ZmxhZ3M7Ci0gICAgaWYgKG5ld0ZsYWdzID09IG9sZEZsYWdzKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1f
Y2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3IGZsYWdzID0gIiwgbmV3RmxhZ3MpOwotCi0g
ICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9IG5ld0ZsYWdzOwotCi0gICAgTWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHVwZGF0ZUNvbmZpZ3VyYXRpb25GbGFncyA9IE1lZGlhUHJv
ZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nIHwgTWVkaWFQcm9kdWNlcjo6
SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lciB8IE1lZGlhUHJvZHVjZXI6Okhh
c0F1ZGlvT3JWaWRlbzsKLSAgICBpZiAoKG9sZEZsYWdzICYgdXBkYXRlQ29uZmlndXJhdGlvbkZs
YWdzKSAhPSAobmV3RmxhZ3MgJiB1cGRhdGVDb25maWd1cmF0aW9uRmxhZ3MpKQotICAgICAgICBz
Y2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzayk7Ci0K
LSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgcGxheWluZ1RvVGFyZ2V0RmxhZ3Mg
PSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlIHwgTWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nVmlkZW87Ci0gICAgaWYgKChvbGRGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZs
YWdzKSAhPSAobmV3RmxhZ3MgJiBwbGF5aW5nVG9UYXJnZXRGbGFncykpIHsKLSAgICAgICAgaWYg
KGZsYWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYg
IWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYg
ZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkRpZFBsYXlUb0VuZCkpCi0gICAg
ICAgICAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPnBsYXllZFRvRW5kID0gdHJ1ZTsKLSAgICAgICAg
c2NoZWR1bGVEZWxheWVkVGFzayhXYXRjaGRvZ1RpbWVyQ29uZmlndXJhdGlvblRhc2spOwotICAg
IH0KLQotICAgIGlmICghbV9wbGF5YmFja1RhcmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFz
QWN0aXZlUm91dGUoKSB8fCAhZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkV4
dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRhdGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBEbyBub3QgaW50ZXJydXB0IGFub3RoZXIgZWxlbWVudCBhbHJlYWR5IHBsYXlpbmcgdG8gYSBk
ZXZpY2UuCi0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAg
aWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVk
aWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJs
eSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG8g
bm90IGJlZ2luIHBsYXlpbmcgdG8gdGhlIGRldmljZSB1bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qg
c3RhcnRlZC4KLSAgICBpZiAoIWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJ
c1BsYXlpbmdWaWRlbykgfHwgZmxhZ3NBcmVTZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ1ZpZGVvKSkgewotICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sICJyZXR1cm5pbmcgZWFybHksIHBsYXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGll
bnRTdGF0ZSkgewotICAgICAgICBpZiAoc3RhdGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdF
UihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFj
a1RhcmdldChmYWxzZSkiKTsKLSAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9Q
bGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3RhdGUu
Z2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOwot
ICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFy
Z2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKLQotICAgIGlmIChpbmRl
eCAmJiBtX2NsaWVudFN0YXRlLnNpemUoKSA+IDEpCi0gICAgICAgIHN0ZDo6c3dhcChtX2NsaWVu
dFN0YXRlLmF0KGluZGV4KSwgbV9jbGllbnRTdGF0ZS5hdCgwKSk7Ci19Ci0KLXZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJn
ZXQ+JiYgdGFyZ2V0KQotewotICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXywgImhhcyBhY3RpdmUgcm91dGUgPSAiLCB0YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOwot
ICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7Ci0gICAgbV90YXJnZXRDaGFu
Z2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1
cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCBhdmFpbGFibGUpCi17Ci0gICAgQUxX
QVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBhdmFpbGFibGUpOwotICAgIG1f
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBhdmFpbGFibGU7Ci0gICAgZm9yIChhdXRv
JiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpCi0gICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgYXZhaWxhYmxl
KTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCgpCi17Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkID0gdHJ1ZTsKLSAg
ICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19
Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlTmV3Q2xpZW50cygpCi17
Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKCFz
dGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgc3RhdGUtPmNvbmZpZ3VyYXRpb25SZXF1aXJlZCA9IGZhbHNlOwotICAgICAgICBpZiAo
bV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSkKLSAgICAgICAgICAgIHN0YXRlLT5jbGll
bnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJ
ZCwgdHJ1ZSk7Ci0KLSAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBz
dGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXli
YWNrVGFyZ2V0LmNvcHlSZWYoKSk7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0Q2xpZW50cygpCi17Ci0gICAgaWYgKG1fY2xp
ZW50U3RhdGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3QgaW5kZXhP
ZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBub3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhP
Zkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBub3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhP
ZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBub3RGb3VuZDsKLSAgICBib29sIGhhdmVBY3RpdmVS
b3V0ZSA9IG1fcGxheWJhY2tUYXJnZXQgJiYgbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91
dGUoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7
ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07Ci0KLSAgICAg
ICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwg
IiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcik7Ci0KLSAgICAg
ICAgaWYgKChtX3RhcmdldENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3Nl
ZCkgJiYgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcikKLSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRU
aGF0UmVxdWVzdGVkUGlja2VyID0gaTsKLQotICAgICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQ
bGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkKLSAgICAgICAgICAgIGluZGV4
T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaTsKLQotICAgICAgICBpZiAoaW5kZXhPZkNsaWVu
dFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgaGF2ZUFjdGl2ZVJvdXRlICYmIHN0YXRl
LT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyKQotICAgICAgICAgICAgaW5kZXhPZkxhc3RDbGll
bnRUb1JlcXVlc3RQaWNrZXIgPSBpOwotICAgIH0KLQotICAgIGlmIChpbmRleE9mQ2xpZW50VGhh
dFJlcXVlc3RlZFBpY2tlciAhPSBub3RGb3VuZCkKLSAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQ
bGF5VG9UYXJnZXQgPSBpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlcjsKLSAgICBpZiAo
aW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgaW5kZXhPZkxhc3RD
bGllbnRUb1JlcXVlc3RQaWNrZXIgIT0gbm90Rm91bmQpCi0gICAgICAgIGluZGV4T2ZDbGllbnRX
aWxsUGxheVRvVGFyZ2V0ID0gaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXI7Ci0gICAg
aWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID09IG5vdEZvdW5kICYmIGhhdmVBY3Rp
dmVSb3V0ZSAmJiBmbGFnc0FyZVNldChtX2NsaWVudFN0YXRlWzBdLT5mbGFncywgTWVkaWFQcm9k
dWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSkgJiYgIWZsYWdzQXJlU2V0KG1f
Y2xpZW50U3RhdGVbMF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0g
ICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gMDsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRv
JiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07Ci0KLSAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJn
ZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5j
b250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Ci0KLSAgICAgICAgaWYgKGkg
IT0gaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgfHwgIWhhdmVBY3RpdmVSb3V0ZSkgewot
ICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIp
OwotICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rhcmdl
dChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3Rh
dGUtPnJlcXVlc3RlZFBpY2tlciAmJiBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSB7
Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0
YXRlLmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsK
LSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNz
ZWQoc3RhdGUtPmNvbnRleHRJZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0ZS0+Y29uZmln
dXJhdGlvblJlcXVpcmVkID0gZmFsc2U7Ci0gICAgICAgIGlmIChtX3RhcmdldENoYW5nZWQgfHwg
bV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkKLSAgICAgICAgICAgIHN0YXRlLT5yZXF1
ZXN0ZWRQaWNrZXIgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoaGF2ZUFjdGl2ZVJvdXRlICYm
IGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF1
dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldF07
Ci0gICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJ
c1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewotICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7Ci0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50
LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgbV90YXJnZXRDaGFuZ2VkID0gZmFsc2U7Ci0gICAgY29u
ZmlndXJlV2F0Y2hkb2dUaW1lcigpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygpCi17Ci0gICAgYm9vbCBtb25pdG9y
aW5nUmVxdWlyZWQgPSBmYWxzZTsKLSAgICBib29sIGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVyID0g
ZmFsc2U7Ci0gICAgYm9vbCBoYXZlQ2xpZW50V2l0aE1lZGlhID0gZmFsc2U7Ci0gICAgZm9yIChh
dXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSk7Ci0gICAgICAgIGlmIChzdGF0ZS0+
ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykg
ewotICAgICAgICAgICAgbW9uaXRvcmluZ1JlcXVpcmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2Vy
OjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyKQotICAgICAgICAgICAgaGFz
QXZhaWxhYmlsaXR5TGlzdGVuZXIgPSB0cnVlOwotICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYg
TWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVvKQotICAgICAgICAgICAgaGF2ZUNsaWVudFdp
dGhNZWRpYSA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAo
aGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYgaGF2ZUNsaWVudFdpdGhNZWRpYSkpIHsKLSAgICAg
ICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9u
aXRvcmluZyIpOwotICAgICAgICB0YXJnZXRQaWNrZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5
YmFja1RhcmdldHMoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VT
U0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyBtb25pdG9yaW5nIik7Ci0gICAgICAgIHRh
cmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7Ci0gICAgfQotfQot
Ci12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmln
dXJhdGlvblRhc2tzIHRhc2tzKQotewotICAgIG1fdGFza0ZsYWdzIHw9IHRhc2tzOwotICAgIG1f
dGFza1RpbWVyLnN0YXJ0T25lU2hvdCh0YXNrRGVsYXlJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVyRmlyZWQoKQotewotICAgIGlmIChtX3Rhc2tG
bGFncyAmIEluaXRpYWxDb25maWd1cmF0aW9uVGFzaykKLSAgICAgICAgY29uZmlndXJlTmV3Q2xp
ZW50cygpOwotICAgIGlmIChtX3Rhc2tGbGFncyAmIFRhcmdldENsaWVudHNDb25maWd1cmF0aW9u
VGFzaykKLSAgICAgICAgY29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRzKCk7Ci0gICAgaWYg
KG1fdGFza0ZsYWdzICYgVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrKQotICAgICAg
ICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKLSAgICBpZiAobV90YXNrRmxh
Z3MgJiBXYXRjaGRvZ1RpbWVyQ29uZmlndXJhdGlvblRhc2spCi0gICAgICAgIGNvbmZpZ3VyZVdh
dGNoZG9nVGltZXIoKTsKLQotICAgIG1fdGFza0ZsYWdzID0gTm9UYXNrOwotfQotCi1zaXplX3Qg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZmluZChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50
KiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElk
KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAobV9jbGllbnRTdGF0ZVtpXS0+Y29udGV4dElkID09IGNvbnRleHRJ
ZCAmJiAmbV9jbGllbnRTdGF0ZVtpXS0+Y2xpZW50ID09IGNsaWVudCkKLSAgICAgICAgICAgIHJl
dHVybiBpOwotICAgIH0KLQotICAgIHJldHVybiBub3RGb3VuZDsKLX0KLQotdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYXRjaGRvZ1RpbWVyKCkKLXsKLSAgICBzdGF0aWMg
Y29uc3QgU2Vjb25kcyB3YXRjaGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBhdXNpbmcgeyAxX2ggfTsK
LSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRjaGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBsYXlp
bmdUb0VuZCB7IDhfbWluIH07Ci0KLSAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxh
eWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpIHsKLSAgICAgICAgaWYgKG1fd2F0Y2hkb2dU
aW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1lciIpOwotICAgICAgICAgICAgbV9jdXJyZW50
V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKLSAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9w
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCBzdG9w
VGltZXIgPSBmYWxzZTsKLSAgICBib29sIGRpZFBsYXlUb0VuZCA9IGZhbHNlOwotICAgIGZvciAo
YXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIs
IHN0YXRlLT5wbGF5ZWRUb0VuZCk7Ci0KLSAgICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5m
bGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NB
cmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAg
ICAgICAgICBzdG9wVGltZXIgPSB0cnVlOwotICAgICAgICBpZiAoc3RhdGUtPnBsYXllZFRvRW5k
KQotICAgICAgICAgICAgZGlkUGxheVRvRW5kID0gdHJ1ZTsKLSAgICAgICAgc3RhdGUtPnBsYXll
ZFRvRW5kID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHN0b3BUaW1lcikgewotICAgICAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1lciIp
OwotICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OwotICAgICAgICBtX3dh
dGNoZG9nVGltZXIuc3RvcCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFNlY29uZHMgaW50ZXJ2
YWwgPSBkaWRQbGF5VG9FbmQgPyB3YXRjaGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0Vu
ZCA6IHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVyUGF1c2luZzsKLSAgICAgICAgaWYgKGludGVy
dmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0Fj
dGl2ZSgpKSB7Ci0gICAgICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVy
dmFsKTsKLSAgICAgICAgfQotICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sICJ0aW1lciBzY2hlZHVsZWQgZm9yICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vj
b25kcyIpOwotICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7Ci0g
ICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJl
ZCgpCi17Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwotICAgIHRhcmdldFBp
Y2tlcigpLmludmFsaWRhdGVQbGF5YmFja1RhcmdldHMoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZp
c2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMzUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2luY2x1ZGUgIk1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ci5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgiCi0jaW5jbHVk
ZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVmlldy5oIgotI2luY2x1ZGUg
IlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENsaWVudFN0YXRlOwotY2xhc3MgSW50
UmVjdDsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJDbGllbnQ7Ci0KLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMg
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKTsKLXB1YmxpYzoKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWQoKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJv
b2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3Rh
dGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJEaXNtaXNzUG9wdXAoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNr
ZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxs
UGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllciwgY29uc3QgSW50UmVjdCYsIGJvb2wsIGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYs
IFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7Ci0KLSAgICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAgIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsK
LSAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyKCk7Ci0KLSAgICB2aXJ0dWFsIFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXImIHBsYXRmb3JtUGlja2VyKCkgPSAwOwot
ICAgIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBwbGF0Zm9ybU1hbmFnZXIoKTsKLQot
cHJpdmF0ZToKLQotICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXImIHRhcmdl
dFBpY2tlcigpOwotICAgIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBt
b2NrUGlja2VyKCk7Ci0KLSAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQK
LSAgICB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJX
YXNEaXNtaXNzZWQoKSBvdmVycmlkZTsKLQotICAgIHNpemVfdCBmaW5kKFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJDbGllbnQqLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsK
LQotICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRzKCk7Ci0gICAgdm9pZCBj
b25maWd1cmVOZXdDbGllbnRzKCk7Ci0gICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1v
bml0b3JpbmcoKTsKLSAgICB2b2lkIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIGVu
dW0gQ29uZmlndXJhdGlvblRhc2tGbGFncyB7Ci0gICAgICAgIE5vVGFzayA9IDAsCi0gICAgICAg
IEluaXRpYWxDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMCwKLSAgICAgICAgVGFyZ2V0Q2xpZW50
c0NvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAxLAotICAgICAgICBUYXJnZXRNb25pdG9yaW5nQ29u
ZmlndXJhdGlvblRhc2sgPSAxIDw8IDIsCi0gICAgICAgIFdhdGNoZG9nVGltZXJDb25maWd1cmF0
aW9uVGFzayA9IDEgPDwgMywKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQgQ29uZmlndXJh
dGlvblRhc2tzOwotICAgIFN0cmluZyB0b1N0cmluZyhDb25maWd1cmF0aW9uVGFza3MpOwotCi0g
ICAgdm9pZCBzY2hlZHVsZURlbGF5ZWRUYXNrKENvbmZpZ3VyYXRpb25UYXNrcyk7Ci0gICAgdm9p
ZCB0YXNrVGltZXJGaXJlZCgpOwotCi0gICAgdm9pZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKLQot
ICAgIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgbG9nZ2VyKCk7Ci0KLSAgICBSdW5Mb29wOjpUaW1l
cjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Rhc2tUaW1lcjsKLSAgICBSdW5Mb29wOjpUaW1l
cjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3dhdGNoZG9nVGltZXI7Ci0KLSAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENsaWVudFN0YXRlPj4gbV9jbGllbnRTdGF0ZTsKLSAgICBSZWZQdHI8
TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+IG1fcGlja2VyT3ZlcnJp
ZGU7Ci0gICAgQ29uZmlndXJhdGlvblRhc2tzIG1fdGFza0ZsYWdzIHsgTm9UYXNrIH07Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4gbV9sb2dnZXI7Ci0gICAgU2Vj
b25kcyBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsOwotICAgIGJvb2wgbV9leHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3RhcmdldENoYW5nZWQgeyBm
YWxzZSB9OwotICAgIGJvb2wgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX21vY2tQaWNrZXJFbmFibGVkIHsgZmFsc2UgfTsKLX07Ci0KLVN0cmlu
ZyBtZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFT
dGF0ZUZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsK
LQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKLQotdGVtcGxhdGU8PiBz
dHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdz
PiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIFdlYkNvcmU6Om1lZGlhUHJvZHVjZXJTdGF0
ZVN0cmluZyhmbGFncyk7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8g
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAyNjc0
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCi0KLSNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0LmgiCi0jaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCgpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBSZWY8TWVkaWFQbGF5YmFja1Rhcmdl
dD4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBib29sKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBhbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtVmlldyog
cGxhdGZvcm1WaWV3KCkgY29uc3QgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9QbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1Bs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllclR5cGUgeyB9Owor
dXNpbmcgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50
aWZpZXI8UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllclR5cGU+OworCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBs
YXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jay5oIgorI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaCIKKyNp
bmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIGNvbnN0IFNlY29uZHMgdGFza0RlbGF5SW50ZXJ2YWwgeyAxMDBfbXMgfTsKKworI2Rl
ZmluZSBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIgbG9nZ2VyKCkubG9nQWx3YXlzCisK
K3N0cnVjdCBDbGllbnRTdGF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OworCisgICAgZXhwbGljaXQgQ2xpZW50U3RhdGUoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCkKKyAgICAgICAgOiBjbGllbnQoY2xpZW50KQorICAgICAgICAsIGNvbnRleHRJZChjb250ZXh0
SWQpCisgICAgeworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IgPT0gKENsaWVudFN0YXRlIGNv
bnN0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb250ZXh0SWQgPT0gb3Ro
ZXIuY29udGV4dElkICYmICZjbGllbnQgPT0gJm90aGVyLmNsaWVudDsKKyAgICB9CisKKyAgICBX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQ7CisgICAgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQ7CisgICAgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzIGZsYWdzIHsgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNO
b3RQbGF5aW5nIH07CisgICAgYm9vbCByZXF1ZXN0ZWRQaWNrZXIgeyBmYWxzZSB9OworICAgIGJv
b2wgcHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciB7IGZhbHNlIH07CisgICAgYm9vbCBjb25maWd1
cmF0aW9uUmVxdWlyZWQgeyB0cnVlIH07CisgICAgYm9vbCBwbGF5ZWRUb0VuZCB7IGZhbHNlIH07
Cit9OworCitzdGF0aWMgYm9vbCBmbGFnc0FyZVNldChNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgdmFsdWUsIHVuc2lnbmVkIGZsYWdzKQoreworICAgIHJldHVybiB2YWx1ZSAmIGZsYWdz
OworfQorCitTdHJpbmcgbWVkaWFQcm9kdWNlclN0YXRlU3RyaW5nKE1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGVGbGFncyBmbGFncykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZzsKKyAgICBp
ZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbykKKyAgICAgICAgc3RyaW5n
LmFwcGVuZCgiSXNQbGF5aW5nQXVkaW8rIik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nVmlkZW8pCisgICAgICAgIHN0cmluZy5hcHBlbmQoIklzUGxheWluZ1ZpZGVv
KyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxE
ZXZpY2UpCisgICAgICAgIHN0cmluZy5hcHBlbmQoIklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2Ur
Iik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlMaXN0ZW5lcikKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFzVGFyZ2V0QXZhaWxh
YmlsaXR5TGlzdGVuZXIrIik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6UmVxdWly
ZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpCisgICAgICAgIHN0cmluZy5hcHBlbmQoIlJlcXVp
cmVzVGFyZ2V0TW9uaXRvcmluZysiKTsKKyAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpF
eHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRlKQorICAgICAgICBzdHJpbmcuYXBwZW5kKCJF
eHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRlKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlh
UHJvZHVjZXI6OkRpZFBsYXlUb0VuZCkKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiRGlkUGxheVRv
RW5kKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbykK
KyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFzQXVkaW9PclZpZGVvKyIpOworICAgIGlmIChzdHJp
bmcuaXNFbXB0eSgpKQorICAgICAgICBzdHJpbmcuYXBwZW5kKCJJc05vdFBsYXlpbmciKTsKKyAg
ICBlbHNlCisgICAgICAgIHN0cmluZy5yZXNpemUoc3RyaW5nLmxlbmd0aCgpIC0gMSk7CisKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygiIHsgIiwgc3RyaW5nLnRvU3RyaW5nKCksICIgfSIpOworfQor
CitjbGFzcyBXZWJNZWRpYVNlc3Npb25Mb2dnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dl
cj4gY3JlYXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+KG1hbmFnZXIpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9p
ZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9kTmFtZSwgQ2xpZW50U3RhdGUqIHN0YXRlLCBj
b25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgh
c3RhdGUtPmNsaWVudC5hbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgbV9sb2dnZXItPmxvZ0Fsd2F5cyhMb2dNZWRpYSwgbWFrZVN0cmluZygi
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0aG9kTmFtZSwgJyAnKSwgc3RhdGUtPmNvbnRl
eHRJZC50b1VJbnQ2NCgpLCBzdGF0ZS0+ZmxhZ3MsIGFyZ3VtZW50cy4uLik7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIGlubGluZSB2b2lkIGxvZ0Fs
d2F5cyhjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50
cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9tYW5hZ2VyLmFsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2xvZ2dlci0+bG9nQWx3
YXlzKExvZ01lZGlhLCBtYWtlU3RyaW5nKCJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjoiLCBtZXRo
b2ROYW1lLCAnICcpLCBhcmd1bWVudHMuLi4pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmll
bmQgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4gc3RkOjptYWtlX3VuaXF1
ZTxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImKTsKKyAgICBX
ZWJNZWRpYVNlc3Npb25Mb2dnZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbWFuYWdlcikKKyAg
ICAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAgICAgICAgLCBtX2xvZ2dlcihMb2dnZXI6OmNy
ZWF0ZSh0aGlzKSkKKyAgICB7CisgICAgfQorCisgICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYg
bV9tYW5hZ2VyOworICAgIFJlZjxMb2dnZXI+IG1fbG9nZ2VyOworfTsKKworV2ViTWVkaWFTZXNz
aW9uTG9nZ2VyJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpsb2dnZXIoKQoreworICAgIGlmICgh
bV9sb2dnZXIpCisgICAgICAgIG1fbG9nZ2VyID0gV2ViTWVkaWFTZXNzaW9uTG9nZ2VyOjpjcmVh
dGUoKnRoaXMpOworCisgICAgcmV0dXJuICptX2xvZ2dlcjsKK30KKworYm9vbCBXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjphbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gYWxsT2YobV9jbGllbnRTdGF0ZSwgW10gKGF1dG8mIHN0YXRlKSB7CisgICAgICAgIHJldHVy
biBzdGF0ZS0+Y2xpZW50LmFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX21vY2tQaWNrZXJFbmFibGVk
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbV9tb2NrUGlja2VyRW5hYmxlZCA9IGVuYWJsZWQ7
Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOworICAgIG1vY2tQaWNrZXIoKS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7Cit9
CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJEaXNtaXNzUG9wdXAoKQoreworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdF
UihfX2Z1bmNfXyk7CisgICAgbW9ja1BpY2tlcigpLmRpc21pc3NQb3B1cCgpOworfQorCitNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1Bp
Y2tlcigpCit7CisgICAgaWYgKCFtX3BpY2tlck92ZXJyaWRlKQorICAgICAgICBtX3BpY2tlck92
ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMp
OworCisgICAgcmV0dXJuICptX3BpY2tlck92ZXJyaWRlLmdldCgpOworfQorCitXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXJnZXRQ
aWNrZXIoKQoreworICAgIGlmIChtX21vY2tQaWNrZXJFbmFibGVkKQorICAgICAgICByZXR1cm4g
bW9ja1BpY2tlcigpOworCisgICAgcmV0dXJuIHBsYXRmb3JtUGlja2VyKCk7Cit9CisKK1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKQorICAgIDogbV90YXNr
VGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
dGFza1RpbWVyRmlyZWQpCisgICAgLCBtX3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6Y3VycmVudCgp
LCB0aGlzLCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6d2F0Y2hkb2dUaW1lckZpcmVkKQorewor
fQorCitXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp+V2ViTWVkaWFTZXNzaW9uTWFuYWdlcigpID0g
ZGVmYXVsdDsKKworUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkKQoreworICAgIHNpemVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwg
Y29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXggPT0gbm90Rm91bmQpOworICAgIGlmIChpbmRl
eCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEFMV0FZU19MT0dfTUVE
SUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgY29udGV4dElkLnRvVUludDY0KCkpOworICAgIG1f
Y2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4
dElkKSk7CisKKyAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3Bs
YXliYWNrVGFyZ2V0KQorICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1
cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7CisKKyAgICByZXR1
cm4gY29udGV4dElkOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVBs
YXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNs
aWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit7
CisgICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xpZW50LCBjb250ZXh0SWQpOworICAgIEFTU0VS
VChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsKKworICAgIG1fY2xpZW50U3RhdGUucmVtb3Zl
KGluZGV4KTsKKyAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1
cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Cit9CisKK3ZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnRzKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBpZiAobV9j
bGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90
IGkgPSBtX2NsaWVudFN0YXRlLnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAgICBpZiAoJm1f
Y2xpZW50U3RhdGVbaSAtIDFdLT5jbGllbnQgPT0gJmNsaWVudCkgeworICAgICAgICAgICAgQUxX
QVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2kgLSAx
XS5nZXQoKSk7CisgICAgICAgICAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpIC0gMSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgc2NoZWR1bGVEZWxheWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29u
ZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spOworfQorCit2
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBJbnRSZWN0JiByZWN0LCBib29sLCBib29s
IHVzZURhcmtBcHBlYXJhbmNlKQoreworICAgIHNpemVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwg
Y29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRl
eCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY2xpZW50UmVxdWVz
dGluZ1BpY2tlciA9IG1fY2xpZW50U3RhdGVbaW5kZXhdOworICAgIGZvciAoYXV0byYgc3RhdGUg
OiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0
ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOworICAgICAgICBzdGF0ZS0+cHJldmlvdXNseVJl
cXVlc3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVudFJlcXVlc3RpbmdQaWNrZXI7CisgICAgfQor
CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0
YXRlW2luZGV4XS5nZXQoKSk7CisKKyAgICBib29sIGhhc0FjdGl2ZVJvdXRlID0gZmxhZ3NBcmVT
ZXQobV9jbGllbnRTdGF0ZVtpbmRleF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdU
b0V4dGVybmFsRGV2aWNlKTsKKyAgICB0YXJnZXRQaWNrZXIoKS5zaG93UGxheWJhY2tUYXJnZXRQ
aWNrZXIoY2xpZW50LnBsYXRmb3JtVmlldygpLCBGbG9hdFJlY3QocmVjdCksIGhhc0FjdGl2ZVJv
dXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xp
ZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgTWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5ld0ZsYWdzKQoreworICAgIHNpemVfdCBpbmRl
eCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91
bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgY2hhbmdlZENsaWVudFN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRleF07CisgICAgTWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9sZEZsYWdzID0gY2hhbmdlZENsaWVudFN0YXRl
LT5mbGFnczsKKyAgICBpZiAobmV3RmxhZ3MgPT0gb2xkRmxhZ3MpCisgICAgICAgIHJldHVybjsK
KworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRT
dGF0ZVtpbmRleF0uZ2V0KCksICJuZXcgZmxhZ3MgPSAiLCBuZXdGbGFncyk7CisKKyAgICBjaGFu
Z2VkQ2xpZW50U3RhdGUtPmZsYWdzID0gbmV3RmxhZ3M7CisKKyAgICBNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgdXBkYXRlQ29uZmlndXJhdGlvbkZsYWdzID0gTWVkaWFQcm9kdWNlcjo6
UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcgfCBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyIHwgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9P
clZpZGVvOworICAgIGlmICgob2xkRmxhZ3MgJiB1cGRhdGVDb25maWd1cmF0aW9uRmxhZ3MpICE9
IChuZXdGbGFncyAmIHVwZGF0ZUNvbmZpZ3VyYXRpb25GbGFncykpCisgICAgICAgIHNjaGVkdWxl
RGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrKTsKKworICAgIE1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBwbGF5aW5nVG9UYXJnZXRGbGFncyA9IE1lZGlh
UHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UgfCBNZWRpYVByb2R1Y2VyOjpJc1Bs
YXlpbmdWaWRlbzsKKyAgICBpZiAoKG9sZEZsYWdzICYgcGxheWluZ1RvVGFyZ2V0RmxhZ3MpICE9
IChuZXdGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZsYWdzKSkgeworICAgICAgICBpZiAoZmxhZ3NB
cmVTZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSAmJiAhZmxhZ3NB
cmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSAmJiBmbGFnc0Fy
ZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6RGlkUGxheVRvRW5kKSkKKyAgICAgICAgICAg
IGNoYW5nZWRDbGllbnRTdGF0ZS0+cGxheWVkVG9FbmQgPSB0cnVlOworICAgICAgICBzY2hlZHVs
ZURlbGF5ZWRUYXNrKFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzayk7CisgICAgfQorCisg
ICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVS
b3V0ZSgpIHx8ICFmbGFnc0FyZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxE
ZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIERvIG5v
dCBpbnRlcnJ1cHQgYW5vdGhlciBlbGVtZW50IGFscmVhZHkgcGxheWluZyB0byBhIGRldmljZS4K
KyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAgICBpZiAoc3Rh
dGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNT
SU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBEbyBub3QgYmVn
aW4gcGxheWluZyB0byB0aGUgZGV2aWNlIHVubGVzcyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVk
LgorICAgIGlmICghZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWlu
Z1ZpZGVvKSB8fCBmbGFnc0FyZVNldChvbGRGbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VmlkZW8pKSB7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
XywgInJldHVybmluZyBlYXJseSwgcGxheWJhY2sgZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRl
KSB7CisgICAgICAgIGlmIChzdGF0ZSA9PSBjaGFuZ2VkQ2xpZW50U3RhdGUpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVu
Y19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KGZhbHNlKSIpOworICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9H
X01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQoKSwg
IiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7CisgICAgY2hh
bmdlZENsaWVudFN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY2hh
bmdlZENsaWVudFN0YXRlLT5jb250ZXh0SWQsIHRydWUpOworCisgICAgaWYgKGluZGV4ICYmIG1f
Y2xpZW50U3RhdGUuc2l6ZSgpID4gMSkKKyAgICAgICAgc3RkOjpzd2FwKG1fY2xpZW50U3RhdGUu
YXQoaW5kZXgpLCBtX2NsaWVudFN0YXRlLmF0KDApKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzZXRQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0
YXJnZXQpCit7CisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAi
aGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+aGFzQWN0aXZlUm91dGUoKSk7CisgICAgbV9w
bGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKKyAgICBtX3RhcmdldENoYW5nZWQgPSB0
cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25U
YXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2YWlsYWJsZSkKK3sKKyAgICBBTFdBWVNfTE9H
X01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIGF2YWlsYWJsZSk7CisgICAgbV9leHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZSA9IGF2YWlsYWJsZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRl
IDogbV9jbGllbnRTdGF0ZSkKKyAgICAgICAgc3RhdGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShzdGF0ZS0+Y29udGV4dElkLCBhdmFpbGFibGUpOworfQor
Cit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlz
bWlzc2VkKCkKK3sKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18p
OworICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzZWQgPSB0cnVlOworICAgIHNjaGVk
dWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9p
ZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVOZXdDbGllbnRzKCkKK3sKKyAgICBm
b3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAgICBpZiAoIXN0YXRlLT5j
b25maWd1cmF0aW9uUmVxdWlyZWQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBz
dGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0gZmFsc2U7CisgICAgICAgIGlmIChtX2V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5leHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShzdGF0ZS0+Y29udGV4dElkLCB0cnVl
KTsKKworICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5j
bGllbnQuc2V0UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJn
ZXQuY29weVJlZigpKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
Y29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRzKCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50
VGhhdFJlcXVlc3RlZFBpY2tlciA9IG5vdEZvdW5kOworICAgIHNpemVfdCBpbmRleE9mTGFzdENs
aWVudFRvUmVxdWVzdFBpY2tlciA9IG5vdEZvdW5kOworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50
V2lsbFBsYXlUb1RhcmdldCA9IG5vdEZvdW5kOworICAgIGJvb2wgaGF2ZUFjdGl2ZVJvdXRlID0g
bV9wbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpXTsKKworICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiLCByZXF1
ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKTsKKworICAgICAgICBpZiAo
KG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSAmJiBz
dGF0ZS0+cmVxdWVzdGVkUGlja2VyKQorICAgICAgICAgICAgaW5kZXhPZkNsaWVudFRoYXRSZXF1
ZXN0ZWRQaWNrZXIgPSBpOworCisgICAgICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldCA9PSBub3RGb3VuZCAmJiBmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVj
ZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpKQorICAgICAgICAgICAgaW5kZXhPZkNsaWVu
dFdpbGxQbGF5VG9UYXJnZXQgPSBpOworCisgICAgICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBs
YXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBoYXZlQWN0aXZlUm91dGUgJiYgc3RhdGUtPnByZXZp
b3VzbHlSZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAgICAgICBpbmRleE9mTGFzdENsaWVudFRvUmVx
dWVzdFBpY2tlciA9IGk7CisgICAgfQorCisgICAgaWYgKGluZGV4T2ZDbGllbnRUaGF0UmVxdWVz
dGVkUGlja2VyICE9IG5vdEZvdW5kKQorICAgICAgICBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1Rh
cmdldCA9IGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyOworICAgIGlmIChpbmRleE9m
Q2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBpbmRleE9mTGFzdENsaWVudFRv
UmVxdWVzdFBpY2tlciAhPSBub3RGb3VuZCkKKyAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5
VG9UYXJnZXQgPSBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlcjsKKyAgICBpZiAoaW5k
ZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgaGF2ZUFjdGl2ZVJvdXRl
ICYmIGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbMF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpF
eHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRlKSAmJiAhZmxhZ3NBcmVTZXQobV9jbGllbnRT
dGF0ZVswXS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkKKyAgICAgICAg
aW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSAwOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRl
ID0gbV9jbGllbnRTdGF0ZVtpXTsKKworICAgICAgICBpZiAobV9wbGF5YmFja1RhcmdldCkKKyAg
ICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJ
ZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKKworICAgICAgICBpZiAoaSAhPSBpbmRl
eE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCB8fCAhaGF2ZUFjdGl2ZVJvdXRlKSB7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoZmFsc2UpIik7CisgICAg
ICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRl
LT5jb250ZXh0SWQsIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGF0ZS0+cmVx
dWVzdGVkUGlja2VyICYmIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzZWQpIHsKKyAgICAg
ICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0
KCksICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCIpOworICAgICAg
ICAgICAgc3RhdGUtPmNsaWVudC5wbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChzdGF0
ZS0+Y29udGV4dElkKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRlLT5jb25maWd1cmF0aW9u
UmVxdWlyZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKQorICAgICAgICAgICAgc3RhdGUtPnJlcXVlc3RlZFBp
Y2tlciA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChoYXZlQWN0aXZlUm91dGUgJiYgaW5kZXhP
ZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgYXV0byYgc3Rh
dGUgPSBtX2NsaWVudFN0YXRlW2luZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0XTsKKyAgICAg
ICAgaWYgKCFmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWlu
Z1RvRXh0ZXJuYWxEZXZpY2UpKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBtX3RhcmdldENoYW5nZWQgPSBmYWxzZTsKKyAgICBjb25maWd1cmVX
YXRjaGRvZ1RpbWVyKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmln
dXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCkKK3sKKyAgICBib29sIG1vbml0b3JpbmdSZXF1
aXJlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsK
KyAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHN0
YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpKTsKKyAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAm
IE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKSB7CisgICAg
ICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIpCisgICAgICAgICAgICBoYXNBdmFpbGFi
aWxpdHlMaXN0ZW5lciA9IHRydWU7CisgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVBy
b2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCisgICAgICAgICAgICBoYXZlQ2xpZW50V2l0aE1lZGlh
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobW9uaXRvcmluZ1JlcXVpcmVkIHx8IChoYXNBdmFp
bGFiaWxpdHlMaXN0ZW5lciAmJiBoYXZlQ2xpZW50V2l0aE1lZGlhKSkgeworICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdGFydGluZyBtb25pdG9yaW5n
Iik7CisgICAgICAgIHRhcmdldFBpY2tlcigpLnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFy
Z2V0cygpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFO
QUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIG1vbml0b3JpbmciKTsKKyAgICAgICAgdGFyZ2V0UGlj
a2VyKCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKKyAgICB9Cit9CisKK3ZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1bGVEZWxheWVkVGFzayhDb25maWd1cmF0aW9u
VGFza3MgdGFza3MpCit7CisgICAgbV90YXNrRmxhZ3MgfD0gdGFza3M7CisgICAgbV90YXNrVGlt
ZXIuc3RhcnRPbmVTaG90KHRhc2tEZWxheUludGVydmFsKTsKK30KKwordm9pZCBXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjp0YXNrVGltZXJGaXJlZCgpCit7CisgICAgaWYgKG1fdGFza0ZsYWdzICYg
SW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrKQorICAgICAgICBjb25maWd1cmVOZXdDbGllbnRzKCk7
CisgICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKQor
ICAgICAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldENsaWVudHMoKTsKKyAgICBpZiAobV90YXNr
RmxhZ3MgJiBUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2spCisgICAgICAgIGNvbmZp
Z3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygpOworICAgIGlmIChtX3Rhc2tGbGFncyAmIFdh
dGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzaykKKyAgICAgICAgY29uZmlndXJlV2F0Y2hkb2dU
aW1lcigpOworCisgICAgbV90YXNrRmxhZ3MgPSBOb1Rhc2s7Cit9CisKK3NpemVfdCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpmaW5kKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQqIGNsaWVu
dCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChtX2NsaWVudFN0YXRlW2ldLT5jb250ZXh0SWQgPT0gY29udGV4dElkICYmICZt
X2NsaWVudFN0YXRlW2ldLT5jbGllbnQgPT0gY2xpZW50KQorICAgICAgICAgICAgcmV0dXJuIGk7
CisgICAgfQorCisgICAgcmV0dXJuIG5vdEZvdW5kOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmNvbmZpZ3VyZVdhdGNoZG9nVGltZXIoKQoreworICAgIHN0YXRpYyBjb25zdCBT
ZWNvbmRzIHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVyUGF1c2luZyB7IDFfaCB9OworICAgIHN0
YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVyUGxheWluZ1RvRW5k
IHsgOF9taW4gfTsKKworICAgIGlmICghbV9wbGF5YmFja1RhcmdldCB8fCAhbV9wbGF5YmFja1Rh
cmdldC0+aGFzQWN0aXZlUm91dGUoKSkgeworICAgICAgICBpZiAobV93YXRjaGRvZ1RpbWVyLmlz
QWN0aXZlKCkpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihf
X2Z1bmNfXywgInN0b3BwaW5nIHRpbWVyIik7CisgICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRv
Z0ludGVydmFsID0geyB9OworICAgICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHN0b3BUaW1lciA9
IGZhbHNlOworICAgIGJvb2wgZGlkUGxheVRvRW5kID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBz
dGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKKworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lP
Tk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIHBsYXllZFRvRW5kID0gIiwgc3RhdGUt
PnBsYXllZFRvRW5kKTsKKworICAgICAgICBpZiAoZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBN
ZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSAmJiBmbGFnc0FyZVNldChz
dGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkKKyAgICAgICAgICAg
IHN0b3BUaW1lciA9IHRydWU7CisgICAgICAgIGlmIChzdGF0ZS0+cGxheWVkVG9FbmQpCisgICAg
ICAgICAgICBkaWRQbGF5VG9FbmQgPSB0cnVlOworICAgICAgICBzdGF0ZS0+cGxheWVkVG9FbmQg
PSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3RvcFRpbWVyKSB7CisgICAgICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVyIik7CisgICAg
ICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSB7IH07CisgICAgICAgIG1fd2F0Y2hkb2dU
aW1lci5zdG9wKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgU2Vjb25kcyBpbnRlcnZhbCA9IGRp
ZFBsYXlUb0VuZCA/IHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVyUGxheWluZ1RvRW5kIDogd2F0
Y2hkb2dUaW1lckludGVydmFsQWZ0ZXJQYXVzaW5nOworICAgICAgICBpZiAoaW50ZXJ2YWwgIT0g
bV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAhbV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkp
IHsKKyAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwor
ICAgICAgICB9CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
XywgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7
CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICB9Cit9
CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKK3sK
KyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCisgICAgICAgIHJldHVybjsKKworICAgIEFMV0FZ
U19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgdGFyZ2V0UGlja2VyKCku
aW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJ
T1NfRkFNSUxZKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVkZSAiUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdHJ1Y3QgQ2xpZW50U3RhdGU7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgV2ViTWVkaWFTZXNz
aW9uTG9nZ2VyOworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudDsKKworY2xhc3Mg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlciA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
OjpDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIpOworcHVibGljOgorCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXImIHNoYXJlZCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYs
IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBhZGRQ
bGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50Jiwg
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBbGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dHMoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQm
LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLCBjb25zdCBJbnRSZWN0Jiwg
Ym9vbCwgYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGllbnRTdGF0ZURpZENoYW5n
ZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsK
KworICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6
CisgICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcigpOworICAgIHZpcnR1YWwgfldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIoKTsKKworICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlciYgcGxhdGZvcm1QaWNrZXIoKSA9IDA7CisgICAgc3RhdGljIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXImIHBsYXRmb3JtTWFuYWdlcigpOworCitwcml2YXRlOgorCisgICAgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgdGFyZ2V0UGlja2VyKCk7CisgICAgV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2smIG1vY2tQaWNrZXIoKTsKKworICAgIC8vIE1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVudAorICAgIHZvaWQgc2V0UGxheWJhY2tUYXJn
ZXQoUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCgpIG92ZXJyaWRlOwor
CisgICAgc2l6ZV90IGZpbmQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCosIFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOworCisgICAgdm9pZCBjb25maWd1cmVQbGF5
YmFja1RhcmdldENsaWVudHMoKTsKKyAgICB2b2lkIGNvbmZpZ3VyZU5ld0NsaWVudHMoKTsKKyAg
ICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygpOworICAgIHZvaWQgY29u
ZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAgZW51bSBDb25maWd1cmF0aW9uVGFza0ZsYWdz
IHsKKyAgICAgICAgTm9UYXNrID0gMCwKKyAgICAgICAgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNr
ID0gMSA8PCAwLAorICAgICAgICBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8
IDEsCisgICAgICAgIFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMiwK
KyAgICAgICAgV2F0Y2hkb2dUaW1lckNvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAzLAorICAgIH07
CisgICAgdHlwZWRlZiB1bnNpZ25lZCBDb25maWd1cmF0aW9uVGFza3M7CisgICAgU3RyaW5nIHRv
U3RyaW5nKENvbmZpZ3VyYXRpb25UYXNrcyk7CisKKyAgICB2b2lkIHNjaGVkdWxlRGVsYXllZFRh
c2soQ29uZmlndXJhdGlvblRhc2tzKTsKKyAgICB2b2lkIHRhc2tUaW1lckZpcmVkKCk7CisKKyAg
ICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOworCisgICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2Vy
JiBsb2dnZXIoKTsKKworICAgIFJ1bkxvb3A6OlRpbWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+
IG1fdGFza1RpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+
IG1fd2F0Y2hkb2dUaW1lcjsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50U3Rh
dGU+PiBtX2NsaWVudFN0YXRlOworICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3Bs
YXliYWNrVGFyZ2V0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jaz4gbV9waWNrZXJPdmVycmlkZTsKKyAgICBDb25maWd1cmF0aW9uVGFz
a3MgbV90YXNrRmxhZ3MgeyBOb1Rhc2sgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFT
ZXNzaW9uTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBTZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50
ZXJ2YWw7CisgICAgYm9vbCBtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fdGFyZ2V0Q2hhbmdlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9ja1BpY2tl
ckVuYWJsZWQgeyBmYWxzZSB9OworfTsKKworU3RyaW5nIG1lZGlhUHJvZHVjZXJTdGF0ZVN0cmlu
ZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3M+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBmbGFncykgeyBy
ZXR1cm4gV2ViQ29yZTo6bWVkaWFQcm9kdWNlclN0YXRlU3RyaW5nKGZsYWdzKTsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJD
bGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkv
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIK
KyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisj
aW5jbHVkZSAiUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIHNldFBsYXli
YWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIsIGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZChQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
UGxhdGZvcm1WaWV3KiBwbGF0Zm9ybVZpZXcoKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDkxLDE4ICs0MDkxLDgg
QEAKIAkJQzZGMDkwMEExNDMyN0I2MTAwNjg1ODQ5IC8qIE11dGF0aW9uQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjA5MDAxMTQzMjdC
NjEwMDY4NTg0OSAvKiBNdXRhdGlvbkNhbGxiYWNrLmggKi87IH07CiAJCUM2RjA5MDBGMTQzMjdC
NjEwMDY4NTg0OSAvKiBNdXRhdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOTAwNjE0MzI3QjYxMDA2ODU4NDkgLyogTXV0YXRp
b25PYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUM2RjA5MDJEMTQzMjdENEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjA5MDI1MTQz
MjdENEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuaCAqLzsgfTsKLQkJQzkwMjdGNDIx
QjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlh
U2Vzc2lvbi5oICovOyB9OwotCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1v
dGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzkwODQzQ0UxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCAqLzsg
fTsKLQkJQzkwRjY1NTUxQjIyNTNCMTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwRjY1NTMx
QjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovOyB9OwotCQlDOTBG
NjU1NjFCMjI1M0JFMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwRjY1NTQxQjIyNTM5NjAwMjE2
M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLzsgfTsKLQkJQzkzN0ZFOEQxQjFGNjgyMTAw
OEVDQzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5NjhCMkU2MUIxRTcyRjcwMEVGMUY4MSAv
KiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmggKi87IH07Ci0JCUM5NkY1RUM1MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk2RjVFQzExQjU4NzIy
NjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmggKi87IH07
Ci0JCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDOTZGNUVDMzFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXIuY3BwICovOyB9OwotCQlDOTZGNUVDODFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM5NkY1RUM0MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlci5oICovOyB9OwogCQlDOTkwNTgxMzFFMzJDNzVGMDA3M0JEREEg
LyogU3VjY2Vzc09yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzlENDY3MDUxRTYwQzQ2NTAw
ODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM5RDQ2NzA0MUU2MEMzRUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzlE
ODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUQ4NTFFRTFCMzlEQzc4MDA4
NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVk
aWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDOUY4N0NGRDFCMjhFNUY2MDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0EzQkY2
N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyog
U2Nyb2xsQW5pbWF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDQTZDMTUzMDIyMEI5OENDMDA1NUNCRkMgLyogSlNWYWx1ZUluV3JhcHBlZE9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMx
QUUzQjgxRkI4MEVBRTAwRjVFRkIyIC8qIEpTVmFsdWVJbldyYXBwZWRPYmplY3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQTdFOUI0OTI0MzYx
REM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E3RTlCNDcyNDM2MURDNTAwNEU4OUY2IC8q
IENvbnRlbnRmdWxQYWludENoZWNrZXIuaCAqLzsgfTsKQEAgLTE0MTU2LDI5ICsxNDE0Niw4IEBA
CiAJCUM2RjA5MDI0MTQzMjdENEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNdXRhdGlvbk9ic2VydmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGMDkwMjUxNDMyN0Q0RjAwNjg1ODQ5
IC8qIEpTTXV0YXRpb25PYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU011dGF0aW9uT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZG
MDkxN0UxNDNBMkJCOTAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTAyNkI2MzFCMUNGNUFCMDAx
RDk5QTcgLyogSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFSZW1vdGVDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUM5MDI2QjY0MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3Rl
Q29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVJlbW90
ZUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI3RjNFMUIxRDBB
QjkwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI3RjNGMUIxRDBBRDIwMEJGQkZFRiAvKiBN
ZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwMjdGNDAxQjFE
MEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkw
ODQzQ0QxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFSZW1vdGVDb250cm9scy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDg0M0NFMUIxOEU0N0QwMEI2ODU2NCAvKiBN
ZWRpYVJlbW90ZUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhUmVtb3RlQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwRjY1
NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MEY2NTU0MUIyMjUzOTYwMDIxNjNBMSAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
U2Vzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkzNDU4QkIx
QjE4RDc3RTAwODhFRTEyIC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDOTY4QjJFNTFCMUU3MDQ1MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudCtNZWRp
YVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lvbi5pZGwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTY4QjJFNjFCMUU3MkY3MDBFRjFGODEgLyog
SFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MTWVkaWFF
bGVtZW50TWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NjhC
MkU3MUIxRTc3ODEwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTZGNUVDMTFCNTg3
MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzk2RjVFQzIxQjU4NzIy
NjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUMz
MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUM0
MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOTkwNTgxMjFFMzJCNzM0
MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1Y2Nlc3NPci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUQ0NjcwNDFFNjBDM0VCMDA4MTk1RkIgLyogQXV0
b3BsYXlFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvcGxheUV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5RDg1MUVFMUIzOURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Np
b25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Np
b25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOURBREJDOTFCMUQz
QjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDOURBREJDQTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVNlc3Npb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlGODdDRkQxQjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vz
c2lvbkV2ZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkV2ZW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJ
bWFnZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxl
SW1hZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xp
Y3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xp
Y3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2OTYsMzAgKzE2NjY1LDYg
QEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKLQkJMDcwOUQ3OEIx
QUU1NTUyRTAwNEU0MkY4IC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3Vw
OwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzk2OEIyRTUxQjFFNzA0NTAwRUYxRjgxIC8qIEhUTUxN
ZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbCAqLywKLQkJCQlDOTY4QjJFNzFCMUU3NzgxMDBF
RjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHAgKi8sCi0JCQkJQzk2OEIy
RTYxQjFFNzJGNzAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCAqLywK
LQkJCQlDOTA4NDNDRDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9scy5jcHAg
Ki8sCi0JCQkJQzkwODQzQ0UxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMu
aCAqLywKLQkJCQlDOTM0NThCQjFCMThENzdFMDA4OEVFMTIgLyogTWVkaWFSZW1vdGVDb250cm9s
cy5pZGwgKi8sCi0JCQkJQzkwMjdGM0YxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5j
cHAgKi8sCi0JCQkJQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICov
LAotCQkJCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaWRsICovLAot
CQkJCUM5Rjg3Q0ZEMUIyOEU1RjYwMDk3OUI4MyAvKiBNZWRpYVNlc3Npb25FdmVudHMuaCAqLywK
LQkJCQlDOTBGNjU1MzFCMjI1Mzk2MDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAg
Ki8sCi0JCQkJQzkwRjY1NTQxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIu
aCAqLywKLQkJCQlDOUQ4NTFFRTFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRh
dGEuaCAqLywKLQkJCQk0NDZEQzY0NjI0QTI5RDlCMDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAotCQkJCTA3MDlENzhDMUFFNTU1NTQwMDRFNDJG
OCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKLQkJCQkwNzA5RDc4RDFBRTU1NTU0
MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oICovLAotCQkJCTA3MDlENzk0MUFF
NTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmggKi8sCi0JCQkp
OwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07CiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMzI0OSw3ICsyMzE5NCw2IEBA
CiAJCQkJQ0RCRDNEMjcxRkU4NUM5MjAwMTJDNTQ1IC8qIG1lZGlhY2FwYWJpbGl0aWVzICovLAog
CQkJCUNEOUEzN0Y1MTdDN0Q5MzYwMEM1RkE3QSAvKiBtZWRpYWNvbnRyb2xzICovLAogCQkJCTRE
M0IwMEEwMjE1RDVDMEYwMDc2Qjk4MyAvKiBtZWRpYXJlY29yZGVyICovLAotCQkJCTA3MDlENzhC
MUFFNTU1MkUwMDRFNDJGOCAvKiBtZWRpYXNlc3Npb24gKi8sCiAJCQkJQjFBOTQyREQxNUI1Q0Uy
MjAwRDUyNUQxIC8qIG1lZGlhc291cmNlICovLAogCQkJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1
MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk3MUQ2QUEzOTFEQTRFQUY3MDBCMjM5NjkgLyogbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzICovLApAQCAtMjQzMzYsMTAgKzI0MjgwLDYgQEAKIAkJCQkyRDlC
RjcxMTFEQkZEOTE0MDA3QTdEOTkgLyogSlNNZWRpYUVuY3J5cHRlZEV2ZW50LmggKi8sCiAJCQkJ
RTQ0NjE0MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5jcHAgKi8sCiAJCQkJRTQ0
NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oICovLAotCQkJCUM5MDI2QjYz
MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3RlQ29udHJvbHMuY3BwICovLAotCQkJCUM5
MDI2QjY0MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3RlQ29udHJvbHMuaCAqLywKLQkJ
CQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uY3BwICovLAotCQkJ
CUM5REFEQkNBMUIxRDNCMjUwMDFGMTdEOCAvKiBKU01lZGlhU2Vzc2lvbi5oICovLAogCQkJCTdF
NDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3BwICovLAog
CQkJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAq
LywKIAkJCQk5MDAxNzg3RTEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRp
dmVzLmNwcCAqLywKQEAgLTI2ODYwLDcgKzI2ODAwLDYgQEAKIAkJCQk2NTgyQTE0ODA5OTk5RDZD
MDBCRUVCNkQgLyogbWFjICovLAogCQkJCTlBQzZGMDIwMjExNDhGMUUwMENCREEwNiAvKiBtZWRp
YWNhcGFiaWxpdGllcyAqLywKIAkJCQk0RDNCNTAxMjIxN0U1OEEzMDA2NjVEQjEgLyogbWVkaWFy
ZWNvcmRlciAqLywKLQkJCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9u
ICovLAogCQkJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJ
CQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyogbW9jayAqLywKIAkJCQk2NTZCODRENzBBRUEx
Q0U5MDBBMDk1QjQgLyogbmV0d29yayAqLywKQEAgLTI3MTYzLDI1ICsyNzEwMiw2IEBACiAJCQlw
YXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlDOTZGNUVC
RjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9uICovID0gewotCQkJaXNhID0gUEJYR3Jv
dXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDOTZGNUVDMDFCNTg3MjI2MDA5MUVBOUQgLyogbWFj
ICovLAotCQkJCUM5NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5jcHAgKi8sCi0JCQkJQzk2RjVFQzQxQjU4NzIyNjAwOTFFQTlEIC8qIE1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IG1l
ZGlhc2Vzc2lvbjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUM5NkY1RUMw
MUI1ODcyMjYwMDkxRUE5RCAvKiBtYWMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNo
aWxkcmVuID0gKAotCQkJCUM5NkY1RUMxMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oICovLAotCQkJCUM5NkY1RUMyMUI1ODcyMjYwMDkxRUE5
RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbSAqLywKLQkJCSk7Ci0J
CQlwYXRoID0gbWFjOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQ0QwREJC
M0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTI3NTYyLDkgKzI3NDgyLDEzIEBACiAJCUNFMjYxNjlEMTg3RTY1
NTQwMDc5NTVGMyAvKiBhaXJwbGF5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk0NDZEQzY0NjI0QTI5RDlCMDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAogCQkJCUE1REVCRDlGMTZGQjkwODcwMDgzNkZF
MCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLywKIAkJCQlB
NURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5oICovLAogCQkJCUE1REVCREExMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbCAqLywKKwkJCQkwNzA5RDc4QzFBRTU1NTU0
MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8sCisJCQkJMDcwOUQ3OEQx
QUU1NTU1NDAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKKwkJCQkwNzA5
RDc5NDFBRTU1QTI5MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBhaXJwbGF5OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTMxNTYxLDcgKzMxNDg1LDYgQEAKIAkJCQlBOEVBN0NBQjBBMTkyQjlDMDBBOEVGNUYgLyog
SFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNBNTBDRDYzMzEw
MDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q1MjA5
RTYxQjBCRDlFMTAwNzcxODRFIC8qIEhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQzkzN0ZFOEQxQjFGNjgyMTAwOEVDQzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVBMjJGQ0Q3QzYwMDEyMDRFQyAv
KiBIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxheWJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3OUY0MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MTWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJGMzFFMDc1MUZBM0I2MkIwMEUwNTlCQSAvKiBIVE1MTWVudUl0ZW1FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTMyOTAzLDIzICszMjgyNiwxNiBAQAogCQkJCTQxNEI3RkFEMjRE
ODFDQzEwMDMzRDQ0MiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRENzNGOTRFMjE4QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTc2RTg5NjIzQzM1MzdCMDAzRTgz
RkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTA4NDNE
MDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlFIC8qIE1lZGlhUmVtb3RlU29mdExpbmsuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFRUZDRDdBMTlEQjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291
cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQkY5REIzQzFEMzk3M0FEMDAyNkFFQjcg
LyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFCMTI0RDhEMUQzODBCNzAwMEVD
REZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQkVBRUFE
MTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0
aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTAyN0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVk
aWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMg
LyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREE5NTkzRjI0MTJC
QUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQzk2RjVFQzgxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lv
bkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTZGNUVDNTFCNTg3
MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUM5MEY2NTU2MUIyMjUzQkUwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25N
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTdGN0FFRjIxMzlCRjZGMDBGQkE3RUMgLyog
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzYzOEE5OTE4
ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQxRUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRp
YVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2
RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1
MTQ2LDggKzM1MDYyLDYgQEAKIAkJCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFT
YW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVC
QTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBT
b3VyY2VzICovLAotCQkJCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDOTBGNjU1NTFCMjI1
M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAw
RTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDEwICsyOTgs
NiBAQAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotI2VuZGlmCi0KICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgpAQCAtNDE3NSwyMiAr
NDE3MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQKICAgICBz
dGF0ZSB8PSBNZWRpYVN0cmVhbVRyYWNrOjpjYXB0dXJlU3RhdGUoKnRoaXMpOwogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogc291
cmNlRWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6OmVsZW1lbnRXaXRoSUQoc291cmNlRWxlbWVu
dElEKSkgewotICAgICAgICBpZiAoc291cmNlRWxlbWVudC0+aXNQbGF5aW5nKCkpCi0gICAgICAg
ICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpJc1NvdXJjZUVsZW1lbnRQbGF5aW5nOwotCi0g
ICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc291cmNlRWxlbWVudC0+c2Vzc2lvbigpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byogY29udHJvbHMgPSBzZXNzaW9uLT5jb250cm9scygpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzLT5wcmV2aW91c1RyYWNrRW5hYmxlZCgpKQotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpJc1ByZXZpb3VzVHJhY2tD
b250cm9sRW5hYmxlZDsKLSAgICAgICAgICAgICAgICBpZiAoY29udHJvbHMtPm5leHRUcmFja0Vu
YWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgfD0gTWVkaWFQcm9kdWNlcjo6SXNO
ZXh0VHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSNlbmRpZgotCiAgICAgaWYgKG1fdXNlckhhc0ludGVyYWN0ZWRXaXRoTWVkaWFFbGVtZW50KQog
ICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpIYXNVc2VySW50ZXJhY3RlZFdpdGhNZWRp
YUVsZW1lbnQ7CiAKQEAgLTc0NTksMTcgKzc0MzksNiBAQCB2b2lkIERvY3VtZW50OjpwbGF5YmFj
a1RhcmdldFBpY2tlcldhc0RpCiAKICNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLU1lZGlhU2Vzc2lvbiYgRG9j
dW1lbnQ6OmRlZmF1bHRNZWRpYVNlc3Npb24oKQotewotICAgIGlmICghbV9kZWZhdWx0TWVkaWFT
ZXNzaW9uKQotICAgICAgICBtX2RlZmF1bHRNZWRpYVNlc3Npb24gPSBNZWRpYVNlc3Npb246OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICByZXR1cm4gKm1fZGVmYXVsdE1l
ZGlhU2Vzc2lvbjsKLX0KLQotI2VuZGlmCi0KIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
RG9jdW1lbnQ6OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0
CiB7CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDYgQEAgY2xh
c3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7
CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNzIE1lZGlhUXVlcnlNYXRjaGVyOwotY2xhc3Mg
TWVkaWFTZXNzaW9uOwogY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7CiBjbGFzcyBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3MgTm9kZUZpbHRlcjsKQEAgLTEwOTUs
MTAgKzEwOTQsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCB2aWRlb1BsYXliYWNrUmVxdWlyZXNVc2Vy
R2VzdHVyZSgpIGNvbnN0OwogICAgIGJvb2wgbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5KCkg
Y29uc3Q7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBNZWRpYVNlc3Npb24mIGRl
ZmF1bHRNZWRpYVNlc3Npb24oKTsKLSNlbmRpZgotCiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdT
dGF0ZURpZENoYW5nZShQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIHN0b3JhZ2VCbG9ja2lu
Z1N0YXRlRGlkQ2hhbmdlKCk7CkBAIC0xOTUwLDEwICsxOTQ1LDYgQEAgcHJpdmF0ZToKICAgICBU
YXJnZXRDbGllbnRUb0lkTWFwIG1fY2xpZW50VG9JRE1hcDsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0gICAgUmVmUHRyPE1lZGlhU2Vzc2lvbj4gbV9kZWZhdWx0TWVkaWFT
ZXNzaW9uOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBSZWZQ
dHI8SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk+IG1faWRiQ29ubmVjdGlvblByb3h5Owog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAgTWVkaWFDb250cm9sbGVyIGNvbmRp
dGlvbmFsPVZJREVPCiBNZWRpYURldmljZXMgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRp
YUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCiBNZWRpYVF1ZXJ5TGlzdAot
TWVkaWFSZW1vdGVDb250cm9scyBjb25kaXRpb25hbD1NRURJQV9TRVNTSU9OCiBNZWRpYVJlY29y
ZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVE
SUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjY3NDUwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1LDEwICsxMzUsNiBAQAogI2luY2x1ZGUgIldlYktpdFBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RXZlbnQuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0j
aW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKQEAg
LTMxNiwzMCArMzEyLDYgQEAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4mIEhUTUxNZWRpYUVs
ZQogICAgIHJldHVybiBlbGVtZW50czsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
dHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBIVE1MTWVkaWFFbGVtZW50Kj4gSURUb0VsZW1lbnRN
YXA7Ci0KLXN0YXRpYyBJRFRvRWxlbWVudE1hcCYgZWxlbWVudElEc1RvRWxlbWVudHMoKQotewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJRFRvRWxlbWVudE1hcD4gbWFwOwotICAgIHJldHVy
biBtYXA7Ci19Ci0KLUhUTUxNZWRpYUVsZW1lbnQqIEhUTUxNZWRpYUVsZW1lbnQ6OmVsZW1lbnRX
aXRoSUQodWludDY0X3QgaWQpCi17Ci0gICAgaWYgKGlkID09IEhUTUxNZWRpYUVsZW1lbnRJbnZh
bGlkSUQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGVsZW1lbnRJRHNU
b0VsZW1lbnRzKCkuZ2V0KGlkKTsKLX0KLQotc3RhdGljIHVpbnQ2NF90IG5leHRFbGVtZW50SUQo
KQotewotICAgIHN0YXRpYyB1aW50NjRfdCBlbGVtZW50SUQgPSAwOwotICAgIHJldHVybiArK2Vs
ZW1lbnRJRDsKLX0KLSNlbmRpZgotCiBzdHJ1Y3QgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gewog
ICAgIGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24qIHNlc3Npb247CiAgICAgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZTsKQEAgLTUxNSwxMyArNDg3
LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdAogICAgIH0KICNl
bmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgbV9lbGVtZW50SUQgPSBuZXh0
RWxlbWVudElEKCk7Ci0gICAgZWxlbWVudElEc1RvRWxlbWVudHMoKS5hZGQobV9lbGVtZW50SUQs
IHRoaXMpOwotCi0gICAgc2V0U2Vzc2lvbkludGVybmFsKGRvY3VtZW50LmRlZmF1bHRNZWRpYVNl
c3Npb24oKSk7Ci0jZW5kaWYKLQogICAgIHJlZ2lzdGVyV2l0aERvY3VtZW50KGRvY3VtZW50KTsK
IAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCkBAIC01ODYsMTUgKzU1
MSw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBpZiAobV9p
c29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xhdGVkV29ybGQtPmNsZWFyV3JhcHBlcnMoKTsK
IAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGlmIChtX3Nlc3Npb24pIHsKLSAgICAg
ICAgbV9zZXNzaW9uLT5yZW1vdmVNZWRpYUVsZW1lbnQoKnRoaXMpOwotICAgICAgICBtX3Nlc3Np
b24gPSBudWxscHRyOwotICAgIH0KLQotICAgIGVsZW1lbnRJRHNUb0VsZW1lbnRzKCkucmVtb3Zl
KG1fZWxlbWVudElEKTsKLSNlbmRpZgotCiAgICAgbV9zZWVrVGFza1F1ZXVlLmNsb3NlKCk7CiAg
ICAgbV9yZXN1bWVUYXNrUXVldWUuY2xvc2UoKTsKICAgICBtX3Byb21pc2VUYXNrUXVldWUuY2xv
c2UoKTsKQEAgLTM0NTAsMzEgKzM0MDYsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJ
bnRlcm5hbCgpCiAKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50
KTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgICAgICAvLyA2LjMgQWN0aXZhdGlu
ZyBhIG1lZGlhIHNlc3Npb24gZnJvbSBhIG1lZGlhIGVsZW1lbnQKLSAgICAgICAgLy8gV2hlbiB0
aGUgcGxheSgpIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgcGF1c2VkIGF0dHJpYnV0ZSBpcyB0cnVl
LCBhbmQgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRlIGhhcyB0aGUgdmFsdWUKLSAgICAgICAgLy8g
SEFWRV9GVVRVUkVfREFUQSBvciBIQVZFX0VOT1VHSF9EQVRBLCB0aGVuCi0gICAgICAgIC8vIDEu
IExldCBtZWRpYSBzZXNzaW9uIGJlIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBtZWRpYSBzZXNz
aW9uLgotICAgICAgICAvLyAyLiBJZiB3ZSBhcmUgbm90IGN1cnJlbnRseSBpbiBtZWRpYSBzZXNz
aW9uJ3MgbGlzdCBvZiBhY3RpdmUgcGFydGljaXBhdGluZyBtZWRpYSBlbGVtZW50cyB0aGVuIGFw
cGVuZAotICAgICAgICAvLyAgICBvdXJzZWx2ZXMgdG8gdGhpcyBsaXN0LgotICAgICAgICAvLyAz
LiBMZXQgYWN0aXZhdGVkIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgbWVkaWEgc2Vzc2lv
biBpbnZvY2F0aW9uIGFsZ29yaXRobSBmb3IgbWVkaWEgc2Vzc2lvbi4KLSAgICAgICAgLy8gNC4g
SWYgYWN0aXZhdGVkIGlzIGZhaWx1cmUsIHBhdXNlIG91cnNlbHZlcy4KLSAgICAgICAgaWYgKG1f
cmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VHSF9EQVRBIHx8IG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZV
VFVSRV9EQVRBKSB7Ci0gICAgICAgICAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgICAgICAg
ICAgbV9zZXNzaW9uLT5hZGRBY3RpdmVNZWRpYUVsZW1lbnQoKnRoaXMpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKG1fc2Vzc2lvbi0+a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2Uo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmZvY3Vz
ZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKG1fZWxlbWVudElEKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIW1fc2Vzc2lvbi0+aW52b2tlKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcGF1c2UoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAg
ICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCiAgICAgICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOwogICAgIH0gZWxzZSBpZiAo
bV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpCkBAIC0zNjc3LDExICszNjA4LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRlZChib29sIG11dAogCiAgICAgICAgIHVwZGF0
ZVNob3VsZFBsYXkoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgICAgICBkb2N1
bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAgICAg
IGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0
YXRlKCk7CkBAIC01MDY4LDExICs0OTk1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckNoYXJhYwogICAgICAgICBzZXRBdXRvcGxheUV2ZW50UGxheWJhY2tTdGF0ZShBdXRv
cGxheUV2ZW50UGxheWJhY2tTdGF0ZTo6UHJldmVudGVkQXV0b3BsYXkpOwogICAgIH0KIAotI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVk
aWEobV9lbGVtZW50SUQpOwotI2Vsc2UKICAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01l
ZGlhKCk7Ci0jZW5kaWYKIAogICAgIGNoZWNrRm9yQXVkaW9BbmRWaWRlbygpOwogICAgIHVwZGF0
ZVNsZWVwRGlzYWJsaW5nKCk7CkBAIC01MjQ1LDEyICs1MTY4LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAgICAgICBtX3BsYXllci0+c2V0Vm9sdW1lKGVmZmVj
dGl2ZVZvbHVtZSgpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBk
b2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAg
ZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCi0KICNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC01MzY3LDExICs1Mjg1LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRQbGF5aW5nKGJvb2wgcAogICAgIGlmIChtX3BsYXlpbmcpCiAgICAg
ICAgIHNjaGVkdWxlTm90aWZ5QWJvdXRQbGF5aW5nKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsK
LSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRl
TWVkaWFTdGF0ZSgpOwpAQCAtNzU5NSwxMSArNzUwOSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlTWVkaWFTdGF0ZSgKIAogICAgIG1fbWVkaWFTdGF0ZSA9IHN0YXRlOwogICAgIG1f
bWVkaWFTZXNzaW9uLT5tZWRpYVN0YXRlRGlkQ2hhbmdlKG1fbWVkaWFTdGF0ZSk7Ci0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0gICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSht
X2VsZW1lbnRJRCk7Ci0jZWxzZQorCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwotI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAtNzcwNCwxMSArNzYxNSw2IEBAIGRvdWJsZSBI
VE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVWb2x1bWUKICAgICBkb3VibGUgdm9sdW1lTXVsdGlw
bGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsKICAgICBpZiAobV9tZWRpYUNv
bnRyb2xsZXIpCiAgICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXIt
PnZvbHVtZSgpOwotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGlmIChtX3Nob3VsZER1
Y2spCi0gICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0gMC4yNTsKLSNlbmRpZgotCiAgICAgcmV0
dXJuIG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGllcjsKIH0KIApAQCAtNzc2OSw3MCArNzY3NSw2
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y2FuU2F2ZU1lZGlhRGF0YSgKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotZG91YmxlIEhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXllclZvbHVtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGxheWVyID8g
bV9wbGF5ZXItPnZvbHVtZSgpIDogMDsKLX0KLQotTWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVt
ZW50OjpzZXNzaW9uKCkgY29uc3QKLXsKLSAgICBSZWZQdHI8TWVkaWFTZXNzaW9uPiBzZXNzaW9u
ID0gbV9zZXNzaW9uLmdldCgpOwotICAgIGlmIChzZXNzaW9uICYmIHNlc3Npb24gPT0gJmRvY3Vt
ZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIHJldHVybiBzZXNzaW9uLmdldCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFNlc3Npb24oTWVkaWFTZXNzaW9uKiBzZXNzaW9uKQotewotICAgIC8vIDYuMS4gRXh0ZW5zaW9u
cyB0byB0aGUgSFRNTE1lZGlhRWxlbWVudCBpbnRlcmZhY2UKLSAgICAvLyAxLiBMZXQgbSBiZSB0
aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVzdGlvbi4KLSAgICAvLyAyLiBMZXQgb2xkIG1lZGlhIHNl
c3Npb24gYmUgbeKAmXMgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBpdCBoYXMgb25lLCBhbmQg
bnVsbCBvdGhlcndpc2UuCi0gICAgLy8gMy4gTGV0IG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lv
biBiZSB0aGUgbmV3IHZhbHVlIG9yIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dOKAmXMg
bWVkaWEgc2Vzc2lvbiBpZiB0aGUgbmV3IHZhbHVlIGlzIG51bGwuCi0gICAgLy8gNC4gTGV0IG5l
dyBtZWRpYSBzZXNzaW9uIGJlIG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbi4KLQotICAgIC8v
IDUuIFVwZGF0ZSBtZWRpYSBzZXNzaW9uczogSWYgb2xkIG1lZGlhIHNlc3Npb24gYW5kIG5ldyBt
ZWRpYSBzZXNzaW9uIGFyZSB0aGUgc2FtZSAod2hldGhlciBib3RoIG51bGwgb3IgYm90aCB0aGUg
c2FtZSBtZWRpYSBzZXNzaW9uKSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYg
KG1fc2Vzc2lvbi5nZXQoKSA9PSBzZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bV9zZXNzaW9uKSB7Ci0gICAgICAgIC8vIDYuIElmIG0gaXMgYW4gYXVkaW8tcHJvZHVjaW5nIHBh
cnRpY2lwYW50IG9mIG9sZCBtZWRpYSBzZXNzaW9uLCB0aGVuIHBhdXNlIG0gYW5kIHJlbW92ZSBt
IGZyb20gb2xkIG1lZGlhIHNlc3Npb27igJlzIGxpc3Qgb2YgYXVkaW8tcHJvZHVjaW5nIHBhcnRp
Y2lwYW50cy4KLSAgICAgICAgaWYgKG1fc2Vzc2lvbi0+aXNNZWRpYUVsZW1lbnRBY3RpdmUoKnRo
aXMpKQotICAgICAgICAgICAgcGF1c2UoKTsKLQotICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZU1l
ZGlhRWxlbWVudCgqdGhpcyk7Ci0KLSAgICAgICAgLy8gNy4gSWYgb2xkIG1lZGlhIHNlc3Npb24g
aXMgbm90IG51bGwgYW5kIG5vIGxvbmdlciBoYXMgb25lIG9yIG1vcmUgYXVkaW8tcHJvZHVjaW5n
IHBhcnRpY2lwYW50cywgdGhlbiBydW4gdGhlIG1lZGlhIHNlc3Npb24gZGVhY3RpdmF0aW9uIGFs
Z29yaXRobSBmb3Igb2xkIG1lZGlhIHNlc3Npb24uCi0gICAgICAgIGlmICghbV9zZXNzaW9uLT5o
YXNBY3RpdmVNZWRpYUVsZW1lbnRzKCkpCi0gICAgICAgICAgICBtX3Nlc3Npb24tPmRlYWN0aXZh
dGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoc2Vzc2lvbikKLSAgICAgICAgc2V0U2Vzc2lvbkludGVy
bmFsKCpzZXNzaW9uKTsKLSAgICBlbHNlCi0gICAgICAgIHNldFNlc3Npb25JbnRlcm5hbChkb2N1
bWVudCgpLmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7Ci19Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0U2Vzc2lvbkludGVybmFsKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKLXsKLSAgICBtX3Nl
c3Npb24gPSAmc2Vzc2lvbjsKLSAgICBzZXNzaW9uLmFkZE1lZGlhRWxlbWVudCgqdGhpcyk7Ci0g
ICAgbV9raW5kID0gc2Vzc2lvbi5raW5kKCk7Ci19Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2V0U2hvdWxkRHVjayhib29sIGR1Y2spCi17Ci0gICAgaWYgKG1fc2hvdWxkRHVjayA9PSBkdWNr
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Nob3VsZER1Y2sgPSBkdWNrOwotICAgIHVwZGF0
ZVZvbHVtZSgpOwotfQotCi0jZW5kaWYKLQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphbGxvd3NN
ZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkKCkKIHsKICAgICBpZiAocG90ZW50aWFs
bHlQbGF5aW5nKCkgJiYgbV9tZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVv
UGxheWJhY2soKSAmJiAhaXNGdWxsc2NyZWVuKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4MCwyMSArNDgwLDYgQEAg
cHVibGljOgogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGUpOwogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIFdFQkNPUkVf
RVhQT1JUIGRvdWJsZSBwbGF5ZXJWb2x1bWUoKSBjb25zdDsKLQotICAgIGNvbnN0IFN0cmluZyYg
a2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIHZvaWQgc2V0S2luZChjb25zdCBT
dHJpbmcmIGtpbmQpIHsgbV9raW5kID0ga2luZDsgfQotCi0gICAgTWVkaWFTZXNzaW9uKiBzZXNz
aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZXNzaW9uKE1lZGlhU2Vzc2lvbiopOwotCi0gICAg
dm9pZCBzZXRTaG91bGREdWNrKGJvb2wpOwotCi0gICAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnRXaXRoSUQodWludDY0X3QpOwotICAgIHVpbnQ2NF90IGVsZW1lbnRJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fZWxlbWVudElEOyB9Ci0jZW5kaWYKLQogICAgIFJlZlB0cjxWaWRlb1BsYXli
YWNrUXVhbGl0eT4gZ2V0VmlkZW9QbGF5YmFja1F1YWxpdHkoKTsKIAogICAgIE1lZGlhUGxheWVy
OjpQcmVsb2FkIHByZWxvYWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbG9hZDsgfQpAQCAt
NzAyLDEwICs2ODcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYp
IG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lk
IHNldFNlc3Npb25JbnRlcm5hbChNZWRpYVNlc3Npb24mKTsKLSNlbmRpZgotCiAgICAgU3RyaW5n
IG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgbWVkaWFQ
bGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTAzNywxMyArMTAxOCw2IEBA
IHByaXZhdGU6CiAgICAgLy8gY2FsbGluZyB0aGUgbWVkaWEgZW5naW5lIHJlY3Vyc2l2ZWx5Lgog
ICAgIGludCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrIHsgMCB9OwogCi0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0gICAgU3RyaW5nIG1fa2luZDsKLSAgICBSZWZQdHI8TWVkaWFT
ZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgYm9vbCBtX3Nob3VsZER1Y2sgeyBmYWxzZSB9OwotICAg
IHVpbnQ2NF90IG1fZWxlbWVudElEOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9tZWRpYVNvdXJjZTsKICAgICB1bnNpZ25lZCBt
X2Ryb3BwZWRWaWRlb0ZyYW1lcyB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDEyICs0NjMsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3Rh
dGVGbGFncywgdWludDY0X3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRvcGxheUV2
ZW50KEF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxBdXRvcGxheUV2ZW50RmxhZ3M+KSB7IH0KIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZpcnR1YWwgdm9pZCBoYXNNZWRpYVNlc3Np
b25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoY29uc3QgTWVkaWFTZXNzaW9uTWV0
YWRhdGEmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnRE
aWRDaGFuZ2UodWludDY0X3QpIHsgfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykK
ICAgICB2aXJ0dWFsIGJvb2wgd3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBW
ZWN0b3I8dWludDhfdD4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+
JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNp
b24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDEwICsxNTMsNiBAQAogI2luY2x1ZGUgIlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVk
aWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNlbmRpZgpAQCAtMjA2Miwz
MSArMjA1OCw2IEBAIHZvaWQgUGFnZTo6cmVzdW1lQWxsTWVkaWFCdWZmZXJpbmcoKQogI2VuZGlm
CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotdm9pZCBQYWdlOjpoYW5kbGVNZWRp
YUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZSkKLXsKLSAgICBzd2l0Y2ggKGV2ZW50VHlw
ZSkgewotICAgIGNhc2UgTWVkaWFFdmVudFR5cGU6OlBsYXlQYXVzZToKLSAgICAgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9nZ2xlUGxheWJhY2soKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6VHJhY2tOZXh0OgotICAgICAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5za2lwVG9OZXh0VHJhY2soKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6VHJhY2tQcmV2aW91czoKLSAgICAgICAgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuc2tpcFRvUHJldmlvdXNUcmFjaygpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgUGFnZTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1l
bnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQotewotICAgIGlmIChIVE1MTWVk
aWFFbGVtZW50KiBlbGVtZW50ID0gSFRNTE1lZGlhRWxlbWVudDo6ZWxlbWVudFdpdGhJRChlbGVt
ZW50SUQpKQotICAgICAgICBlbGVtZW50LT5zZXRWb2x1bWUodm9sdW1lLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKLX0KLQotI2VuZGlmCi0KIHVuc2lnbmVkIFBhZ2U6OnN1YmZyYW1lQ291bnQoKSBj
b25zdAogewogICAgIHJldHVybiBtYWluRnJhbWUoKS50cmVlKCkuZGVzY2VuZGFudENvdW50KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEwICs2Myw2IEBACiAjaW5jbHVkZSAi
QXBwbGljYXRpb25NYW5pZmVzdC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25FdmVudHMuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oIgogI2VuZGlmCkBAIC02NTYsMTEgKzY1Miw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wgY2FuVXNlKSB7IG1fY2FuVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UgPSBjYW5Vc2U7IH0KICAgICBib29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTsgfQogCi0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVNZWRpYUV2
ZW50KE1lZGlhRXZlbnRUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZvbHVtZU9m
TWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3QpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJD
bGllbnQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBy
ZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCIKLQotI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU1lZGlhU2Vz
c2lvbkludGVycnVwdGlvblByb3ZpZGVyOjpNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
cihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlckNsaWVudCYgY2xpZW50KQotICAgIDog
bV9jbGllbnQoJmNsaWVudCkKLXsKLX0KLQotTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXI6On5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcigpID0gZGVmYXVsdDsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaAkocmV2aXNp
b24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
cl9oCi0jZGVmaW5lIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyX2gKLQotI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0Nh
dGVnb3J5IHsKLSAgICBDb250ZW50LAotICAgIFRyYW5zaWVudCwKLSAgICBUcmFuc2llbnRTb2xv
Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlckNsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90
aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCB+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci19
OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyPiB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIoTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmKTsKLSAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlcigpOwotCi0gICAgLy8gVG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFz
c2VzLgotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgPSAw
OwotCi0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuICptX2NsaWVudDsgfQotCi1wcml2YXRlOgotICAgIE1lZGlhU2Vzc2lv
bkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50KiBtX2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYg
LyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJfaCAqLwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaAkocmV2aXNp
b24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9N
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oCShub25leGlzdGVudCkKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWNfaAotI2RlZmluZSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1h
Y19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5j
bHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyA6IHB1
YmxpYyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlciB7Ci1wdWJsaWM6Ci0gICAgdXNp
bmcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI6Ok1lZGlhU2Vzc2lvbkludGVycnVw
dGlvblByb3ZpZGVyOwotCi0gICAgdm9pZCBiZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMo
KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgb3Zl
cnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hYygpID0gZGVmYXVsdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCi0KLSNl
bmRpZiAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hY19oICovCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vbWFjL01lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMu
bW0JKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vz
c2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0JKG5vbmV4aXN0
ZW50KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0j
aW1wb3J0ICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIgotCi0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMg
Y29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERpZEJlZ2luUmluZ2luZ05vdGlmaWNhdGlvbiA9IENGU1RS
KCJDYWxsRGlkQmVnaW5SaW5naW5nIik7Ci1zdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERp
ZEVuZFJpbmdpbmdOb3RpZmljYXRpb24gPSBDRlNUUigiQ2FsbERpZEVuZFJpbmdpbmciKTsKLXN0
YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBjYWxsRGlkQ29ubmVjdE5vdGlmaWNhdGlvbiA9IENGU1RS
KCJDYWxsRGlkQ29ubmVjdCIpOwotCi1zdGF0aWMgdm9pZCBjYWxsRGlkQmVnaW5SaW5naW5nKENG
Tm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0
IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgQVNTRVJUX0FSRyhvYnNlcnZlciwgb2Jz
ZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyKiBwcm92aWRlciA9
IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlciopb2JzZXJ2ZXI7Ci0gICAgcHJvdmlk
ZXItPmNsaWVudCgpLmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1l
ZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpUcmFuc2llbnQpOwotfQotCi1zdGF0aWMg
dm9pZCBjYWxsRGlkRW5kUmluZ2luZyhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2Jz
ZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmKQotewotICAg
IEFTU0VSVF9BUkcob2JzZXJ2ZXIsIG9ic2VydmVyKTsKLSAgICBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlck1hYyogcHJvdmlkZXIgPSAoTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJNYWMqKW9ic2VydmVyOwotICAgIHByb3ZpZGVyLT5jbGllbnQoKS5kaWRSZWNlaXZlRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnk6OlRyYW5zaWVudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhbGxEaWRDb25uZWN0KENGTm90aWZp
Y2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQq
LCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgQVNTRVJUX0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIp
OwotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjKiBwcm92aWRlciA9IChN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyopb2JzZXJ2ZXI7Ci0gICAgTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmIGNsaWVudCA9IHByb3ZpZGVyLT5jbGll
bnQoKTsKLSAgICBjbGllbnQuZGlkUmVjZWl2ZUVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9u
KE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpUcmFuc2llbnQpOwotICAgIGNsaWVu
dC5kaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpbmdDYXRlZ29yeTo6Q29udGVudCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWM6OmJlZ2luTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpCi17
Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgbm90aWZpY2F0aW9uQ2VudGVyID0gQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJHZXREaXN0cmlidXRlZENlbnRlcigpOwotICAgIENGTm90aWZpY2F0aW9u
Q2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCB0aGlzLCBjYWxsRGlkQmVnaW5S
aW5naW5nLCBjYWxsRGlkQmVnaW5SaW5naW5nTm90aWZpY2F0aW9uLCBudWxscHRyLCBDRk5vdGlm
aWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3RpZmljYXRpb25DZW50ZXIsIHRoaXMsIGNhbGxE
aWRFbmRSaW5naW5nLCBjYWxsRGlkRW5kUmluZ2luZ05vdGlmaWNhdGlvbiwgbnVsbHB0ciwgQ0ZO
b3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENG
Tm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCB0aGlzLCBj
YWxsRGlkQ29ubmVjdCwgY2FsbERpZENvbm5lY3ROb3RpZmljYXRpb24sIG51bGxwdHIsIENGTm90
aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYzo6c3RvcExpc3RlbmluZ0Zvcklu
dGVycnVwdGlvbnMoKQotewotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVtb3ZlRXZlcnlPYnNl
cnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldERpc3RyaWJ1dGVkQ2VudGVyKCksIHRoaXMpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VT
U0lPTikgJiYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsMTEgKzI4NSw2IEBACiAjaW5jbHVkZSAiV2Vi
S2l0QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIu
aCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNs
dWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2VuZGlmCkBAIC00Mjg2LDU3ICs0
MjgxLDggQEAgYm9vbCBJbnRlcm5hbHM6OmVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheQogewogICAg
IHJldHVybiBlbGVtZW50LmlzRGlzYWJsaW5nU2xlZXAoKTsKIH0KLQogI2VuZGlmIC8vIEVOQUJM
RShWSURFTykKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi12b2lkIEludGVybmFsczo6
c2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdvcnkpCi17Ci0gICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRp
b24oY2F0ZWdvcnkpOwotfQotCi12b2lkIEludGVybmFsczo6c2VuZE1lZGlhU2Vzc2lvbkVuZE9m
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5
IGNhdGVnb3J5KQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJl
Y2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihjYXRlZ29yeSk7Ci19Ci0KLVN0cmlu
ZyBJbnRlcm5hbHM6Om1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShNZWRpYVNlc3Npb24qIHNlc3Np
b24pIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChzZXNzaW9uLT5jdXJyZW50U3RhdGUoKSkgewotICAg
IGNhc2UgTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlOgotICAgICAgICByZXR1cm4gImFjdGl2
ZSI7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OlN0YXRlOjpJbnRlcnJ1cHRlZDoKLSAgICAgICAg
cmV0dXJuICJpbnRlcnJ1cHRlZCI7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OlN0YXRlOjpJZGxl
OgotICAgICAgICByZXR1cm4gImlkbGUiOwotICAgIH0KLX0KLQotZG91YmxlIEludGVybmFsczo6
bWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUX0FSRyhlbGVtZW50LCBlbGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVu
dC0+cGxheWVyVm9sdW1lKCk7Ci19Ci0KLXZvaWQgSW50ZXJuYWxzOjpzZW5kTWVkaWFDb250cm9s
RXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQpCi17Ci0gICAgLy8gRklYTUU6IE5vIGdvb2Qg
cmVhc29uIHRvIHVzZSBhIHNpbmdsZSBmdW5jdGlvbiB3aXRoIGFuIGFyZ3VtZW50IGluc3RlYWQg
b2YgdGhyZWUgZnVuY3Rpb25zLgotICAgIHN3aXRjaCAoZXZlbnQpIHsKLSAgICBjYXNlIE1lZGlD
b250cm9sRXZlbnQ6OlBsYXlQYXVzZToKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2lu
Z2xldG9uKCkudG9nZ2xlUGxheWJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRp
Q29udHJvbEV2ZW50OjpOZXh0VHJhY2s6Ci0gICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNp
bmdsZXRvbigpLnNraXBUb05leHRUcmFjaygpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1l
ZGlDb250cm9sRXZlbnQ6OlByZXZpb3VzVHJhY2s6Ci0gICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNpbmdsZXRvbigpLnNraXBUb1ByZXZpb3VzVHJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KICNpZiBFTkFCTEUo
V0VCX0FVRElPKQogdm9pZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhj
b25zdCBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlv
Q29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcp
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oIgotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiTWVkaWFFbGVtZW50U2Vzc2lvbi5oIgogI2Vu
ZGlmCkBAIC02NjYsMTUgKzY2Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGVsZW1lbnRJc0Jsb2Nr
aW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZklu
dGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSk7
Ci0gICAgdm9pZCBzZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24o
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkpOwotICAgIFN0cmluZyBtZWRpYVNlc3Np
b25DdXJyZW50U3RhdGUoTWVkaWFTZXNzaW9uJikgY29uc3Q7Ci0gICAgZG91YmxlIG1lZGlhRWxl
bWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7Ci0gICAgZW51bSBjbGFz
cyBNZWRpYUNvbnRyb2xFdmVudCB7IFBsYXlQYXVzZSwgTmV4dFRyYWNrLCBQcmV2aW91c1RyYWNr
IH07Ci0gICAgdm9pZCBzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQpOwot
I2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQg
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBkZXZpY2VOYW1lLCBjb25zdCBTdHJpbmcmIGRldmljZVN0YXRlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTgg
KzQ2LDYgQEAgZW51bSBSZXNvdXJjZUxvYWRQcmlvcml0eSB7CiAgICAgIlJlc291cmNlTG9hZFBy
aW9yaXR5VmVyeUhpZ2giCiB9OwogCi1bQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gZW51bSBN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSB7Ci0gICAgImNvbnRlbnQiLAotICAgICJ0
cmFuc2llbnQiLAotICAgICJ0cmFuc2llbnQtc29sbyIKLX07Ci0KLVtDb25kaXRpb25hbD1NRURJ
QV9TRVNTSU9OXSBlbnVtIE1lZGlhQ29udHJvbEV2ZW50IHsKLSAgICAicGxheS1wYXVzZSIsCi0g
ICAgIm5leHQtdHJhY2siLAotICAgICJwcmV2aW91cy10cmFjayIKLX07Ci0KIGVudW0gQXV0b0Zp
bGxCdXR0b25UeXBlIHsKICAgICAiTm9uZSIsCiAgICAgIkNvbnRhY3RzIiwKQEAgLTY5NiwxMSAr
Njg0LDYgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKIAogICAgIFtDb25kaXRpb25hbD1W
SURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBiZWdpbk1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbihET01TdHJpbmcgaW50ZXJydXB0aW9uVHlwZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJ
REVPXSB1bmRlZmluZWQgZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFn
cyk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIHVuZGVmaW5lZCBzZW5kTWVkaWFT
ZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05d
IHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24o
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdvcnkpOwotICAgIFtDb25kaXRp
b25hbD1NRURJQV9TRVNTSU9OXSBET01TdHJpbmcgbWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKE1l
ZGlhU2Vzc2lvbiBzZXNzaW9uKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gZG91
YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwot
ICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSB1bmRlZmluZWQgc2VuZE1lZGlhQ29udHJv
bEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50IGV2ZW50KTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9d
IHVuZGVmaW5lZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwogICAgIFtDb25kaXRp
b25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAgICAg
W0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKG9wdGlvbmFsIGJvb2xlYW4gc3VzcGVuZGVkVW5kZXJMb2NrID0gZmFsc2UpOwpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDktMjIgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFf
U0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyBhbGwgY29kZSBpbiBFTkFCTEUoTUVESUFfU0VT
U0lPTikgYW5kIGFsbCBtZWRpYSBzZXNzaW9uCisgICAgICAgIHJlbGF0ZWQgU1BJLiBJdCB3YXMg
bmV2ZXIgZW5hYmxlZCBhbmQgbm90aGluZyBldmVyIGFkb3B0ZWQgaXQuCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgbWVkaWEgc2Vzc2lv
biByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmg6IFJlbW92ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRh
ZGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNz
aW9uTWV0YWRhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgUmVtb3ZlIGFsbCBjb2RlIGluIEVOQUJMRShNRURJQV9TRVNTSU9O
KS4KKwogMjAyMC0wOS0yMiAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBSRUdSRVNTSU9OKHIyNjczOTgpOiBzZXZlcmFsIGhpZHBpIHRlc3RzIGFyZSBm
YWlsaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNiBAQCBTaGFyZWQv
V2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCiBTaGFyZWQvV2ViSW1hZ2UuY3BwCiBTaGFyZWQvV2Vi
S2V5Ym9hcmRFdmVudC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3Bw
IEBuby11bmlmeQotU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAogU2hhcmVkL1dl
Yk1lbW9yeVNhbXBsZXIuY3BwCiBTaGFyZWQvV2ViTW91c2VFdmVudC5jcHAgQG5vLXVuaWZ5CiBT
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM4MCw3ICszNzksNiBAQCBV
SVByb2Nlc3MvQVBJL0MvV0tIaXRUZXN0UmVzdWx0LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLSWNv
bkRhdGFiYXNlLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKLVVJUHJvY2Vzcy9BUEkvQy9XS01l
ZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVy
LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja0Rpc3BsYXkuY3BwCiBVSVByb2Nlc3MvQVBJL0Mv
V0tNb2NrTWVkaWFEZXZpY2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lv
biAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNiwxNSArMjI2LDEyIEBAIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2EKIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcAog
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKIFVJUHJvY2Vzcy9WaWV3U25hcHNo
b3RTdG9yZS5jcHAKLVVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCi1V
SVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcAogVUlQcm9jZXNz
L1dlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKIFVJUHJvY2Vzcy9XS0ltYWdlUHJldmlld1Zp
ZXdDb250cm9sbGVyLm1tCiAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3Bw
CiAKIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwCi1VSVByb2Nlc3Mv
QVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tU
ZXN0aW5nU3VwcG9ydC5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3BwCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDEwICsxMDksNiBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNlbmRpZgogCi0jaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NZXRh
ZGF0YS5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgPFdl
YkNvcmUvQ2FwdHVyZURldmljZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50
cy5oPgpAQCAtMjExNywzMiArMjExMyw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVT
aGVldD46OmRlY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQotdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhU2Vzc2lvbk1ldGFkYXRhPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhU2Vzc2lvbk1ldGFkYXRhJiByZXN1bHQpCi17Ci0g
ICAgZW5jb2RlciA8PCByZXN1bHQuYXJ0aXN0KCk7Ci0gICAgZW5jb2RlciA8PCByZXN1bHQuYWxi
dW0oKTsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC50aXRsZSgpOwotICAgIGVuY29kZXIgPDwgcmVz
dWx0LmFydHdvcmtVUkwoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhU2Vzc2lvbk1l
dGFkYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhU2Vzc2lvbk1ldGFkYXRhJiBy
ZXN1bHQpCi17Ci0gICAgU3RyaW5nIGFydGlzdCwgYWxidW0sIHRpdGxlOwotICAgIFVSTCBhcnR3
b3JrVVJMOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJ0aXN0KSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRsZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydHdvcmtVUkwpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gTWVkaWFTZXNzaW9uTWV0YWRhdGEodGl0bGUsIGFydGlz
dCwgYWxidW0sIGFydHdvcmtVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmCi0KIHZv
aWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ewogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShy
ZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDEwICsxODcsNiBAQCBjbGFzcyBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi1jbGFzcyBNZWRpYVNlc3Npb25N
ZXRhZGF0YTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHN0cnVjdCBNZWRp
YUNvbnN0cmFpbnRzOwogI2VuZGlmCkBAIC02MzUsMTMgKzYzMSw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIH07CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRp
YVNlc3Npb25NZXRhZGF0YT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRh
ZGF0YSYpOwotfTsKLSNlbmRpZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYpOwogICAgIHN0YXRpYyBPcHRp
b25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gZGVjb2RlKERlY29kZXImKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZWY8V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE+IFdl
Yk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpjcmVhdGUoY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEm
IG1ldGFkYXRhKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1lZGlhU2Vzc2lvbk1l
dGFkYXRhKG1ldGFkYXRhKSk7Ci19Ci0KLVdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpXZWJNZWRp
YVNlc3Npb25NZXRhZGF0YShjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRhdGEpCi0g
ICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQotewotfQotCi1XZWJNZWRpYVNlc3Npb25NZXRhZGF0
YTo6fldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKCkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAkocmV2aXNpb24gMjY3NDUw
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk1lZGlh
U2Vzc2lvbk1ldGFkYXRhX2gKLSNkZWZpbmUgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGFfaAotCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJNZWRpYVNlc3Np
b25NZXRhZGF0YSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Ok1l
ZGlhU2Vzc2lvbk1ldGFkYXRhPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJNZWRpYVNl
c3Npb25NZXRhZGF0YT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRh
Jik7Ci0gICAgfldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKCk7Ci0KLSAgICBTdHJpbmcgdGl0bGUo
KSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLnRpdGxlKCk7IH0KLSAgICBTdHJpbmcgYXJ0aXN0
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnRpc3QoKTsgfQotICAgIFN0cmluZyBhbGJ1
bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW0oKTsgfQotICAgIFN0cmluZyBhcnR3
b3JrVVJMKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3b3JrVVJMKCkuc3RyaW5nKCk7
IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YShjb25z
dCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpOwotCi0gICAgV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWV0YWRhdGEgbV9tZXRhZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNlbmRpZiAvLyBXZWJNZWRpYVNl
c3Npb25NZXRhZGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShy
ZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDYgQEAgcHVibGljOgogICAgICAgICBXZWJz
aXRlUG9saWNpZXMsCiAgICAgICAgIFdpbmRvd0ZlYXR1cmVzLAogCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0gICAgICAgIE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciwKLSAgICAgICAgTWVk
aWFTZXNzaW9uTWV0YWRhdGEsCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
ICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UsCiAgICAgICAgIFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsCkBAIC00MjgsMTEgKzQyMyw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8QVBJOjpPYmplY3QKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVQ
b2xpY2llcywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OldpbmRvd0ZlYXR1cmVzLAogCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIsCi0gICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpNZWRpYVNl
c3Npb25NZXRhZGF0YSwKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAg
QVBJOjpPYmplY3Q6OlR5cGU6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UsCiAg
ICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsLApJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOCAr
MTA1LDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tIaXRUZXN0UmVzdQogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJY29uRGF0YWJhc2UqIFdLSWNvbkRhdGFiYXNlUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNwZWN0b3IqIFdLSW5zcGVjdG9yUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKiBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWY7Ci10
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhU2Vzc2lvbk1ldGFkYXRhKiBXS01lZGlh
U2Vzc2lvbk1ldGFkYXRhUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZXNzYWdl
TGlzdGVuZXIqIFdLTWVzc2FnZUxpc3RlbmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tOYXZpZ2F0aW9uQWN0aW9uKiBXS05hdmlnYXRpb25BY3Rpb25SZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBXS05hdmlnYXRpb25EYXRhUmVmOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCShub25leGlzdGVudCkKQEAg
LTEsMTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLQotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jb25zdCBjaGFyKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnN1cHBsZW1lbnRO
YW1lKCkKLXsKLSAgICByZXR1cm4gIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciI7Ci19Ci0K
LVJlZjxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIocHJvY2Vzc1Bvb2wpKTsK
LX0KLQotV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogV2ViQ29udGV4dFN1cHBs
ZW1lbnQocHJvY2Vzc1Bvb2wpIHsgfQotCi0vLyBXZWJDb250ZXh0U3VwcGxlbWVudAotCi12b2lk
IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQot
ewotICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXI6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0
OjpkZXJlZigpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6aW5pdGlh
bGl6ZUNsaWVudChjb25zdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2UqIGNs
aWVudCkKLXsKLSAgICBtX2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7Ci19Ci0KLWJvb2wgV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjp2YWx1ZUZvclBsYXliYWNrQXR0cmlidXRlKFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUgYXR0cmlidXRlKSBjb25zdAot
ewotICAgIGlmICghbV9mb2N1c2VkTWVkaWFFbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gbV9wbGF5YmFja0F0dHJpYnV0ZXMgJiBhdHRyaWJ1dGU7Ci19Ci0KLXZv
aWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjp1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZShX
S01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIGF0dHJpYnV0ZSwgYm9v
bCB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUpCi0gICAgICAgIG1fcGxheWJhY2tBdHRyaWJ1dGVz
IHw9IGF0dHJpYnV0ZTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGxheWJhY2tBdHRyaWJ1dGVzICY9
IH5hdHRyaWJ1dGU7Ci0KLSAgICBtX2NsaWVudC5kaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSh0
aGlzLCBhdHRyaWJ1dGUsIHZhbHVlKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXI6OnNldFZvbHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVudChkb3VibGUgdm9sdW1lKQotewot
ICAgIGlmICghbV9mb2N1c2VkTWVkaWFFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoV2ViUGFnZVByb3h5KiBwcm94eSA9IG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+Zmlyc3QpCi0g
ICAgICAgIHByb3h5LT5zZXRWb2x1bWVPZk1lZGlhRWxlbWVudCh2b2x1bWUsIG1fZm9jdXNlZE1l
ZGlhRWxlbWVudC0+c2Vjb25kKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXI6OnVwZGF0ZVBsYXliYWNrQXR0cmlidXRlc0Zyb21NZWRpYVN0YXRlKFdlYlBhZ2VQcm94eSog
cHJveHksIHVpbnQ2NF90IGVsZW1lbnRJRCwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFT
dGF0ZUZsYWdzIGZsYWdzKQotewotICAgIGlmIChtX2ZvY3VzZWRNZWRpYUVsZW1lbnQpIHsKLSAg
ICAgICAgaWYgKHByb3h5ID09IG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+Zmlyc3QgJiYgZWxlbWVu
dElEID09IG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+c2Vjb25kKSB7Ci0gICAgICAgICAgICB1cGRh
dGVQbGF5YmFja0F0dHJpYnV0ZShJc1BsYXlpbmcsIGZsYWdzICYgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6SXNTb3VyY2VFbGVtZW50UGxheWluZyk7Ci0gICAgICAgICAgICB1cGRhdGVQbGF5YmFj
a0F0dHJpYnV0ZShJc05leHRUcmFja0NvbnRyb2xFbmFibGVkLCBmbGFncyAmIFdlYkNvcmU6Ok1l
ZGlhUHJvZHVjZXI6OklzTmV4dFRyYWNrQ29udHJvbEVuYWJsZWQpOwotICAgICAgICAgICAgdXBk
YXRlUGxheWJhY2tBdHRyaWJ1dGUoSXNQcmV2aW91c1RyYWNrQ29udHJvbEVuYWJsZWQsIGZsYWdz
ICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNQcmV2aW91c1RyYWNrQ29udHJvbEVuYWJsZWQp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
cjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJveHkmIHByb3h5LCB1aW50NjRfdCBl
bGVtZW50SUQpCi17Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxGb2N1
c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyOjpjbGVhckZvY3VzZWRNZWRpYUVsZW1lbnQoKQotewotICAgIG1f
Zm9jdXNlZE1lZGlhRWxlbWVudCA9IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAkocmV2
aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCi0jaW5jbHVk
ZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi10eXBlZGVmIHN0ZDo6cGFpcjxXZWJQ
YWdlUHJveHkqLCB1aW50NjRfdD4gRm9jdXNlZE1lZGlhRWxlbWVudDsKLQotY2xhc3MgV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBw
bGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUo
KTsKLQotICAgIHN0YXRpYyBSZWY8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPiBjcmVhdGUo
V2ViUHJvY2Vzc1Bvb2wqKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2UqKTsKLQotICAgIGJvb2wgdmFsdWVGb3JQ
bGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmli
dXRlKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZVBsYXliYWNrQXR0cmlidXRlc0Zyb21NZWRpYVN0
YXRlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90LCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MpOwotICAgIHZvaWQgc2V0Vm9sdW1lT2ZGb2N1c2VkTWVkaWFFbGVtZW50KGRv
dWJsZSk7Ci0KLSAgICB2b2lkIHNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5Jiwg
dWludDY0X3QpOwotICAgIHZvaWQgY2xlYXJGb2N1c2VkTWVkaWFFbGVtZW50KCk7Ci0KLSAgICB1
c2luZyBBUEk6Ok9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKLQot
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIoV2ViUHJv
Y2Vzc1Bvb2wqKTsKLQotICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50Ci0gICAgdm9pZCByZWZX
ZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCB1cGRhdGVQbGF5YmFja0F0dHJpYnV0
ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlLCBib29sKTsKLQot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGb2N1c2VkTWVkaWFFbGVtZW50PiBtX2ZvY3VzZWRNZWRpYUVs
ZW1lbnQ7Ci0gICAgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZXMg
bV9wbGF5YmFja0F0dHJpYnV0ZXMgeyAwIH07Ci0gICAgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyQ2xpZW50IG1fY2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNw
cAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJDbGllbnQ6OmRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlKFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlciogbWFuYWdlciwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5
YmFja0F0dHJpYnV0ZSBwbGF5YmFja0F0dHJpYnV0ZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAo
IW1fY2xpZW50LmRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2NsaWVudC5kaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSh0b0FQSShtYW5hZ2VyKSwg
cGxheWJhY2tBdHRyaWJ1dGUsIHZhbHVlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9O
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oCShu
b25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50X2gKLSNkZWZpbmUgV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyQ2xpZW50X2gKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSAiQVBJQ2xpZW50LmgiCi0jaW5jbHVkZSAiV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLXRlbXBsYXRlPD4g
c3RydWN0IENsaWVudFRyYWl0czxXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2U+
IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGll
bnRWMD4gVmVyc2lvbnM7Ci19OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOwotCi1jbGFzcyBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBkaWRDaGFuZ2VQbGF5YmFja0F0dHJp
YnV0ZShXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqLCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlclBsYXliYWNrQXR0cmlidXRlLCBib29sKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNlbmRpZiAvLyBXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsMTIgKzI0NCw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NZXRhZGF0YS5oPgotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpKQogI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIgog
I2VuZGlmCkBAIC02MDY3LDI0ICs2MDYxLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFs
bE1lZGlhUGxheWJhYwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFsbE1lZGlh
UGxheWJhY2soKSk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLXZvaWQgV2ViUGFn
ZVByb3h5OjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZSkKLXsKLSAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSkpOwotfQot
Ci12b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVt
ZSwgdWludDY0X3QgZWxlbWVudElEKQotewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vm9sdW1l
T2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVk
aWEpCiB7CiAgICAgaWYgKG1heVN0YXJ0TWVkaWEgPT0gbV9tYXlTdGFydE1lZGlhV2hlbkluV2lu
ZG93KQpAQCAtODk4OSwxMiArODk2NSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9u
R2VzdHVyZVNuYXAKIAogdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdl
KE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBuZXdTdGF0ZSwgdWludDY0X3Qgc291cmNl
RWxlbWVudElEKQogewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlciogZm9jdXNNYW5hZ2VyID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCku
c3VwcGxlbWVudDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCk7Ci0gICAgQVNTRVJUKGZv
Y3VzTWFuYWdlcik7Ci0gICAgZm9jdXNNYW5hZ2VyLT51cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNG
cm9tTWVkaWFTdGF0ZSh0aGlzLCBzb3VyY2VFbGVtZW50SUQsIG5ld1N0YXRlKTsKLSNlbmRpZgot
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIW1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuc2hvdWxkQmVSdW5uYWJsZSgpKQogICAgICAgICByZXR1cm47CkBAIC05MTQzLDI2ICs5MTEz
LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5vd1BsYXlpbmdJbmZvQ2FsbGJhYwogfQogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLXZvaWQgV2ViUGFnZVByb3h5OjpoYXNNZWRp
YVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sIHN0YXRlKQotewot
ICAgIG1faGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMgPSBzdGF0ZTsKLX0K
LQotdm9pZCBXZWJQYWdlUHJveHk6Om1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKGNvbnN0
IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICBSZWY8V2Vi
TWVkaWFTZXNzaW9uTWV0YWRhdGE+IHdlYk1ldGFkYXRhID0gV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGE6OmNyZWF0ZShtZXRhZGF0YSk7Ci0gICAgbV91aUNsaWVudC0+bWVkaWFTZXNzaW9uTWV0YWRh
dGFEaWRDaGFuZ2UoKnRoaXMsIHdlYk1ldGFkYXRhLnB0cigpKTsKLX0KLQotdm9pZCBXZWJQYWdl
UHJveHk6OmZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90IGVsZW1l
bnRJRCkKLXsKLSAgICBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqIGZvY3VzTWFuYWdlciA9
IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyPigpOwotICAgIEFTU0VSVChmb2N1c01hbmFnZXIpOwotICAgIGZvY3VzTWFuYWdlci0+
c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCgqdGhpcywgZWxlbWVudElEKTsKLX0KLSNlbmRpZgotCiB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2
ZW50IGV2ZW50LCBPcHRpb25TZXQ8QXV0b3BsYXlFdmVudEZsYWdzPiBmbGFncykKIHsKICAgICBt
X3VpQ2xpZW50LT5oYW5kbGVBdXRvcGxheUV2ZW50KCp0aGlzLCBldmVudCwgZmxhZ3MpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjksMTIgKzE2OSw2IEBAIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg+CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgTWVk
aWFTZXNzaW9uTWV0YWRhdGE7Ci19Ci0jZW5kaWYKLQogI2lmIFVTRShESVJFQ1QyRCkKIGludGVy
ZmFjZSBJRDNEMTFEZXZpY2UxOwogI2VuZGlmCkBAIC0xMzQ0LDEyICsxMzM4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKICAgICB2b2lkIHJlc3VtZUFs
bE1lZGlhUGxheWJhY2soKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGJvb2wg
aGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBt
X2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzOyB9Ci0gICAgdm9pZCBoYW5k
bGVNZWRpYUV2ZW50KFdlYkNvcmU6Ok1lZGlhRXZlbnRUeXBlKTsKLSAgICB2b2lkIHNldFZvbHVt
ZU9mTWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3QpOwotI2VuZGlmCi0gICAgICAgIAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdm9pZCBkaWRBbGxvd1BvaW50ZXJMb2NrKCk7CiAg
ICAgdm9pZCBkaWREZW55UG9pbnRlckxvY2soKTsKQEAgLTE0NzUsMTIgKzE0NjMsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBub3dQbGF5aW5nSW5mb0NhbGxiYWNrKGJvb2wsIGJvb2wsIGNvbnN0IFN0
cmluZyYsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZvaWQgaGFzTWVkaWFTZXNzaW9uV2l0aEFj
dGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCk7Ci0gICAgdm9pZCBtZWRpYVNlc3Npb25N
ZXRhZGF0YURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpOwot
ICAgIHZvaWQgZm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QpOwot
I2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAgQVBJOjpIaXRUZXN0UmVzdWx0KiBsYXN0
TW91c2VNb3ZlSGl0VGVzdFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE1vdXNlTW92ZUhp
dFRlc3RSZXN1bHQuZ2V0KCk7IH0KICAgICB2b2lkIHBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRU
ZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKQEAgLTI3NzgsMTAgKzI3NjAsNiBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc05ldmVyUmljaGx5RWRpdGFibGVGb3JUb3VjaEJhciB7
IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGJvb2wg
bV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50cyB7IGZhbHNlIH07Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGJvb2wgbV9yZXF1aXJlc1RhcmdldE1vbml0b3JpbmcgeyBmYWxzZSB9
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ3NCwxMiAr
NDc0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBJc1BsYXlpbmdNZWRpYURp
ZENoYW5nZSh1bnNpZ25lZCBzdGF0ZSwgdWludDY0X3Qgc291cmNlRWxlbWVudElEKQogICAgIEhh
bmRsZUF1dG9wbGF5RXZlbnQoZW51bTp1aW50OF90IFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQgZXZl
bnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdzKQogCi0jaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgSGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlh
RWxlbWVudHNEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKLSAgICBNZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZShXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSBtZXRhZGF0YSk7Ci0gICAgRm9j
dXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QgZWxlbWVudElEKQotI2Vu
ZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhp
dFRlc3Qoc3RydWN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGEgcmVzdWx0LCBib29sIGNv
bnRlbnRQcmV2ZW50c0RlZmF1bHQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlz
aW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDkgKzI4OCw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQ
cm9jZXNzUG9vbChBUEk6OlByb2MKICAgICBhZGRTdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKTsKICAgICBhZGRTdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Pigp
OwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpOwotI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGFkZFN1cHBsZW1lbnQ8V2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyPigpOwotI2VuZGlmCiAKICAgICBwcm9jZXNzUG9vbHMoKS5hcHBlbmQodGhp
cyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2
aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
aCIKLSNlbmRpZgotCiAjaWYgVVNFKFNPVVApCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29y
a1Byb3h5U2V0dGluZ3MuaD4KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMCArNjAsNiBA
QCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTsK
LQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGE7Ci0jZW5kaWYKIH0KIAogbmFtZXNwYWNlIEFQSSB7CkBAIC0xNjEsMTAgKzE1Nyw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlQXV0b3BsYXlFdmVudChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkF1dG9w
bGF5RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+KSB7IH0KIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVNlc3Npb25N
ZXRhZGF0YURpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViTWVkaWFT
ZXNzaW9uTWV0YWRhdGEqKSB7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpZiBIQVZFKEFQUF9MSU5LUykKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZUFwcExp
bmtBY3Rpb25zRm9yRWxlbWVudChfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKSB7IHJldHVybiB0
cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAko
cmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDggKzk0LDYgQEAgY2xhc3MgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2Vi
SWNvbkRhdGFiYXNlOwogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHk7Ci1jbGFzcyBXZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXI7Ci1jbGFzcyBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YTsKIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTsKIGNs
YXNzIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOwpAQCAtMTM2LDggKzEzNCw2IEBAIFdLX0FERF9B
UElfTUFQUElORyhXS0hUVFBDb29raWVTdG9yZVJlZiwKIFdLX0FERF9BUElfTUFQUElORyhXS0hp
dFRlc3RSZXN1bHRSZWYsIEFQSTo6SGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQUElORyhX
S0ljb25EYXRhYmFzZVJlZiwgV2ViSWNvbkRhdGFiYXNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
SW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3JQcm94eSkKLVdLX0FERF9BUElfTUFQUElORyhXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiwgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKQot
V0tfQUREX0FQSV9NQVBQSU5HKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYsIFdlYk1lZGlhU2Vz
c2lvbk1ldGFkYXRhKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVzc2FnZUxpc3RlbmVyUmVmLCBB
UEk6Ok1lc3NhZ2VMaXN0ZW5lcikKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25BY3Rp
b25SZWYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmln
YXRpb25EYXRhUmVmLCBBUEk6Ok5hdmlnYXRpb25EYXRhKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NDEsMTYgKzQ0MSw2IEBAIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBXS0NvbnRleHRH
ZXQKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJS
ZWY+KFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKSk7CiB9CiAKLVdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIFdLQ29udGV4dEdldE1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcihXS0NvbnRleHRSZWYgY29udGV4dCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+c3VwcGxl
bWVudDxXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4oKSk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQot
CiBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdl
cihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShX
ZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eT4oKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNiBAQCBX
S19FWFBPUlQgV0tDb29raWVNYW5hZ2VyUmVmIFdLQ29udGV4dEdlCiBXS19FWFBPUlQgV0tHZW9s
b2NhdGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0R2VvbG9jYXRpb25NYW5hZ2VyKFdLQ29udGV4
dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS0ljb25EYXRhYmFzZVJlZiBXS0NvbnRleHRHZXRJ
Y29uRGF0YWJhc2UoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKFdLQ29u
dGV4dFJlZiBjb250ZXh0KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSk7Ci1XS19FWFBPUlQgV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJSZWYgV0tDb250ZXh0R2V0TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
KFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7
CiBXS19FWFBPUlQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRSZXNvdXJj
ZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCkgV0tfQ19BUElfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0KLSNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
aCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJHZXRUeXBlSUQoKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAg
IHJldHVybiB0b0FQSShXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OkFQSVR5cGUpOwotI2Vs
c2UKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmplY3Q6OlR5cGU6Ok51bGwpOwotI2VuZGlmCi19
Ci0KLXZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJTZXRDbGllbnQoV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJSZWYgbWFuYWdlciwgY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAg
dG9JbXBsKG1hbmFnZXIpLT5pbml0aWFsaXplQ2xpZW50KGNsaWVudCk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShtYW5hZ2VyKTsKLSAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKLSNlbmRpZgot
fQotCi1ib29sIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyVmFsdWVGb3JQbGF5YmFja0F0dHJp
YnV0ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIGF0dHJpYnV0ZSkKLXsKLSNpZiBFTkFCTEUo
TUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4gdG9JbXBsKG1hbmFnZXIpLT52YWx1ZUZvclBsYXli
YWNrQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYW5hZ2Vy
KTsKLSAgICBVTlVTRURfUEFSQU0oYXR0cmlidXRlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5k
aWYKLX0KLQotdm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldFZvbHVtZU9mRm9jdXNl
ZE1lZGlhRWxlbWVudChXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBkb3Vi
bGUgdm9sdW1lKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHRvSW1wbChtYW5h
Z2VyKS0+c2V0Vm9sdW1lT2ZGb2N1c2VkTWVkaWFFbGVtZW50KHZvbHVtZSk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKLSAgICBVTlVTRURfUEFSQU0odm9sdW1lKTsKLSNlbmRp
ZgotfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCShu
b25leGlzdGVudCkKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJfaAotI2RlZmluZSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
cl9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZm5kZWYgX19jcGx1c3BsdXMK
LSNpbmNsdWRlIDxzdGRib29sLmg+Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRl
cm4gIkMiIHsKLSNlbmRpZgotCi1lbnVtIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJh
Y2tBdHRyaWJ1dGUgewotICAgIElzUGxheWluZyAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAw
LAotICAgIElzUHJldmlvdXNUcmFja0NvbnRyb2xFbmFibGVkID0gMSA8PCAxLAotICAgIElzTmV4
dFRyYWNrQ29udHJvbEVuYWJsZWQgICAgID0gMSA8PCAyLAotfTsKLXR5cGVkZWYgdWludDMyX3Qg
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZXM7Ci0KLS8vIE1lZGlh
IFNlc3Npb24gRm9jdXMgTWFuYWdlciBDbGllbnQKLXR5cGVkZWYgdm9pZCAoKldLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyRGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUpKFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJh
Y2tBdHRyaWJ1dGUgcGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wgdmFsdWUsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNs
aWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87Ci19IFdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnRWMCB7Ci0gICAgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNl
ICAgICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyRGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUgZGlkQ2hhbmdlUGxh
eWJhY2tBdHRyaWJ1dGU7Ci19IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50VjA7Ci0K
LVdLX0VYUE9SVCBXS1R5cGVJRCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckdldFR5cGVJRCgp
OwotCi1XS19FWFBPUlQgdm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldENsaWVudChX
S01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCBXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci0KLVdLX0VYUE9SVCBib29sIFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyVmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlclJlZiwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0
dHJpYnV0ZSk7Ci1XS19FWFBPUlQgdm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldFZv
bHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVudChXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiwg
ZG91YmxlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFdL
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwCShyZXZp
c2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vz
c2lvbk1ldGFkYXRhLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tNZWRpYVNlc3Npb25NZXRhZGF0
YS5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tNZWRp
YVNlc3Npb25NZXRhZGF0YUdldFR5cGVJRCgpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0gICAgcmV0dXJuIHRvQVBJKFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpBUElUeXBlKTsKLSNl
bHNlCi0gICAgcmV0dXJuIHRvQVBJKEFQSTo6T2JqZWN0OjpUeXBlOjpOdWxsKTsKLSNlbmRpZgot
fQotCi1XS1N0cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weVRpdGxlKFdLTWVkaWFT
ZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChtZXRhZGF0YSktPnRpdGxlKCkpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwotICAgIHJldHVybiBudWxscHRyOwotI2Vu
ZGlmCi19Ci0KLVdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5QXJ0aXN0KFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChtZXRhZGF0YSktPmFydGlzdCgp
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKLSAgICByZXR1cm4gbnVsbHB0
cjsKLSNlbmRpZgotfQotCi1XS1N0cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFs
YnVtKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpCi17Ci0jaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChtZXRhZGF0YSktPmFs
YnVtKCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwotICAgIHJldHVybiBu
dWxscHRyOwotI2VuZGlmCi19Ci0KLVdLVVJMUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5
QXJ0d29ya1VSTChXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKQotewotI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwobWV0
YWRhdGEpLT5hcnR3b3JrVVJMKCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEp
OwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oCShyZXZp
c2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vz
c2lvbk1ldGFkYXRhLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhX2gKLSNkZWZpbmUgV0tNZWRpYVNlc3Np
b25NZXRhZGF0YV9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZm5kZWYgX19j
cGx1c3BsdXMKLSNpbmNsdWRlIDxzdGRib29sLmg+Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNw
bHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tNZWRpYVNl
c3Npb25NZXRhZGF0YUdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tNZWRp
YVNlc3Npb25NZXRhZGF0YUNvcHlUaXRsZShXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFk
YXRhKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFy
dGlzdChXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKTsKLVdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFsYnVtKFdLTWVkaWFTZXNzaW9uTWV0
YWRhdGFSZWYgbWV0YWRhdGEpOwotV0tfRVhQT1JUIFdLVVJMUmVmIFdLTWVkaWFTZXNzaW9uTWV0
YWRhdGFDb3B5QXJ0d29ya1VSTChXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKTsK
LQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFdLTWVkaWFTZXNz
aW9uTWV0YWRhdGFfaCAqLwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMSArOTQsNiBAQAogI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51SXRlbS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFTZXNzaW9uRXZlbnRzLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2luY2x1ZGUgIlZlcnNpb25DaGVja3MuaCIKICNlbmRpZgpAQCAtMjAyOCwxNSArMjAyMyw2IEBA
IHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZSh0b0FQ
SSgmcGFnZSksIHRvQVBJKHVzZXJJbmZvKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICAgICAgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIHZvaWQgbWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJNZWRpYVNlc3Np
b25NZXRhZGF0YSogbWV0YWRhdGEpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQubWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5tZWRpYVNlc3Npb25NZXRhZGF0YURpZENo
YW5nZSh0b0FQSSgmcGFnZSksIHRvQVBJKG1ldGFkYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQotI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZVByb3h5KiBwYWdlKSBmaW5hbAogICAg
ICAgICB7CkBAIC0yNzI3LDQzICsyNzEzLDYgQEAgdm9pZCBXS1BhZ2VEaWREZW55UG9pbnRlckxv
Y2soV0tQYWdlUmVmIAogI2VuZGlmCiB9CiAKLWJvb2wgV0tQYWdlSGFzTWVkaWFTZXNzaW9uV2l0
aEFjdGl2ZU1lZGlhRWxlbWVudHMoV0tQYWdlUmVmIHBhZ2UpCi17Ci0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0gICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+aGFzTWVkaWFTZXNzaW9uV2l0aEFj
dGl2ZU1lZGlhRWxlbWVudHMoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi12b2lkIFdLUGFnZUhhbmRsZU1lZGlhRXZlbnQo
V0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFFdmVudFR5cGUgd2tFdmVudFR5cGUpCi17Ci0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0gICAgTWVkaWFFdmVudFR5cGUgZXZlbnRUeXBlOwotCi0gICAg
c3dpdGNoICh3a0V2ZW50VHlwZSkgewotICAgIGNhc2Uga1dLTWVkaWFFdmVudFR5cGVQbGF5UGF1
c2U6Ci0gICAgICAgIGV2ZW50VHlwZSA9IE1lZGlhRXZlbnRUeXBlOjpQbGF5UGF1c2U7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2Uga1dLTWVkaWFFdmVudFR5cGVUcmFja05leHQ6Ci0gICAgICAg
IGV2ZW50VHlwZSA9IE1lZGlhRXZlbnRUeXBlOjpUcmFja05leHQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2Uga1dLTWVkaWFFdmVudFR5cGVUcmFja1ByZXZpb3VzOgotICAgICAgICBldmVudFR5
cGUgPSBNZWRpYUV2ZW50VHlwZTo6VHJhY2tQcmV2aW91czsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICB0b0ltcGwocGFnZSktPmhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBlKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwotICAgIFVOVVNFRF9QQVJBTSh3a0V2ZW50
VHlwZSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lUmVmLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHlSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5wb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUodG9JbXBsKG1lc3NhZ2VOYW1lUmVmKS0+c3RyaW5nKCksIHRvSW1wbCht
ZXNzYWdlQm9keVJlZikpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVByaXZhdGUuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsMTkgKzE1
MSw4IEBAIGVudW0gewogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tNZWRpYVN0YXRlOwogCi0KIFdL
X0VYUE9SVCBXS01lZGlhU3RhdGUgV0tQYWdlR2V0TWVkaWFTdGF0ZShXS1BhZ2VSZWYgcGFnZSk7
CiAKLWVudW0gewotICAgIGtXS01lZGlhRXZlbnRUeXBlUGxheVBhdXNlLAotICAgIGtXS01lZGlh
RXZlbnRUeXBlVHJhY2tOZXh0LAotICAgIGtXS01lZGlhRXZlbnRUeXBlVHJhY2tQcmV2aW91cwot
fTsKLXR5cGVkZWYgdWludDMyX3QgV0tNZWRpYUV2ZW50VHlwZTsKLQotV0tfRVhQT1JUIGJvb2wg
V0tQYWdlSGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMoV0tQYWdlUmVmIHBh
Z2UpOwotV0tfRVhQT1JUIHZvaWQgV0tQYWdlSGFuZGxlTWVkaWFFdmVudChXS1BhZ2VSZWYgcGFn
ZSwgV0tNZWRpYUV2ZW50VHlwZSBldmVudCk7Ci0KIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRV
UkxXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxS
ZWYgdXJsLCBib29sIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMpOwogCiB0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VQb3N0UHJlc2VudGF0aW9uVXBkYXRlRnVuY3Rpb24pKFdLRXJyb3JSZWYsIHZvaWQqKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQu
aAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw2IEBAIHR5cGVkZWYg
dm9pZCAoKldLUGFnZUlzUGxheWluZ0F1ZGlvRGlkQ2gKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJl
ZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHVzZXJNZWRpYURv
Y3VtZW50T3JpZ2luLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4s
IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tDaGVja1VzZXJNZWRpYVBlcm1p
c3Npb25DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJp
dHlPcmlnaW5SZWYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFdLU2VjdXJpdHlPcmlnaW5SZWYg
dG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tSZWYgZGV2
aWNlc1JlcXVlc3QsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQ
YWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldL
UGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLSGFuZGxlQXV0b3BsYXlFdmVudENhbGxiYWNrKShXS1Bh
Z2VSZWYgcGFnZSwgV0tBdXRvcGxheUV2ZW50IGV2ZW50LCBXS0F1dG9wbGF5RXZlbnRGbGFncyBm
bGFncywgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0Z1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1JlcXVlc3RQb2ludGVyTG9ja0NhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBAIC01MDMsNyArNTAy
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWNSB7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0QWxlcnQ7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybTsK
ICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7Ci0gICAgV0tQYWdlTWVkaWFTZXNz
aW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRp
YVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVz
ZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiB9IFdLUGFnZVVJQ2xpZW50
VjU7CiAKIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjYgewpAQCAtNTc2LDcgKzU3NSw3
IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjYgewogICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFn
ZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVz
ZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogCiAgICAg
Ly8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTY1Niw3ICs2
NTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY3IHsKICAgICBXS1BhZ2VSdW5K
YXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAg
IHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAg
ICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBX
S1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIAog
ICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC03NDAs
NyArNzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWOCB7CiAgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAg
ICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0g
ICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2Uu
CiAgICAgCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsK
QEAgLTgyOCw3ICs4MjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY5IHsKICAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1
ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1Owog
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhW
NTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1Bh
Z2U7CkBAIC05MTksNyArOTE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTAg
ewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9y
VXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7
CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlLgogICAgIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVO
ZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZU5ld1BhZ2U7CkBAIC0xMDE0LDcgKzEwMTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VV
SUNsaWVudFYxMSB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNr
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRD
aGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0
YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdl
Q3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtMTExMiw3ICsxMTExLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
V0tQYWdlVUlDbGllbnRWMTIgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNr
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmly
bV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFBy
b21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9u
TWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJl
IG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogICAgIAogICAgIC8vIFZlcnNpb24gNi4K
ICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC0xMjEzLDcgKzEyMTIsNyBAQCB0eXBl
ZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxMyB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFs
ZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5K
YXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBt
ZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8v
IFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBWZXJz
aW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtMTMxNyw3ICsxMzE2LDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTQgewogICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFn
ZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVz
ZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogCiAgICAg
Ly8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjY3NDUwKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTcwOCwxMSArMTcwOCw2IEBACiAJCUM1RkExRUQzMThFMTA2
MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlSb3V0ZVBpY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVGQTFFRDExOEUxMDYyMjAwQjNGNDAyIC8qIFdL
QWlyUGxheVJvdXRlUGlja2VyLmggKi87IH07CiAJCUM2QTRDQTBCMjI1Mjg5OTgwMDE2OTI4OSAv
KiBXS0J1bmRsZVBhZ2VNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM2QTRDQTA5MjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNkE0Q0Ew
QzIyNTI4OTk4MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZBNENBMEEyMjUyODk5ODAwMTY5Mjg5IC8q
IFdLQnVuZGxlUGFnZU1hYy5tbSAqLzsgfTsKLQkJQzk4QzQ4QTYxQjZGRDRDMzAwMTQ1MTAzIC8q
IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5oICovOyB9OwotCQlDOThDNDhBQTFCNkZENUI1MDAxNDUxMDMg
LyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCUM5QzE4MzNDMUI3NDAyNkQwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM5QzE4MzM4MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJDbGllbnQuaCAqLzsgfTsKLQkJQzlDRDQzOTgxQjRCMDAxRDAwMjM5RTMzIC8q
IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDOUNENDM5NDFCNEIwMDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNz
aW9uTWV0YWRhdGEuaCAqLzsgfTsKLQkJQzlDRDQzOUQxQjRCMDI0RjAwMjM5RTMzIC8qIFdLTWVk
aWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM5Q0Q0MzlBMUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0EwNTM5NzkyM0VFMzI0NDAwQTU1M0RDIC8qIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRG
cmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENB
MDUzOTc4MjNFRTMyNDQwMEE1NTNEQyAvKiBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJh
bWVzLmggKi87IH07CiAJCUNEMDAzQTUzMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDAwM0E1MTE5RDQ5QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5oICovOyB9OwogCQlDRDBDNjgzMTIwMUZEMTAxMDBBNTk0MDkgLyogV0tGdWxsU2NyZWVuVmll
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMEM2ODJGMjAxRkQxMDEwMEE1OTQwOSAvKiBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
ci5oICovOyB9OwpAQCAtNTA2MywxNiArNTA1OCw2IEBACiAJCUM1RkExRUQyMThFMTA2MjIwMEIz
RjQwMiAvKiBXS0FpclBsYXlSb3V0ZVBpY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFdLQWlyUGxheVJvdXRlUGlja2VyLm1tOyBwYXRoID0gaW9zL2Zvcm1z
L1dLQWlyUGxheVJvdXRlUGlja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NkE0Q0EwOTIyNTI4OTk4MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQnVuZGxlUGFnZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkE0
Q0EwQTIyNTI4OTk4MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tCdW5kbGVQYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDOThDNDhBMzFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5OEM0OEE0
MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5OEM0OEE3MUI2RkQ1QjUwMDE0NTEwMyAv
KiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OUMxODMzNzFCNzNGRDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUM5QzE4MzM4MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5Q0Q0
MzkzMUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5Q0Q0Mzk0MUI0QjAwMEUwMDIzOUUz
MyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDOUNENDM5OTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS01lZGlhU2Vzc2lv
bk1ldGFkYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlDRDQzOUExQjRC
MDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDQTA1Mzk3ODIzRUUzMjQ0MDBBNTUzREMgLyogQ29udGVudEFzU3Ry
aW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMDAz
QTUwMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuY3BwOyBwYXRoID0gTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwMDNBNTExOUQ0OUI1RDAwNUFCQ0UwIC8q
IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOyBwYXRoID0gTWVkaWFDYWNoZS9XZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
MTQzLDggKzYxMjgsNiBAQAogCQkJCUMwMzM3REQyMTI3QTJBMEUwMDhGRjRGNCAvKiBXZWJLZXli
b2FyZEV2ZW50LmNwcCAqLywKIAkJCQlCQzlCQTUwMjE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0
MkluaXRpYWxpemUuY3BwICovLAogCQkJCUJDOUJBNTAzMTY5N0M0NTMwMEU0NDYxNiAvKiBXZWJL
aXQySW5pdGlhbGl6ZS5oICovLAotCQkJCUM5Q0Q0MzkzMUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJN
ZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgKi8sCi0JCQkJQzlDRDQzOTQxQjRCMDAwRTAwMjM5RTMz
IC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8sCiAJCQkJOTA1NjIwRTgxMkJDMjQ4QjAw
MDc5OUI2IC8qIFdlYk1lbW9yeVNhbXBsZXIuY3BwICovLAogCQkJCTkwNTYyMEU5MTJCQzI0OEIw
MDA3OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLmggKi8sCiAJCQkJQzAzMzdEQUYxMjdBMjhEMDAw
OEZGNEY0IC8qIFdlYk1vdXNlRXZlbnQuY3BwICovLApAQCAtOTA3MCwxMCArOTA1Myw2IEBACiAJ
CQkJQkMxQkUxRjExMkQ1NERCRDAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIuY3Bw
ICovLAogCQkJCUJDMUJFMUYwMTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvblByb3Zp
ZGVyLmggKi8sCiAJCQkJNTFDOEUxOUIxRjIxNjE3MjAwQkY3MzFCIC8qIFdlYkljb25EYXRhYmFz
ZS5oICovLAotCQkJCUM5OEM0OEEzMUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuY3BwICovLAotCQkJCUM5OEM0OEE0MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLywKLQkJCQlDOUMxODMzNzFCNzNGRDZBMDA3MDM2
QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcCAqLywKLQkJCQlDOUMx
ODMzODFCNzNGRDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
LmggKi8sCiAJCQkJMkQzRUY0NDAxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAgKi8sCiAJCQkJMkQzRUY0NDExOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9y
eVByZXNzdXJlSGFuZGxlci5oICovLAogCQkJCTdDQ0NDOEY4MUE1RjUwRkQwMDhGQjBEQSAvKiBX
ZWJOYXZpZ2F0aW9uU3RhdGUuY3BwICovLApAQCAtOTI3NiwxMCArOTI1NSw2IEBACiAJCQkJNTFB
OUUxMDgxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgKi8s
CiAJCQkJNTFBOUUxMDkxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5oICovLAogCQkJCTJENzkwQTlFMUFENzE2NDkwMEFCOTBCMyAvKiBXS0xheW91dE1vZGUuaCAq
LywKLQkJCQlDOThDNDhBNzFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuY3BwICovLAotCQkJCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5oICovLAotCQkJCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIzOUUzMyAvKiBX
S01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCAqLywKLQkJCQlDOUNENDM5QTFCNEIwMjQyMDAyMzlF
MzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAogCQkJCTVDQUJEQzg0MjJDNDBGQ0Mw
MDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5jcHAgKi8sCiAJCQkJNUNBQkRDODUyMkM0MEZD
QzAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggKi8sCiAJCQkJQzExRTE2OTMyMTJCODdD
NTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuY3BwICovLApAQCAtMTEzNDEsOSArMTEzMTYsNiBA
QAogCQkJCUJDOUJBNTA1MTY5N0M0NTMwMEU0NDYxNiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE2MjgwQzcxOTE5OTUwQzAwNkFEOUY5IC8qIFdlYktpdFByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMDAzQTUzMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOThDNDhBNjFCNkZE
NEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQlDOUMxODMzQzFCNzQwMjZEMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUNENDM5ODFCNEIwMDFEMDAyMzlF
MzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNUJF
QzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDNFRjQ0MzE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDk4NTRFRDEyQkM0RTE4MDAwQUQwODAgLyogV2ViTWVt
b3J5U2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTY0Miw4ICsxMTYxNCw2IEBACiAJCQkJ
NTFBOUUxMEIxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQ3OTBBOUYxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNFOTEyMTQyMjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFp
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzk4QzQ4QUExQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUNENDM5RDFCNEIw
MjRGMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCNDBFRTYxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQUJEQzg2MjJDNDBGREUwMDFFREU4RSAvKiBXS01l
c3NhZ2VMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzExRTE2OTQyMTJCODdDNTAwOTg1
RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcw
LDI1ICsxMTcwLDYgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbgog
ICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9wbGF5RXZl
bnQoZXZlbnQsIGZsYWdzKSk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6Omhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRz
RGlkQ2hhbmdlKGJvb2wgc3RhdGUpCi17Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6SGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2Uo
c3RhdGUpKTsKLX0KLQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om1lZGlhU2Vzc2lvbk1ldGFkYXRh
RGlkQ2hhbmdlKGNvbnN0IE1lZGlhU2Vzc2lvbk1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpNZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZShtZXRhZGF0YSkpOwotfQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZENv
bnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QgZWxlbWVudElEKQotewotICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvY3VzZWRDb250ZW50TWVkaWFFbGVt
ZW50RGlkQ2hhbmdlKGVsZW1lbnRJRCkpOwotfQotCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQogCiBib29sIFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzYsMTIgKzMzNiw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpc1BsYXlpbmdNZWRpYURp
ZENoYW5nZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MsIHVpbnQ2NF90
KSBmaW5hbDsKICAgICB2b2lkIGhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlF
dmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0
aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sKSBmaW5hbDsKLSAgICB2b2lkIG1lZGlhU2Vz
c2lvbk1ldGFkYXRhRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRh
JikgZmluYWw7Ci0gICAgdm9pZCBmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1
aW50NjRfdCkgZmluYWw7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogICAgIGJv
b2wgd3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4m
KSBjb25zdCBmaW5hbDsKICAgICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNjc0NTApCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTE5OCwxOCArNTE5OCw2IEBAIHZvaWQgV2ViUGFnZTo6c3RvcE1lZGlhQ2FwdHVy
ZSgpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdm9pZCBXZWJQYWdl
OjpoYW5kbGVNZWRpYUV2ZW50KHVpbnQzMl90IGV2ZW50VHlwZSkKLXsKLSAgICBtX3BhZ2UtPmhh
bmRsZU1lZGlhRXZlbnQoc3RhdGljX2Nhc3Q8TWVkaWFFdmVudFR5cGU+KGV2ZW50VHlwZSkpOwot
fQotCi12b2lkIFdlYlBhZ2U6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUs
IHVpbnQ2NF90IGVsZW1lbnRJRCkKLXsKLSAgICBtX3BhZ2UtPnNldFZvbHVtZU9mTWVkaWFFbGVt
ZW50KHZvbHVtZSwgZWxlbWVudElEKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2U6OnNldE1h
eVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCBtYXlTdGFydE1lZGlhKQogewogICAgIGlmICht
YXlTdGFydE1lZGlhID09IG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtOTY3LDExICs5NjcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXlTdGFydE1l
ZGlhV2hlbkluV2luZG93KGJvb2wpOwogICAgIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KHVpbnQz
Ml90IC8qIFdlYkNvcmU6Ok1lZGlhRXZlbnRUeXBlICovKTsKLSAgICB2b2lkIHNldFZvbHVtZU9m
TWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3QpOwotI2VuZGlmCi0KICAgICB2b2lkIHVwZGF0
ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIAogICAgIGJvb2wgbWFpbkZyYW1lSGFz
Q3VzdG9tQ29udGVudFByb3ZpZGVyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2
NzQ1MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQxMSwxMSArNDExLDYgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogICAgIFNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5k
b3coYm9vbCBtYXlTdGFydE1lZGlhKQogICAgIFN0b3BNZWRpYUNhcHR1cmUoKQogCi0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0gICAgSGFuZGxlTWVkaWFFdmVudCh1aW50MzJfdCBldmVudFR5
cGUpCi0gICAgU2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3Qg
ZWxlbWVudElEKQotI2VuZGlmCi0KICAgICBTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpCiAgICAgU2V0Q2FuUnVuTW9k
YWwoYm9vbCBjYW5SdW5Nb2RhbCkKIApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UJKHJldmlzaW9u
IDI2NzQ1MCkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTUsNyArMTE1LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFXwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9BVURJTyBQ
UklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdB
Q1lfRU5DUllQVEVEX01FRElBIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX01FRElBX0NBUFRVUkUgUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU0VTU0lPTiBQUklWQVRFIE9GRikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TT1VSQ0UgUFJJVkFU
RSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU1RB
VElTVElDUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9NRURJQV9TVFJFQU0gUFJJVkFURSBPRkYpCkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0
RmVhdHVyZXMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNiBAQCBtYWNybyhXRUJLSVRfT1BU
SU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NQVRITUwgIlRvZ2ds
ZSBNYXRoTUwgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfTUVESUFfQ0FQVFVSRSAiVG9nZ2xlIE1lZGlhIENhcHR1cmUgc3VwcG9ydCIgUFJJVkFU
RSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCAiVG9nZ2xlIGRlZmluaXRpb24gb2YgbWVkaWEgY29udHJvbHMgaW4gSmF2YXNjcmlwdCIg
UFJJVkFURSBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU0VTU0lP
TiAiVG9nZ2xlIE1lZGlhIFNlc3Npb24gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NPVVJDRSAiVG9nZ2xlIE1lZGlhIFNvdXJjZSBz
dXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVE
SUFfU1RBVElTVElDUyAiVG9nZ2xlIE1lZGlhIFN0YXRpc3RpY3Mgc3VwcG9ydCIgUFJJVkFURSBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NUUkVBTSAiVG9nZ2xl
IE1lZGlhIFN0cmVhbSBzdXBwb3J0IiBQUklWQVRFIE9GRikKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1MikKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA5LTIy
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29kZSBi
ZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtOgorICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgYnVpbGRpbmcg
d2l0aCBNRURJQV9TRVNTSU9OIGVuYWJsZWQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0
ZU90aGVyUGFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3
V2l0aE9wdGlvbnMpOgorICAgICAgICBVcGRhdGUgbmFtZXMgdG8gbmV3ICd1bnVzZWQnIG5hbWlu
Zy4KKwogMjAyMC0wOS0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIE1ha2UgVExTVmVyc2lvbiBBUEkgdGVzdHMgbW9yZSByb2J1c3QuCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCShyZXZpc2lvbiAyNjc0
NTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTExOSw3ICsxMTksNiBAQCBteSAoCiAgICAgJG1hdGhtbFN1cHBvcnQsCiAgICAg
JG1lZGlhQ2FwdHVyZVN1cHBvcnQsCiAgICAgJG1lZGlhQ29udHJvbHNTY3JpcHRTdXBwb3J0LAot
ICAgICRtZWRpYVNlc3Npb25TdXBwb3J0LAogICAgICRtZWRpYVNvdXJjZVN1cHBvcnQsCiAgICAg
JG1lZGlhU3RhdGlzdGljc1N1cHBvcnQsCiAgICAgJG1lZGlhU3RyZWFtU3VwcG9ydCwKQEAgLTM5
OSw5ICszOTgsNiBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gIm1lZGlhLWNv
bnRyb2xzLXNjcmlwdCIsIGRlc2MgPT4gIlRvZ2dsZSBkZWZpbml0aW9uIG9mIG1lZGlhIGNvbnRy
b2xzIGluIEphdmFzY3JpcHQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTUVESUFfQ09OVFJP
TFNfU0NSSVBUIiwgdmFsdWUgPT4gXCRtZWRpYUNvbnRyb2xzU2NyaXB0U3VwcG9ydCB9LAogCi0g
ICAgeyBvcHRpb24gPT4gIm1lZGlhLXNlc3Npb24iLCBkZXNjID0+ICJUb2dnbGUgTWVkaWEgU2Vz
c2lvbiBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX01FRElBX1NFU1NJT04iLCB2
YWx1ZSA9PiBcJG1lZGlhU2Vzc2lvblN1cHBvcnQgfSwKLQogICAgIHsgb3B0aW9uID0+ICJtZWRp
YS1zb3VyY2UiLCBkZXNjID0+ICJUb2dnbGUgTWVkaWEgU291cmNlIHN1cHBvcnQiLAogICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfTUVESUFfU09VUkNFIiwgdmFsdWUgPT4gXCRtZWRpYVNvdXJjZVN1
cHBvcnQgfSwKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsNyArMzgxLDcgQEAgV0tQYWdlUmVmIFRl
c3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZwogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0
QWxlcnQKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KICAgICAgICAgMCwgLy8g
cnVuSmF2YVNjcmlwdFByb21wdAotICAgICAgICAwLCAvLyBtZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZQorICAgICAgICAwLCAvLyB1bnVzZWQ1CiAgICAgICAgIGNyZWF0ZU90aGVyUGFnZSwK
ICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0LAogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0
Q29uZmlybQpAQCAtNzE1LDcgKzcxNSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdl
YlZpZXdXaXRoT3AKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAgICAgIDAs
IC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9t
cHQKLSAgICAgICAgMCwgLy8gbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UKKyAgICAgICAg
MCwgLy8gdW51c2VkNQogICAgICAgICBjcmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIHJ1bkphdmFT
Y3JpcHRBbGVydCwKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA5LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgY29kZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04p
LCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNjgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSBhbHdheXMgc2tpcHBlZCBNZWRpYSBTZXNzaW9uIHRlc3RzLgor
CisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIG1lZGlhL3Nlc3Npb246IFJlbW92ZWQuCisKIDIwMjAt
MDktMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggQmlx
dWFkRmlsdGVyTm9kZSdzIGxvd3Bhc3MgJiBoaWdocGFzcyBmaWx0ZXJzCkluZGV4OiBMYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMJKHdvcmtpbmcgY29weSkKQEAgLTE5MTYsOSArMTkxNiw2IEBAIGZhc3QvaW1hZ2VzL2FuaW1h
dGVkLXdlYnAuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTQ2MTgyIGVkaXRpbmcvc2Vs
ZWN0aW9uL2xlYWstZG9jdW1lbnQtd2l0aC1zZWxlY3Rpb24taW5zaWRlLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi0jIE1lZGlhIFNlc3Npb25zIGlzIG5vdCB5ZXQgZW5hYmxlZCBieSBkZWZhdWx0
OiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLW1lZGlhL3Nlc3Npb24gWyBTa2lwIF0KLQogIyBFeHBl
cmltZW50YWwgSDI2NSBzdXBwb3J0Lgogd2VicnRjL2gyNjUuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKSW5kZXg6IExheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNp
b24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwko
d29ya2luZyBjb3B5KQpAQCAtMjU4LDggKzI1OCw2IEBAIG1lZGlhL3ByZXNlbnRhdGlvbm1vZGVj
aGFuZ2VkLWZpcmVkLW9uY2UKIG1lZGlhL3Byb2dyZXNzLWV2ZW50cy1nZW5lcmF0ZWQtY29ycmVj
dGx5Lmh0bWwgWyBTa2lwIF0KIG1lZGlhL3JlbW90ZXBsYXliYWNrLXByb21wdC5odG1sIFsgU2tp
cCBdCiAKLW1lZGlhL3Nlc3Npb24gWyBTa2lwIF0KLQogbWVkaWEvdHJhY2svYXVkaW8vYXVkaW8t
dHJhY2stbWt2LXZvcmJpcy1hZGR0cmFjay5odG1sIFsgU2tpcCBdCiBtZWRpYS90cmFjay9hdWRp
by9hdWRpby10cmFjay1ta3Ytdm9yYmlzLWVuYWJsZWQuaHRtbCBbIFNraXAgXQogbWVkaWEvdHJh
Y2svYXVkaW8vYXVkaW8tdHJhY2stbWt2LXZvcmJpcy1sYW5ndWFnZS5odG1sIFsgU2tpcCBdCklu
ZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50
LWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxMiArMCwwIEBACi0nQ29udGVudCcgc3RhcnQgb2YgaW50ZXJydXB0
aW9uIGV2ZW50cyBzaG91bGQgaW5kZWZpbml0ZWx5IHBhdXNlICdDb250ZW50JyBtZWRpYSBzZXNz
aW9ucy4KLQotCi1XYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuCi1N
ZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJy
ZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1TZW5kaW5nICdDb250ZW50JyBzdGFy
dC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5zZW5kTWVkaWFT
ZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigiY29udGVudCIpKQotVGhlIG1l
ZGlhIGVsZW1lbnQgd2FzIHBhdXNlZC4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9u
Q3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlv
bnMuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9j
b250ZW50LWludGVycnVwdGlvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDU0ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlk
ZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAg
dmFyIHNlc3Npb247Ci0gICAgCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAg
ewotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgc2Vzc2lvbiA9
IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJXYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuIikKLSAgICAgICAg
ICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRp
bmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAg
dmlkZW8ub25wbGF5aW5nID0gYmVnYW5QbGF5aW5nOwotICAgICAgICAgICAgdmlkZW8ub25jYW5w
bGF5dGhyb3VnaCA9IGNhbnBsYXl0aHJvdWdoOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gY2FucGxheXRocm91Z2goKSAKLSAgICAgICAgewotICAgICAgICAgICAgdmlkZW8ucGxheSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7
Ci0gICAgICAgICAgICB2aWRlby5vbnBhdXNlID0gcGF1c2VkOwotCi0gICAgICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJu
YWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ0NvbnRl
bnQnIHN0YXJ0LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAg
ICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3Rp
ZmljYXRpb24oImNvbnRlbnQiKScpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gcGF1c2VkKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRoZSBtZWRpYSBlbGVtZW50IHdhcyBwYXVzZWQuIik7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpZGxl
Iik7Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidDb250ZW50JyBzdGFy
dCBvZiBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBpbmRlZmluaXRlbHkgcGF1c2UgJ0NvbnRl
bnQnIG1lZGlhIHNlc3Npb25zLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiBjb250cm9scz4g
PC92aWRlbz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vY29udGVudC1zZXNzaW9uLWZvY3VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1z
ZXNzaW9uLWZvY3VzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDIyICswLDAgQEAK
LVBsYXlpbmcgYSBtZWRpYSBlbGVtZW50IGJlbG9uZ2luZyB0byBhIENvbnRlbnQgbWVkaWEgc2Vz
c2lvbiBzaG91bGQgcGF1c2Ugb3RoZXIgcGxheWluZyBDb250ZW50IG1lZGlhIGVsZW1lbnRzLgot
Ci0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvMS5wYXVzZWQgPT0gJ3Ry
dWUnKSBPSwotQmVnaW4gcGxheWluZyBmaXJzdCB2aWRlby4KLUVWRU5UKHBsYXlpbmcpCi1GaXJz
dCB2aWRlbyBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvMS5wYXVzZWQgPT0gJ2ZhbHNl
JykgT0sKLQotU2V0dGluZyB1cCBzZWNvbmQgdmlkZW8uCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkK
LUVYUEVDVEVEICh2aWRlbzEucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAodmlkZW8y
LnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5aW5nIHNlY29uZCB2aWRlby4KLUVWRU5U
KHBsYXlpbmcpCi1TZWNvbmQgdmlkZW8gYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlbzIu
cGF1c2VkID09ICdmYWxzZScpIE9LCi1FVkVOVChwYXVzZSkKLUVYUEVDVEVEICh2aWRlbzEucGF1
c2VkID09ICd0cnVlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vY29udGVudC1zZXNzaW9uLWZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMuaHRtbAkocmV2aXNpb24g
MjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9j
dXMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb24sIHZpZGVv
MSwgdmlkZW8yOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAg
ICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAg
ICAgICAgdmlkZW8xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvMSIpOwotICAgICAg
ICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZ1ZpZGVvMSwg
ZmFsc2UsIHRydWUsIHZpZGVvMSk7Ci0gICAgICAgICAgICB2aWRlbzEuc3JjID0gZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8x
LnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywg
YmVnYW5QbGF5aW5nVmlkZW8xLCBmYWxzZSwgdHJ1ZSwgdmlkZW8xKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZ1ZpZGVvMShldmVudCkKLSAgICAgICAgewotICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzEucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiQmVnaW4gcGxheWluZyBmaXJzdCB2aWRlby4iKTsKLSAgICAgICAg
ICAgIHZpZGVvMS5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBs
YXlpbmdWaWRlbzEoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
Rmlyc3QgdmlkZW8gYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
dmlkZW8xLnBhdXNlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2V0dGluZyB1cCBzZWNvbmQg
dmlkZW8uIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ2aWRlbzIiKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxh
eXRocm91Z2gnLCBiZWdpblBsYXlpbmdWaWRlbzIsIGZhbHNlLCB0cnVlLCB2aWRlbzIpOwotICAg
ICAgICAgICAgdmlkZW8yLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQv
Y291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvMi5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAg
ICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZ1ZpZGVvMiwgZmFsc2Us
IHRydWUsIHZpZGVvMik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJl
Z2luUGxheWluZ1ZpZGVvMihldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCd2aWRlbzEucGF1c2VkJywgZmFsc2UpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlbzIucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BhdXNlJywg
cGF1c2VkVmlkZW8xLCBmYWxzZSwgdHJ1ZSwgdmlkZW8xKTsKLQotICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJCZWdpbiBwbGF5aW5nIHNlY29uZCB2aWRlby4iKTsKLSAgICAgICAgICAgIHZpZGVv
Mi5wbGF5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIHBhdXNlZFZp
ZGVvMShldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzEu
cGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmdWaWRlbzIoZXZlbnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiU2Vjb25kIHZpZGVvIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMi5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgIH0K
LSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8
cD5QbGF5aW5nIGEgbWVkaWEgZWxlbWVudCBiZWxvbmdpbmcgdG8gYSBDb250ZW50IG1lZGlhIHNl
c3Npb24gc2hvdWxkIHBhdXNlIG90aGVyIHBsYXlpbmcgQ29udGVudCBtZWRpYSBlbGVtZW50cy48
L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbzEiIC8+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbzIiIC8+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRy
b2xzLWV4aXN0ZW5jZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0
NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0ZW5jZS1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMiArMCwwIEBACi1Pbmx5IENvbnRlbnQgTWVk
aWEgU2Vzc2lvbnMgc2hvdWxkIGhhdmUgbWVkaWEgcmVtb3RlIGNvbnRyb2xzIGFmdGVyIGNyZWF0
aW9uLgotCi1SVU4oc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ2NvbnRlbnQnKSkKLUVYUEVD
VEVEIChzZXNzaW9uLmNvbnRyb2xzICE9ICdudWxsJykgT0sKLVJVTihzZXNzaW9uID0gbmV3IE1l
ZGlhU2Vzc2lvbigndHJhbnNpZW50JykpCi1FWFBFQ1RFRCAoc2Vzc2lvbi5jb250cm9scyA9PSAn
bnVsbCcpIE9LCi1SVU4oc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudC1zb2xv
JykpCi1FWFBFQ1RFRCAoc2Vzc2lvbi5jb250cm9scyA9PSAnbnVsbCcpIE9LCi1SVU4oc2Vzc2lv
biA9IG5ldyBNZWRpYVNlc3Npb24oJ2FtYmllbnQnKSkKLUVYUEVDVEVEIChzZXNzaW9uLmNvbnRy
b2xzID09ICdudWxsJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vY29udHJvbHMtZXhpc3RlbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UuaHRtbAkocmV2aXNpb24gMjY3NDUw
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UuaHRtbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0gICAg
Ci0gICAgICAgIGZ1bmN0aW9uIGRvVGVzdCAoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vz
c2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLSAgICAgICAgICAgIHJ1bigic2Vz
c2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ2NvbnRlbnQnKSIpOwotICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJzZXNzaW9uLmNvbnRyb2xzIiwgbnVsbCwgJyE9Jyk7Ci0KLSAgICAgICAgICAgIHNl
c3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJ0cmFuc2llbnQiKTsKLSAgICAgICAgICAgIHJ1bigi
c2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudCcpIik7Ci0gICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInNlc3Npb24uY29udHJvbHMiLCBudWxsKTsKLQotICAgICAgICAgICAgc2Vz
c2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oInRyYW5zaWVudC1zb2xvIik7Ci0gICAgICAgICAgICBy
dW4oInNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQtc29sbycpIik7Ci0gICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInNlc3Npb24uY29udHJvbHMiLCBudWxsKTsKLQotICAgICAg
ICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImFtYmllbnQiKTsKLSAgICAgICAgICAg
IHJ1bigic2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ2FtYmllbnQnKSIpOwotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJzZXNzaW9uLmNvbnRyb2xzIiwgbnVsbCk7Ci0KLSAgICAgICAgICAg
IGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJkb1Rlc3QoKSI+Ci0gICAgPHA+T25seSBDb250ZW50IE1lZGlhIFNlc3Npb25zIHNob3Vs
ZCBoYXZlIG1lZGlhIHJlbW90ZSBjb250cm9scyBhZnRlciBjcmVhdGlvbi48L3A+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9k
ZWZhdWx0LXNlc3Npb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQpAQCAtMSw2ICswLDAgQEAKLU5ldyBtZWRpYSBlbGVtZW50cyBhcmUgYXNzaWduZWQgdG8g
dGhlIERlZmF1bHQgbWVkaWEgc2Vzc2lvbiwgd2hpY2ggaXMgbm90IGV4cG9zZWQgdGhyb3VnaCB0
aGUgc2Vzc2lvbiBhdHRyaWJ1dGUuCi0KLVJVTihhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdhdWRpbycpKQotRVhQRUNURUQgKGF1ZGlvRWxlbWVudC5zZXNzaW9uID09ICdu
dWxsJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24v
ZGVmYXVsdC1zZXNzaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi9kZWZhdWx0LXNlc3Npb24uaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi9kZWZhdWx0LXNlc3Npb24uaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0x
LDE5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0
IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KLSAgICAgICAgZnVuY3Rpb24gZG9UZXN0ICgpIAotICAgICAgICB7Ci0gICAg
ICAgICAgICB2YXIgYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYXVkaW8i
KTsKLSAgICAgICAgICAgIHJ1bigiYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYXVkaW8nKSIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJhdWRpb0VsZW1lbnQuc2Vz
c2lvbiIsIG51bGwpOwotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgotICAgIDxwPk5ldyBt
ZWRpYSBlbGVtZW50cyBhcmUgYXNzaWduZWQgdG8gdGhlIERlZmF1bHQgbWVkaWEgc2Vzc2lvbiwg
d2hpY2ggaXMgbm90IGV4cG9zZWQgdGhyb3VnaCB0aGUgc2Vzc2lvbiBhdHRyaWJ1dGUuPC9wPgot
PC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBh
dXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRz
LWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRl
bnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMjEgKzAsMCBAQAot
J0NvbnRlbnQnIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0byBQbGF5
L1BhdXNlIG1lZGlhIGNvbnRyb2wgZXZlbnRzLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQot
RVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0g
J2lkbGUnKSBPSwotSWRsZSBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxh
eS9QYXVzZSBldmVudHMuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLVNl
bmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29u
dHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVl
JykgT0sKLQotUGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5
aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGlu
dGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9L
Ci1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRp
YUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAn
dHJ1ZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRz
LWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Np
b25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotCi0g
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lv
biA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgZmluZE1lZGlh
RWxlbWVudCgpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJl
Z2luUGxheWluZyk7Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRl
byIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0g
c2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWlu
ZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJl
Z2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImlkbGUiKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJJZGxlIE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9u
ZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4iKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlby5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUGxh
eS9QYXVzZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5z
ZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlBsYXlp
bmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93
LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1l
ZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LiIpOwot
ICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxh
eS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQn
LCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAg
ICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0g
ICAgPHA+J0NvbnRlbnQnIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0
byBQbGF5L1BhdXNlIG1lZGlhIGNvbnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZp
ZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZhdWx0LXNlc3Npb25zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVk
aWEtZXZlbnRzLWluLWRlZmF1bHQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0
NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRz
LWluLWRlZmF1bHQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTgg
KzAsMCBAQAotJ0RlZmF1bHQnIG1lZGlhIHNlc3Npb25zIHNob3VsZCByZXNwb25kIHRvIHBsYXkv
cGF1c2UgbWVkaWEgZXZlbnRzLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQg
KHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZl
bnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQot
RVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi0KLVBsYXlpbmcgbWVkaWEuCi1F
VkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVz
ZWQgPT0gJ2ZhbHNlJykgT0sKLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihp
bnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAo
dmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNz
aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1w
YXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNzaW9ucy5odG1sCShyZXZpc2lvbiAyNjc0
NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRz
LWluLWRlZmF1bHQtc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ5ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlk
ZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBmaW5kTWVkaWFFbGVt
ZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5Q
bGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwg
Ii4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWlu
ZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcg
UGxheS9QYXVzZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFs
cy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlBs
YXlpbmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQ
bGF5L1BhdXNlIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxz
LnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J0RlZmF1bHQnIG1lZGlhIHNlc3Npb25z
IHNob3VsZCByZXNwb25kIHRvIHBsYXkvcGF1c2UgbWVkaWEgZXZlbnRzLjwvcD4KLSAgICA8dmlk
ZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9u
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9w
bGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1w
YXVzZS1tZWRpYS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKQEAgLTEsNDEgKzAsMCBAQAotJ1RyYW5zaWVudCcsICdUcmFuc2llbnQgU29s
bycsIGFuZCAnQW1iaWVudCcgc2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1
c2UgbWVkaWEgY29udHJvbCBldmVudHMuCi0KLQotLS0tCi1UZXN0aW5nICJ0cmFuc2llbnQiIHNl
c3Npb24ga2luZAotLS0tCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVWRU5UKHBsYXlpbmcpCi1N
ZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBP
SwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikg
PT0gJ2FjdGl2ZScpIE9LCi1Ob24tQ29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJl
c3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMuCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZl
bnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQot
RVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotLS0tCi1UZXN0aW5nICJ0cmFu
c2llbnQtc29sbyIgc2Vzc2lvbiBraW5kCi0tLS0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVZF
TlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2Vk
ID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLU5vbi1Db250ZW50IE1lZGlhIFNlc3Npb25z
IHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4KLVNlbmRpbmcgUGxheS9Q
YXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJw
bGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi0tLS0K
LVRlc3RpbmcgImFtYmllbnQiIHNlc3Npb24ga2luZAotLS0tCi1FVkVOVChjYW5wbGF5dGhyb3Vn
aCkKLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVv
LnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25D
dXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1Ob24tQ29udGVudCBNZWRpYSBT
ZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMuCi1TZW5kaW5n
IFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xF
dmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBP
SwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBh
dXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4t
bm9uLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1z
ZXNzaW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsK
LQotICAgICAgICBmdW5jdGlvbiBydW5BbGxUZXN0cygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRo
cm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgcnVuVGVzdCgidHJhbnNpZW50Iik7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KHNlc3Npb25LaW5kKSAKLSAg
ICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCctLS0nKTsKLSAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgnVGVzdGluZyAiJyArIHNlc3Npb25LaW5kICsgJyIgc2Vzc2lvbiBraW5kJyk7
Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoJy0tLScpOwotCi0gICAgICAgICAgICBzZXNzaW9u
ID0gbmV3IE1lZGlhU2Vzc2lvbihzZXNzaW9uS2luZCk7Ci0KLSAgICAgICAgICAgIHZpZGVvLnNy
YyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAg
ICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50
KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAg
ICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdh
blBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVk
aWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1
c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiTm9uLUNvbnRlbnQgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkv
UGF1c2UgZXZlbnRzLiIpOwotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQ
bGF5L1BhdXNlIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxz
LnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmICh2aWRlby5zZXNzaW9uLmtpbmQgPT0gInRyYW5zaWVu
dCIpCi0gICAgICAgICAgICAgICAgcnVuVGVzdCgidHJhbnNpZW50LXNvbG8iKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKHZpZGVvLnNlc3Npb24ua2luZCA9PSAidHJhbnNpZW50LXNvbG8iKQotICAg
ICAgICAgICAgICAgIHJ1blRlc3QoImFtYmllbnQiKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHZp
ZGVvLnNlc3Npb24ua2luZCA9PSAiYW1iaWVudCIpCi0gICAgICAgICAgICAgICAgZW5kVGVzdCgp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJVbmV4cGVjdGVk
IHNlc3Npb24ga2luZCIpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eSBvbmxvYWQ9InJ1bkFsbFRlc3RzKCkiPgotICAgIDxwPidUcmFuc2llbnQnLCAnVHJhbnNpZW50
IFNvbG8nLCBhbmQgJ0FtYmllbnQnIHNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5
L1BhdXNlIG1lZGlhIGNvbnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAv
PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxl
YXNpbmctc2Vzc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3
NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lvbnMtZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTUgKzAsMCBAQAotU2Vzc2lvbnMgdGhhdCBh
cmUgZXhwbGljaXRseSByZWxlYXNlZCBzaG91bGQgaGF2ZSB0aGVpciBtZWRpYSBlbGVtZW50cyBp
bmRlZmluaXRlbHkgcGF1c2VkIGFuZCBnbyBpbnRvIGFuIElkbGUgc3RhdGUuCi0KLQotRVZFTlQo
Y2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUJl
Z2luIHBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4K
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5h
bHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotUlVO
KHNlc3Npb24uZGVhY3RpdmF0ZSgpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScp
IE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9u
KSA9PSAnaWRsZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3JlbGVhc2luZy1zZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLmh0bWwJKG5v
bmV4aXN0ZW50KQpAQCAtMSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotCi0gICAgICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRp
YVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwot
ICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7
Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250
ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAg
ICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRy
dWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhl
dmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQn
LCB0cnVlKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlh
LiIpOwotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xl
V3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
J3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9u
Q3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotCi0gICAgICAgICAgICBydW4oJ3Nl
c3Npb24uZGVhY3RpdmF0ZSgpJyk7Ci0KLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8u
cGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKScsICJpZGxlIik7Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAg
ICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgot
ICAgIDxwPlNlc3Npb25zIHRoYXQgYXJlIGV4cGxpY2l0bHkgcmVsZWFzZWQgc2hvdWxkIGhhdmUg
dGhlaXIgbWVkaWEgZWxlbWVudHMgaW5kZWZpbml0ZWx5IHBhdXNlZCBhbmQgZ28gaW50byBhbiBJ
ZGxlIHN0YXRlLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24t
Y3JlYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
QEAgLTEsMzAgKzAsMCBAQAotTmV3IG1lZGlhIHNlc3Npb25zIHNob3VsZCBiZSBpbiBhbiBJZGxl
IHN0YXRlIGFmdGVyIGNyZWF0aW9uLgotCi0KLS0tLQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lv
bignY29udGVudCcpIgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLS0tLQotVGVzdGluZyAibmV3IE1lZGlh
U2Vzc2lvbigndHJhbnNpZW50JykiCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1
cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi0tLS0KLQotLS0tCi1UZXN0aW5nICJu
ZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQtc29sbycpIgotRVhQRUNURUQgKGludGVybmFscy5t
ZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLS0t
LQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbignYW1iaWVudCcpIgotRVhQRUNURUQgKGludGVy
bmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0t
Ci0KLS0tLQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbigpIgotRVhQRUNURUQgKGludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0K
LUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1j
cmVhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vz
c2lvbi1jcmVhdGlvbi5odG1sCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24uaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0u
Li92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KLSAgICAgICAgZnVuY3Rpb24gZG9UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHRlc3RTZXNzaW9uS2luZCgiY29udGVudCIpOwotICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5k
KCJ0cmFuc2llbnQiKTsKLSAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgidHJhbnNpZW50LXNv
bG8iKTsKLSAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgiYW1iaWVudCIpOwotICAgICAgICAg
ICAgdGVzdFNlc3Npb25LaW5kKCk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0g
ICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0ZXN0
U2Vzc2lvbktpbmQoc2Vzc2lvbktpbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiPGJyPi0tLSIpOwotCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbktpbmQgIT0gdW5kZWZp
bmVkKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0aW5nIFwibmV3IE1lZGlh
U2Vzc2lvbignIiArIHNlc3Npb25LaW5kICsgIicpXCIiKTsKLSAgICAgICAgICAgICAgICBzZXNz
aW9uID0gbmV3IE1lZGlhU2Vzc2lvbihzZXNzaW9uS2luZCk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdGluZyBcIm5ldyBNZWRpYVNlc3Np
b24oKVwiIik7Ci0gICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0
YXRlKHNlc3Npb24pJywgImlkbGUiKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLS0tIik7
Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iZG9UZXN0
KCkiPgotICAgIDxwPk5ldyBtZWRpYSBzZXNzaW9ucyBzaG91bGQgYmUgaW4gYW4gSWRsZSBzdGF0
ZSBhZnRlciBjcmVhdGlvbi48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL3N3aXRjaGluZy1zZXNzaW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3N3
aXRjaGluZy1zZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNCArMCww
IEBACi1XaGVuIHN3aXRjaGluZyBtZWRpYSBzZXNzaW9ucywgbWVkaWEgZWxlbWVudHMgYmVsb25n
aW5nIHRvIHRoZSBvbGQgc2Vzc2lvbiBzaG91bGQgYmUgcGF1c2VkLgotCi0KLVJVTihzZXNzaW9u
ID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpKQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1F
WFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBsYXlpbmcgbWVkaWEu
Ci1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5w
YXVzZWQgPT0gJ2ZhbHNlJykgT0sKLVJVTih2aWRlby5zZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lv
bigidHJhbnNpZW50IikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUVO
RCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNl
c3Npb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0
Y2hpbmctc2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlh
LWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
LSAgICAgICAgdmFyIHNlc3Npb247Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAg
ICAgICB7Ci0gICAgICAgICAgICBydW4oJ3Nlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250
ZW50IiknKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAg
d2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAg
ICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5n
Iik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdh
aXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQot
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIpOwotICAgICAg
ICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5Q
bGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlh
IGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNl
ZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgcnVuKCd2aWRlby5zZXNzaW9uID0gbmV3IE1lZGlh
U2Vzc2lvbigidHJhbnNpZW50IiknKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRl
by5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0g
ICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+
V2hlbiBzd2l0Y2hpbmcgbWVkaWEgc2Vzc2lvbnMsIG1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0
byB0aGUgb2xkIHNlc3Npb24gc2hvdWxkIGJlIHBhdXNlZC48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2
aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vdHJhY2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vdHJhY2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CkBAIC0xLDE2ICswLDAgQEAKLVByZXZpb3VzL05leHQgVHJhY2sgZXZlbnRzIHNob3VsZCBub3Qg
YmUgZmlyZWQgaWYgcHJldmlvdXMvbmV4dFRyYWNrRW5hYmxlZCBhcmUgJ2ZhbHNlJy4KLQotCi1F
VkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBP
SwotQmVnaW4gcGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5
aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGlu
dGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9L
Ci1TZW5kaW5nIE5leHQgVHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRp
YUNvbnRyb2xFdmVudCgibmV4dC10cmFjayIpKQotU2VuZGluZyBQcmV2aW91cyBUcmFjayBtZWRp
YSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwcmV2aW91cy10
cmFjayIpKQotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90
cmFjay1tZWRpYS1ldmVudHMtZGlzYWJsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC5odG1sCShyZXZpc2lv
biAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50
cy1kaXNhYmxlZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0Lmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lv
biwgY29udHJvbHM7Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0g
ICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotICAgICAg
ICAgICAgY29udHJvbHMgPSBzZXNzaW9uLmNvbnRyb2xzOwotICAgICAgICAgICAgY29udHJvbHMu
bmV4dFRyYWNrRW5hYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgY29udHJvbHMucHJldmlvdXNU
cmFja0VuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnbmV4dHRyYWNr
Jywgc2tpcFRvTmV4dFRyYWNrLCBmYWxzZSwgdHJ1ZSwgY29udHJvbHMpOwotICAgICAgICAgICAg
d2FpdEZvckV2ZW50KCdwcmV2aW91c3RyYWNrJywgc2tpcFRvUHJldmlvdXNUcmFjaywgZmFsc2Us
IHRydWUsIGNvbnRyb2xzKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAg
ICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0g
ICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50
L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAg
ICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUs
IHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVu
dCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0
cnVlKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIp
OwotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3Zp
ZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25D
dXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIlNlbmRpbmcgTmV4dCBUcmFjayBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAg
ICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoIm5leHQtdHJhY2siKScp
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGlu
ZyBQcmV2aW91cyBUcmFjayBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2lu
dGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInByZXZpb3VzLXRyYWNrIiknKTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgiZW5kVGVzdCgp
IiwgMjAwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW5kVGVzdCgp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2tpcFRvTmV4
dFRyYWNrKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsVGVzdCgibmV4dC10cmFj
ayBldmVudHMgc2hvdWxkIG5vdCBiZSBmaXJlZC4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIHNraXBUb1ByZXZpb3VzVHJhY2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZhaWxUZXN0KCJwcmV2aW91cy10cmFjayBldmVudHMgc2hvdWxkIG5vdCBiZSBmaXJlZC4iKTsK
LSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgotICAgIDxwPlByZXZpb3VzL05leHQgVHJhY2sgZXZlbnRzIHNob3VsZCBub3QgYmUgZmly
ZWQgaWYgcHJldmlvdXMvbmV4dFRyYWNrRW5hYmxlZCBhcmUgJ2ZhbHNlJy48L3A+Ci0gICAgPHZp
ZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVk
aWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0
NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1j
b250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICswLDAg
QEAKLSdDb250ZW50JyBzZXNzaW9ucyB0aGF0IGFyZSBhY3RpdmUgc2hvdWxkIHJlc3BvbmQgdG8g
UHJldmlvdXMvTmV4dCBUcmFjayBtZWRpYSBjb250cm9sIGV2ZW50cy4KLQotCi1FVkVOVChjYW5w
bGF5dGhyb3VnaCkKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRl
KHNlc3Npb24pID09ICdpZGxlJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUn
KSBPSwotQmVnaW4gcGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBw
bGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQg
KGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScp
IE9LCi1TZW5kaW5nIE5leHQgVHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRN
ZWRpYUNvbnRyb2xFdmVudCgibmV4dC10cmFjayIpKQotRVZFTlQobmV4dHRyYWNrKQotU2VuZGlu
ZyBQcmV2aW91cyBUcmFjayBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29u
dHJvbEV2ZW50KCJwcmV2aW91cy10cmFjayIpKQotRVZFTlQocHJldmlvdXN0cmFjaykKLUVORCBP
RiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZl
bnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVk
aWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDY1
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlh
LWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
LSAgICAgICAgdmFyIHNlc3Npb24sIGNvbnRyb2xzOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24o
ImNvbnRlbnQiKTsKLSAgICAgICAgICAgIGNvbnRyb2xzID0gc2Vzc2lvbi5jb250cm9sczsKLSAg
ICAgICAgICAgIGNvbnRyb2xzLm5leHRUcmFja0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAg
Y29udHJvbHMucHJldmlvdXNUcmFja0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCduZXh0dHJhY2snLCBza2lwVG9OZXh0VHJhY2ssIGZhbHNlLCB0cnVlLCBjb250cm9s
cyk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3ByZXZpb3VzdHJhY2snLCBza2lwVG9QcmV2
aW91c1RyYWNrLCBmYWxzZSwgdHJ1ZSwgY29udHJvbHMpOwotCi0gICAgICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywg
YmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZp
ZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24g
PSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5
aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
YmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNl
c3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaWRsZSIpOwotCi0gICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIkJlZ2luIHBsYXlpbmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUi
KTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBOZXh0IFRyYWNrIG1l
ZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNv
bnRyb2xFdmVudCgibmV4dC10cmFjayIpJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBza2lwVG9OZXh0VHJhY2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQcmV2aW91cyBUcmFjayBtZWRpYSBldmVudC4i
KTsKLSAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicHJl
dmlvdXMtdHJhY2siKScpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2tpcFRvUHJl
dmlvdXNUcmFjayhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAg
ICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Ci0gICAgPHA+J0NvbnRlbnQnIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9u
ZCB0byBQcmV2aW91cy9OZXh0IFRyYWNrIG1lZGlhIGNvbnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8
dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9u
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vdHJhbnNpZW50LWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
QEAgLTEsMTggKzAsMCBAQAotJ1RyYW5zaWVudCcgaW50ZXJydXB0aW9uIGV2ZW50cyBzaG91bGQg
ZHVjayBhdWRpbyBmb3IgJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLgotCi0KLVdhaXRpbmcgZm9y
IENvbnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQot
TWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3Vy
cmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5t
ZWRpYUVsZW1lbnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikp
ID09ICcxJykgT0sKLVNlbmRpbmcgJ1RyYW5zaWVudCcgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5v
dGlmaWNhdGlvbi4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudCIpKQotRVhQRUNURUQgKGludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2ludGVycnVwdGVkJykgT0sKLUVYUEVD
VEVEIChpbnRlcm5hbHMubWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ2aWRlbyIpKSA9PSAnMC4yNScpIE9LCi1TZW5kaW5nICdUcmFuc2llbnQnIGVuZC1v
Zi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNz
aW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudCIpKQotRVhQRUNURUQg
KGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScp
IE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSkgPT0gJzEnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LWludGVy
cnVwdGlvbnMuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjMg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3Jj
PSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEt
ZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgot
ICAgICAgICB2YXIgc2Vzc2lvbjsKLSAgICAKLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlh
U2Vzc2lvbigiY29udGVudCIpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIldhaXRpbmcg
Zm9yIENvbnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4iKQotICAgICAgICAgICAgdmFyIHZp
ZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIik7Ci0gICAgICAgICAgICB3YWl0
Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZp
ZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsK
LSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgdmlkZW8u
dm9sdW1lID0gMTsKLSAgICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9IGJlZ2FuUGxheWluZzsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50
KQotICAgICAgICB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8i
KS5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZl
bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxh
eWluZy4iKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUo
c2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRl
cm5hbHMubWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2
aWRlbyIpKScsIDEpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nICdU
cmFuc2llbnQnIHN0YXJ0LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAg
ICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRp
b25Ob3RpZmljYXRpb24oInRyYW5zaWVudCIpJyk7Ci0KLSAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaW50
ZXJydXB0ZWQiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRp
YUVsZW1lbnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpJywg
MC4yNSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ1RyYW5zaWVu
dCcgZW5kLW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAgICAg
cnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0
aW9uKCJ0cmFuc2llbnQiKScpOwotCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRl
cm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZv
bHVtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSknLCAxKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAg
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J1Ry
YW5zaWVudCcgaW50ZXJydXB0aW9uIGV2ZW50cyBzaG91bGQgZHVjayBhdWRpbyBmb3IgJ0NvbnRl
bnQnIG1lZGlhIHNlc3Npb25zLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtc29s
by1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1zb2xvLWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1z
b2xvLWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTggKzAs
MCBAQAotJ1RyYW5zaWVudCBTb2xvJyBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBwYXVzZSBl
bGVtZW50cyBiZWxvbmdpbmcgdG8gJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLgotCi0KLVdhaXRp
bmcgZm9yIENvbnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4KLUVWRU5UKGNhbnBsYXl0aHJv
dWdoKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQgKHZpZGVv
LnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotU2VuZGluZyAnVHJhbnNpZW50IFNvbG8nIHN0YXJ0LW9m
LWludGVycnVwdGlvbiBub3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Np
b25TdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpKQotRVhQ
RUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lu
dGVycnVwdGVkJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotU2Vu
ZGluZyAnVHJhbnNpZW50IFNvbG8nIGVuZC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLgot
UlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRp
b24oInRyYW5zaWVudC1zb2xvIikpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1
cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVz
ZWQgPT0gJ2ZhbHNlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy5o
dG1sCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5z
aWVudC1zb2xvLWludGVycnVwdGlvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDU4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAg
ICAgdmFyIHNlc3Npb247Ci0gICAgCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAg
ICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsK
LQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJXYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRv
IGJlZ2luIHBsYXlpbmcuIikKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAg
ICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0g
ICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50
L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAg
ICAgICAgIHZpZGVvLm9ucGxheWluZyA9IGJlZ2FuUGxheWluZzsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAg
ICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdh
blBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9
IG51bGw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVn
YW4gcGxheWluZy4iKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50
U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IlNlbmRpbmcgJ1RyYW5zaWVudCBTb2xvJyBzdGFydC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0
aW9uLiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25T
dGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpJyk7Ci0KLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50
U3RhdGUoc2Vzc2lvbiknLCAiaW50ZXJydXB0ZWQiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJTZW5kaW5nICdUcmFuc2llbnQgU29sbycgZW5kLW9mLWludGVycnVwdGlvbiBub3RpZmlj
YXRpb24uIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lv
bkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpJyk7Ci0KLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50
U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidUcmFuc2llbnQgU29sbycgaW50ZXJy
dXB0aW9uIGV2ZW50cyBzaG91bGQgcGF1c2UgZWxlbWVudHMgYmVsb25naW5nIHRvICdDb250ZW50
JyBtZWRpYSBzZXNzaW9ucy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4K
LTwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409460</attachid>
            <date>2020-09-23 04:37:20 -0700</date>
            <delta_ts>2020-09-23 04:56:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216831-20200923043719.patch</filename>
            <type>text/plain</type>
            <size>293062</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA5
LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29k
ZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNGVFcuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlOgorICAgICAgICBSZW1vdmUgb3B0aW9uIHRvIGJ1aWxkIHdpdGggTUVESUFfU0VTU0lP
Tiwgbm8gb25lIHdhcyBkb2luZyBpdC4KKwogMjAyMC0wOS0yMiAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgYnVpbGQgcnVsZXMgaW4gTWFrZWZp
bGVzIGFuZCBNYWtlZmlsZS5zaGFyZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1MikK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA5LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgY29kZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFi
bGUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NjgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgbWVkaWEgc2Vzc2lv
biByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9h
aXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXNlc3Npb246IFJlbW92ZWQuCisgICAgICAgIERlbGV0ZSBNb2R1bGVzL21lZGlhc2Vz
c2lvbiBhbmQgcGxhdGZvcm0vbWVkaWFzZXNzaW9uLiBNb3ZlIGZpbGVzIHRoYXQKKyAgICAgICAg
d2VyZSBhY3R1YWxseSB1c2VkIGZvciB0aGUgV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUIGZlYXR1
cmUgdG8gCisgICAgICAgIE1vZHVsZXMvYWlycGxheSB3aGVyZSBvdGhlciBwYXJ0cyBvZiB0aGF0
IGZlYXR1cmUgYXJlIGltcGxlbWVudGVkLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgUmVtb3ZlIGFsbCBj
b2RlIGluc2lkZSBFTkFCTEUoTUVESUFfU0VTU0lPTikuCisKIDIwMjAtMDktMjIgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIFN3aXRjaCB0byBuZXcg
ZmlsZSBuYW1lIGNvbnZlbnRpb24gZm9yIHBhcnRpYWwgaW50ZXJmYWNlcwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlh
Y2FwYWJpbGl0aWVzIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJvbHMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFyZWNvcmRlciIKLSAgICAiJHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9tZWRpYXNlc3Npb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvbWVkaWFzb3VyY2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjIgpAQCAt
MTM4LDcgKzEzNyw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbWVkaWFyZWNvcmRlciIKLSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vbWVkaWFzZXNzaW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2NrIgpAQCAtMTk3LDcgKzE5NSw2IEBAIHNl
dChXZWJDb3JlX0lETF9JTkNMVURFUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiCiAgICAgTW9kdWxl
cy9tZWRpYWNhcGFiaWxpdGllcwogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlcgotICAgIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbQogICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucwogICAgIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QKQEAgLTMyNiwxMCArMzIzLDYg
QEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5pZGwKICAgICBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlckVycm9yRXZlbnQuaWRsCiAKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50K01lZGlhU2Vzc2lvbi5pZGwKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJl
bW90ZUNvbnRyb2xzLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5p
ZGwKLQogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFjaytNZWRpYVNvdXJjZS5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTCtNZWRpYVNvdXJjZS5pZGwKICAgICBNb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjc0NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsOSArMTU2LDYgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXJlY29yZGVyL0Jsb2JFdmVudC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJv
ckV2ZW50LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlh
RWxlbWVudCtNZWRpYVNlc3Npb24uaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNv
dXJjZS9BdWRpb1RyYWNrK01lZGlhU291cmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9ET01VUkwrTWVkaWFTb3VyY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNv
cHkpCkBAIC05NjAsMTQgKzk2MCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNYXBFbGVtZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWFycXVlZUVsZW1lbnQuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50K01lZGlh
U2Vzc2lvbi5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50K1JlbW90ZVBsYXliYWNr
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1M
TWVkaWFFbGVtZW50K1JlbW90ZVBsYXliYWNrLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudC5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1l
bnRNZWRpYVNlc3Npb24uY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxh
eWJhY2suY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNZWRpYUVsZW1lbnRSZW1vdGVQbGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTEyMjgsMTAg
KzEyMjQsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUmVjb3JkZXIu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJl
Y29yZGVyRXJyb3JFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNv
bnRyb2xzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTZXNzaW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBWUEFU
SCA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYWNvbnRyb2xzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFyZWNvcmRlciBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbiBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwK
QEAgLTI1Niw5ICsyNTUsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJh
Y2srTWVkaWFTb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2
NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw2IEBACiBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCisgICAg
TW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAor
CiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCiAg
ICAgTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLmgKQEAgLTg3LDEyICs4OSw2IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJvdmlkZXIuaAogCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uRXZlbnRzLmgKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0
YS5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudC5oCi0KICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NhbXBsZU1hcC5oCiAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lv
biAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDkgKzEzMCw2IEBAIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuY3BwCiBN
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKIE1vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCi1Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50TWVkaWFTZXNzaW9uLmNwcAotTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5jcHAKLU1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3BwCiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5
LmNwcApAQCAtMzA5Miw4ICszMDg5LDYgQEAgSlNNZWRpYVF1ZXJ5TGlzdC5jcHAKIEpTTWVkaWFR
dWVyeUxpc3RFdmVudC5jcHAKIEpTTWVkaWFSZWNvcmRlci5jcHAKIEpTTWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQuY3BwCi1KU01lZGlhUmVtb3RlQ29udHJvbHMuY3BwCi1KU01lZGlhU2Vzc2lvbi5j
cHAKIEpTTWVkaWFTb3VyY2UuY3BwCiBKU01lZGlhU3RyZWFtLmNwcAogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZp
c2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5jcHAKIEpT
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCiBKU0FwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAor
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiBNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q29u
dGFjdEZpZWxkLmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmNwcApAQCAtODgs
NyArODksNiBAQCBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlCiBNb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQotTW9k
dWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIE1vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJh
c2VNYW5hZ2VyQ29jb2EubW0KQEAgLTUyMSw3ICs1MjEsNiBAQCBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2CiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQotcGxhdGZvcm0vbWVkaWFzZXNz
aW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlP
Uy5tbSBAbm8tdW5pZnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAkobm9uZXhpc3RlbnQpCkBA
IC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0vLyBGSVhNRTogVGhlc2UgZG9uJ3Qgc2VlbSB0byBiZSBpbiBhbnkgY3VycmVudCBzcGVj
aWZpY2F0aW9ucy4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZW0uCi0vLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMjE2ODMxLgotWwotICAgIENvbmRpdGlvbmFsPVZJREVPJk1FRElB
X1NFU1NJT04sCi0gICAgSW1wbGVtZW50ZWRCeT1IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
Ci1dIHBhcnRpYWwgaW50ZXJmYWNlIEhUTUxNZWRpYUVsZW1lbnQgewotICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcga2luZDsKLQotICAgIGF0dHJpYnV0ZSBNZWRpYVNlc3Npb24/IHNlc3Npb247Ci19
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxl
bWVudE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9u
IDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgiCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6a2lu
ZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAg
ICByZXR1cm4gZWxlbWVudC0+a2luZCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb246OnNldEtpbmQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3RyaW5nJiBraW5kKQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxl
bWVudC0+c2V0S2luZChraW5kKTsKLX0KLQotTWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50
TWVkaWFTZXNzaW9uOjpzZXNzaW9uKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAg
QVNTRVJUKGVsZW1lbnQpOwotICAgIHJldHVybiBlbGVtZW50LT5zZXNzaW9uKCk7Ci19Ci0KLXZv
aWQgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6c2V0U2Vzc2lvbihIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKGVsZW1l
bnQpOwotICAgIGVsZW1lbnQtPnNldFNlc3Npb24oc2Vzc2lvbik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBFTkFCTEUo
VklERU8pICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oCShyZXZp
c2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi0jaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24gewotcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIGtpbmQoSFRNTE1lZGlhRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lkIHNldEtp
bmQoSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwotCi0gICAgc3RhdGljIE1lZGlh
U2Vzc2lvbiogc2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgc2V0
U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFTZXNzaW9uKik7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5B
QkxFKFZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFSZW1vdGVDb250cm9scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5jcHAJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJv
bHMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJNZWRpYVJlbW90ZUNvbnRyb2xzLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVJlbW90ZUNvbnRyb2xzKTsKLQotTWVkaWFSZW1v
dGVDb250cm9sczo6TWVkaWFSZW1vdGVDb250cm9scyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoY29udGV4dCkKLSAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQotewotfQotCi12b2lkIE1l
ZGlhUmVtb3RlQ29udHJvbHM6OmNsZWFyU2Vzc2lvbigpCi17Ci0gICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKLX0KLQotTWVkaWFSZW1vdGVDb250cm9sczo6fk1lZGlhUmVtb3RlQ29udHJvbHMoKSA9
IGRlZmF1bHQ7Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250cm9sczo6c2V0UHJldmlvdXNUcmFja0Vu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpCi17Ci0gICAgaWYgKG1fcHJldmlvdXNUcmFja0VuYWJsZWQg
PT0gaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ByZXZpb3VzVHJhY2tFbmFi
bGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAgICAgbV9zZXNzaW9u
LT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250
cm9sczo6c2V0TmV4dFRyYWNrRW5hYmxlZChib29sIGlzRW5hYmxlZCkKLXsKLSAgICBpZiAobV9u
ZXh0VHJhY2tFbmFibGVkID09IGlzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9u
ZXh0VHJhY2tFbmFibGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAg
ICAgbV9zZXNzaW9uLT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuaAko
cmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFSZW1vdGVDb250cm9scy5oCShub25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVJlbW90ZUNvbnRyb2xzIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFSZW1vdGVDb250cm9scz4sIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhUmVtb3RlQ29u
dHJvbHMpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFSZW1vdGVDb250cm9scz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU2Vzc2lvbiogc2Vzc2lv
biA9IG51bGxwdHIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJl
bW90ZUNvbnRyb2xzKGNvbnRleHQsIHNlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBib29sIHByZXZp
b3VzVHJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1RyYWNrRW5hYmxlZDsg
fQotICAgIHZvaWQgc2V0UHJldmlvdXNUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICBib29sIG5l
eHRUcmFja0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX25leHRUcmFja0VuYWJsZWQ7IH0KLSAg
ICB2b2lkIHNldE5leHRUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVk
PE1lZGlhUmVtb3RlQ29udHJvbHM+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVJl
bW90ZUNvbnRyb2xzPjo6ZGVyZWY7Ci0KLSAgICB2b2lkIGNsZWFyU2Vzc2lvbigpOwotCi0gICAg
dmlydHVhbCB+TWVkaWFSZW1vdGVDb250cm9scygpOwotCi0gICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVJl
bW90ZUNvbnRyb2xzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KLQotcHJpdmF0ZToKLSAgICBNZWRpYVJl
bW90ZUNvbnRyb2xzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBNZWRpYVNlc3Npb24qKTsKLQot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQot
ICAgIGJvb2wgbV9wcmV2aW91c1RyYWNrRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX25l
eHRUcmFja0VuYWJsZWQgeyBmYWxzZSB9OwotCi0gICAgTWVkaWFTZXNzaW9uKiBtX3Nlc3Npb24g
eyBudWxscHRyIH07Ci0KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90ZUNv
bnRyb2xzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5pZGwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAotXSBp
bnRlcmZhY2UgTWVkaWFSZW1vdGVDb250cm9scyA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoKTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIHByZXZpb3VzVHJhY2tFbmFibGVkOwotICAgIGF0dHJpYnV0ZSBib29sZWFuIG5l
eHRUcmFja0VuYWJsZWQ7Ci0KLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucHJldmlvdXN0
cmFjazsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmV4dHRyYWNrOwotfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI4MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQu
aCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgot
I2luY2x1ZGUgIlBhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1NZWRpYVNlc3Npb246
Ok1lZGlhU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIEtpbmQga2luZCkKLSAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2tpbmQoa2luZCkKLXsKLSAgICAvLyA0LiBNZWRpYSBT
ZXNzaW9ucwotICAgIC8vIDMuIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Np
b24gdHlwZSBpcyAiY29udGVudCIsIHRoZW4gY3JlYXRlIGEgbmV3IG1lZGlhIHJlbW90ZSBjb250
cm9sbGVyIGZvciBtZWRpYQotICAgIC8vICAgIHNlc3Npb24uIChPdGhlcndpc2UgbWVkaWEgc2Vz
c2lvbiBoYXMgbm8gbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuKQotICAgIGlmIChtX2tpbmQgPT0g
S2luZDo6Q29udGVudCkKLSAgICAgICAgbV9jb250cm9scyA9IE1lZGlhUmVtb3RlQ29udHJvbHM6
OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5n
bGV0b24oKS5hZGRNZWRpYVNlc3Npb24oKnRoaXMpOwotfQotCi1NZWRpYVNlc3Npb246On5NZWRp
YVNlc3Npb24oKQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnJlbW92
ZU1lZGlhU2Vzc2lvbigqdGhpcyk7Ci0KLSAgICBpZiAobV9jb250cm9scykKLSAgICAgICAgbV9j
b250cm9scy0+Y2xlYXJTZXNzaW9uKCk7Ci19Ci0KLU1lZGlhUmVtb3RlQ29udHJvbHMqIE1lZGlh
U2Vzc2lvbjo6Y29udHJvbHMoKQotewotICAgIHJldHVybiBtX2NvbnRyb2xzLmdldCgpOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6YWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmIGVs
ZW1lbnQpCi17Ci0gICAgQVNTRVJUKCFtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5jb250YWlucygm
ZWxlbWVudCkpOwotICAgIG1fcGFydGljaXBhdGluZ0VsZW1lbnRzLmFkZCgmZWxlbWVudCk7Ci19
Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpyZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkKLXsKLSAgICBBU1NFUlQobV9wYXJ0aWNpcGF0aW5nRWxlbWVudHMuY29udGFp
bnMoJmVsZW1lbnQpKTsKLSAgICBtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5yZW1vdmUoJmVsZW1l
bnQpOwotCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIG1f
YWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgfSk7Ci0K
LSAgICBpZiAobV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cykKLSAgICAgICAg
bV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy0+cmVtb3ZlKCZlbGVtZW50KTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYgd29ya2VyKQotewotICAgIGlmIChQYWdlICpwYWdl
ID0gbV9kb2N1bWVudC5wYWdlKCkpIHsKLSAgICAgICAgYm9vbCBoYWRBY3RpdmVNZWRpYUVsZW1l
bnRzID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuaGFzQWN0aXZlTWVkaWFFbGVt
ZW50cygpOwotCi0gICAgICAgIHdvcmtlcigpOwotCi0gICAgICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKTsKLSAgICAgICAgaWYgKGhhZEFjdGl2ZU1lZGlhRWxlbWVudHMgIT0gaGFz
QWN0aXZlTWVkaWFFbGVtZW50cykKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
Lmhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGhhc0FjdGl2
ZU1lZGlhRWxlbWVudHMpOwotICAgIH0gZWxzZQotICAgICAgICB3b3JrZXIoKTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OmFkZEFjdGl2ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KQotewotICAgIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoWyZdKCkgewotICAgICAg
ICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5hZGQoJmVsZW1lbnQpOwotICAgIH0pOwot
fQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aXNNZWRpYUVsZW1lbnRBY3RpdmUoSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVu
dHMuY29udGFpbnMoJmVsZW1lbnQpOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aGFzQWN0aXZl
TWVkaWFFbGVtZW50cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FjdGl2ZVBhcnRpY2lwYXRp
bmdFbGVtZW50cy5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0
YShjb25zdCBPcHRpb25hbDxNZXRhZGF0YT4mIG9wdGlvbmFsTWV0YWRhdGEpCi17Ci0gICAgaWYg
KCFvcHRpb25hbE1ldGFkYXRhKQotICAgICAgICBtX21ldGFkYXRhID0geyB9OwotICAgIGVsc2Ug
ewotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IG9wdGlvbmFsTWV0YWRhdGEudmFsdWUoKTsKLSAg
ICAgICAgbV9tZXRhZGF0YSA9IHsgbWV0YWRhdGEudGl0bGUsIG1ldGFkYXRhLmFydGlzdCwgbWV0
YWRhdGEuYWxidW0sIG1fZG9jdW1lbnQuY29tcGxldGVVUkwobWV0YWRhdGEuYXJ0d29yaykgfTsK
LSAgICB9Ci0KLSAgICBpZiAoYXV0byogcGFnZSA9IG1fZG9jdW1lbnQucGFnZSgpKQotICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5tZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSht
X21ldGFkYXRhKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmRlYWN0aXZhdGUoKQotewotICAg
IC8vIDUuMS4yLiBPYmplY3QgbWVtYmVycwotICAgIC8vIFdoZW4gdGhlIGRlYWN0aXZhdGUoKSBt
ZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKLSAgICAvLyAxLiBMZXQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLgotICAgIC8vIDIuIEluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEgc2Vzc2lv
buKAmXMgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAvLyAzLiBTZXQgbWVkaWEg
c2Vzc2lvbidzIHJlc3VtZSBsaXN0IHRvIGFuIGVtcHR5IGxpc3QuCi0gICAgLy8gNC4gU2V0IG1l
ZGlhIHNlc3Npb24ncyBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIHRvIGFuIGVtcHR5IGxp
c3QuCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIHdoaWxl
ICghbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMudGFrZUFueSgpLT5wYXVzZSgpOwotICAgIH0p
OwotCi0gICAgLy8gNS4gUnVuIHRoZSBtZWRpYSBzZXNzaW9uIGRlYWN0aXZhdGlvbiBhbGdvcml0
aG0gZm9yIG1lZGlhIHNlc3Npb24uCi0gICAgcmVsZWFzZUludGVybmFsKCk7Ci19Ci0KLXZvaWQg
TWVkaWFTZXNzaW9uOjpyZWxlYXNlSW50ZXJuYWwoKQotewotICAgIC8vIDYuNS4gUmVsZWFzaW5n
IGEgbWVkaWEgc2Vzc2lvbgotICAgIC8vIDEuIElmIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGN1
cnJlbnQgc3RhdGUgaXMgaWRsZSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYg
KG1fY3VycmVudFN0YXRlID09IFN0YXRlOjpJZGxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyAyLiBJZiBjdXJyZW50IG1lZGlhIHNlc3Npb24gc3RpbGwgaGFzIG9uZSBvciBtb3JlIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLCB0aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVw
cy4KLSAgICBpZiAoIW1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gMy4gT3B0aW9uYWxseSwgYmFzZWQgb24gcGxhdGZvcm0g
Y29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcmVsZWFzZSBhbnkgY3VycmVudGx5IGhl
bGQgcGxhdGZvcm0gbWVkaWEgZm9jdXMKLSAgICAvLyAgICBmb3IgY3VycmVudCBtZWRpYSBzZXNz
aW9uLgotICAgIC8vIDQuIE9wdGlvbmFsbHksIGJhc2VkIG9uIHBsYXRmb3JtIGNvbnZlbnRpb25z
LCB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSBhbnkgcHJldmlvdXNseSBlc3RhYmxpc2hlZCBv
bmdvaW5nIG1lZGlhCi0gICAgLy8gICAgaW50ZXJmYWNlIGluIHRoZSB1bmRlcmx5aW5nIHBsYXRm
b3Jt4oCZcyBub3RpZmljYXRpb25zIGFyZWEgYW5kIGFueSBvbmdvaW5nIG1lZGlhIGludGVyZmFj
ZSBpbiB0aGUgdW5kZXJseWluZwotICAgIC8vICAgIHBsYXRmb3JtJ3MgbG9jayBzY3JlZW4gYXJl
YSBmb3IgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBhbnkuCi0gICAgLy8gNS4gT3B0aW9uYWxs
eSwgYmFzZWQgb24gcGxhdGZvcm0gY29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcHJl
dmVudCBhbnkgaGFyZHdhcmUgYW5kL29yIHNvZnR3YXJlIG1lZGlhIGtleXMKLSAgICAvLyAgICBm
cm9tIGNvbnRyb2xsaW5nIHBsYXliYWNrIG9mIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLgotICAgIC8vIDYuIFNldCBjdXJyZW50IG1l
ZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6SWRsZTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246Omludm9rZSgpCi17Ci0gICAg
Ly8gNC40IEFjdGl2YXRpbmcgYSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gMS4gSWYgd2UncmUgYWxy
ZWFkeSBBQ1RJVkUgdGhlbiByZXR1cm4gc3VjY2Vzcy4KLSAgICBpZiAobV9jdXJyZW50U3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyAyLiBPcHRp
b25hbGx5LCBiYXNlZCBvbiBwbGF0Zm9ybSBjb252ZW50aW9ucywgcmVxdWVzdCB0aGUgbW9zdCBh
cHByb3ByaWF0ZSBwbGF0Zm9ybS1sZXZlbCBtZWRpYSBmb2N1cyBmb3IgbWVkaWEKLSAgICAvLyAg
ICBzZXNzaW9uIGJhc2VkIG9uIGl0cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZS4KLQotICAg
IC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwcy4uLgotCi0gICAgLy8gNC4gU2V0IG91ciBjdXJyZW50
IHN0YXRlIHRvIEFDVElWRSBhbmQgcmV0dXJuIHN1Y2Nlc3MuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6QWN0aXZlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lv
bjo6aGFuZGxlRHVja0ludGVycnVwdGlvbigpCi17Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDog
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnNldFNob3Vs
ZER1Y2sodHJ1ZSk7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpJbnRlcnJ1cHRlZDsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmhhbmRsZVVuZHVja0ludGVycnVwdGlvbigpCi17Ci0g
ICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0g
ICAgICAgIGVsZW1lbnQtPnNldFNob3VsZER1Y2soZmFsc2UpOwotCi0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6QWN0aXZlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6aGFuZGxlSW5kZWZp
bml0ZVBhdXNlSW50ZXJydXB0aW9uKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci0KLSAgICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5j
bGVhcigpOwotICAgIG1fY3VycmVudFN0YXRlID0gU3RhdGU6OklkbGU7Ci19Ci0KLXZvaWQgTWVk
aWFTZXNzaW9uOjpoYW5kbGVQYXVzZUludGVycnVwdGlvbigpCi17Ci0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6SW50ZXJydXB0ZWQ7Ci0KLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpoYW5kbGVVbnBhdXNl
SW50ZXJydXB0aW9uKCkKLXsKLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpBY3RpdmU7Ci0K
LSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OnRvZ2dsZVBsYXliYWNrKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0
aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAg
IGlmIChlbGVtZW50LT5wYXVzZWQoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZWxlbWVudC0+cGF1c2UoKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb246OnNhZmVseUl0ZXJhdGVBY3RpdmVNZWRpYUVsZW1lbnRzKGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Kik+JiBoYW5kbGVyKQotewotICAg
IEFTU0VSVCghbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyk7Ci0KLSAgICBI
YXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5
ID0gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgbV9pdGVyYXRlZEFjdGl2ZVBh
cnRpY2lwYXRpbmdFbGVtZW50cyA9ICZhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5Owot
Ci0gICAgd2hpbGUgKCFhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LmlzRW1wdHkoKSkK
LSAgICAgICAgaGFuZGxlcihhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LnRha2VBbnko
KSk7Ci0KLSAgICBtX2l0ZXJhdGVkQWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzID0gbnVsbHB0
cjsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb05leHRUcmFjaygpCi17Ci0gICAgaWYg
KG1fY29udHJvbHMgJiYgbV9jb250cm9scy0+bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICBt
X2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm5leHR0
cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb1ByZXZpb3VzVHJhY2soKQotewotICAg
IGlmIChtX2NvbnRyb2xzICYmIG1fY29udHJvbHMtPnByZXZpb3VzVHJhY2tFbmFibGVkKCkpCi0g
ICAgICAgIG1fY29udHJvbHMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucHJldmlvdXN0cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNvbnRyb2xJc0VuYWJsZWRE
aWRDaGFuZ2UoKQotewotICAgIC8vIE1lZGlhIHJlbW90ZSBjb250cm9scyBhcmUgb25seSBhbGxv
d2VkIG9uIENvbnRlbnQgbWVkaWEgc2Vzc2lvbnMuCi0gICAgQVNTRVJUKG1fa2luZCA9PSBLaW5k
OjpDb250ZW50KTsKLQotICAgIC8vIE1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0byBDb250ZW50
IG1lZGlhIHNlc3Npb25zIGhhdmUgbXV0dWFsbHktZXhjbHVzaXZlIHBsYXliYWNrLgotICAgIEFT
U0VSVChtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5zaXplKCkgPD0gMSk7Ci0KLSAgICBp
ZiAobV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gKm1fYWN0aXZlUGFydGljaXBh
dGluZ0VsZW1lbnRzLmJlZ2luKCk7Ci0gICAgbV9kb2N1bWVudC51cGRhdGVJc1BsYXlpbmdNZWRp
YShlbGVtZW50LT5lbGVtZW50SUQoKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCShub25leGlzdGVudCkKQEAg
LTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSAiTWVkaWFSZW1vdGVDb250cm9scy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU2Vzc2lvbj4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgS2luZCB7IENvbnRlbnQs
IFRyYW5zaWVudCwgVHJhbnNpZW50U29sbywgQW1iaWVudCB9OwotICAgIGVudW0gY2xhc3MgU3Rh
dGUgeyBJZGxlLCBBY3RpdmUsIEludGVycnVwdGVkIH07Ci0KLSAgICBzdHJ1Y3QgTWV0YWRhdGEg
ewotICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgICAgIFN0cmluZyBhcnRpc3Q7Ci0gICAgICAg
IFN0cmluZyBhbGJ1bTsKLSAgICAgICAgU3RyaW5nIGFydHdvcms7Ci0gICAgfTsKLQotICAgIHN0
YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24oZG9j
dW1lbnQsIGtpbmQpKTsKLSAgICB9Ci0KLSAgICB+TWVkaWFTZXNzaW9uKCk7Ci0KLSAgICBLaW5k
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBNZWRpYVJlbW90ZUNvbnRyb2xz
KiBjb250cm9scygpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KLSAgICBib29sIGhhc0FjdGl2ZU1lZGlh
RWxlbWVudHMoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0TWV0YWRhdGEoY29uc3QgT3B0aW9uYWw8
TWV0YWRhdGE+Jik7Ci0KLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLQotICAgIC8vIFJ1bnMgdGhl
IG1lZGlhIHNlc3Npb24gaW52b2NhdGlvbiBhbGdvcml0aG0gYW5kIHJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzLgotICAgIGJvb2wgaW52b2tlKCk7Ci0KLSAgICB2b2lkIGhhbmRsZUR1Y2tJbnRlcnJ1
cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZUluZGVmaW5pdGVQYXVzZUludGVycnVwdGlvbigpOwot
ICAgIHZvaWQgaGFuZGxlUGF1c2VJbnRlcnJ1cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZVVuZHVj
a0ludGVycnVwdGlvbigpOwotICAgIHZvaWQgaGFuZGxlVW5wYXVzZUludGVycnVwdGlvbigpOwot
Ci0gICAgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7
Ci0gICAgdm9pZCBza2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICB2b2lkIGNvbnRyb2xJc0Vu
YWJsZWREaWRDaGFuZ2UoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKLQotICAgIE1lZGlhU2Vzc2lvbihEb2N1bWVudCYsIEtpbmQpOwotCi0gICAgdm9p
ZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIHZvaWQgcmVtb3ZlTWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKLQotICAgIHZvaWQgc2FmZWx5SXRlcmF0ZUFj
dGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1l
bnQqKT4mKTsKLSAgICB2b2lkIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKHZvaWQpPiYpOwotICAgIHZvaWQgYWRkQWN0aXZlTWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQmKTsKLSAgICBib29sIGlzTWVkaWFFbGVtZW50QWN0aXZlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKLQotICAgIHZvaWQgcmVsZWFzZUludGVybmFsKCk7Ci0KLSAgICBTdGF0ZSBt
X2N1cnJlbnRTdGF0ZSB7IFN0YXRlOjpJZGxlIH07Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9wYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVk
aWFFbGVtZW50Kj4qIG1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMgeyBudWxs
cHRyIH07Ci0KLSAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBjb25zdCBLaW5kIG1fa2lu
ZDsKLSAgICBSZWZQdHI8TWVkaWFSZW1vdGVDb250cm9scz4gbV9jb250cm9sczsKLSAgICBNZWRp
YVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NFU1NJT04pICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPU1F
RElBX1NFU1NJT04sCi0gICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKLV0gaW50ZXJmYWNlIE1lZGlhU2Vzc2lvbiB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlh
U2Vzc2lvbktpbmQga2luZCA9ICJjb250ZW50Iik7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVkaWFTZXNzaW9uS2luZCBraW5kOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVJlbW90
ZUNvbnRyb2xzPyBjb250cm9sczsKLQotICAgIHVuZGVmaW5lZCBzZXRNZXRhZGF0YShNZWRpYU1l
dGFkYXRhPyBtZXRhZGF0YSk7Ci0KLSAgICB1bmRlZmluZWQgZGVhY3RpdmF0ZSgpOwotfTsKLQot
ZW51bSBNZWRpYVNlc3Npb25LaW5kIHsKLSAgICAiY29udGVudCIsCi0gICAgInRyYW5zaWVudCIs
Ci0gICAgInRyYW5zaWVudC1zb2xvIiwKLSAgICAiYW1iaWVudCIKLX07Ci0KLWRpY3Rpb25hcnkg
TWVkaWFNZXRhZGF0YSB7Ci0gICAgRE9NU3RyaW5nIHRpdGxlOwotICAgIERPTVN0cmluZyBhcnRp
c3Q7Ci0gICAgRE9NU3RyaW5nIGFsYnVtOwotICAgIFVTVlN0cmluZyBhcnR3b3JrOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkV2ZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbkV2ZW50cy5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25FdmVudHMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gTWVkaWFFdmVudFR5cGUgewotICAgIFBsYXlQYXVzZSwKLSAg
ICBUcmFja05leHQsCi0gICAgVHJhY2tQcmV2aW91cwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnRlbnRTZXNzaW9uS2luZCA9ICJjb250ZW50IjsKLQotTWVkaWFTZXNz
aW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj4gbWFuYWdlcjsKLSAgICByZXR1
cm4gbWFuYWdlcjsKLX0KLQotTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdl
cigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIG1faW50ZXJydXB0aW9uUHJvdmlkZXIgPSBh
ZG9wdFJlZihuZXcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMoKnRoaXMpKTsK
LSAgICBtX2ludGVycnVwdGlvblByb3ZpZGVyLT5iZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlv
bnMoKTsKLSNlbmRpZgotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Omhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKSBjb25zdAotewotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lv
bnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPmhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQotewotICAgIG1fc2Vzc2lvbnMuYWRkKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KQotewotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5YmFjaygpCi17Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICBTdHJpbmcgc2Vzc2lvbktpbmQgPSBzZXNzaW9uLT5r
aW5kKCk7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUoKSA9PSBNZWRpYVNlc3Np
b246OlN0YXRlOjpBY3RpdmUgJiYgKHNlc3Npb25LaW5kID09IGNvbnRlbnRTZXNzaW9uS2luZCB8
fCBzZXNzaW9uS2luZCA9PSAiIikpCi0gICAgICAgICAgICBzZXNzaW9uLT50b2dnbGVQbGF5YmFj
aygpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9OZXh0VHJh
Y2soKQotewotICAgIC8vIDUuMi4yIFdoZW4gdGhlIHVzZXIgcHJlc3NlcyB0aGUgTWVkaWFUcmFj
a05leHQgbWVkaWEga2V5LCB0aGVuIGZvciBlYWNoIENvbnRlbnQtYmFzZWQgbWVkaWEgc2Vzc2lv
biB0aGF0IGlzCi0gICAgLy8gY3VycmVudGx5IEFDVElWRSBhbmQgaGFzIGEgbWVkaWEgcmVtb3Rl
IGNvbnRyb2xsZXIgd2l0aCBpdHMgbmV4dFRyYWNrRW5hYmxlZCBhdHRyaWJ1dGUgc2V0IHRvIHRy
dWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbmV4
dHRyYWNrIGF0IGl0cyBtZWRpYSByZW1vdGUgY29udHJvbGxlci4KLSAgICBmb3IgKGF1dG8qIHNl
c3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUo
KSA9PSBNZWRpYVNlc3Npb246OlN0YXRlOjpBY3RpdmUgJiYgc2Vzc2lvbi0+a2luZCgpID09IGNv
bnRlbnRTZXNzaW9uS2luZCkKLSAgICAgICAgICAgIHNlc3Npb24tPnNraXBUb05leHRUcmFjaygp
OwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9QcmV2aW91c1Ry
YWNrKCkKLXsKLSAgICAvLyA1LjIuMiBXaGVuIHRoZSB1c2VyIHByZXNzZXMgdGhlIE1lZGlhVHJh
Y2tQcmV2aW91cyBtZWRpYSBrZXksIHRoZW4gZm9yIGVhY2ggQ29udGVudC1iYXNlZCBtZWRpYSBz
ZXNzaW9uIHRoYXQgaXMKLSAgICAvLyBjdXJyZW50bHkgQUNUSVZFIGFuZCBoYXMgYSBtZWRpYSBy
ZW1vdGUgY29udHJvbGxlciB3aXRoIGl0cyBwcmV2aW91c1RyYWNrRW5hYmxlZCBhdHRyaWJ1dGUg
c2V0IHRvIHRydWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQg
bmFtZWQgcHJldmlvdXN0cmFjayBhdCBpdHMgbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuCi0gICAg
Zm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+
Y3VycmVudFN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlICYmIHNlc3Npb24t
PmtpbmQoKSA9PSBjb250ZW50U2Vzc2lvbktpbmQpCi0gICAgICAgICAgICBzZXNzaW9uLT5za2lw
VG9QcmV2aW91c1RyYWNrKCk7Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbklu
dGVycnVwdGluZ0NhdGVnb3J5IGludGVycnVwdGluZ0NhdGVnb3J5KQotewotICAgIC8vIDQuNS4y
IEludGVycnVwdGluZyBhIG1lZGlhIHNlc3Npb24KLSAgICAvLyBXaGVuIGEgc3RhcnQtb2YtaW50
ZXJydXB0aW9uIG5vdGlmaWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9y
bSwgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9u
IGludGVycnVwdGlvbiBhbGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMs
IHBhc3NpbmcgaW4gZWFjaCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9y
IChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBz
ZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSBpcyBub3QgYWN0aXZlLCB0aGVuIHRlcm1pbmF0ZSB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgKHNlc3Npb24tPmN1cnJlbnRTdGF0ZSgpICE9IE1lZGlhU2Vz
c2lvbjo6U3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8v
IDIuIExldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSB0aGUgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSB0aGF0IHRyaWdnZXJlZCB0aGlzIGludGVycnVwdGlvbi4KLSAgICAg
ICAgLy8gICAgSWYgdGhpcyBpbnRlcnJ1cHRpb24gaGFzIG5vIGtub3duIG1lZGlhIHNlc3Npb24g
Y2F0ZWdvcnksIGxldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSBEZWZh
dWx0LgotCi0gICAgICAgIC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwczoKLSAgICAgICAgaWYgKGlu
dGVycnVwdGluZ0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpD
b250ZW50KSB7Ci0gICAgICAgICAgICAvLyAtICBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBDb250ZW50OgotICAgICAgICAgICAgLy8gICAgSWYgbWVkaWEgc2Vzc2lv
bidzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiB0eXBlIGlzIERlZmF1bHQgb3IgQ29udGVudCB0aGVu
IGluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEKLSAgICAgICAgICAgIC8vICAgIHNlc3Np
b24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQgc2V0IG1lZGlhIHNl
c3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+
a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09
IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFu
ZGxlSW5kZWZpbml0ZVBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50
ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRy
YW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Np
b24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRlbnQgdGhl
biBkdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MgYWN0aXZlCi0gICAgICAgICAgICAvLyAgIGF1
ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAgICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkg
PT0gTWVkaWFTZXNzaW9uS2luZDo6RGVmYXVsdCB8fCBzZXNzaW9uLT5raW5kKCkgPT0gTWVkaWFT
ZXNzaW9uS2luZDo6Q29udGVudCkKLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVEdWNr
SW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkg
PT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8pIHsKLSAg
ICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMg
VHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJy
ZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2llbnQgb3Ig
VHJhbnNpZW50IFNvbG8gdGhlbiBwYXVzZQotICAgICAgICAgICAgLy8gICBhbGwgb2YgbWVkaWEg
c2Vzc2lvbidzIGFjdGl2ZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIGFuZCBzZXQgY3Vy
cmVudCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAg
ICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkK
LSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVQYXVzZUludGVycnVwdGlvbigpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSBpbnRlcnJ1cHRpbmdDYXRlZ29yeSkKLXsKLSAgICAvLyA0LjUuMiBJbnRlcnJ1cHRpbmcg
YSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gV2hlbiBhbiBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlm
aWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9ybSwgdGhlbiB0aGUgdXNl
ciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9uIGNvbnRpbnVhdGlvbiBh
bGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMsIHBhc3NpbmcgaW4gZWFj
aCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSBpcyBub3QgaW50ZXJydXB0ZWQsIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgot
ICAgICAgICBpZiAoc2Vzc2lvbi0+Y3VycmVudFN0YXRlKCkgIT0gTWVkaWFTZXNzaW9uOjpTdGF0
ZTo6SW50ZXJydXB0ZWQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAyLiBM
ZXQgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgYmUgdGhlIG1lZGlhIHNlc3Np
b24gY2F0ZWdvcnkgdGhhdCBpbml0aWFsbHkgdHJpZ2dlcmVkIHRoaXMgaW50ZXJydXB0aW9uLgot
ICAgICAgICAvLyAgICBJZiB0aGlzIGludGVycnVwdGlvbiBoYXMgbm8ga25vd24gbWVkaWEgc2Vz
c2lvbiBjYXRlZ29yeSwgbGV0IGludGVycnVwdGluZyBtZWRpYSBzZXNzaW9uIGNhdGVnb3J5IGJl
IERlZmF1bHQuCi0KLSAgICAgICAgLy8gMy4gUnVuIHRoZXNlIHN1YnN0ZXBzOgotICAgICAgICBp
ZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnk6OlRyYW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlh
IHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRl
bnQsIHRoZW4gdW5kdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MKLSAgICAgICAgICAgIC8vICAg
YWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9u
J3MgY3VycmVudCBzdGF0ZSB0byBhY3RpdmUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2lu
ZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09IE1l
ZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxl
VW5kdWNrSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0
ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8p
IHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdv
cnkgaXMgVHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24n
cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2ll
bnQsIG9yIFRyYW5zaWVudCBTb2xvLCB0aGVuCi0gICAgICAgICAgICAvLyAgIHVucGF1c2UgdGhl
IG1lZGlhIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQg
c2V0IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGFjdGl2ZS4KLSAgICAgICAgICAg
IGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkKLSAgICAg
ICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVVbnBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJM
RShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMjY3
NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
TWFuYWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyIDogcHVi
bGljIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50IHsKLSAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNpbmdsZXRvbigpOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
a2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGlu
Z0NhdGVnb3J5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lv
bjsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLQotICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cygpIGNvbnN0OwotCi0gICAgdm9pZCBhZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNz
aW9uJik7Ci0gICAgdm9pZCByZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7Ci0KLSAg
ICBSZWZQdHI8TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI+IG1faW50ZXJydXB0aW9u
UHJvdmlkZXI7Ci0gICAgSGFzaFNldDxNZWRpYVNlc3Npb24qPiBtX3Nlc3Npb25zOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
ZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBN
ZWRpYVNlc3Npb25NZXRhZGF0YSBmaW5hbCB7Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9uTWV0
YWRhdGEoKSA9IGRlZmF1bHQ7Ci0KLSAgICBNZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFydGlzdCwgY29uc3QgU3RyaW5nJiBhbGJ1bSwgY29u
c3QgVVJMJiBhcnR3b3JrVVJMKQotICAgICAgICA6IG1fdGl0bGUodGl0bGUpCi0gICAgICAgICwg
bV9hcnRpc3QoYXJ0aXN0KQotICAgICAgICAsIG1fYWxidW0oYWxidW0pCi0gICAgICAgICwgbV9h
cnR3b3JrVVJMKGFydHdvcmtVUkwpIHsgfQotCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aXRsZTsgfQotICAgIFN0cmluZyBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2Fy
dGlzdDsgfQotICAgIFN0cmluZyBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxidW07IH0KLSAg
ICBVUkwgYXJ0d29ya1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0d29ya1VSTDsgfQotCi1wcml2
YXRlOgotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2FydGlzdDsKLSAgICBTdHJp
bmcgbV9hbGJ1bTsKLSAgICBVUkwgbV9hcnR3b3JrVVJMOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCShyZXZpc2lvbiAy
Njc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjc0NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5o
IgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKLSNpbmNsdWRlICJX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMu
aD4KLSNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBTZWNvbmRzIHRh
c2tEZWxheUludGVydmFsIHsgMTAwX21zIH07Ci0KLSNkZWZpbmUgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSIGxvZ2dlcigpLmxvZ0Fsd2F5cwotCi1zdHJ1Y3QgQ2xpZW50U3RhdGUgewot
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAgIGV4cGxpY2l0IENsaWVu
dFN0YXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCi0gICAgICAgIDogY2xpZW50KGNs
aWVudCkKLSAgICAgICAgLCBjb250ZXh0SWQoY29udGV4dElkKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yID09IChDbGllbnRTdGF0ZSBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gY29udGV4dElkID09IG90aGVyLmNvbnRleHRJZCAmJiAmY2xpZW50
ID09ICZvdGhlci5jbGllbnQ7Ci0gICAgfQotCi0gICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYgY2xpZW50OwotICAgIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkOwotICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBm
bGFncyB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9OwotICAgIGJvb2wg
cmVxdWVzdGVkUGlja2VyIHsgZmFsc2UgfTsKLSAgICBib29sIHByZXZpb3VzbHlSZXF1ZXN0ZWRQ
aWNrZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgY29uZmlndXJhdGlvblJlcXVpcmVkIHsgdHJ1ZSB9
OwotICAgIGJvb2wgcGxheWVkVG9FbmQgeyBmYWxzZSB9OwotfTsKLQotc3RhdGljIGJvb2wgZmxh
Z3NBcmVTZXQoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHZhbHVlLCB1bnNpZ25lZCBm
bGFncykKLXsKLSAgICByZXR1cm4gdmFsdWUgJiBmbGFnczsKLX0KLQotU3RyaW5nIG1lZGlhUHJv
ZHVjZXJTdGF0ZVN0cmluZyhNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpCi17
Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmc7Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nQXVkaW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIklzUGxheWluZ0F1ZGlv
KyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKQotICAg
ICAgICBzdHJpbmcuYXBwZW5kKCJJc1BsYXlpbmdWaWRlbysiKTsKLSAgICBpZiAoZmxhZ3MgJiBN
ZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKQotICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKyIpOwotICAgIGlmIChmbGFncyAmIE1l
ZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIpCi0gICAg
ICAgIHN0cmluZy5hcHBlbmQoIkhhc1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyKyIpOwotICAg
IGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJSZXF1aXJlc1RhcmdldE1vbml0b3JpbmcrIik7
Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkKLSAgICAgICAgc3RyaW5nLmFwcGVuZCgiRXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSsiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpEaWRQbGF5VG9FbmQp
Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoIkRpZFBsYXlUb0VuZCsiKTsKLSAgICBpZiAoZmxhZ3Mg
JiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQo
Ikhhc0F1ZGlvT3JWaWRlbysiKTsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RyaW5nLmFwcGVuZCgiSXNOb3RQbGF5aW5nIik7Ci0gICAgZWxzZQotICAgICAgICBzdHJpbmcu
cmVzaXplKHN0cmluZy5sZW5ndGgoKSAtIDEpOwotCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIiB7
ICIsIHN0cmluZy50b1N0cmluZygpLCAiIH0iKTsKLX0KLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9u
TG9nZ2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25Mb2dnZXIp
OwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+IGNyZWF0ZShXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyJiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
TWVkaWFTZXNzaW9uTG9nZ2VyPihtYW5hZ2VyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKGNvbnN0IGNoYXIq
IG1ldGhvZE5hbWUsIENsaWVudFN0YXRlKiBzdGF0ZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1
bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXN0YXRlLT5jbGllbnQuYWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbG9nZ2Vy
LT5sb2dBbHdheXMoTG9nTWVkaWEsIG1ha2VTdHJpbmcoIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OiIsIG1ldGhvZE5hbWUsICcgJyksIHN0YXRlLT5jb250ZXh0SWQudG9VSW50NjQoKSwgc3RhdGUt
PmZsYWdzLCBhcmd1bWVudHMuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoIW1fbWFuYWdlci5hbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgbV9sb2dnZXItPmxvZ0Fsd2F5cyhMb2dNZWRpYSwgbWFrZVN0cmlu
ZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0aG9kTmFtZSwgJyAnKSwgYXJndW1lbnRz
Li4uKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxXZWJN
ZWRpYVNlc3Npb25Mb2dnZXI+IHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFTZXNzaW9uTG9nZ2Vy
PihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJik7Ci0gICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIpCi0gICAgICAgIDogbV9tYW5hZ2VyKG1hbmFn
ZXIpCi0gICAgICAgICwgbV9sb2dnZXIoTG9nZ2VyOjpjcmVhdGUodGhpcykpCi0gICAgewotICAg
IH0KLQotICAgIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1fbWFuYWdlcjsKLSAgICBSZWY8TG9n
Z2VyPiBtX2xvZ2dlcjsKLX07Ci0KLVdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6bG9nZ2VyKCkKLXsKLSAgICBpZiAoIW1fbG9nZ2VyKQotICAgICAgICBtX2xv
Z2dlciA9IFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcjo6Y3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVy
biAqbV9sb2dnZXI7Ci19Ci0KLWJvb2wgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFsbE9mKG1fY2xpZW50U3RhdGUs
IFtdIChhdXRvJiBzdGF0ZSkgewotICAgICAgICByZXR1cm4gc3RhdGUtPmNsaWVudC5hbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKLXsKLSAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxlZCA9PSBlbmFibGVkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwot
ICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwotfQotCi12b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCi17
Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtb2Nr
UGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6Om1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKLXsK
LSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwotICAgIG1vY2tQ
aWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsKLX0KLQotTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQotewotICAgIGlmICghbV9w
aWNrZXJPdmVycmlkZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8TWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9waWNr
ZXJPdmVycmlkZS5nZXQoKTsKLX0KLQotV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFyZ2V0UGlja2VyKCkKLXsKLSAgICBpZiAobV9t
b2NrUGlja2VyRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIG1vY2tQaWNrZXIoKTsKLQotICAgIHJl
dHVybiBwbGF0Zm9ybVBpY2tlcigpOwotfQotCi1XZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyKCkKLSAgICA6IG1fdGFza1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnRhc2tUaW1lckZpcmVkKQotICAgICwg
bV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCkKLXsKLX0KLQotV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLVBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xp
ZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ID09IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybiB7IH07Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIGNvbnRleHRJZC50b1VJbnQ2NCgpKTsKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtl
VW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwotCi0gICAgaWYgKG1fZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAg
c2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotCi0gICAgcmV0dXJuIGNvbnRleHRJZDsKLX0KLQotdm9p
ZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIHNpemVfdCBpbmRleCA9IGZp
bmQoJmNsaWVudCwgY29udGV4dElkKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwot
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5n
ZXQoKSk7Ci0KLSAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVE
ZWxheWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZUFsbFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50cyhXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50JiBjbGllbnQpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9jbGllbnRTdGF0ZS5zaXpl
KCk7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgaWYgKCZtX2NsaWVudFN0YXRlW2kgLSAxXS0+Y2xp
ZW50ID09ICZjbGllbnQpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFO
QUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOwotICAgICAgICAgICAg
bV9jbGllbnRTdGF0ZS5yZW1vdmUoaSAtIDEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNjaGVk
dWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8mIGNsaWVudFJlcXVlc3RpbmdQaWNrZXIgPSBtX2NsaWVudFN0
YXRlW2luZGV4XTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAg
ICAgICBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyID0gc3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1Bp
Y2tlcjsKLSAgICAgICAgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9
PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwotICAgIH0KLQotICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwotCi0g
ICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5kZXhd
LT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSk7Ci0gICAg
dGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNsaWVudC5wbGF0Zm9ybVZp
ZXcoKSwgRmxvYXRSZWN0KHJlY3QpLCBoYXNBY3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFuY2Up
OwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlRGlkQ2hhbmdl
KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBuZXdGbGFncykKLXsKLSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRl
eHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGNoYW5nZWRDbGllbnRTdGF0
ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhdOwotICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBvbGRGbGFncyA9IGNoYW5nZWRDbGllbnRTdGF0ZS0+ZmxhZ3M7Ci0gICAgaWYgKG5ld0Zs
YWdzID09IG9sZEZsYWdzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3
IGZsYWdzID0gIiwgbmV3RmxhZ3MpOwotCi0gICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9
IG5ld0ZsYWdzOwotCi0gICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHVwZGF0ZUNv
bmZpZ3VyYXRpb25GbGFncyA9IE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRN
b25pdG9yaW5nIHwgTWVkaWFQcm9kdWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlM
aXN0ZW5lciB8IE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKLSAgICBpZiAoKG9sZEZs
YWdzICYgdXBkYXRlQ29uZmlndXJhdGlvbkZsYWdzKSAhPSAobmV3RmxhZ3MgJiB1cGRhdGVDb25m
aWd1cmF0aW9uRmxhZ3MpKQotICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0
b3JpbmdDb25maWd1cmF0aW9uVGFzayk7Ci0KLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgcGxheWluZ1RvVGFyZ2V0RmxhZ3MgPSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4
dGVybmFsRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW87Ci0gICAgaWYgKChv
bGRGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZsYWdzKSAhPSAobmV3RmxhZ3MgJiBwbGF5aW5nVG9U
YXJnZXRGbGFncykpIHsKLSAgICAgICAgaWYgKGZsYWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgIWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJv
ZHVjZXI6OkRpZFBsYXlUb0VuZCkpCi0gICAgICAgICAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPnBs
YXllZFRvRW5kID0gdHJ1ZTsKLSAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhXYXRjaGRvZ1Rp
bWVyQ29uZmlndXJhdGlvblRhc2spOwotICAgIH0KLQotICAgIGlmICghbV9wbGF5YmFja1Rhcmdl
dCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSB8fCAhZmxhZ3NBcmVTZXQo
bmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkV4dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRhdGUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEbyBub3QgaW50ZXJydXB0IGFub3RoZXIgZWxl
bWVudCBhbHJlYWR5IHBsYXlpbmcgdG8gYSBkZXZpY2UuCi0gICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7
Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0
YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG8gbm90IGJlZ2luIHBsYXlpbmcgdG8gdGhlIGRldmlj
ZSB1bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qgc3RhcnRlZC4KLSAgICBpZiAoIWZsYWdzQXJlU2V0
KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgfHwgZmxhZ3NBcmVTZXQo
b2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJyZXR1cm5pbmcgZWFybHksIHBs
YXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBpZiAoc3RhdGUg
PT0gY2hhbmdlZENsaWVudFN0YXRlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2Fs
bGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKLSAgICAgICAgc3Rh
dGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElk
LCBmYWxzZSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOwotICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+Y2xpZW50
LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+Y29udGV4
dElkLCB0cnVlKTsKLQotICAgIGlmIChpbmRleCAmJiBtX2NsaWVudFN0YXRlLnNpemUoKSA+IDEp
Ci0gICAgICAgIHN0ZDo6c3dhcChtX2NsaWVudFN0YXRlLmF0KGluZGV4KSwgbV9jbGllbnRTdGF0
ZS5hdCgwKSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQotewotICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgImhhcyBhY3RpdmUgcm91dGUgPSAiLCB0
YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOwotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3Zl
KHRhcmdldCk7Ci0gICAgbV90YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5
ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
Ym9vbCBhdmFpbGFibGUpCi17Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBhdmFpbGFibGUpOwotICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
PSBhdmFpbGFibGU7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpCi0gICAg
ICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
c3RhdGUtPmNvbnRleHRJZCwgYXZhaWxhYmxlKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCgpCi17Ci0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0
UGlja2VyRGlzbWlzc2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENs
aWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y29uZmlndXJlTmV3Q2xpZW50cygpCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xp
ZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc3RhdGUtPmNvbmZpZ3VyYXRpb25SZXF1
aXJlZCA9IGZhbHNlOwotICAgICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZSkKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7Ci0KLSAgICAgICAgaWYgKG1fcGxh
eWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Ci0gICAgfQot
fQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
Q2xpZW50cygpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBub3RG
b3VuZDsKLSAgICBib29sIGhhdmVBY3RpdmVSb3V0ZSA9IG1fcGxheWJhY2tUYXJnZXQgJiYgbV9w
bGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9
IG1fY2xpZW50U3RhdGVbaV07Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3RhdGUt
PnJlcXVlc3RlZFBpY2tlcik7Ci0KLSAgICAgICAgaWYgKChtX3RhcmdldENoYW5nZWQgfHwgbV9w
bGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkgJiYgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcikK
LSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gaTsKLQotICAg
ICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgZmxh
Z3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFs
RGV2aWNlKSkKLSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaTsK
LQotICAgICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQg
JiYgaGF2ZUFjdGl2ZVJvdXRlICYmIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyKQot
ICAgICAgICAgICAgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBpOwotICAgIH0K
LQotICAgIGlmIChpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciAhPSBub3RGb3VuZCkK
LSAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mQ2xpZW50VGhh
dFJlcXVlc3RlZFBpY2tlcjsKLSAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PT0gbm90Rm91bmQgJiYgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgIT0gbm90Rm91
bmQpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaW5kZXhPZkxhc3RD
bGllbnRUb1JlcXVlc3RQaWNrZXI7Ci0gICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFy
Z2V0ID09IG5vdEZvdW5kICYmIGhhdmVBY3RpdmVSb3V0ZSAmJiBmbGFnc0FyZVNldChtX2NsaWVu
dFN0YXRlWzBdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkgJiYgIWZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbMF0tPmZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRv
VGFyZ2V0ID0gMDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5z
aXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07Ci0K
LSAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50
LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNv
cHlSZWYoKSk7Ci0KLSAgICAgICAgaWYgKGkgIT0gaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJn
ZXQgfHwgIWhhdmVBY3RpdmVSb3V0ZSkgewotICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOwotICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoc3RhdGUtPnJlcXVlc3RlZFBpY2tlciAmJiBtX3BsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tU
YXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxh
eWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoc3RhdGUtPmNvbnRleHRJZCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChtX3RhcmdldENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3Nl
ZCkKLSAgICAgICAgICAgIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAoaGF2ZUFjdGl2ZVJvdXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRl
eE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldF07Ci0gICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3Rh
dGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewot
ICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7
Ci0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV90YXJn
ZXRDaGFuZ2VkID0gZmFsc2U7Ci0gICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOwotfQotCi12
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRv
cmluZygpCi17Ci0gICAgYm9vbCBtb25pdG9yaW5nUmVxdWlyZWQgPSBmYWxzZTsKLSAgICBib29s
IGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVyID0gZmFsc2U7Ci0gICAgYm9vbCBoYXZlQ2xpZW50V2l0
aE1lZGlhID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsK
LSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5n
ZXQoKSk7Ci0gICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpSZXF1aXJl
c1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewotICAgICAgICAgICAgbW9uaXRvcmluZ1JlcXVp
cmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChz
dGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVyKQotICAgICAgICAgICAgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSB0cnVlOwot
ICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVv
KQotICAgICAgICAgICAgaGF2ZUNsaWVudFdpdGhNZWRpYSA9IHRydWU7Ci0gICAgfQotCi0gICAg
aWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAoaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYgaGF2
ZUNsaWVudFdpdGhNZWRpYSkpIHsKLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwotICAgICAgICB0YXJnZXRQaWNr
ZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGlu
ZyBtb25pdG9yaW5nIik7Ci0gICAgICAgIHRhcmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKCk7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzIHRhc2tzKQotewotICAgIG1f
dGFza0ZsYWdzIHw9IHRhc2tzOwotICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCh0YXNrRGVs
YXlJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVy
RmlyZWQoKQotewotICAgIGlmIChtX3Rhc2tGbGFncyAmIEluaXRpYWxDb25maWd1cmF0aW9uVGFz
aykKLSAgICAgICAgY29uZmlndXJlTmV3Q2xpZW50cygpOwotICAgIGlmIChtX3Rhc2tGbGFncyAm
IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzaykKLSAgICAgICAgY29uZmlndXJlUGxheWJh
Y2tUYXJnZXRDbGllbnRzKCk7Ci0gICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0TW9uaXRvcmlu
Z0NvbmZpZ3VyYXRpb25UYXNrKQotICAgICAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0
b3JpbmcoKTsKLSAgICBpZiAobV90YXNrRmxhZ3MgJiBXYXRjaGRvZ1RpbWVyQ29uZmlndXJhdGlv
blRhc2spCi0gICAgICAgIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIG1fdGFza0Zs
YWdzID0gTm9UYXNrOwotfQotCi1zaXplX3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZmluZChX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9jbGllbnRTdGF0
ZVtpXS0+Y29udGV4dElkID09IGNvbnRleHRJZCAmJiAmbV9jbGllbnRTdGF0ZVtpXS0+Y2xpZW50
ID09IGNsaWVudCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLQotICAgIHJldHVybiBu
b3RGb3VuZDsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYXRj
aGRvZ1RpbWVyKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRjaGRvZ1RpbWVySW50
ZXJ2YWxBZnRlclBhdXNpbmcgeyAxX2ggfTsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRj
aGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCB7IDhfbWluIH07Ci0KLSAgICBpZiAo
IW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkp
IHsKLSAgICAgICAgaWYgKG1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1l
ciIpOwotICAgICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKLSAgICAg
ICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYm9vbCBzdG9wVGltZXIgPSBmYWxzZTsKLSAgICBib29sIGRpZFBs
YXlUb0VuZCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7
Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7Ci0KLSAgICAg
ICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgICAgICBzdG9wVGltZXIgPSB0cnVlOwotICAg
ICAgICBpZiAoc3RhdGUtPnBsYXllZFRvRW5kKQotICAgICAgICAgICAgZGlkUGxheVRvRW5kID0g
dHJ1ZTsKLSAgICAgICAgc3RhdGUtPnBsYXllZFRvRW5kID0gZmFsc2U7Ci0gICAgfQotCi0gICAg
aWYgKHN0b3BUaW1lcikgewotICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sICJzdG9wcGluZyB0aW1lciIpOwotICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0lu
dGVydmFsID0geyB9OwotICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFNlY29uZHMgaW50ZXJ2YWwgPSBkaWRQbGF5VG9FbmQgPyB3YXRjaGRvZ1Rp
bWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCA6IHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVy
UGF1c2luZzsKLSAgICAgICAgaWYgKGludGVydmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2
YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBtX3dhdGNo
ZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJ0aW1lciBzY2hlZHVsZWQgZm9y
ICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vjb25kcyIpOwotICAgICAgICBtX2N1cnJlbnRXYXRj
aGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFy
Z2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwotICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLQotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrLmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IENsaWVudFN0YXRlOwotY2xhc3MgSW50UmVjdDsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkxv
Z2dlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQ7Ci0KLWNsYXNzIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKTsK
LXB1YmxpYzoKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBzaGFyZWQoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UmVjdCYsIGJvb2ws
IGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50U3RhdGVEaWRDaGFuZ2UoV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7Ci0KLSAg
ICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAg
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLSAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyKCk7Ci0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXImIHBsYXRmb3JtUGlja2VyKCkgPSAwOwotICAgIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBwbGF0Zm9ybU1hbmFnZXIoKTsKLQotcHJpdmF0ZToKLQotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXImIHRhcmdldFBpY2tlcigpOwotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBtb2NrUGlja2VyKCk7Ci0KLSAgICAvLyBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKLSAgICB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJl
ZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoKSBvdmVycmlkZTsKLQotICAg
IHNpemVfdCBmaW5kKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQqLCBQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKLQotICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tU
YXJnZXRDbGllbnRzKCk7Ci0gICAgdm9pZCBjb25maWd1cmVOZXdDbGllbnRzKCk7Ci0gICAgdm9p
ZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKLSAgICB2b2lkIGNvbmZpZ3Vy
ZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIGVudW0gQ29uZmlndXJhdGlvblRhc2tGbGFncyB7Ci0g
ICAgICAgIE5vVGFzayA9IDAsCi0gICAgICAgIEluaXRpYWxDb25maWd1cmF0aW9uVGFzayA9IDEg
PDwgMCwKLSAgICAgICAgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAxLAot
ICAgICAgICBUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDIsCi0gICAg
ICAgIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMywKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgQ29uZmlndXJhdGlvblRhc2tzOwotICAgIFN0cmluZyB0b1N0cmlu
ZyhDb25maWd1cmF0aW9uVGFza3MpOwotCi0gICAgdm9pZCBzY2hlZHVsZURlbGF5ZWRUYXNrKENv
bmZpZ3VyYXRpb25UYXNrcyk7Ci0gICAgdm9pZCB0YXNrVGltZXJGaXJlZCgpOwotCi0gICAgdm9p
ZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKLQotICAgIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgbG9n
Z2VyKCk7Ci0KLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Rh
c2tUaW1lcjsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3dh
dGNoZG9nVGltZXI7Ci0KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENsaWVudFN0YXRlPj4g
bV9jbGllbnRTdGF0ZTsKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFj
a1RhcmdldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2s+IG1fcGlja2VyT3ZlcnJpZGU7Ci0gICAgQ29uZmlndXJhdGlvblRhc2tzIG1f
dGFza0ZsYWdzIHsgTm9UYXNrIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lv
bkxvZ2dlcj4gbV9sb2dnZXI7Ci0gICAgU2Vjb25kcyBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFs
OwotICAgIGJvb2wgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX3RhcmdldENoYW5nZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wbGF5YmFja1Rh
cmdldFBpY2tlckRpc21pc3NlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21vY2tQaWNrZXJFbmFi
bGVkIHsgZmFsc2UgfTsKLX07Ci0KLVN0cmluZyBtZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBM
b2dBcmd1bWVudDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJu
IFdlYkNvcmU6Om1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhmbGFncyk7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlckNsaWVudC5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlICJNZWRpYVBsYXli
YWNrVGFyZ2V0LmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNE
aXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIFBsYXRmb3JtVmlldyogcGxhdGZvcm1WaWV3KCkgY29uc3QgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9QbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkv
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIgorI2luY2x1ZGUgIldlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IFNlY29uZHMgdGFza0RlbGF5
SW50ZXJ2YWwgeyAxMDBfbXMgfTsKKworI2RlZmluZSBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIgbG9nZ2VyKCkubG9nQWx3YXlzCisKK3N0cnVjdCBDbGllbnRTdGF0ZSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZXhwbGljaXQgQ2xpZW50U3RhdGUo
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICAgICAgOiBjbGllbnQoY2xpZW50KQor
ICAgICAgICAsIGNvbnRleHRJZChjb250ZXh0SWQpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IgPT0gKENsaWVudFN0YXRlIGNvbnN0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb250ZXh0SWQgPT0gb3RoZXIuY29udGV4dElkICYmICZjbGllbnQgPT0gJm90
aGVyLmNsaWVudDsKKyAgICB9CisKKyAgICBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBj
bGllbnQ7CisgICAgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQ7CisgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIGZsYWdzIHsg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CisgICAgYm9vbCByZXF1ZXN0
ZWRQaWNrZXIgeyBmYWxzZSB9OworICAgIGJvb2wgcHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciB7
IGZhbHNlIH07CisgICAgYm9vbCBjb25maWd1cmF0aW9uUmVxdWlyZWQgeyB0cnVlIH07CisgICAg
Ym9vbCBwbGF5ZWRUb0VuZCB7IGZhbHNlIH07Cit9OworCitzdGF0aWMgYm9vbCBmbGFnc0FyZVNl
dChNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdmFsdWUsIHVuc2lnbmVkIGZsYWdzKQor
eworICAgIHJldHVybiB2YWx1ZSAmIGZsYWdzOworfQorCitTdHJpbmcgbWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBmbGFncykKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZzsKKyAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpJc1Bs
YXlpbmdBdWRpbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSXNQbGF5aW5nQXVkaW8rIik7Cisg
ICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pCisgICAgICAgIHN0
cmluZy5hcHBlbmQoIklzUGxheWluZ1ZpZGVvKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJv
ZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpCisgICAgICAgIHN0cmluZy5hcHBlbmQo
IklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UrIik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9k
dWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcikKKyAgICAgICAgc3Ry
aW5nLmFwcGVuZCgiSGFzVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIrIik7CisgICAgaWYgKGZs
YWdzICYgTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpCisg
ICAgICAgIHN0cmluZy5hcHBlbmQoIlJlcXVpcmVzVGFyZ2V0TW9uaXRvcmluZysiKTsKKyAgICBp
ZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KQorICAgICAgICBzdHJpbmcuYXBwZW5kKCJFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OkRpZFBsYXlUb0VuZCkKKyAgICAg
ICAgc3RyaW5nLmFwcGVuZCgiRGlkUGxheVRvRW5kKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlh
UHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFzQXVk
aW9PclZpZGVvKyIpOworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc05vdFBsYXlpbmciKTsKKyAgICBlbHNlCisgICAgICAgIHN0cmluZy5yZXNpemUo
c3RyaW5nLmxlbmd0aCgpIC0gMSk7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZygiIHsgIiwgc3Ry
aW5nLnRvU3RyaW5nKCksICIgfSIpOworfQorCitjbGFzcyBXZWJNZWRpYVNlc3Npb25Mb2dnZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcik7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4gY3JlYXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXImIG1hbmFnZXIpCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVNl
c3Npb25Mb2dnZXI+KG1hbmFnZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgQ2xpZW50U3RhdGUqIHN0YXRlLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICghc3RhdGUtPmNsaWVudC5hbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9sb2dnZXItPmxvZ0Fs
d2F5cyhMb2dNZWRpYSwgbWFrZVN0cmluZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0
aG9kTmFtZSwgJyAnKSwgc3RhdGUtPmNvbnRleHRJZC50b1VJbnQ2NCgpLCBzdGF0ZS0+ZmxhZ3Ms
IGFyZ3VtZW50cy4uLik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIGlubGluZSB2b2lkIGxvZ0Fsd2F5cyhjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBj
b25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgh
bV9tYW5hZ2VyLmFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX2xvZ2dlci0+bG9nQWx3YXlzKExvZ01lZGlhLCBtYWtlU3RyaW5nKCJXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjoiLCBtZXRob2ROYW1lLCAnICcpLCBhcmd1bWVudHMuLi4pOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vz
c2lvbkxvZ2dlcj4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXImKTsKKyAgICBXZWJNZWRpYVNlc3Npb25Mb2dnZXIoV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAg
ICAgICAgLCBtX2xvZ2dlcihMb2dnZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICB7CisgICAgfQorCisg
ICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbV9tYW5hZ2VyOworICAgIFJlZjxMb2dnZXI+IG1f
bG9nZ2VyOworfTsKKworV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpsb2dnZXIoKQoreworICAgIGlmICghbV9sb2dnZXIpCisgICAgICAgIG1fbG9nZ2VyID0g
V2ViTWVkaWFTZXNzaW9uTG9nZ2VyOjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuICptX2xv
Z2dlcjsKK30KKworYm9vbCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWxsT2YobV9jbGllbnRTdGF0ZSwgW10gKGF1
dG8mIHN0YXRlKSB7CisgICAgICAgIHJldHVybiBzdGF0ZS0+Y2xpZW50LmFsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQorewor
ICAgIGlmIChtX21vY2tQaWNrZXJFbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbV9t
b2NrUGlja2VyRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1vY2tQaWNrZXIo
KS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQoreworICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbW9ja1BpY2tlcigp
LmRpc21pc3NQb3B1cCgpOworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tlcigpCit7CisgICAgaWYgKCFtX3BpY2tlck92
ZXJyaWRlKQorICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOworCisgICAgcmV0dXJuICptX3BpY2tlck92ZXJy
aWRlLmdldCgpOworfQorCitXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXJnZXRQaWNrZXIoKQoreworICAgIGlmIChtX21vY2tQaWNr
ZXJFbmFibGVkKQorICAgICAgICByZXR1cm4gbW9ja1BpY2tlcigpOworCisgICAgcmV0dXJuIHBs
YXRmb3JtUGlja2VyKCk7Cit9CisKK1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIoKQorICAgIDogbV90YXNrVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVyRmlyZWQpCisgICAgLCBtX3dhdGNo
ZG9nVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKQoreworfQorCitXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcigpID0gZGVmYXVsdDsKKworUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
PT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgY29u
dGV4dElkLnRvVUludDY0KCkpOworICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8
Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CisKKyAgICBpZiAobV9leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0KQorICAgICAgICBzY2hlZHVs
ZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7CisKKyAgICByZXR1cm4gY29udGV4dElkOworfQorCit2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xp
ZW50LCBjb250ZXh0SWQpOworICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsK
KworICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGluZGV4KTsKKyAgICBzY2hlZHVsZURlbGF5ZWRU
YXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
QWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGll
bnQmIGNsaWVudCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0YXRlLnNpemUoKTsgaSA+
IDA7IC0taSkgeworICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAtIDFdLT5jbGllbnQgPT0g
JmNsaWVudCkgeworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBtX2NsaWVu
dFN0YXRlLnJlbW92ZShpIC0gMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGll
bnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBib29sLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
IT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byYgY2xpZW50UmVxdWVzdGluZ1BpY2tlciA9IG1fY2xpZW50U3RhdGVbaW5k
ZXhdOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIHN0
YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwor
ICAgICAgICBzdGF0ZS0+cHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVu
dFJlcXVlc3RpbmdQaWNrZXI7CisgICAgfQorCisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisKKyAgICBib29s
IGhhc0FjdGl2ZVJvdXRlID0gZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVtpbmRleF0tPmZsYWdz
LCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKTsKKyAgICB0YXJnZXRQ
aWNrZXIoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY2xpZW50LnBsYXRmb3JtVmlldygpLCBG
bG9hdFJlY3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7Cit9CisK
K3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5l
d0ZsYWdzKQoreworICAgIHNpemVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsK
KyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY2hhbmdlZENsaWVudFN0YXRlID0gbV9j
bGllbnRTdGF0ZVtpbmRleF07CisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9s
ZEZsYWdzID0gY2hhbmdlZENsaWVudFN0YXRlLT5mbGFnczsKKyAgICBpZiAobmV3RmxhZ3MgPT0g
b2xkRmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCksICJuZXcgZmxhZ3Mg
PSAiLCBuZXdGbGFncyk7CisKKyAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPmZsYWdzID0gbmV3Rmxh
Z3M7CisKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdXBkYXRlQ29uZmlndXJh
dGlvbkZsYWdzID0gTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3Jp
bmcgfCBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
IHwgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVvOworICAgIGlmICgob2xkRmxhZ3MgJiB1
cGRhdGVDb25maWd1cmF0aW9uRmxhZ3MpICE9IChuZXdGbGFncyAmIHVwZGF0ZUNvbmZpZ3VyYXRp
b25GbGFncykpCisgICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0Nv
bmZpZ3VyYXRpb25UYXNrKTsKKworICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBw
bGF5aW5nVG9UYXJnZXRGbGFncyA9IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxE
ZXZpY2UgfCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbzsKKyAgICBpZiAoKG9sZEZsYWdz
ICYgcGxheWluZ1RvVGFyZ2V0RmxhZ3MpICE9IChuZXdGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZs
YWdzKSkgeworICAgICAgICBpZiAoZmxhZ3NBcmVTZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiAhZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiBmbGFnc0FyZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6
RGlkUGxheVRvRW5kKSkKKyAgICAgICAgICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+cGxheWVkVG9F
bmQgPSB0cnVlOworICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFdhdGNoZG9nVGltZXJDb25m
aWd1cmF0aW9uVGFzayk7CisgICAgfQorCisgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFt
X3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpIHx8ICFmbGFnc0FyZVNldChuZXdGbGFn
cywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIERvIG5vdCBpbnRlcnJ1cHQgYW5vdGhlciBlbGVtZW50IGFs
cmVhZHkgcGxheWluZyB0byBhIGRldmljZS4KKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGll
bnRTdGF0ZSkgeworICAgICAgICBpZiAoc3RhdGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVT
ZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKKyAgICAg
ICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0
KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0byB0aGUgZGV2aWNlIHVubGVz
cyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgorICAgIGlmICghZmxhZ3NBcmVTZXQobmV3Rmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBmbGFnc0FyZVNldChvbGRGbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInJldHVybmluZyBlYXJseSwgcGxheWJhY2sg
ZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAo
YXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIGlmIChzdGF0ZSA9PSBjaGFu
Z2VkQ2xpZW50U3RhdGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAgICAgICBzdGF0ZS0+Y2xp
ZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNl
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHRydWUpIik7CisgICAgY2hhbmdlZENsaWVudFN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY2hhbmdlZENsaWVudFN0YXRlLT5jb250ZXh0SWQsIHRy
dWUpOworCisgICAgaWYgKGluZGV4ICYmIG1fY2xpZW50U3RhdGUuc2l6ZSgpID4gMSkKKyAgICAg
ICAgc3RkOjpzd2FwKG1fY2xpZW50U3RhdGUuYXQoaW5kZXgpLCBtX2NsaWVudFN0YXRlLmF0KDAp
KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5YmFja1RhcmdldChS
ZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCit7CisgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+
aGFzQWN0aXZlUm91dGUoKSk7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0
KTsKKyAgICBtX3RhcmdldENoYW5nZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2so
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2
YWlsYWJsZSkKK3sKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGF2YWlsYWJsZSk7CisgICAgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGF2YWls
YWJsZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkKKyAgICAgICAgc3Rh
dGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShzdGF0ZS0+
Y29udGV4dElkLCBhdmFpbGFibGUpOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKCkKK3sKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJE
aXNtaXNzZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0Nv
bmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25m
aWd1cmVOZXdDbGllbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0
ZSkgeworICAgICAgICBpZiAoIXN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0g
ZmFsc2U7CisgICAgICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAg
ICAgICAgICAgc3RhdGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShzdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKKworICAgICAgICBpZiAobV9wbGF5YmFja1Rh
cmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRz
KCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IG5vdEZvdW5kOwor
ICAgIGJvb2wgaGF2ZUFjdGl2ZVJvdXRlID0gbV9wbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNr
VGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGll
bnRTdGF0ZVtpXTsKKworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sIHN0YXRlLmdldCgpLCAiLCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVz
dGVkUGlja2VyKTsKKworICAgICAgICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc2VkKSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQorICAgICAg
ICAgICAgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOworCisgICAgICAgIGlm
IChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBmbGFnc0FyZVNl
dChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2Up
KQorICAgICAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpOworCisgICAg
ICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBoYXZl
QWN0aXZlUm91dGUgJiYgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAg
ICAgICBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IGk7CisgICAgfQorCisgICAg
aWYgKGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyICE9IG5vdEZvdW5kKQorICAgICAg
ICBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IGluZGV4T2ZDbGllbnRUaGF0UmVxdWVz
dGVkUGlja2VyOworICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RG
b3VuZCAmJiBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciAhPSBub3RGb3VuZCkKKyAg
ICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mTGFzdENsaWVudFRv
UmVxdWVzdFBpY2tlcjsKKyAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0g
bm90Rm91bmQgJiYgaGF2ZUFjdGl2ZVJvdXRlICYmIGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVb
MF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KSAmJiAhZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVswXS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSkKKyAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PSAwOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpXTsKKworICAgICAg
ICBpZiAobV9wbGF5YmFja1RhcmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxh
eWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigp
KTsKKworICAgICAgICBpZiAoaSAhPSBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCB8fCAh
aGF2ZUFjdGl2ZVJvdXRlKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoZmFsc2UpIik7CisgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzdGF0ZS0+cmVxdWVzdGVkUGlja2VyICYmIG1fcGxheWJhY2tUYXJn
ZXRQaWNrZXJEaXNtaXNzZWQpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBp
Y2tlcldhc0Rpc21pc3NlZCIpOworICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5wbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChzdGF0ZS0+Y29udGV4dElkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQgPSBmYWxzZTsKKyAgICAgICAgaWYg
KG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKQorICAg
ICAgICAgICAgc3RhdGUtPnJlcXVlc3RlZFBpY2tlciA9IGZhbHNlOworICAgIH0KKworICAgIGlm
IChoYXZlQWN0aXZlUm91dGUgJiYgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0YXRlW2luZGV4T2ZDbGll
bnRXaWxsUGxheVRvVGFyZ2V0XTsKKyAgICAgICAgaWYgKCFmbGFnc0FyZVNldChzdGF0ZS0+Zmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpKSB7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKKyAgICAg
ICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3RhcmdldENoYW5n
ZWQgPSBmYWxzZTsKKyAgICBjb25maWd1cmVXYXRjaGRvZ1RpbWVyKCk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCkK
K3sKKyAgICBib29sIG1vbml0b3JpbmdSZXF1aXJlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQXZh
aWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsKKyAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEg
PSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpKTsK
KyAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJh
Y2tUYXJnZXRNb25pdG9yaW5nKSB7CisgICAgICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlLT5m
bGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVu
ZXIpCisgICAgICAgICAgICBoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciA9IHRydWU7CisgICAgICAg
IGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCisgICAg
ICAgICAgICBoYXZlQ2xpZW50V2l0aE1lZGlhID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobW9u
aXRvcmluZ1JlcXVpcmVkIHx8IChoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciAmJiBoYXZlQ2xpZW50
V2l0aE1lZGlhKSkgeworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sICJzdGFydGluZyBtb25pdG9yaW5nIik7CisgICAgICAgIHRhcmdldFBpY2tlcigpLnN0
YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIG1vbml0
b3JpbmciKTsKKyAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1
bGVEZWxheWVkVGFzayhDb25maWd1cmF0aW9uVGFza3MgdGFza3MpCit7CisgICAgbV90YXNrRmxh
Z3MgfD0gdGFza3M7CisgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90KHRhc2tEZWxheUludGVy
dmFsKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXNrVGltZXJGaXJlZCgp
Cit7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrKQorICAg
ICAgICBjb25maWd1cmVOZXdDbGllbnRzKCk7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKQorICAgICAgICBjb25maWd1cmVQbGF5YmFja1Rhcmdl
dENsaWVudHMoKTsKKyAgICBpZiAobV90YXNrRmxhZ3MgJiBUYXJnZXRNb25pdG9yaW5nQ29uZmln
dXJhdGlvblRhc2spCisgICAgICAgIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygp
OworICAgIGlmIChtX3Rhc2tGbGFncyAmIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzaykK
KyAgICAgICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAgbV90YXNrRmxhZ3MgPSBO
b1Rhc2s7Cit9CisKK3NpemVfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpmaW5kKFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Ns
aWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2NsaWVudFN0YXRlW2ldLT5j
b250ZXh0SWQgPT0gY29udGV4dElkICYmICZtX2NsaWVudFN0YXRlW2ldLT5jbGllbnQgPT0gY2xp
ZW50KQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcmV0dXJuIG5vdEZvdW5k
OworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhdGNoZG9nVGlt
ZXIoKQoreworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGltZXJJbnRlcnZhbEFm
dGVyUGF1c2luZyB7IDFfaCB9OworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGlt
ZXJJbnRlcnZhbEFmdGVyUGxheWluZ1RvRW5kIHsgOF9taW4gfTsKKworICAgIGlmICghbV9wbGF5
YmFja1RhcmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkgeworICAg
ICAgICBpZiAobV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIEFMV0FZ
U19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVyIik7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OworICAgICAgICAgICAg
bV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBib29sIHN0b3BUaW1lciA9IGZhbHNlOworICAgIGJvb2wgZGlkUGxheVRvRW5k
ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKKworICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIHBsYXllZFRvRW5kID0gIiwgc3RhdGUtPnBsYXllZFRvRW5kKTsKKworICAgICAgICBpZiAo
ZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVy
bmFsRGV2aWNlKSAmJiBmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ1ZpZGVvKSkKKyAgICAgICAgICAgIHN0b3BUaW1lciA9IHRydWU7CisgICAgICAgIGlm
IChzdGF0ZS0+cGxheWVkVG9FbmQpCisgICAgICAgICAgICBkaWRQbGF5VG9FbmQgPSB0cnVlOwor
ICAgICAgICBzdGF0ZS0+cGxheWVkVG9FbmQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3Rv
cFRpbWVyKSB7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
XywgInN0b3BwaW5nIHRpbWVyIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwg
PSB7IH07CisgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgU2Vjb25kcyBpbnRlcnZhbCA9IGRpZFBsYXlUb0VuZCA/IHdhdGNoZG9nVGltZXJJbnRl
cnZhbEFmdGVyUGxheWluZ1RvRW5kIDogd2F0Y2hkb2dUaW1lckludGVydmFsQWZ0ZXJQYXVzaW5n
OworICAgICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAh
bV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1l
ci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOworICAgICAgICB9CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50
ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50
ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXyk7CisgICAgdGFyZ2V0UGlja2VyKCkuaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKKyNpbmNs
dWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVk
ZSAiUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2xpZW50U3RhdGU7CitjbGFzcyBJ
bnRSZWN0OworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyOworY2xhc3MgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIpOworcHVibGljOgorCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZCgpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQo
Ym9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciBhZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVB
bGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBJbnRSZWN0JiwgYm9vbCwgYm9vbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGllbnRTdGF0ZURpZENoYW5nZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50
JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKworICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcigp
OworICAgIHZpcnR1YWwgfldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKKworICAgIHZpcnR1YWwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgcGxhdGZvcm1QaWNrZXIoKSA9IDA7
CisgICAgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHBsYXRmb3JtTWFuYWdlcigpOwor
Citwcml2YXRlOgorCisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgdGFy
Z2V0UGlja2VyKCk7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2sm
IG1vY2tQaWNrZXIoKTsKKworICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVu
dAorICAgIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCgpIG92ZXJyaWRlOworCisgICAgc2l6ZV90IGZpbmQoV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudCosIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIp
OworCisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldENsaWVudHMoKTsKKyAgICB2b2lk
IGNvbmZpZ3VyZU5ld0NsaWVudHMoKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
TW9uaXRvcmluZygpOworICAgIHZvaWQgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAg
ZW51bSBDb25maWd1cmF0aW9uVGFza0ZsYWdzIHsKKyAgICAgICAgTm9UYXNrID0gMCwKKyAgICAg
ICAgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAwLAorICAgICAgICBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDEsCisgICAgICAgIFRhcmdldE1vbml0b3JpbmdD
b25maWd1cmF0aW9uVGFzayA9IDEgPDwgMiwKKyAgICAgICAgV2F0Y2hkb2dUaW1lckNvbmZpZ3Vy
YXRpb25UYXNrID0gMSA8PCAzLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBDb25maWd1
cmF0aW9uVGFza3M7CisgICAgU3RyaW5nIHRvU3RyaW5nKENvbmZpZ3VyYXRpb25UYXNrcyk7CisK
KyAgICB2b2lkIHNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzKTsKKyAgICB2
b2lkIHRhc2tUaW1lckZpcmVkKCk7CisKKyAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwor
CisgICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBsb2dnZXIoKTsKKworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fdGFza1RpbWVyOworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fd2F0Y2hkb2dUaW1lcjsKKworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50U3RhdGU+PiBtX2NsaWVudFN0YXRlOworICAgIFJlZlB0
cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4gbV9waWNrZXJPdmVy
cmlkZTsKKyAgICBDb25maWd1cmF0aW9uVGFza3MgbV90YXNrRmxhZ3MgeyBOb1Rhc2sgfTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBT
ZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CisgICAgYm9vbCBtX2V4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGFyZ2V0Q2hhbmdlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fbW9ja1BpY2tlckVuYWJsZWQgeyBmYWxzZSB9OworfTsKKworU3Ry
aW5nIG1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3M+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBmbGFncykgeyByZXR1cm4gV2ViQ29yZTo6bWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKGZsYWdzKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJw
bGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1
ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVkZSAiUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1WaWV3KiBwbGF0Zm9ybVZpZXcoKSBj
b25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY3NDUwKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MDkxLDE4ICs0MDkxLDggQEAKIAkJQzZGMDkwMEExNDMyN0I2MTAwNjg1ODQ5
IC8qIE11dGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM2RjA5MDAxMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbkNhbGxiYWNr
LmggKi87IH07CiAJCUM2RjA5MDBGMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbk9ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOTAw
NjE0MzI3QjYxMDA2ODU4NDkgLyogTXV0YXRpb25PYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM2RjA5MDJEMTQzMjdENEYwMDY4NTg0
OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RjA5MDI1MTQzMjdENEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2Jz
ZXJ2ZXIuaCAqLzsgfTsKLQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwMjdG
NDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovOyB9OwotCQlDOTA4NDNEMDFC
MThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwODQzQ0UxQjE4RTQ3RDAwQjY4NTY0IC8q
IE1lZGlhUmVtb3RlQ29udHJvbHMuaCAqLzsgfTsKLQkJQzkwRjY1NTUxQjIyNTNCMTAwMjE2M0Ex
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzkwRjY1NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwICovOyB9OwotCQlDOTBGNjU1NjFCMjI1M0JFMDAyMTYzQTEgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzkwRjY1NTQxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAq
LzsgfTsKLQkJQzkzN0ZFOEQxQjFGNjgyMTAwOEVDQzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM5NjhCMkU2MUIxRTcyRjcwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
LmggKi87IH07Ci0JCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzk2RjVFQzExQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLmggKi87IH07Ci0JCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAv
KiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTZGNUVDMzFCNTg3MjI2MDA5MUVBOUQgLyog
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwICovOyB9OwotCQlDOTZGNUVDODFC
NTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5NkY1RUM0MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovOyB9Owog
CQlDOTkwNTgxMzFFMzJDNzVGMDA3M0JEREEgLyogU3VjY2Vzc09yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEg
LyogU3VjY2Vzc09yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzlENDY3MDUxRTYwQzQ2NTAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5RDQ2NzA0MUU2MEMz
RUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDOUQ4NTFFRTFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDOUY4
N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUY4N0NGRDFCMjhFNUY2MDA5NzlC
ODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFu
aW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
QTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQTZDMTUzMDIyMEI5OENDMDA1
NUNCRkMgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQUUzQjgxRkI4MEVBRTAwRjVFRkIyIC8qIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDQTdFOUI0OTI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0E3RTlCNDcyNDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCAqLzsg
fTsKQEAgLTE0MTU2LDI5ICsxNDE0Niw4IEBACiAJCUM2RjA5MDI0MTQzMjdENEYwMDY4NTg0OSAv
KiBKU011dGF0aW9uT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNdXRhdGlvbk9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzZGMDkwMjUxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uT2JzZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGMDkxN0UxNDNBMkJCOTAwNjg1ODQ5IC8qIEpTTXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDOTAyNkI2MzFCMUNGNUFCMDAxRDk5QTcgLyogSlNNZWRpYVJlbW90ZUNvbnRyb2xz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFSZW1vdGVD
b250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI2QjY0MUIxQ0Y1
QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3RlQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE1lZGlhU2Vzc2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5
MDI3RjNGMUIxRDBBRDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwODQzQ0QxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlh
UmVtb3RlQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFSZW1vdGVDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5
MDg0M0NFMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwRjY1NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MEY2
NTU0MUIyMjUzOTYwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzkzNDU4QkIxQjE4RDc3RTAwODhFRTEyIC8qIE1lZGlhUmVtb3Rl
Q29udHJvbHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTY4QjJFNTFCMUU3MDQ1MDBFRjFG
ODEgLyogSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MTWVkaWFF
bGVtZW50K01lZGlhU2Vzc2lvbi5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OTY4QjJFNjFCMUU3MkY3MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NjhCMkU3MUIxRTc3ODEwMEVGMUY4MSAvKiBIVE1MTWVk
aWFFbGVtZW50TWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDOTZGNUVDMTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzk2RjVFQzIxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUM0MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN1Y2Nlc3NPci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUQ0
NjcwNDFFNjBDM0VCMDA4MTk1RkIgLyogQXV0b3BsYXlFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dXRvcGxheUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5RDg1MUVFMUIz
OURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNlc3Npb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOURBREJDQTFCMUQzQjI1MDAxRjE3
RDggLyogSlNNZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlGODdDRkQx
QjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU2Vzc2lvbkV2ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4
NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EwOTFE
ODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5
bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTE2MzVEQzIwNzJF
NzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTY2OTYsMzAgKzE2NjY1LDYgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKLQkJMDcwOUQ3OEIxQUU1NTUyRTAwNEU0MkY4IC8qIG1lZGlhc2Vzc2lv
biAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzk2OEIy
RTUxQjFFNzA0NTAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbCAq
LywKLQkJCQlDOTY4QjJFNzFCMUU3NzgxMDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlh
U2Vzc2lvbi5jcHAgKi8sCi0JCQkJQzk2OEIyRTYxQjFFNzJGNzAwRUYxRjgxIC8qIEhUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uaCAqLywKLQkJCQlDOTA4NDNDRDFCMThFNDdEMDBCNjg1NjQg
LyogTWVkaWFSZW1vdGVDb250cm9scy5jcHAgKi8sCi0JCQkJQzkwODQzQ0UxQjE4RTQ3RDAwQjY4
NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCAqLywKLQkJCQlDOTM0NThCQjFCMThENzdFMDA4
OEVFMTIgLyogTWVkaWFSZW1vdGVDb250cm9scy5pZGwgKi8sCi0JCQkJQzkwMjdGM0YxQjFEMEFE
MjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi8sCi0JCQkJQzkwMjdGNDAxQjFEMEFEMjAw
QkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovLAotCQkJCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZF
RiAvKiBNZWRpYVNlc3Npb24uaWRsICovLAotCQkJCUM5Rjg3Q0ZEMUIyOEU1RjYwMDk3OUI4MyAv
KiBNZWRpYVNlc3Npb25FdmVudHMuaCAqLywKLQkJCQlDOTBGNjU1MzFCMjI1Mzk2MDAyMTYzQTEg
LyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8sCi0JCQkJQzkwRjY1NTQxQjIyNTM5NjAwMjE2
M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKLQkJCQlDOUQ4NTFFRTFCMzlEQzc4MDA4
NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLywKLQkJCQk0NDZEQzY0NjI0QTI5RDlC
MDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAot
CQkJCTA3MDlENzhDMUFFNTU1NTQwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCAqLywKLQkJCQkwNzA5RDc4RDFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oICovLAotCQkJCTA3MDlENzk0MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1
MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0yMzI0OSw3ICsyMzE5NCw2IEBACiAJCQkJQ0RCRDNEMjcxRkU4NUM5MjAwMTJDNTQ1
IC8qIG1lZGlhY2FwYWJpbGl0aWVzICovLAogCQkJCUNEOUEzN0Y1MTdDN0Q5MzYwMEM1RkE3QSAv
KiBtZWRpYWNvbnRyb2xzICovLAogCQkJCTREM0IwMEEwMjE1RDVDMEYwMDc2Qjk4MyAvKiBtZWRp
YXJlY29yZGVyICovLAotCQkJCTA3MDlENzhCMUFFNTU1MkUwMDRFNDJGOCAvKiBtZWRpYXNlc3Np
b24gKi8sCiAJCQkJQjFBOTQyREQxNUI1Q0UyMjAwRDUyNUQxIC8qIG1lZGlhc291cmNlICovLAog
CQkJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk3MUQ2
QUEzOTFEQTRFQUY3MDBCMjM5NjkgLyogbW9kZXJuLW1lZGlhLWNvbnRyb2xzICovLApAQCAtMjQz
MzYsMTAgKzI0MjgwLDYgQEAKIAkJCQkyRDlCRjcxMTFEQkZEOTE0MDA3QTdEOTkgLyogSlNNZWRp
YUVuY3J5cHRlZEV2ZW50LmggKi8sCiAJCQkJRTQ0NjE0MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpT
TWVkaWFFcnJvci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVk
aWFFcnJvci5oICovLAotCQkJCUM5MDI2QjYzMUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVt
b3RlQ29udHJvbHMuY3BwICovLAotCQkJCUM5MDI2QjY0MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01l
ZGlhUmVtb3RlQ29udHJvbHMuaCAqLywKLQkJCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyog
SlNNZWRpYVNlc3Npb24uY3BwICovLAotCQkJCUM5REFEQkNBMUIxRDNCMjUwMDFGMTdEOCAvKiBK
U01lZGlhU2Vzc2lvbi5oICovLAogCQkJCTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09F
U0VsZW1lbnRJbmRleFVpbnQuY3BwICovLAogCQkJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAv
KiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLywKIAkJCQk5MDAxNzg3RTEyRTAzNzA3MDA2NDg0
NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCAqLywKQEAgLTI2ODYwLDcgKzI2ODAw
LDYgQEAKIAkJCQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICovLAogCQkJCTlBQzZG
MDIwMjExNDhGMUUwMENCREEwNiAvKiBtZWRpYWNhcGFiaWxpdGllcyAqLywKIAkJCQk0RDNCNTAx
MjIxN0U1OEEzMDA2NjVEQjEgLyogbWVkaWFyZWNvcmRlciAqLywKLQkJCQlDOTZGNUVCRjFCNTg3
MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9uICovLAogCQkJCTA3MjIxQjkyMTdDRjBBRDQwMDg0
OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyog
bW9jayAqLywKIAkJCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0d29yayAqLywKQEAg
LTI3MTYzLDI1ICsyNzEwMiw2IEBACiAJCQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OwotCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNz
aW9uICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDOTZG
NUVDMDFCNTg3MjI2MDA5MUVBOUQgLyogbWFjICovLAotCQkJCUM5NkY1RUMzMUI1ODcyMjYwMDkx
RUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi8sCi0JCQkJQzk2
RjVFQzQxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0JCX07Ci0JCUM5NkY1RUMwMUI1ODcyMjYwMDkxRUE5RCAvKiBtYWMgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUM5NkY1RUMxMUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oICovLAot
CQkJCUM5NkY1RUMyMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlck1hYy5tbSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gbWFjOwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI3NTYyLDkgKzI3
NDgyLDEzIEBACiAJCUNFMjYxNjlEMTg3RTY1NTQwMDc5NTVGMyAvKiBhaXJwbGF5ICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NDZEQzY0NjI0QTI5RDlC
MDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAog
CQkJCUE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmNwcCAqLywKIAkJCQlBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovLAogCQkJCUE1REVCREExMTZG
QjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50Lmlk
bCAqLywKKwkJCQkwNzA5RDc4QzFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5jcHAgKi8sCisJCQkJMDcwOUQ3OEQxQUU1NTU1NDAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCAqLywKKwkJCQkwNzA5RDc5NDFBRTU1QTI5MDA0RTQyRjggLyogV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhaXJwbGF5Owog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxNTYxLDcgKzMxNDg1LDYgQEAKIAkJCQlB
OEVBN0NBQjBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDQ2MTNBNTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q1MjA5RTYxQjBCRDlFMTAwNzcxODRFIC8qIEhUTUxNZWRp
YUVsZW1lbnRFbnVtcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzkzN0ZFOEQxQjFGNjgyMTAwOEVD
QzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQzMxMkVBMjJGQ0Q3QzYwMDEyMDRFQyAvKiBIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxheWJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUY0MEExOTE2REYwMEE4RUY1RiAvKiBIVE1M
TWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJGMzFFMDc1MUZBM0I2MkIwMEUwNTlC
QSAvKiBIVE1MTWVudUl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyOTAzLDIzICsz
MjgyNiwxNiBAQAogCQkJCTQxNEI3RkFEMjREODFDQzEwMDMzRDQ0MiAvKiBNZWRpYVJlY29yZGVy
UHJpdmF0ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRENzNGOTRFMjE4QzRBODcwMDNB
M0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTc2RTg5NjIzQzM1MzdCMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1v
dGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlF
IC8qIE1lZGlhUmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRUZDRDdBMTlE
QjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQkY5REIzQzFEMzk3M0FEMDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3RDI3NUUxRUFDNTc5ODAw
QkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTAy
N0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVs
cGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyog
TWVkaWFTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzk2RjVFQzgxQjU4
NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5MEY2NTU2MUIyMjUz
QkUwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTdGN0FFRjIxMzlCRjZGMDBGQkE3RUMgLyogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJF
IC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3
QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQx
RUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTQ2LDggKzM1MDYyLDYgQEAKIAkJCQkxQjEyNEQ4
RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUM5NkY1RUM3MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyog
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgw
NDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
cmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjk4LDEwICsyOTgsNiBAQAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgi
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vz
c2lvbi5oIgotI2VuZGlmCi0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xv
b2suaCIKICNlbmRpZgpAQCAtNDE3NSwyMiArNDE3MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZUlzUGxheWluZ01lZGlhKHVpbnQKICAgICBzdGF0ZSB8PSBNZWRpYVN0cmVhbVRyYWNrOjpjYXB0
dXJlU3RhdGUoKnRoaXMpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAg
ICBpZiAoSFRNTE1lZGlhRWxlbWVudCogc291cmNlRWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6
OmVsZW1lbnRXaXRoSUQoc291cmNlRWxlbWVudElEKSkgewotICAgICAgICBpZiAoc291cmNlRWxl
bWVudC0+aXNQbGF5aW5nKCkpCi0gICAgICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpJ
c1NvdXJjZUVsZW1lbnRQbGF5aW5nOwotCi0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc291
cmNlRWxlbWVudC0+c2Vzc2lvbigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogY29udHJvbHMg
PSBzZXNzaW9uLT5jb250cm9scygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzLT5w
cmV2aW91c1RyYWNrRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBNZWRp
YVByb2R1Y2VyOjpJc1ByZXZpb3VzVHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAgICAgICAgICAg
ICBpZiAoY29udHJvbHMtPm5leHRUcmFja0VuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUgfD0gTWVkaWFQcm9kdWNlcjo6SXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKG1fdXNlckhhc0lu
dGVyYWN0ZWRXaXRoTWVkaWFFbGVtZW50KQogICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2Vy
OjpIYXNVc2VySW50ZXJhY3RlZFdpdGhNZWRpYUVsZW1lbnQ7CiAKQEAgLTc0NTksMTcgKzc0Mzks
NiBAQCB2b2lkIERvY3VtZW50OjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0RpCiAKICNlbmRpZiAv
LyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0KLU1lZGlhU2Vzc2lvbiYgRG9jdW1lbnQ6OmRlZmF1bHRNZWRpYVNlc3Npb24oKQot
ewotICAgIGlmICghbV9kZWZhdWx0TWVkaWFTZXNzaW9uKQotICAgICAgICBtX2RlZmF1bHRNZWRp
YVNlc3Npb24gPSBNZWRpYVNlc3Npb246OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLSAgICByZXR1cm4gKm1fZGVmYXVsdE1lZGlhU2Vzc2lvbjsKLX0KLQotI2VuZGlmCi0KIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnQ6OnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlz
aW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsNyArMTc3LDYgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNz
IE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNz
IE1lZGlhUXVlcnlNYXRjaGVyOwotY2xhc3MgTWVkaWFTZXNzaW9uOwogY2xhc3MgTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwog
Y2xhc3MgTm9kZUZpbHRlcjsKQEAgLTEwOTUsMTAgKzEwOTQsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCB2aWRlb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpIGNvbnN0OwogICAgIGJvb2wgbWVk
aWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICBNZWRpYVNlc3Npb24mIGRlZmF1bHRNZWRpYVNlc3Npb24oKTsKLSNlbmRpZgot
CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZShQQUw6OlNlc3Npb25JRCk7
CiAKICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CkBAIC0xOTUwLDEw
ICsxOTQ1LDYgQEAgcHJpdmF0ZToKICAgICBUYXJnZXRDbGllbnRUb0lkTWFwIG1fY2xpZW50VG9J
RE1hcDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgUmVmUHRyPE1l
ZGlhU2Vzc2lvbj4gbV9kZWZhdWx0TWVkaWFTZXNzaW9uOwotI2VuZGlmCi0KICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHk+IG1faWRiQ29ubmVjdGlvblByb3h5OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIy
LDYgQEAgTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYURldmljZXMgY29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQ
VEVEX01FRElBCiBNZWRpYVF1ZXJ5TGlzdAotTWVkaWFSZW1vdGVDb250cm9scyBjb25kaXRpb25h
bD1NRURJQV9TRVNTSU9OCiBNZWRpYVJlY29yZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQog
TWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRp
b25hbD1NRURJQV9TVFJFQU0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDEwICsxMzUsNiBAQAogI2luY2x1
ZGUgIldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCi0jZW5k
aWYKLQogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKQEAgLTMxNiwzMCArMzEyLDYgQEAgSGFzaFNldDxIVE1M
TWVkaWFFbGVtZW50Kj4mIEhUTUxNZWRpYUVsZQogICAgIHJldHVybiBlbGVtZW50czsKIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBIVE1M
TWVkaWFFbGVtZW50Kj4gSURUb0VsZW1lbnRNYXA7Ci0KLXN0YXRpYyBJRFRvRWxlbWVudE1hcCYg
ZWxlbWVudElEc1RvRWxlbWVudHMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJRFRv
RWxlbWVudE1hcD4gbWFwOwotICAgIHJldHVybiBtYXA7Ci19Ci0KLUhUTUxNZWRpYUVsZW1lbnQq
IEhUTUxNZWRpYUVsZW1lbnQ6OmVsZW1lbnRXaXRoSUQodWludDY0X3QgaWQpCi17Ci0gICAgaWYg
KGlkID09IEhUTUxNZWRpYUVsZW1lbnRJbnZhbGlkSUQpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGVsZW1lbnRJRHNUb0VsZW1lbnRzKCkuZ2V0KGlkKTsKLX0KLQotc3Rh
dGljIHVpbnQ2NF90IG5leHRFbGVtZW50SUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBlbGVt
ZW50SUQgPSAwOwotICAgIHJldHVybiArK2VsZW1lbnRJRDsKLX0KLSNlbmRpZgotCiBzdHJ1Y3Qg
TWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gewogICAgIGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24q
IHNlc3Npb247CiAgICAgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBv
c2UgcHVycG9zZTsKQEAgLTUxNSwxMyArNDg3LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpm
aW5pc2hJbml0aWFsaXphdAogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0gICAgbV9lbGVtZW50SUQgPSBuZXh0RWxlbWVudElEKCk7Ci0gICAgZWxlbWVudElEc1Rv
RWxlbWVudHMoKS5hZGQobV9lbGVtZW50SUQsIHRoaXMpOwotCi0gICAgc2V0U2Vzc2lvbkludGVy
bmFsKGRvY3VtZW50LmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7Ci0jZW5kaWYKLQogICAgIHJlZ2lz
dGVyV2l0aERvY3VtZW50KGRvY3VtZW50KTsKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQ
TEFURk9STShNQUMpCkBAIC01ODYsMTUgKzU1MSw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1M
TWVkaWFFbGVtZW50KCkKICAgICBpZiAobV9pc29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xh
dGVkV29ybGQtPmNsZWFyV3JhcHBlcnMoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
ICAgIGlmIChtX3Nlc3Npb24pIHsKLSAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVNZWRpYUVsZW1l
bnQoKnRoaXMpOwotICAgICAgICBtX3Nlc3Npb24gPSBudWxscHRyOwotICAgIH0KLQotICAgIGVs
ZW1lbnRJRHNUb0VsZW1lbnRzKCkucmVtb3ZlKG1fZWxlbWVudElEKTsKLSNlbmRpZgotCiAgICAg
bV9zZWVrVGFza1F1ZXVlLmNsb3NlKCk7CiAgICAgbV9yZXN1bWVUYXNrUXVldWUuY2xvc2UoKTsK
ICAgICBtX3Byb21pc2VUYXNrUXVldWUuY2xvc2UoKTsKQEAgLTM0NTAsMzEgKzM0MDYsNiBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAKICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQotICAgICAgICAvLyA2LjMgQWN0aXZhdGluZyBhIG1lZGlhIHNlc3Npb24gZnJvbSBhIG1lZGlh
IGVsZW1lbnQKLSAgICAgICAgLy8gV2hlbiB0aGUgcGxheSgpIG1ldGhvZCBpcyBpbnZva2VkLCB0
aGUgcGF1c2VkIGF0dHJpYnV0ZSBpcyB0cnVlLCBhbmQgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRl
IGhhcyB0aGUgdmFsdWUKLSAgICAgICAgLy8gSEFWRV9GVVRVUkVfREFUQSBvciBIQVZFX0VOT1VH
SF9EQVRBLCB0aGVuCi0gICAgICAgIC8vIDEuIExldCBtZWRpYSBzZXNzaW9uIGJlIHRoZSB2YWx1
ZSBvZiB0aGUgY3VycmVudCBtZWRpYSBzZXNzaW9uLgotICAgICAgICAvLyAyLiBJZiB3ZSBhcmUg
bm90IGN1cnJlbnRseSBpbiBtZWRpYSBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgcGFydGljaXBh
dGluZyBtZWRpYSBlbGVtZW50cyB0aGVuIGFwcGVuZAotICAgICAgICAvLyAgICBvdXJzZWx2ZXMg
dG8gdGhpcyBsaXN0LgotICAgICAgICAvLyAzLiBMZXQgYWN0aXZhdGVkIGJlIHRoZSByZXN1bHQg
b2YgcnVubmluZyB0aGUgbWVkaWEgc2Vzc2lvbiBpbnZvY2F0aW9uIGFsZ29yaXRobSBmb3IgbWVk
aWEgc2Vzc2lvbi4KLSAgICAgICAgLy8gNC4gSWYgYWN0aXZhdGVkIGlzIGZhaWx1cmUsIHBhdXNl
IG91cnNlbHZlcy4KLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VHSF9EQVRB
IHx8IG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBKSB7Ci0gICAgICAgICAgICBpZiAo
bV9zZXNzaW9uKSB7Ci0gICAgICAgICAgICAgICAgbV9zZXNzaW9uLT5hZGRBY3RpdmVNZWRpYUVs
ZW1lbnQoKnRoaXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+a2luZCgpID09
IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLmZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdl
KG1fZWxlbWVudElEKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAo
IW1fc2Vzc2lvbi0+aW52b2tlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF1c2UoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9D
VVJSRU5UX0RBVEEpCiAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0
aW5nRXZlbnQpOwogICAgIH0gZWxzZSBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RB
VEEpCkBAIC0zNjc3LDExICszNjA4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRl
ZChib29sIG11dAogCiAgICAgICAgIHVwZGF0ZVNob3VsZFBsYXkoKTsKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1f
ZWxlbWVudElEKTsKLSNlbHNlCiAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVk
aWEoKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CkBAIC01MDY4LDExICs0OTk1LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhYwogICAgICAgICBzZXRBdXRv
cGxheUV2ZW50UGxheWJhY2tTdGF0ZShBdXRvcGxheUV2ZW50UGxheWJhY2tTdGF0ZTo6UHJldmVu
dGVkQXV0b3BsYXkpOwogICAgIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGRv
Y3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9lbGVtZW50SUQpOwotI2Vsc2UKICAgICBk
b2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7Ci0jZW5kaWYKIAogICAgIGNoZWNrRm9y
QXVkaW9BbmRWaWRlbygpOwogICAgIHVwZGF0ZVNsZWVwRGlzYWJsaW5nKCk7CkBAIC01MjQ1LDEy
ICs1MTY4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAgICAg
ICBtX3BsYXllci0+c2V0Vm9sdW1lKGVmZmVjdGl2ZVZvbHVtZSgpKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlh
KG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwotI2VuZGlmCi0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC01
MzY3LDExICs1Mjg1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5aW5nKGJvb2wg
cAogICAgIGlmIChtX3BsYXlpbmcpCiAgICAgICAgIHNjaGVkdWxlTm90aWZ5QWJvdXRQbGF5aW5n
KCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlz
UGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwpAQCAtNzU5NSwxMSArNzUw
OSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVkaWFTdGF0ZSgKIAogICAgIG1f
bWVkaWFTdGF0ZSA9IHN0YXRlOwogICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYVN0YXRlRGlkQ2hh
bmdlKG1fbWVkaWFTdGF0ZSk7Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgZG9jdW1l
bnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYShtX2VsZW1lbnRJRCk7Ci0jZWxzZQorCiAgICAgZG9j
dW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAt
NzcwNCwxMSArNzYxNSw2IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVWb2x1
bWUKICAgICBkb3VibGUgdm9sdW1lTXVsdGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVt
ZSgpIDogMTsKICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCiAgICAgICAgIHZvbHVtZU11bHRp
cGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOwotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotICAgIGlmIChtX3Nob3VsZER1Y2spCi0gICAgICAgIHZvbHVtZU11bHRpcGxpZXIg
Kj0gMC4yNTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGll
cjsKIH0KIApAQCAtNzc2OSw3MCArNzY3NSw2IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y2Fu
U2F2ZU1lZGlhRGF0YSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKLQotZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllclZvbHVtZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnZvbHVtZSgpIDogMDsKLX0KLQot
TWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50OjpzZXNzaW9uKCkgY29uc3QKLXsKLSAgICBS
ZWZQdHI8TWVkaWFTZXNzaW9uPiBzZXNzaW9uID0gbV9zZXNzaW9uLmdldCgpOwotICAgIGlmIChz
ZXNzaW9uICYmIHNlc3Npb24gPT0gJmRvY3VtZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBzZXNzaW9uLmdldCgpOwotfQot
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlc3Npb24oTWVkaWFTZXNzaW9uKiBzZXNzaW9u
KQotewotICAgIC8vIDYuMS4gRXh0ZW5zaW9ucyB0byB0aGUgSFRNTE1lZGlhRWxlbWVudCBpbnRl
cmZhY2UKLSAgICAvLyAxLiBMZXQgbSBiZSB0aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVzdGlvbi4K
LSAgICAvLyAyLiBMZXQgb2xkIG1lZGlhIHNlc3Npb24gYmUgbeKAmXMgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLCBpZiBpdCBoYXMgb25lLCBhbmQgbnVsbCBvdGhlcndpc2UuCi0gICAgLy8gMy4gTGV0
IG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgbmV3IHZhbHVlIG9yIHRoZSB0b3At
bGV2ZWwgYnJvd3NpbmcgY29udGV4dOKAmXMgbWVkaWEgc2Vzc2lvbiBpZiB0aGUgbmV3IHZhbHVl
IGlzIG51bGwuCi0gICAgLy8gNC4gTGV0IG5ldyBtZWRpYSBzZXNzaW9uIGJlIG3igJlzIGN1cnJl
bnQgbWVkaWEgc2Vzc2lvbi4KLQotICAgIC8vIDUuIFVwZGF0ZSBtZWRpYSBzZXNzaW9uczogSWYg
b2xkIG1lZGlhIHNlc3Npb24gYW5kIG5ldyBtZWRpYSBzZXNzaW9uIGFyZSB0aGUgc2FtZSAod2hl
dGhlciBib3RoIG51bGwgb3IgYm90aCB0aGUgc2FtZSBtZWRpYSBzZXNzaW9uKSwgdGhlbiB0ZXJt
aW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKG1fc2Vzc2lvbi5nZXQoKSA9PSBzZXNzaW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIC8vIDYuIElm
IG0gaXMgYW4gYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50IG9mIG9sZCBtZWRpYSBzZXNzaW9u
LCB0aGVuIHBhdXNlIG0gYW5kIHJlbW92ZSBtIGZyb20gb2xkIG1lZGlhIHNlc3Npb27igJlzIGxp
c3Qgb2YgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAgICAgaWYgKG1fc2Vzc2lv
bi0+aXNNZWRpYUVsZW1lbnRBY3RpdmUoKnRoaXMpKQotICAgICAgICAgICAgcGF1c2UoKTsKLQot
ICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZU1lZGlhRWxlbWVudCgqdGhpcyk7Ci0KLSAgICAgICAg
Ly8gNy4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwgYW5kIG5vIGxvbmdlciBoYXMg
b25lIG9yIG1vcmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cywgdGhlbiBydW4gdGhlIG1l
ZGlhIHNlc3Npb24gZGVhY3RpdmF0aW9uIGFsZ29yaXRobSBmb3Igb2xkIG1lZGlhIHNlc3Npb24u
Ci0gICAgICAgIGlmICghbV9zZXNzaW9uLT5oYXNBY3RpdmVNZWRpYUVsZW1lbnRzKCkpCi0gICAg
ICAgICAgICBtX3Nlc3Npb24tPmRlYWN0aXZhdGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoc2Vzc2lv
bikKLSAgICAgICAgc2V0U2Vzc2lvbkludGVybmFsKCpzZXNzaW9uKTsKLSAgICBlbHNlCi0gICAg
ICAgIHNldFNlc3Npb25JbnRlcm5hbChkb2N1bWVudCgpLmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7
Ci19Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2Vzc2lvbkludGVybmFsKE1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKLXsKLSAgICBtX3Nlc3Npb24gPSAmc2Vzc2lvbjsKLSAgICBzZXNzaW9u
LmFkZE1lZGlhRWxlbWVudCgqdGhpcyk7Ci0gICAgbV9raW5kID0gc2Vzc2lvbi5raW5kKCk7Ci19
Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRHVjayhib29sIGR1Y2spCi17Ci0g
ICAgaWYgKG1fc2hvdWxkRHVjayA9PSBkdWNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3No
b3VsZER1Y2sgPSBkdWNrOwotICAgIHVwZGF0ZVZvbHVtZSgpOwotfQotCi0jZW5kaWYKLQogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjphbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFu
Z2VkKCkKIHsKICAgICBpZiAocG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9tZWRpYVNlc3Npb24t
PnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSAmJiAhaXNGdWxsc2NyZWVuKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMjY3
NDUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4MCwyMSArNDgwLDYgQEAgcHVibGljOgogICAgIHZvaWQgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogICAgIHZvaWQgbWVkaWFMb2FkaW5n
RmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBwbGF5ZXJWb2x1bWUoKSBj
b25zdDsKLQotICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsg
fQotICAgIHZvaWQgc2V0S2luZChjb25zdCBTdHJpbmcmIGtpbmQpIHsgbV9raW5kID0ga2luZDsg
fQotCi0gICAgTWVkaWFTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZXNz
aW9uKE1lZGlhU2Vzc2lvbiopOwotCi0gICAgdm9pZCBzZXRTaG91bGREdWNrKGJvb2wpOwotCi0g
ICAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnRXaXRoSUQodWludDY0X3QpOwotICAg
IHVpbnQ2NF90IGVsZW1lbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudElEOyB9Ci0jZW5k
aWYKLQogICAgIFJlZlB0cjxWaWRlb1BsYXliYWNrUXVhbGl0eT4gZ2V0VmlkZW9QbGF5YmFja1F1
YWxpdHkoKTsKIAogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJlbG9hZDsgfQpAQCAtNzAyLDEwICs2ODcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIHNldFNlc3Npb25JbnRlcm5hbChNZWRpYVNlc3Np
b24mKTsKLSNlbmRpZgotCiAgICAgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBv
dmVycmlkZTsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBvdmVycmlk
ZTsKIApAQCAtMTAzNywxMyArMTAxOCw2IEBAIHByaXZhdGU6CiAgICAgLy8gY2FsbGluZyB0aGUg
bWVkaWEgZW5naW5lIHJlY3Vyc2l2ZWx5LgogICAgIGludCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXll
ckNhbGxiYWNrIHsgMCB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgU3RyaW5n
IG1fa2luZDsKLSAgICBSZWZQdHI8TWVkaWFTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgYm9vbCBt
X3Nob3VsZER1Y2sgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fZWxlbWVudElEOwotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9t
ZWRpYVNvdXJjZTsKICAgICB1bnNpZ25lZCBtX2Ryb3BwZWRWaWRlb0ZyYW1lcyB7IDAgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDEy
ICs0NjMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hh
bmdlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncywgdWludDY0X3QpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KEF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxB
dXRvcGxheUV2ZW50RmxhZ3M+KSB7IH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAg
IHZpcnR1YWwgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENo
YW5nZShib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRD
aGFuZ2UoY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QpIHsgfQotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICB2aXJ0dWFsIGJvb2wgd3JhcENyeXB0b0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDEwICsxNTMsNiBAQAogI2luY2x1
ZGUgIlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuaCIKICNlbmRpZgpAQCAtMjA2MiwzMSArMjA1OCw2IEBAIHZvaWQgUGFnZTo6cmVzdW1l
QWxsTWVkaWFCdWZmZXJpbmcoKQogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLQotdm9pZCBQYWdlOjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlw
ZSkKLXsKLSAgICBzd2l0Y2ggKGV2ZW50VHlwZSkgewotICAgIGNhc2UgTWVkaWFFdmVudFR5cGU6
OlBsYXlQYXVzZToKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9n
Z2xlUGxheWJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6
VHJhY2tOZXh0OgotICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5za2lw
VG9OZXh0VHJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6
VHJhY2tQcmV2aW91czoKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCku
c2tpcFRvUHJldmlvdXNUcmFjaygpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQg
UGFnZTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxl
bWVudElEKQotewotICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gSFRNTE1lZGlh
RWxlbWVudDo6ZWxlbWVudFdpdGhJRChlbGVtZW50SUQpKQotICAgICAgICBlbGVtZW50LT5zZXRW
b2x1bWUodm9sdW1lLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLX0KLQotI2VuZGlmCi0KIHVuc2ln
bmVkIFBhZ2U6OnN1YmZyYW1lQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBtYWluRnJhbWUo
KS50cmVlKCkuZGVzY2VuZGFudENvdW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24g
MjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDEwICs2Myw2IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVzdC5oIgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25FdmVu
dHMuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNp
bmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2VuZGlmCkBAIC02NTYsMTEg
KzY1Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJv
b2wgY2FuVXNlKSB7IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBjYW5Vc2U7IH0KICAgICBi
b29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Vc2VDcmVk
ZW50aWFsU3RvcmFnZTsgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3Qp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZv
aWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjY3NDUw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbklu
dGVycnVwdGlvblByb3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXIuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLU1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOjpNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlckNsaWVudCYgY2xpZW50KQotICAgIDogbV9jbGllbnQoJmNsaWVudCkKLXsKLX0KLQotTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI6On5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlcigpID0gZGVmYXVsdDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXIuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcl9oCi0jZGVmaW5lIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyX2gKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNz
IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IHsKLSAgICBDb250ZW50LAotICAgIFRy
YW5zaWVudCwKLSAgICBUcmFuc2llbnRTb2xvCi19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVw
dGluZ0NhdGVnb3J5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFbmRPZkludGVy
cnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSkgPSAw
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyPiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXIoTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmKTsKLSAg
ICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcigpOwotCi0gICAgLy8g
VG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxp
c3RlbmluZ0ZvckludGVycnVwdGlvbnMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgPSAwOwotCi0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2NsaWVudDsgfQot
Ci1wcml2YXRlOgotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50KiBt
X2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJfaCAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21h
Yy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uUHJvdmlkZXJNYWMuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYy5oCShub25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWNfaAotI2RlZmluZSBNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hY19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlck1hYyA6IHB1YmxpYyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXI6Ok1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOwotCi0gICAgdm9pZCBiZWdp
bkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYygpID0gZGVmYXVsdDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNT
SU9OKSAmJiBQTEFURk9STShNQUMpCi0KLSNlbmRpZiAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hY19oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNl
c3Npb24vbWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0JKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJNYWMubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hYy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIFBMQVRGT1JN
KE1BQykKLQotI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERpZEJlZ2lu
UmluZ2luZ05vdGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlkQmVnaW5SaW5naW5nIik7Ci1zdGF0
aWMgY29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERpZEVuZFJpbmdpbmdOb3RpZmljYXRpb24gPSBDRlNU
UigiQ2FsbERpZEVuZFJpbmdpbmciKTsKLXN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBjYWxsRGlk
Q29ubmVjdE5vdGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlkQ29ubmVjdCIpOwotCi1zdGF0aWMg
dm9pZCBjYWxsRGlkQmVnaW5SaW5naW5nKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBv
YnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0g
ICAgQVNTRVJUX0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyKiBwcm92aWRlciA9IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlciopb2JzZXJ2ZXI7Ci0gICAgcHJvdmlkZXItPmNsaWVudCgpLmRpZFJlY2VpdmVTdGFydE9m
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5
OjpUcmFuc2llbnQpOwotfQotCi1zdGF0aWMgdm9pZCBjYWxsRGlkRW5kUmluZ2luZyhDRk5vdGlm
aWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lk
KiwgQ0ZEaWN0aW9uYXJ5UmVmKQotewotICAgIEFTU0VSVF9BUkcob2JzZXJ2ZXIsIG9ic2VydmVy
KTsKLSAgICBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyogcHJvdmlkZXIgPSAo
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMqKW9ic2VydmVyOwotICAgIHByb3Zp
ZGVyLT5jbGllbnQoKS5kaWRSZWNlaXZlRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGNhbGxEaWRDb25uZWN0KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZl
ciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgQVNT
RVJUX0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyTWFjKiBwcm92aWRlciA9IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYyopb2JzZXJ2ZXI7Ci0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGll
bnQmIGNsaWVudCA9IHByb3ZpZGVyLT5jbGllbnQoKTsKLSAgICBjbGllbnQuZGlkUmVjZWl2ZUVu
ZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVn
b3J5OjpUcmFuc2llbnQpOwotICAgIGNsaWVudC5kaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlv
bk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeTo6Q29udGVudCk7
Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWM6OmJlZ2luTGlz
dGVuaW5nRm9ySW50ZXJydXB0aW9ucygpCi17Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYg
bm90aWZpY2F0aW9uQ2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXREaXN0cmlidXRlZENl
bnRlcigpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9u
Q2VudGVyLCB0aGlzLCBjYWxsRGlkQmVnaW5SaW5naW5nLCBjYWxsRGlkQmVnaW5SaW5naW5nTm90
aWZpY2F0aW9uLCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3Rp
ZmljYXRpb25DZW50ZXIsIHRoaXMsIGNhbGxEaWRFbmRSaW5naW5nLCBjYWxsRGlkRW5kUmluZ2lu
Z05vdGlmaWNhdGlvbiwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
bm90aWZpY2F0aW9uQ2VudGVyLCB0aGlzLCBjYWxsRGlkQ29ubmVjdCwgY2FsbERpZENvbm5lY3RO
b3RpZmljYXRpb24sIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVs
aXZlckltbWVkaWF0ZWx5KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlck1hYzo6c3RvcExpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKQotewotICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyUmVtb3ZlRXZlcnlPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldERp
c3RyaWJ1dGVkQ2VudGVyKCksIHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUs
MTEgKzI4NSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oIgogI2VuZGlmCkBAIC00Mjg2LDU3ICs0MjgxLDggQEAgYm9vbCBJbnRlcm5hbHM6OmVsZW1l
bnRJc0Jsb2NraW5nRGlzcGxheQogewogICAgIHJldHVybiBlbGVtZW50LmlzRGlzYWJsaW5nU2xl
ZXAoKTsKIH0KLQogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotCi12b2lkIEludGVybmFsczo6c2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdv
cnkpCi17Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVN0
YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oY2F0ZWdvcnkpOwotfQotCi12b2lkIEludGVy
bmFsczo6c2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlh
U2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KQotewotICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNh
dGlvbihjYXRlZ29yeSk7Ci19Ci0KLVN0cmluZyBJbnRlcm5hbHM6Om1lZGlhU2Vzc2lvbkN1cnJl
bnRTdGF0ZShNZWRpYVNlc3Npb24qIHNlc3Npb24pIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChzZXNz
aW9uLT5jdXJyZW50U3RhdGUoKSkgewotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0
aXZlOgotICAgICAgICByZXR1cm4gImFjdGl2ZSI7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OlN0
YXRlOjpJbnRlcnJ1cHRlZDoKLSAgICAgICAgcmV0dXJuICJpbnRlcnJ1cHRlZCI7Ci0gICAgY2Fz
ZSBNZWRpYVNlc3Npb246OlN0YXRlOjpJZGxlOgotICAgICAgICByZXR1cm4gImlkbGUiOwotICAg
IH0KLX0KLQotZG91YmxlIEludGVybmFsczo6bWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKEhUTUxN
ZWRpYUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX0FSRyhlbGVtZW50LCBl
bGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVudC0+cGxheWVyVm9sdW1lKCk7Ci19Ci0KLXZvaWQg
SW50ZXJuYWxzOjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQp
Ci17Ci0gICAgLy8gRklYTUU6IE5vIGdvb2QgcmVhc29uIHRvIHVzZSBhIHNpbmdsZSBmdW5jdGlv
biB3aXRoIGFuIGFyZ3VtZW50IGluc3RlYWQgb2YgdGhyZWUgZnVuY3Rpb25zLgotICAgIHN3aXRj
aCAoZXZlbnQpIHsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6OlBsYXlQYXVzZToKLSAgICAg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9nZ2xlUGxheWJhY2soKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpQ29udHJvbEV2ZW50OjpOZXh0VHJhY2s6Ci0gICAg
ICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb05leHRUcmFjaygpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6OlByZXZpb3VzVHJhY2s6
Ci0gICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb1ByZXZpb3Vz
VHJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0KICNpZiBFTkFCTEUoV0VCX0FVRElPKQogdm9pZCBJbnRlcm5hbHM6OnNl
dEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9D
b250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwgU3Ry
aW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAi
TWVkaWFFbGVtZW50U2Vzc2lvbi5oIgogI2VuZGlmCkBAIC02NjYsMTUgKzY2Miw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1l
bnQmKSBjb25zdDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9p
ZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSk7Ci0gICAgdm9pZCBzZW5kTWVkaWFTZXNzaW9uRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnkpOwotICAgIFN0cmluZyBtZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoTWVkaWFTZXNzaW9uJikg
Y29uc3Q7Ci0gICAgZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVt
ZW50JikgY29uc3Q7Ci0gICAgZW51bSBjbGFzcyBNZWRpYUNvbnRyb2xFdmVudCB7IFBsYXlQYXVz
ZSwgTmV4dFRyYWNrLCBQcmV2aW91c1RyYWNrIH07Ci0gICAgdm9pZCBzZW5kTWVkaWFDb250cm9s
RXZlbnQoTWVkaWFDb250cm9sRXZlbnQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRldmljZVN0YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTggKzQ2LDYgQEAgZW51bSBSZXNvdXJjZUxvYWRQcmlv
cml0eSB7CiAgICAgIlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2giCiB9OwogCi1bQ29uZGl0
aW9uYWw9TUVESUFfU0VTU0lPTl0gZW51bSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29y
eSB7Ci0gICAgImNvbnRlbnQiLAotICAgICJ0cmFuc2llbnQiLAotICAgICJ0cmFuc2llbnQtc29s
byIKLX07Ci0KLVtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBlbnVtIE1lZGlhQ29udHJvbEV2
ZW50IHsKLSAgICAicGxheS1wYXVzZSIsCi0gICAgIm5leHQtdHJhY2siLAotICAgICJwcmV2aW91
cy10cmFjayIKLX07Ci0KIGVudW0gQXV0b0ZpbGxCdXR0b25UeXBlIHsKICAgICAiTm9uZSIsCiAg
ICAgIkNvbnRhY3RzIiwKQEAgLTY5NiwxMSArNjg0LDYgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVn
b3J5IHsKIAogICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJpbmcgaW50ZXJydXB0aW9u
VHlwZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgZW5kTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFncyk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NF
U1NJT05dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlm
aWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7Ci0gICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnkgY2F0ZWdvcnkpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBET01TdHJpbmcg
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKE1lZGlhU2Vzc2lvbiBzZXNzaW9uKTsKLSAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShI
VE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9O
XSB1bmRlZmluZWQgc2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50IGV2ZW50
KTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlvbldpbGxCZWNv
bWVJbmFjdGl2ZSgpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQg
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKG9wdGlvbmFsIGJvb2xlYW4gc3VzcGVuZGVk
VW5kZXJMb2NrID0gZmFsc2UpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIw
MjAtMDktMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyBh
bGwgY29kZSBpbiBFTkFCTEUoTUVESUFfU0VTU0lPTikgYW5kIGFsbCBtZWRpYSBzZXNzaW9uCisg
ICAgICAgIHJlbGF0ZWQgU1BJLiBJdCB3YXMgbmV2ZXIgZW5hYmxlZCBhbmQgbm90aGluZyBldmVy
IGFkb3B0ZWQgaXQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBSZW1vdmUgbWVkaWEgc2Vzc2lvbiByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICog
U2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJNZWRp
YVNlc3Npb25NZXRhZGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL1dlYk1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgUmVtb3ZlIGFsbCBj
b2RlIGluIEVOQUJMRShNRURJQV9TRVNTSU9OKS4KKwogMjAyMC0wOS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIGZhc3Qv
Y2FudmFzL2NhbnZhcy1ibGVuZC1pbWFnZS5odG1sIGFuZCBmYXN0L2NhbnZhcy9jYW52YXMtYmxl
bmQtc29saWQuaHRtbCBmYWlsIG9uIG1hY09TCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI2
NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
OCw3ICsxOTgsNiBAQCBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCiBTaGFyZWQvV2Vi
SW1hZ2UuY3BwCiBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQv
V2ViS2l0MkluaXRpYWxpemUuY3BwIEBuby11bmlmeQotU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1l
dGFkYXRhLmNwcAogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCiBTaGFyZWQvV2ViTW91c2VF
dmVudC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTM4MCw3ICszNzksNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tIaXRUZXN0UmVzdWx0LmNwcAog
VUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLSW5z
cGVjdG9yLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAK
LVVJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAogVUlQcm9jZXNzL0FQ
SS9DL1dLTWVzc2FnZUxpc3RlbmVyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja0Rpc3BsYXku
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxNSArMjI2LDEyIEBAIFVJUHJvY2Vzcy9I
aWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2EKIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmNwcAogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAK
IFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKLVVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuY3BwCi1VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
Q2xpZW50LmNwcAogVUlQcm9jZXNzL1dlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKIFVJUHJv
Y2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tCiAKIFVJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZURhdGFSZWNvcmQuY3BwCiAKIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRNZW51TGlz
dGVuZXIuY3BwCi1VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tUZXN0aW5nU3VwcG9ydC5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJTY3JpcHRSZWYuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDEwICsxMDksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNlc3Npb25NZXRhZGF0YS5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdHVyZURldmljZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgpAQCAtMjExNywzMiArMjExMyw2IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhU2Vzc2lv
bk1ldGFkYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhU2Vzc2lvbk1l
dGFkYXRhJiByZXN1bHQpCi17Ci0gICAgZW5jb2RlciA8PCByZXN1bHQuYXJ0aXN0KCk7Ci0gICAg
ZW5jb2RlciA8PCByZXN1bHQuYWxidW0oKTsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC50aXRsZSgp
OwotICAgIGVuY29kZXIgPDwgcmVzdWx0LmFydHdvcmtVUkwoKTsKLX0KLQotYm9vbCBBcmd1bWVu
dENvZGVyPE1lZGlhU2Vzc2lvbk1ldGFkYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1l
ZGlhU2Vzc2lvbk1ldGFkYXRhJiByZXN1bHQpCi17Ci0gICAgU3RyaW5nIGFydGlzdCwgYWxidW0s
IHRpdGxlOwotICAgIFVSTCBhcnR3b3JrVVJMOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJ0
aXN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxi
dW0pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRs
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydHdv
cmtVUkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gTWVkaWFTZXNzaW9u
TWV0YWRhdGEodGl0bGUsIGFydGlzdCwgYWxidW0sIGFydHdvcmtVUkwpOwotICAgIHJldHVybiB0
cnVlOwotfQotI2VuZGlmCi0KIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDEwICsx
ODcsNiBAQCBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci1jbGFzcyBNZWRpYVNlc3Npb25NZXRhZGF0YTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCkBAIC02MzUsMTMgKzYz
MSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIH07CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YT4gewotICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsK
LSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJD
b3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpOwotfTsKLSNlbmRpZgotCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YSYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gZGVj
b2RlKERlY29kZXImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRp
YVNlc3Npb25NZXRhZGF0YS5jcHAJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZWY8V2ViTWVk
aWFTZXNzaW9uTWV0YWRhdGE+IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpjcmVhdGUoY29uc3Qg
TWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKG1ldGFkYXRhKSk7Ci19Ci0KLVdlYk1lZGlhU2Vz
c2lvbk1ldGFkYXRhOjpXZWJNZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBNZWRpYVNlc3Npb25N
ZXRhZGF0YSYgbWV0YWRhdGEpCi0gICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQotewotfQotCi1X
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YTo6fldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKCkKLXsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lP
TikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEuaAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFT
ZXNzaW9uTWV0YWRhdGEuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhX2gKLSNkZWZpbmUgV2ViTWVkaWFT
ZXNzaW9uTWV0YWRhdGFfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRl
ICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJNZWRpYVNlc3Npb25NZXRhZGF0YT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJik7Ci0gICAgfldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKCk7
Ci0KLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLnRpdGxlKCk7
IH0KLSAgICBTdHJpbmcgYXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnRpc3Qo
KTsgfQotICAgIFN0cmluZyBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW0o
KTsgfQotICAgIFN0cmluZyBhcnR3b3JrVVJMKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5h
cnR3b3JrVVJMKCkuc3RyaW5nKCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZWRp
YVNlc3Npb25NZXRhZGF0YShjb25zdCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpOwot
Ci0gICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEgbV9tZXRhZGF0YTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCi0K
LSNlbmRpZiAvLyBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDYgQEAg
cHVibGljOgogICAgICAgICBXZWJzaXRlUG9saWNpZXMsCiAgICAgICAgIFdpbmRvd0ZlYXR1cmVz
LAogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIE1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlciwKLSAgICAgICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEsCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShXRUJfQVVUSE4pCiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UsCiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCkBAIC00MjgsMTEgKzQyMyw2IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3QKICAgICAgICAgQVBJOjpP
YmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2llcywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6
OldpbmRvd0ZlYXR1cmVzLAogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIsCi0gICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSwKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OldlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlz
aW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDUsOCArMTA1LDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tIaXRUZXN0UmVzdQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJY29uRGF0YWJhc2Uq
IFdLSWNvbkRhdGFiYXNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNwZWN0
b3IqIFdLSW5zcGVjdG9yUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWY7Ci10eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciogV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tNZXNzYWdlTGlzdGVuZXIqIFdLTWVzc2FnZUxpc3RlbmVyUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uQWN0aW9uKiBXS05hdmlnYXRpb25B
Y3Rpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBX
S05hdmlnYXRpb25EYXRhUmVmOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjc0Njcp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
Y3BwCShub25leGlzdGVudCkKQEAgLTEsMTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jb25zdCBjaGFyKiBXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlciI7Ci19Ci0KLVJlZjxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+IFdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNz
UG9vbCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIocHJvY2Vzc1Bvb2wpKTsKLX0KLQotV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQot
ICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpIHsgfQotCi0vLyBXZWJDb250
ZXh0U3VwcGxlbWVudAotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6cmVmV2Vi
Q29udGV4dFN1cHBsZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9p
ZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KQotewotICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlcjo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCkKLXsKLSAgICBtX2NsaWVudC5pbml0aWFsaXplKGNs
aWVudCk7Ci19Ci0KLWJvb2wgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjp2YWx1ZUZvclBs
YXliYWNrQXR0cmlidXRlKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1
dGUgYXR0cmlidXRlKSBjb25zdAotewotICAgIGlmICghbV9mb2N1c2VkTWVkaWFFbGVtZW50KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9wbGF5YmFja0F0dHJpYnV0ZXMg
JiBhdHRyaWJ1dGU7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjp1cGRh
dGVQbGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0
cmlidXRlIGF0dHJpYnV0ZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUpCi0gICAgICAg
IG1fcGxheWJhY2tBdHRyaWJ1dGVzIHw9IGF0dHJpYnV0ZTsKLSAgICBlbHNlCi0gICAgICAgIG1f
cGxheWJhY2tBdHRyaWJ1dGVzICY9IH5hdHRyaWJ1dGU7Ci0KLSAgICBtX2NsaWVudC5kaWRDaGFu
Z2VQbGF5YmFja0F0dHJpYnV0ZSh0aGlzLCBhdHRyaWJ1dGUsIHZhbHVlKTsKLX0KLQotdm9pZCBX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldFZvbHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVu
dChkb3VibGUgdm9sdW1lKQotewotICAgIGlmICghbV9mb2N1c2VkTWVkaWFFbGVtZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoV2ViUGFnZVByb3h5KiBwcm94eSA9IG1fZm9jdXNlZE1l
ZGlhRWxlbWVudC0+Zmlyc3QpCi0gICAgICAgIHByb3h5LT5zZXRWb2x1bWVPZk1lZGlhRWxlbWVu
dCh2b2x1bWUsIG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+c2Vjb25kKTsKLX0KLQotdm9pZCBXZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnVwZGF0ZVBsYXliYWNrQXR0cmlidXRlc0Zyb21NZWRp
YVN0YXRlKFdlYlBhZ2VQcm94eSogcHJveHksIHVpbnQ2NF90IGVsZW1lbnRJRCwgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIGZsYWdzKQotewotICAgIGlmIChtX2ZvY3Vz
ZWRNZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgaWYgKHByb3h5ID09IG1fZm9jdXNlZE1lZGlhRWxl
bWVudC0+Zmlyc3QgJiYgZWxlbWVudElEID09IG1fZm9jdXNlZE1lZGlhRWxlbWVudC0+c2Vjb25k
KSB7Ci0gICAgICAgICAgICB1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZShJc1BsYXlpbmcsIGZsYWdz
ICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNTb3VyY2VFbGVtZW50UGxheWluZyk7Ci0gICAg
ICAgICAgICB1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZShJc05leHRUcmFja0NvbnRyb2xFbmFibGVk
LCBmbGFncyAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTmV4dFRyYWNrQ29udHJvbEVuYWJs
ZWQpOwotICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tBdHRyaWJ1dGUoSXNQcmV2aW91c1RyYWNr
Q29udHJvbEVuYWJsZWQsIGZsYWdzICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNQcmV2aW91
c1RyYWNrQ29udHJvbEVuYWJsZWQpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJv
eHkmIHByb3h5LCB1aW50NjRfdCBlbGVtZW50SUQpCi17Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVt
ZW50ID0gbWFrZVVuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7
Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpjbGVhckZvY3VzZWRNZWRp
YUVsZW1lbnQoKQotewotICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IG51bGxwdHI7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuaAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKLQotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRT
dXBwbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi10
eXBlZGVmIHN0ZDo6cGFpcjxXZWJQYWdlUHJveHkqLCB1aW50NjRfdD4gRm9jdXNlZE1lZGlhRWxl
bWVudDsKLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPiwg
cHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciogc3VwcGxlbWVudE5hbWUoKTsKLQotICAgIHN0YXRpYyBSZWY8V2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyPiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKLQotICAgIHZvaWQgaW5pdGlh
bGl6ZUNsaWVudChjb25zdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2UqKTsK
LQotICAgIGJvb2wgdmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlclBsYXliYWNrQXR0cmlidXRlKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZVBsYXliYWNr
QXR0cmlidXRlc0Zyb21NZWRpYVN0YXRlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90LCBXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwotICAgIHZvaWQgc2V0Vm9sdW1lT2ZG
b2N1c2VkTWVkaWFFbGVtZW50KGRvdWJsZSk7Ci0KLSAgICB2b2lkIHNldEZvY3VzZWRNZWRpYUVs
ZW1lbnQoV2ViUGFnZVByb3h5JiwgdWludDY0X3QpOwotICAgIHZvaWQgY2xlYXJGb2N1c2VkTWVk
aWFFbGVtZW50KCk7Ci0KLSAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQ
STo6T2JqZWN0OjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIoV2ViUHJvY2Vzc1Bvb2wqKTsKLQotICAgIC8vIFdlYkNvbnRleHRTdXBw
bGVtZW50Ci0gICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotCi0gICAgdm9pZCB1
cGRhdGVQbGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNr
QXR0cmlidXRlLCBib29sKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxGb2N1c2VkTWVkaWFFbGVt
ZW50PiBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQ7Ci0gICAgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJQbGF5YmFja0F0dHJpYnV0ZXMgbV9wbGF5YmFja0F0dHJpYnV0ZXMgeyAwIH07Ci0gICAgV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50IG1fY2xpZW50OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyQ2xpZW50LmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmgiCi0KLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
dm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQ6OmRpZENoYW5nZVBsYXliYWNr
QXR0cmlidXRlKFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciogbWFuYWdlciwgV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSBwbGF5YmFja0F0dHJpYnV0ZSwgYm9v
bCB2YWx1ZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC5kaWRDaGFuZ2VQbGF5YmFja0F0dHJp
YnV0ZSh0b0FQSShtYW5hZ2VyKSwgcGxheWJhY2tBdHRyaWJ1dGUsIHZhbHVlLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmgJKHJldmlz
aW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckNsaWVudC5oCShub25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50X2gKLSNkZWZp
bmUgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50X2gKLQotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiQVBJQ2xpZW50LmgiCi0jaW5jbHVkZSAiV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXIuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJDbGllbnRWMD4gVmVyc2lvbnM7Ci19OwotfQotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOwotCi1jbGFzcyBX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBk
aWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZShXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqLCBX
S01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlLCBib29sKTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0KLSNlbmRpZiAvLyBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRfaApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjc0Njcp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDQsMTIgKzI0NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1
ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vz
c2lvbk1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NZXRhZGF0YS5o
PgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogI2luY2x1ZGUgIlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oIgogI2VuZGlmCkBAIC02MDY3LDI0ICs2MDYxLDYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhYwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKLXZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRU
eXBlIGV2ZW50VHlwZSkKLXsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2
ZW50KGV2ZW50VHlwZSkpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRp
YUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQotewotICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpKTsK
LX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5Jbldp
bmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiB7CiAgICAgaWYgKG1heVN0YXJ0TWVkaWEgPT0gbV9t
YXlTdGFydE1lZGlhV2hlbkluV2luZG93KQpAQCAtODk4OSwxMiArODk2NSw2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVNuYXAKIAogdm9pZCBXZWJQYWdlUHJveHk6Omlz
UGxheWluZ01lZGlhRGlkQ2hhbmdlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBuZXdT
dGF0ZSwgdWludDY0X3Qgc291cmNlRWxlbWVudElEKQogewotI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQotICAgIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciogZm9jdXNNYW5hZ2VyID0gcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXI+KCk7Ci0gICAgQVNTRVJUKGZvY3VzTWFuYWdlcik7Ci0gICAgZm9jdXNNYW5hZ2VyLT51cGRh
dGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFTdGF0ZSh0aGlzLCBzb3VyY2VFbGVtZW50SUQs
IG5ld1N0YXRlKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
IW1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuc2hvdWxkQmVSdW5uYWJsZSgpKQogICAgICAgICByZXR1
cm47CkBAIC05MTQzLDI2ICs5MTEzLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5vd1BsYXlpbmdJ
bmZvQ2FsbGJhYwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLXZvaWQg
V2ViUGFnZVByb3h5OjpoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENo
YW5nZShib29sIHN0YXRlKQotewotICAgIG1faGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlh
RWxlbWVudHMgPSBzdGF0ZTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6Om1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJiBtZXRh
ZGF0YSkKLXsKLSAgICBSZWY8V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE+IHdlYk1ldGFkYXRhID0g
V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE6OmNyZWF0ZShtZXRhZGF0YSk7Ci0gICAgbV91aUNsaWVu
dC0+bWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoKnRoaXMsIHdlYk1ldGFkYXRhLnB0cigp
KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlk
Q2hhbmdlKHVpbnQ2NF90IGVsZW1lbnRJRCkKLXsKLSAgICBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIqIGZvY3VzTWFuYWdlciA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpOwotICAgIEFTU0VSVChmb2N1c01hbmFnZXIp
OwotICAgIGZvY3VzTWFuYWdlci0+c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCgqdGhpcywgZWxlbWVu
dElEKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0b3BsYXlFdmVu
dChXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25TZXQ8QXV0b3BsYXlFdmVudEZs
YWdzPiBmbGFncykKIHsKICAgICBtX3VpQ2xpZW50LT5oYW5kbGVBdXRvcGxheUV2ZW50KCp0aGlz
LCBldmVudCwgZmxhZ3MpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksMTIgKzE2OSw2IEBAIE9CSkNfQ0xBU1MgX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7Ci19Ci0jZW5kaWYKLQogI2lm
IFVTRShESVJFQ1QyRCkKIGludGVyZmFjZSBJRDNEMTFEZXZpY2UxOwogI2VuZGlmCkBAIC0xMzQ0
LDEyICsxMzM4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2so
KTsKICAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIGJvb2wgaGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1l
bnRzOyB9Ci0gICAgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KFdlYkNvcmU6Ok1lZGlhRXZlbnRUeXBl
KTsKLSAgICB2b2lkIHNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3QpOwot
I2VuZGlmCi0gICAgICAgIAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdm9pZCBkaWRB
bGxvd1BvaW50ZXJMb2NrKCk7CiAgICAgdm9pZCBkaWREZW55UG9pbnRlckxvY2soKTsKQEAgLTE0
NzUsMTIgKzE0NjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3dQbGF5aW5nSW5mb0NhbGxiYWNr
KGJvb2wsIGJvb2wsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdCwgQ2Fs
bGJhY2tJRCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZvaWQg
aGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCk7Ci0g
ICAgdm9pZCBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpNZWRp
YVNlc3Npb25NZXRhZGF0YSYpOwotICAgIHZvaWQgZm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnRE
aWRDaGFuZ2UodWludDY0X3QpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAgQVBJ
OjpIaXRUZXN0UmVzdWx0KiBsYXN0TW91c2VNb3ZlSGl0VGVzdFJlc3VsdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdE1vdXNlTW92ZUhpdFRlc3RSZXN1bHQuZ2V0KCk7IH0KICAgICB2b2lkIHBlcmZv
cm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsK
QEAgLTI3NzgsMTAgKzI3NjAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc05ldmVyUmljaGx5
RWRpdGFibGVGb3JUb3VjaEJhciB7IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIGJvb2wgbV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVt
ZW50cyB7IGZhbHNlIH07Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9yZXF1aXJlc1Rhcmdl
dE1vbml0b3JpbmcgeyBmYWxzZSB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjc0NjcpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQ3NCwxMiArNDc0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBJc1BsYXlpbmdNZWRpYURpZENoYW5nZSh1bnNpZ25lZCBzdGF0ZSwgdWludDY0X3Qgc291
cmNlRWxlbWVudElEKQogICAgIEhhbmRsZUF1dG9wbGF5RXZlbnQoZW51bTp1aW50OF90IFdlYkNv
cmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50
RmxhZ3M+IGZsYWdzKQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgSGFzTWVkaWFT
ZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKLSAgICBN
ZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0
YSBtZXRhZGF0YSk7Ci0gICAgRm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWlu
dDY0X3QgZWxlbWVudElEKQotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkUGVy
Zm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Qoc3RydWN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3Vs
dERhdGEgcmVzdWx0LCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDkgKzI4OCw2IEBA
IFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2MKICAgICBhZGRTdXBwbGVt
ZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKICAgICBhZGRTdXBwbGVtZW50PFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5PigpOwotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGFkZFN1cHBs
ZW1lbnQ8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpOwotI2VuZGlmCiAKICAgICBwcm9j
ZXNzUG9vbHMoKS5hcHBlbmQodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDYgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgVVNFKFNPVVApCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaD4KICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDI2NzQ2NykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCwxMCArNjAsNiBAQCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIHN0cnVjdCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YTsKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotY2xhc3Mg
V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE7Ci0jZW5kaWYKIH0KIAogbmFtZXNwYWNlIEFQSSB7CkBA
IC0xNjEsMTAgKzE1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFDYXB0dXJl
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxh
eUV2ZW50RmxhZ3M+KSB7IH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEqKSB7IH0KLSNlbmRpZgotCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZFKEFQUF9MSU5LUykKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudChfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mbyAqKSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDggKzk0LDYg
QEAgY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogY2xhc3MgV2ViSW5zcGVjdG9yUHJv
eHk7Ci1jbGFzcyBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI7Ci1jbGFzcyBXZWJNZWRpYVNl
c3Npb25NZXRhZGF0YTsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOwpAQCAtMTM2
LDggKzEzNCw2IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0hUVFBDb29raWVTdG9yZVJlZiwKIFdL
X0FERF9BUElfTUFQUElORyhXS0hpdFRlc3RSZXN1bHRSZWYsIEFQSTo6SGl0VGVzdFJlc3VsdCkK
IFdLX0FERF9BUElfTUFQUElORyhXS0ljb25EYXRhYmFzZVJlZiwgV2ViSWNvbkRhdGFiYXNlKQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3JQcm94eSkKLVdL
X0FERF9BUElfTUFQUElORyhXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiwgV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyKQotV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVkaWFTZXNzaW9uTWV0
YWRhdGFSZWYsIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
TWVzc2FnZUxpc3RlbmVyUmVmLCBBUEk6Ok1lc3NhZ2VMaXN0ZW5lcikKIFdLX0FERF9BUElfTUFQ
UElORyhXS05hdmlnYXRpb25BY3Rpb25SZWYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbikKIFdLX0FE
RF9BUElfTUFQUElORyhXS05hdmlnYXRpb25EYXRhUmVmLCBBUEk6Ok5hdmlnYXRpb25EYXRhKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZp
c2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsMTYgKzQ0MSw2IEBAIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlclJlZiBXS0NvbnRleHRHZXQKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJSZWY+KFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRh
U3RvcmUoKSk7CiB9CiAKLVdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIFdLQ29udGV4dEdl
dE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCkKLXsKLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRv
SW1wbChjb250ZXh0KS0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcj4oKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLSNlbmRpZgotfQotCiBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVu
dDxXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkocmV2aXNpb24gMjY3NDY3KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Miw3ICsxNzIsNiBAQCBXS19FWFBPUlQgV0tDb29raWVNYW5hZ2VyUmVmIFdLQ29udGV4
dEdlCiBXS19FWFBPUlQgV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0R2VvbG9j
YXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS0ljb25EYXRh
YmFzZVJlZiBXS0NvbnRleHRHZXRJY29uRGF0YWJhc2UoV0tDb250ZXh0UmVmIGNvbnRleHQpOwog
V0tfRVhQT1JUIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KSBXS19DX0FQSV9ERVBSRUNBVEVE
X1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSk7
Ci1XS19FWFBPUlQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYgV0tDb250ZXh0R2V0TWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihX
S0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJl
ZiBXS0NvbnRleHRHZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCkg
V0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCShyZXZp
c2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tU
eXBlSUQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJHZXRUeXBlSUQoKQotewotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0b0FQSShXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXI6OkFQSVR5cGUpOwotI2Vsc2UKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmplY3Q6OlR5
cGU6Ok51bGwpOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJT
ZXRDbGllbnQoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYgbWFuYWdlciwgY29uc3QgV0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0gICAgdG9JbXBsKG1hbmFnZXIpLT5pbml0aWFsaXplQ2xpZW50KGNs
aWVudCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKLSAgICBVTlVTRURfUEFS
QU0oY2xpZW50KTsKLSNlbmRpZgotfQotCi1ib29sIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
VmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBt
YW5hZ2VyLCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIGF0dHJp
YnV0ZSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4gdG9JbXBsKG1h
bmFnZXIpLT52YWx1ZUZvclBsYXliYWNrQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKLSAgICBVTlVTRURfUEFSQU0oYXR0cmlidXRlKTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlclNldFZvbHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVudChXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlclJlZiBtYW5hZ2VyLCBkb3VibGUgdm9sdW1lKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQotICAgIHRvSW1wbChtYW5hZ2VyKS0+c2V0Vm9sdW1lT2ZGb2N1c2VkTWVkaWFFbGVtZW50
KHZvbHVtZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKLSAgICBVTlVTRURf
UEFSQU0odm9sdW1lKTsKLSNlbmRpZgotfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCShyZXZp
c2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJfaAotI2RlZmluZSBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcl9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0K
LSNpZm5kZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxzdGRib29sLmg+Ci0jZW5kaWYKLQotI2lm
ZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1lbnVtIFdLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUgewotICAgIElzUGxheWluZyAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAwLAotICAgIElzUHJldmlvdXNUcmFja0NvbnRyb2xFbmFibGVk
ID0gMSA8PCAxLAotICAgIElzTmV4dFRyYWNrQ29udHJvbEVuYWJsZWQgICAgID0gMSA8PCAyLAot
fTsKLXR5cGVkZWYgdWludDMyX3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0
dHJpYnV0ZXM7Ci0KLS8vIE1lZGlhIFNlc3Npb24gRm9jdXMgTWFuYWdlciBDbGllbnQKLXR5cGVk
ZWYgdm9pZCAoKldLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyRGlkQ2hhbmdlUGxheWJhY2tBdHRy
aWJ1dGUpKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIFdLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUgcGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wg
dmFsdWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS01lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lk
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87Ci19
IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlwZWRlZiBzdHJ1Y3Qg
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRWMCB7Ci0gICAgV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJDbGllbnRCYXNlICAgICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVy
c2lvbiAwLgotICAgIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyRGlkQ2hhbmdlUGxheWJhY2tB
dHRyaWJ1dGUgZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGU7Ci19IFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgdm9pZCBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlclNldENsaWVudChXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBtYW5hZ2Vy
LCBjb25zdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci0K
LVdLX0VYUE9SVCBib29sIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyVmFsdWVGb3JQbGF5YmFj
a0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiwgV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSk7Ci1XS19FWFBPUlQgdm9pZCBXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlclNldFZvbHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVudChXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlclJlZiwgZG91YmxlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2ggKi8KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNz
aW9uTWV0YWRhdGEuY3BwCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5j
bHVkZSAiV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKLQotV0tUeXBlSUQgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUdldFR5cGVJRCgpCi17Ci0jaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvQVBJKFdlYk1lZGlhU2Vzc2lvbk1l
dGFkYXRhOjpBUElUeXBlKTsKLSNlbHNlCi0gICAgcmV0dXJuIHRvQVBJKEFQSTo6T2JqZWN0OjpU
eXBlOjpOdWxsKTsKLSNlbmRpZgotfQotCi1XS1N0cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhQ29weVRpdGxlKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpCi17Ci0jaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChtZXRh
ZGF0YSktPnRpdGxlKCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwotICAg
IHJldHVybiBudWxscHRyOwotI2VuZGlmCi19Ci0KLVdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9u
TWV0YWRhdGFDb3B5QXJ0aXN0KFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpCi17
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bChtZXRhZGF0YSktPmFydGlzdCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRh
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCi1XS1N0cmluZ1JlZiBXS01lZGlh
U2Vzc2lvbk1ldGFkYXRhQ29weUFsYnVtKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRh
dGEpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChtZXRhZGF0YSktPmFsYnVtKCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWV0
YWRhdGEpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19Ci0KLVdLVVJMUmVmIFdLTWVk
aWFTZXNzaW9uTWV0YWRhdGFDb3B5QXJ0d29ya1VSTChXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVm
IG1ldGFkYXRhKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0b0Nv
cGllZFVSTEFQSSh0b0ltcGwobWV0YWRhdGEpLT5hcnR3b3JrVVJMKCkpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0obWV0YWRhdGEpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNl
c3Npb25NZXRhZGF0YS5oCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhX2gK
LSNkZWZpbmUgV0tNZWRpYVNlc3Npb25NZXRhZGF0YV9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tC
YXNlLmg+Ci0KLSNpZm5kZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxzdGRib29sLmg+Ci0jZW5k
aWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1XS19FWFBP
UlQgV0tUeXBlSUQgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUdldFR5cGVJRCgpOwotCi1XS19FWFBP
UlQgV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlUaXRsZShXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS01lZGlh
U2Vzc2lvbk1ldGFkYXRhQ29weUFydGlzdChXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFk
YXRhKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFs
YnVtKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpOwotV0tfRVhQT1JUIFdLVVJM
UmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5QXJ0d29ya1VSTChXS01lZGlhU2Vzc2lvbk1l
dGFkYXRhUmVmIG1ldGFkYXRhKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQot
I2VuZGlmIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFfaCAqLwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwx
MSArOTQsNiBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NZXRhZGF0
YS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uRXZlbnRzLmg+Ci0jZW5kaWYKLQog
I2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlZlcnNpb25DaGVja3MuaCIKICNlbmRpZgpA
QCAtMjAyOCwxNSArMjAyMyw2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWcKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bh
c3N3b3JkQXBwZWFyYW5jZSh0b0FQSSgmcGFnZSksIHRvQVBJKHVzZXJJbmZvKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0gICAgICAgIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSogbWV0YWRhdGEpIGZpbmFsCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQubWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5tZWRp
YVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSh0b0FQSSgmcGFnZSksIHRvQVBJKG1ldGFkYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotI2VuZGlmCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKICAgICAgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZVBy
b3h5KiBwYWdlKSBmaW5hbAogICAgICAgICB7CkBAIC0yNzI3LDQzICsyNzEzLDYgQEAgdm9pZCBX
S1BhZ2VEaWREZW55UG9pbnRlckxvY2soV0tQYWdlUmVmIAogI2VuZGlmCiB9CiAKLWJvb2wgV0tQ
YWdlSGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMoV0tQYWdlUmVmIHBhZ2Up
Ci17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+
aGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMoKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHBhZ2UpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi12b2lkIFdL
UGFnZUhhbmRsZU1lZGlhRXZlbnQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFFdmVudFR5cGUgd2tF
dmVudFR5cGUpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgTWVkaWFFdmVudFR5
cGUgZXZlbnRUeXBlOwotCi0gICAgc3dpdGNoICh3a0V2ZW50VHlwZSkgewotICAgIGNhc2Uga1dL
TWVkaWFFdmVudFR5cGVQbGF5UGF1c2U6Ci0gICAgICAgIGV2ZW50VHlwZSA9IE1lZGlhRXZlbnRU
eXBlOjpQbGF5UGF1c2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Uga1dLTWVkaWFFdmVudFR5
cGVUcmFja05leHQ6Ci0gICAgICAgIGV2ZW50VHlwZSA9IE1lZGlhRXZlbnRUeXBlOjpUcmFja05l
eHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Uga1dLTWVkaWFFdmVudFR5cGVUcmFja1ByZXZp
b3VzOgotICAgICAgICBldmVudFR5cGUgPSBNZWRpYUV2ZW50VHlwZTo6VHJhY2tQcmV2aW91czsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0b0ltcGwocGFnZSktPmhhbmRsZU1l
ZGlhRXZlbnQoZXZlbnRUeXBlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwotICAg
IFVOVVNFRF9QQVJBTSh3a0V2ZW50VHlwZSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXS1BhZ2VQb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lUmVmLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHlSZWYpCiB7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUodG9JbXBsKG1lc3NhZ2VOYW1lUmVm
KS0+c3RyaW5nKCksIHRvSW1wbChtZXNzYWdlQm9keVJlZikpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkocmV2aXNpb24gMjY3NDY3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEsMTkgKzE1MSw4IEBAIGVudW0gewogfTsKIHR5cGVkZWYgdWludDMyX3Qg
V0tNZWRpYVN0YXRlOwogCi0KIFdLX0VYUE9SVCBXS01lZGlhU3RhdGUgV0tQYWdlR2V0TWVkaWFT
dGF0ZShXS1BhZ2VSZWYgcGFnZSk7CiAKLWVudW0gewotICAgIGtXS01lZGlhRXZlbnRUeXBlUGxh
eVBhdXNlLAotICAgIGtXS01lZGlhRXZlbnRUeXBlVHJhY2tOZXh0LAotICAgIGtXS01lZGlhRXZl
bnRUeXBlVHJhY2tQcmV2aW91cwotfTsKLXR5cGVkZWYgdWludDMyX3QgV0tNZWRpYUV2ZW50VHlw
ZTsKLQotV0tfRVhQT1JUIGJvb2wgV0tQYWdlSGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlh
RWxlbWVudHMoV0tQYWdlUmVmIHBhZ2UpOwotV0tfRVhQT1JUIHZvaWQgV0tQYWdlSGFuZGxlTWVk
aWFFdmVudChXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYUV2ZW50VHlwZSBldmVudCk7Ci0KIFdLX0VY
UE9SVCB2b2lkIFdLUGFnZUxvYWRVUkxXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShX
S1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsLCBib29sIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMp
OwogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VQb3N0UHJlc2VudGF0aW9uVXBkYXRlRnVuY3Rpb24p
KFdLRXJyb3JSZWYsIHZvaWQqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlVUlDbGllbnQuaAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2
LDcgKzEyNiw2IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZUlzUGxheWluZ0F1ZGlvRGlkQ2gKIHR5
cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHRv
cExldmVsRG9jdW1lbnRPcmlnaW4sIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgcGVy
bWlzc2lvblJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgq
V0tDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4s
IFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tSZWYgZGV2aWNlc1JlcXVlc3QsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKLXR5cGVkZWYgdm9pZCAoKldLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLSGFuZGxlQXV0b3Bs
YXlFdmVudENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tBdXRvcGxheUV2ZW50IGV2ZW50LCBX
S0F1dG9wbGF5RXZlbnRGbGFncyBmbGFncywgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS0Z1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZUNhbGxiYWNrKShXS1BhZ2VS
ZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1JlcXVl
c3RQb2ludGVyTG9ja0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CkBAIC01MDMsNyArNTAyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRW
NSB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJh
Y2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7
Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lk
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2UuCiB9IFdLUGFnZVVJQ2xpZW50VjU7CiAKIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50
VjYgewpAQCAtNTc2LDcgKzU3NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjYg
ewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9y
VXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7
CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlLgogCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1Bh
Z2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
TmV3UGFnZTsKQEAgLTY1Niw3ICs2NTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVu
dFY3IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hh
bmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25N
ZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVO
ZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZU5ld1BhZ2U7CkBAIC03NDAsNyArNzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlD
bGllbnRWOCB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNz
aW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAgICAgCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFn
ZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTgyOCw3ICs4MjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBX
S1BhZ2VVSUNsaWVudFY5IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJh
Y2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2Fs
bGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9t
cHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0
YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBt
ZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBX
S1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC05MTksNyArOTE4LDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgV0tQYWdlVUlDbGllbnRWMTAgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxi
YWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1D
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29u
ZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9t
cHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlw
dFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNz
aW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRv
IGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogICAgIAogICAgIC8vIFZlcnNpb24g
Ni4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC0xMDE0LDcgKzEwMTMsNyBAQCB0
eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxMSB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZh
U2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7
IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBW
ZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtMTExMiw3ICsxMTEx
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTIgewogICAgIFdLUGFnZVJ1bkph
dmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAg
cnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVu
SmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAg
ICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFn
ZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAg
ICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdL
UGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogICAg
IAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC0x
MjEzLDcgKzEyMTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxMyB7CiAgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7
CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2
b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRD
aGFuZ2UuCiAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdl
OwpAQCAtMTMxNyw3ICsxMzE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTQg
ewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9y
VXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7
CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlLgogCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1Bh
Z2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
TmV3UGFnZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3QKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9y
VGVzdGluZyhXS0FycmF5UmVmIG9yaWdpblVSTHNSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0gICAgUmVmUHRyPEFQ
STo6QXJyYXk+IG9yaWdpblVSTHNBcnJheSA9IHRvSW1wbChvcmlnaW5VUkxzUmVmKTsKKyAgICBS
ZWZQdHI8QVBJOjpBcnJheT4gb3JpZ2luVVJMc0FycmF5ID0gV2ViS2l0Ojp0b0ltcGwob3JpZ2lu
VVJMc1JlZik7CiAgICAgc2l6ZV90IG5ld1NpemUgPSBvcmlnaW5VUkxzQXJyYXkgPyBvcmlnaW5V
UkxzQXJyYXktPnNpemUoKSA6IDA7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gZG9tYWluczsKICAgICBkb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobmV3U2l6
ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MDgsMTEgKzE3MDgsNiBAQAog
CQlDNUZBMUVEMzE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RkExRUQxMThFMTA2
MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlSb3V0ZVBpY2tlci5oICovOyB9OwogCQlDNkE0Q0EwQjIy
NTI4OTk4MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkE0Q0EwOTIyNTI4OTk4MDAxNjkyODkgLyogV0tC
dW5kbGVQYWdlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzZBNENBMEMyMjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2QTRDQTBBMjI1
Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMubW0gKi87IH07Ci0JCUM5OEM0OEE2MUI2
RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5OEM0OEE0MUI2RkQ0QzMwMDE0
NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLzsgfTsKLQkJQzk4QzQ4QUEx
QjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOThDNDhBODFCNkZENUI1MDAx
NDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDOUMxODMzQzFCNzQwMjZEMDA3MDM2QTcg
LyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUMxODMzODFCNzNGRDZBMDA3MDM2QTcgLyog
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmggKi87IH07Ci0JCUM5Q0Q0Mzk4MUI0
QjAwMUQwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlDRDQzOTQxQjRCMDAwRTAwMjM5RTMz
IC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi87IH07Ci0JCUM5Q0Q0MzlEMUI0QjAyNEYw
MDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tN
ZWRpYVNlc3Npb25NZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNBMDUzOTc5MjNFRTMyNDQwMEE1NTNEQyAvKiBDb250ZW50QXNTdHJp
bmdJbmNsdWRlc0NoaWxkRnJhbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDQTA1Mzk3ODIzRUUzMjQ0MDBBNTUzREMgLyogQ29udGVudEFzU3RyaW5n
SW5jbHVkZXNDaGlsZEZyYW1lcy5oICovOyB9OwogCQlDRDAwM0E1MzE5RDQ5QjVEMDA1QUJDRTAg
LyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwMDNBNTExOUQ0OUI1RDAwNUFCQ0UwIC8qIFdlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJQ0QwQzY4MzEyMDFGRDEwMTAwQTU5NDA5IC8q
IFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBDNjgyRjIwMUZEMTAxMDBBNTk0MDkgLyogV0tGdWxsU2Ny
ZWVuVmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKQEAgLTUwNjMsMTYgKzUwNTgsNiBAQAogCQlDNUZB
MUVEMjE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0FpclBsYXlSb3V0ZVBpY2tlci5tbTsg
cGF0aCA9IGlvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzZBNENBMDkyMjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1h
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzZBNENBMEEyMjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQnVuZGxlUGFnZU1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzk4QzQ4QTMxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDOThDNDhBNDFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOThDNDhBNzFC
NkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOThDNDhBODFCNkZENUI1MDAxNDUx
MDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzlDMTgzMzcxQjczRkQ2QTAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDOUMxODMzODFCNzNGRDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDOUNENDM5MzFCNEIwMDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0
YWRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVkaWFT
ZXNzaW9uTWV0YWRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUNENDM5
NDFCNEIwMDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlDRDQzOTkxQjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVk
aWFTZXNzaW9uTWV0YWRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUM5Q0Q0MzlBMUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EwNTM5NzgyM0VFMzI0NDAwQTU1M0RD
IC8qIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDAwM0E1MDE5RDQ5QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDsgcGF0aCA9IE1lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMDAzQTUxMTlE
NDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDsgcGF0aCA9
IE1lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjE0Myw4ICs2MTI4LDYgQEAKIAkJCQlDMDMzN0REMjEyN0EyQTBFMDA4
RkY0RjQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgKi8sCiAJCQkJQkM5QkE1MDIxNjk3QzQ1MzAw
RTQ0NjE2IC8qIFdlYktpdDJJbml0aWFsaXplLmNwcCAqLywKIAkJCQlCQzlCQTUwMzE2OTdDNDUz
MDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxpemUuaCAqLywKLQkJCQlDOUNENDM5MzFCNEIwMDBF
MDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwICovLAotCQkJCUM5Q0Q0Mzk0
MUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAogCQkJCTkw
NTYyMEU4MTJCQzI0OEIwMDA3OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLmNwcCAqLywKIAkJCQk5
MDU2MjBFOTEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5oICovLAogCQkJCUMw
MzM3REFGMTI3QTI4RDAwMDhGRjRGNCAvKiBXZWJNb3VzZUV2ZW50LmNwcCAqLywKQEAgLTkwNzAs
MTAgKzkwNTMsNiBAQAogCQkJCUJDMUJFMUYxMTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2Nh
dGlvblByb3ZpZGVyLmNwcCAqLywKIAkJCQlCQzFCRTFGMDEyRDU0REJEMDAwNEEyMjggLyogV2Vi
R2VvbG9jYXRpb25Qcm92aWRlci5oICovLAogCQkJCTUxQzhFMTlCMUYyMTYxNzIwMEJGNzMxQiAv
KiBXZWJJY29uRGF0YWJhc2UuaCAqLywKLQkJCQlDOThDNDhBMzFCNkZENEMzMDAxNDUxMDMgLyog
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCAqLywKLQkJCQlDOThDNDhBNDFCNkZENEMz
MDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi8sCi0JCQkJQzlDMTgz
MzcxQjczRkQ2QTAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5j
cHAgKi8sCi0JCQkJQzlDMTgzMzgxQjczRkQ2QTAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckNsaWVudC5oICovLAogCQkJCTJEM0VGNDQwMTkxNzY0NjMwMDAzNDE4NCAvKiBX
ZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovLAogCQkJCTJEM0VGNDQxMTkxNzY0NjMwMDAz
NDE4NCAvKiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCAqLywKIAkJCQk3Q0NDQzhGODFBNUY1
MEZEMDA4RkIwREEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmNwcCAqLywKQEAgLTkyNzYsMTAgKzky
NTUsNiBAQAogCQkJCTUxQTlFMTA4MTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXIuY3BwICovLAogCQkJCTUxQTlFMTA5MTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaCAqLywKIAkJCQkyRDc5MEE5RTFBRDcxNjQ5MDBBQjkwQjMgLyog
V0tMYXlvdXRNb2RlLmggKi8sCi0JCQkJQzk4QzQ4QTcxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCAqLywKLQkJCQlDOThDNDhBODFCNkZENUI1MDAxNDUx
MDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLywKLQkJCQlDOUNENDM5OTFCNEIw
MjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgKi8sCi0JCQkJQzlDRDQz
OUExQjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLywKIAkJCQk1
Q0FCREM4NDIyQzQwRkNDMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuY3BwICovLAogCQkJ
CTVDQUJEQzg1MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5oICovLAogCQkJ
CUMxMUUxNjkzMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmNwcCAqLywKQEAgLTEx
MzQxLDkgKzExMzE2LDYgQEAKIAkJCQlCQzlCQTUwNTE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0
MkluaXRpYWxpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjI4MEM3MTkxOTk1MEMwMDZBRDlG
OSAvKiBXZWJLaXRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDAwM0E1MzE5RDQ5QjVE
MDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQzk4QzQ4QTYxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlDMTgzM0MxQjc0MDI2RDAwNzAzNkE3IC8qIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlDRDQz
OTgxQjRCMDAxRDAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5QjVCRUMyNjI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzRUY0NDMxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9y
eVByZXNzdXJlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTA5ODU0RUQxMkJDNEUxODAw
MEFEMDgwIC8qIFdlYk1lbW9yeVNhbXBsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2NDIsOCAr
MTE2MTQsNiBAQAogCQkJCTUxQTlFMTBCMTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzkwQTlGMUFENzE2NDkwMEFCOTBC
MyAvKiBXS0xheW91dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRTkxMjE0MjI5M0MyODAw
MDVCRUM3OCAvKiBXS01haW4uaCBpbiBIZWFkZXJzICovLAotCQkJCUM5OEM0OEFBMUI2RkQ1QjUw
MDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQzlDRDQzOUQxQjRCMDI0RjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVt
SWRlbnRpZmllcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FCREM4NjIyQzQwRkRF
MDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUUx
Njk0MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3MCwyNSArMTE3MCw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYW5k
bGVBdXRvcGxheUV2ZW4KICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpI
YW5kbGVBdXRvcGxheUV2ZW50KGV2ZW50LCBmbGFncykpOwogfQogCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0KLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYXNNZWRpYVNlc3Npb25XaXRoQWN0
aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sIHN0YXRlKQotewotICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVs
ZW1lbnRzRGlkQ2hhbmdlKHN0YXRlKSk7Ci19Ci0KLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjptZWRp
YVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0
YWRhdGEpCi17Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UobWV0YWRhdGEpKTsKLX0KLQotdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90IGVsZW1l
bnRJRCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2Vk
Q29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZShlbGVtZW50SUQpKTsKLX0KLQotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OndyYXBDcnlw
dG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgd3JhcHBl
ZEtleSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI2NzQ2NykKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDEyICszMzYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzLCB1aW50NjRfdCkgZmluYWw7CiAgICAgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdl
YkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50Rmxh
Z3M+KSBmaW5hbDsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZvaWQgaGFzTWVk
aWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCkgZmluYWw7Ci0g
ICAgdm9pZCBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpNZWRp
YVNlc3Npb25NZXRhZGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZm9jdXNlZENvbnRlbnRNZWRpYUVs
ZW1lbnREaWRDaGFuZ2UodWludDY0X3QpIGZpbmFsOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VC
X0NSWVBUTykKICAgICBib29sIHdyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwg
VmVjdG9yPHVpbnQ4X3Q+JikgY29uc3QgZmluYWw7CiAgICAgYm9vbCB1bndyYXBDcnlwdG9LZXko
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3QgZmluYWw7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOTgsMTggKzUxOTgsNiBAQCB2b2lkIFdlYlBhZ2U6
OnN0b3BNZWRpYUNhcHR1cmUoKQogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLXZvaWQgV2ViUGFnZTo6aGFuZGxlTWVkaWFFdmVudCh1aW50MzJfdCBldmVudFR5cGUpCi17
Ci0gICAgbV9wYWdlLT5oYW5kbGVNZWRpYUV2ZW50KHN0YXRpY19jYXN0PE1lZGlhRXZlbnRUeXBl
PihldmVudFR5cGUpKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpzZXRWb2x1bWVPZk1lZGlhRWxlbWVu
dChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCi17Ci0gICAgbV9wYWdlLT5zZXRW
b2x1bWVPZk1lZGlhRWxlbWVudCh2b2x1bWUsIGVsZW1lbnRJRCk7Ci19Ci0jZW5kaWYKLQogdm9p
ZCBXZWJQYWdlOjpzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3RhcnRNZWRp
YSkKIHsKICAgICBpZiAobWF5U3RhcnRNZWRpYSA9PSBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5k
b3cpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShy
ZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2NywxMSArOTY3LDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sKTsKICAgICB2b2lkIHN0b3BNZWRp
YUNhcHR1cmUoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZvaWQgaGFuZGxl
TWVkaWFFdmVudCh1aW50MzJfdCAvKiBXZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSAqLyk7Ci0gICAg
dm9pZCBzZXRWb2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUsIHVpbnQ2NF90KTsKLSNlbmRpZgot
CiAgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCk7CiAKICAgICBi
b29sIG1haW5GcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcigpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsMTEgKzQxMSw2IEBA
IEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICAgICBTZXRNYXlTdGFy
dE1lZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3RhcnRNZWRpYSkKICAgICBTdG9wTWVkaWFDYXB0
dXJlKCkKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIEhhbmRsZU1lZGlhRXZlbnQo
dWludDMyX3QgZXZlbnRUeXBlKQotICAgIFNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2
b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKLSNlbmRpZgotCiAgICAgU2V0Q2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKQog
ICAgIFNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwpCiAKSW5kZXg6IFNvdXJjZS9jbWFr
ZS9PcHRpb25zRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRX
LmNtYWtlCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFr
ZQkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9XRUJfQVVESU8gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSBQUklWQVRFIE9GRikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DQVBUVVJFIFBSSVZBVEUgT0ZG
KQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NFU1NJT04g
UFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVE
SUFfU09VUkNFIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU1RSRUFNIFBSSVZBVEUgT0ZGKQpJbmRleDogU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL2NtYWtl
L1dlYktpdEZlYXR1cmVzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDYgQEAg
bWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfTUFUSE1MICJUb2dnbGUgTWF0aE1MIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX0NBUFRVUkUgIlRvZ2dsZSBNZWRpYSBDYXB0dXJl
IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9N
RURJQV9DT05UUk9MU19TQ1JJUFQgIlRvZ2dsZSBkZWZpbml0aW9uIG9mIG1lZGlhIGNvbnRyb2xz
IGluIEphdmFzY3JpcHQiIFBSSVZBVEUgT04pCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX01FRElBX1NFU1NJT04gIlRvZ2dsZSBNZWRpYSBTZXNzaW9uIHN1cHBvcnQiIFBSSVZBVEUg
T0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9TT1VSQ0UgIlRvZ2ds
ZSBNZWRpYSBTb3VyY2Ugc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgIlRvZ2dsZSBNZWRpYSBTdGF0aXN0aWNzIHN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJ
QV9TVFJFQU0gIlRvZ2dsZSBNZWRpYSBTdHJlYW0gc3VwcG9ydCIgUFJJVkFURSBPRkYpCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjc0NTIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wOS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIGNvZGUgYmVoaW5kIEVOQUJMRShNRURJQV9TRVNTSU9OKSwgbm8gcG9ydHMgZW5h
YmxlIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTY4MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKyAgICAgICAgUmVtb3ZlIHN1cHBv
cnQgZm9yIGJ1aWxkaW5nIHdpdGggTUVESUFfU0VTU0lPTiBlbmFibGVkLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgVXBkYXRlIG5hbWVzIHRvIG5l
dyAndW51c2VkJyBuYW1pbmcuCisKIDIwMjAtMDktMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIFRMU1ZlcnNpb24gQVBJIHRlc3Rz
IG1vcmUgcm9idXN0LgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bQkocmV2aXNpb24gMjY3NDUwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVM
aXN0LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDYgQEAgbXkgKAogICAgICRtYXRo
bWxTdXBwb3J0LAogICAgICRtZWRpYUNhcHR1cmVTdXBwb3J0LAogICAgICRtZWRpYUNvbnRyb2xz
U2NyaXB0U3VwcG9ydCwKLSAgICAkbWVkaWFTZXNzaW9uU3VwcG9ydCwKICAgICAkbWVkaWFTb3Vy
Y2VTdXBwb3J0LAogICAgICRtZWRpYVN0YXRpc3RpY3NTdXBwb3J0LAogICAgICRtZWRpYVN0cmVh
bVN1cHBvcnQsCkBAIC0zOTksOSArMzk4LDYgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0
aW9uID0+ICJtZWRpYS1jb250cm9scy1zY3JpcHQiLCBkZXNjID0+ICJUb2dnbGUgZGVmaW5pdGlv
biBvZiBtZWRpYSBjb250cm9scyBpbiBKYXZhc2NyaXB0IiwKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX01FRElBX0NPTlRST0xTX1NDUklQVCIsIHZhbHVlID0+IFwkbWVkaWFDb250cm9sc1Njcmlw
dFN1cHBvcnQgfSwKIAotICAgIHsgb3B0aW9uID0+ICJtZWRpYS1zZXNzaW9uIiwgZGVzYyA9PiAi
VG9nZ2xlIE1lZGlhIFNlc3Npb24gc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9N
RURJQV9TRVNTSU9OIiwgdmFsdWUgPT4gXCRtZWRpYVNlc3Npb25TdXBwb3J0IH0sCi0KICAgICB7
IG9wdGlvbiA9PiAibWVkaWEtc291cmNlIiwgZGVzYyA9PiAiVG9nZ2xlIE1lZGlhIFNvdXJjZSBz
dXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX01FRElBX1NPVVJDRSIsIHZhbHVlID0+
IFwkbWVkaWFTb3VyY2VTdXBwb3J0IH0sCiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjc0NTApCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw3
IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWcKICAgICAgICAgMCwg
Ly8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJt
CiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKLSAgICAgICAgMCwgLy8gbWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UKKyAgICAgICAgMCwgLy8gdW51c2VkNQogICAgICAgICBj
cmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydCwKICAgICAgICAgMCwg
Ly8gcnVuSmF2YVNjcmlwdENvbmZpcm0KQEAgLTcxNSw3ICs3MTUsNyBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydAogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQogICAgICAgICAwLCAvLyBy
dW5KYXZhU2NyaXB0UHJvbXB0Ci0gICAgICAgIDAsIC8vIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlk
Q2hhbmdlCisgICAgICAgIDAsIC8vIHVudXNlZDUKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAog
ICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQsCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRD
b25maXJtCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wOS0yMiAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGNvZGUgYmVoaW5kIEVOQUJM
RShNRURJQV9TRVNTSU9OKSwgbm8gcG9ydHMgZW5hYmxlIGl0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYWx3YXlzIHNraXBwZWQgTWVkaWEg
U2Vzc2lvbiB0ZXN0cy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICog
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBtZWRpYS9zZXNzaW9uOiBS
ZW1vdmVkLgorCiAyMDIwLTA5LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IEJpcXVhZEZpbHRlck5vZGUncyBsb3dwYXNzICYgaGlnaHBhc3MgZmlsdGVy
cwpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE2LDkgKzE5MTYsNiBAQCBm
YXN0L2ltYWdlcy9hbmltYXRlZC13ZWJwLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE0
NjE4MiBlZGl0aW5nL3NlbGVjdGlvbi9sZWFrLWRvY3VtZW50LXdpdGgtc2VsZWN0aW9uLWluc2lk
ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotIyBNZWRpYSBTZXNzaW9ucyBpcyBub3QgeWV0IGVu
YWJsZWQgYnkgZGVmYXVsdDogRU5BQkxFKE1FRElBX1NFU1NJT04pCi1tZWRpYS9zZXNzaW9uIFsg
U2tpcCBdCi0KICMgRXhwZXJpbWVudGFsIEgyNjUgc3VwcG9ydC4KIHdlYnJ0Yy9oMjY1Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCkluZGV4OiBMYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rl
c3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw4ICsyNTgsNiBAQCBtZWRpYS9w
cmVzZW50YXRpb25tb2RlY2hhbmdlZC1maXJlZC1vbmNlCiBtZWRpYS9wcm9ncmVzcy1ldmVudHMt
Z2VuZXJhdGVkLWNvcnJlY3RseS5odG1sIFsgU2tpcCBdCiBtZWRpYS9yZW1vdGVwbGF5YmFjay1w
cm9tcHQuaHRtbCBbIFNraXAgXQogCi1tZWRpYS9zZXNzaW9uIFsgU2tpcCBdCi0KIG1lZGlhL3Ry
YWNrL2F1ZGlvL2F1ZGlvLXRyYWNrLW1rdi12b3JiaXMtYWRkdHJhY2suaHRtbCBbIFNraXAgXQog
bWVkaWEvdHJhY2svYXVkaW8vYXVkaW8tdHJhY2stbWt2LXZvcmJpcy1lbmFibGVkLmh0bWwgWyBT
a2lwIF0KIG1lZGlhL3RyYWNrL2F1ZGlvL2F1ZGlvLXRyYWNrLW1rdi12b3JiaXMtbGFuZ3VhZ2Uu
aHRtbCBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWlu
dGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3
NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMt
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTIgKzAsMCBAQAotJ0NvbnRlbnQnIHN0
YXJ0IG9mIGludGVycnVwdGlvbiBldmVudHMgc2hvdWxkIGluZGVmaW5pdGVseSBwYXVzZSAnQ29u
dGVudCcgbWVkaWEgc2Vzc2lvbnMuCi0KLQotV2FpdGluZyBmb3IgQ29udGVudCBtZWRpYSB0byBi
ZWdpbiBwbGF5aW5nLgotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEIChpbnRlcm5hbHMu
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotU2VuZGlu
ZyAnQ29udGVudCcgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4KLVJVTihpbnRl
cm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oImNv
bnRlbnQiKSkKLVRoZSBtZWRpYSBlbGVtZW50IHdhcyBwYXVzZWQuCi1FWFBFQ1RFRCAoaW50ZXJu
YWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi1FTkQg
T0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJy
dXB0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29u
dGVudC1pbnRlcnJ1cHRpb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIu
Li9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotICAgIAotICAgICAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAg
ICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0KLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiV2FpdGluZyBmb3IgQ29udGVudCBtZWRpYSB0byBiZWdpbiBwbGF5
aW5nLiIpCi0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIu
Li9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lv
bjsKLSAgICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9IGJlZ2FuUGxheWluZzsKLSAgICAgICAg
ICAgIHZpZGVvLm9uY2FucGxheXRocm91Z2ggPSBjYW5wbGF5dGhyb3VnaDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkgCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxh
eWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBi
ZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdmlkZW8ub25wYXVzZSA9IHBhdXNlZDsKLQot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAi
YWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJTZW5kaW5nICdDb250ZW50JyBzdGFydC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLiIp
OwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFydE9m
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJjb250ZW50IiknKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHBhdXNlZChldmVudCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJUaGUgbWVkaWEgZWxlbWVudCB3YXMgcGF1c2VkLiIpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUo
c2Vzc2lvbiknLCAiaWRsZSIpOwotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0K
LSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8
cD4nQ29udGVudCcgc3RhcnQgb2YgaW50ZXJydXB0aW9uIGV2ZW50cyBzaG91bGQgaW5kZWZpbml0
ZWx5IHBhdXNlICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2
aWRlbyIgY29udHJvbHM+IDwvdmlkZW8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9j
dXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpA
QCAtMSwyMiArMCwwIEBACi1QbGF5aW5nIGEgbWVkaWEgZWxlbWVudCBiZWxvbmdpbmcgdG8gYSBD
b250ZW50IG1lZGlhIHNlc3Npb24gc2hvdWxkIHBhdXNlIG90aGVyIHBsYXlpbmcgQ29udGVudCBt
ZWRpYSBlbGVtZW50cy4KLQotCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRl
bzEucGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBsYXlpbmcgZmlyc3QgdmlkZW8uCi1FVkVO
VChwbGF5aW5nKQotRmlyc3QgdmlkZW8gYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlbzEu
cGF1c2VkID09ICdmYWxzZScpIE9LCi0KLVNldHRpbmcgdXAgc2Vjb25kIHZpZGVvLgotRVZFTlQo
Y2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8xLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwot
RVhQRUNURUQgKHZpZGVvMi5wYXVzZWQgPT0gJ3RydWUnKSBPSwotQmVnaW4gcGxheWluZyBzZWNv
bmQgdmlkZW8uCi1FVkVOVChwbGF5aW5nKQotU2Vjb25kIHZpZGVvIGJlZ2FuIHBsYXlpbmcuCi1F
WFBFQ1RFRCAodmlkZW8yLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVZFTlQocGF1c2UpCi1FWFBF
Q1RFRCAodmlkZW8xLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1zZXNzaW9uLWZvY3Vz
Lmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29u
dGVudC1zZXNzaW9uLWZvY3VzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVv
LXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZh
ciBzZXNzaW9uLCB2aWRlbzEsIHZpZGVvMjsKLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkg
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250
ZW50Iik7Ci0KLSAgICAgICAgICAgIHZpZGVvMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2
aWRlbzEiKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdp
blBsYXlpbmdWaWRlbzEsIGZhbHNlLCB0cnVlLCB2aWRlbzEpOwotICAgICAgICAgICAgdmlkZW8x
LnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAg
ICAgICAgICAgIHZpZGVvMS5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZ1ZpZGVvMSwgZmFsc2UsIHRydWUsIHZpZGVvMSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmdWaWRlbzEoZXZlbnQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8xLnBhdXNlZCcsIHRy
dWUpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBsYXlpbmcgZmlyc3Qgdmlk
ZW8uIik7Ci0gICAgICAgICAgICB2aWRlbzEucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gYmVnYW5QbGF5aW5nVmlkZW8xKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIkZpcnN0IHZpZGVvIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMS5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNl
dHRpbmcgdXAgc2Vjb25kIHZpZGVvLiIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2aWRl
bzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8yIik7Ci0gICAgICAgICAgICB3YWl0
Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nVmlkZW8yLCBmYWxzZSwgdHJ1
ZSwgdmlkZW8yKTsKLSAgICAgICAgICAgIHZpZGVvMi5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRl
byIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlbzIuc2Vzc2lvbiA9
IHNlc3Npb247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlp
bmdWaWRlbzIsIGZhbHNlLCB0cnVlLCB2aWRlbzIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmdWaWRlbzIoZXZlbnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8xLnBhdXNlZCcsIGZhbHNlKTsKLSAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgndmlkZW8yLnBhdXNlZCcsIHRydWUpOwotICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdwYXVzZScsIHBhdXNlZFZpZGVvMSwgZmFsc2UsIHRydWUsIHZpZGVvMSk7Ci0KLSAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiQmVnaW4gcGxheWluZyBzZWNvbmQgdmlkZW8uIik7Ci0g
ICAgICAgICAgICB2aWRlbzIucGxheSgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBm
dW5jdGlvbiBwYXVzZWRWaWRlbzEoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgndmlkZW8xLnBhdXNlZCcsIHRydWUpOwotICAgICAgICAgICAgZW5kVGVzdCgpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nVmlkZW8yKGV2ZW50KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlY29uZCB2aWRlbyBiZWdhbiBw
bGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIucGF1c2VkJywgZmFs
c2UpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Ci0gICAgPHA+UGxheWluZyBhIG1lZGlhIGVsZW1lbnQgYmVsb25naW5nIHRvIGEg
Q29udGVudCBtZWRpYSBzZXNzaW9uIHNob3VsZCBwYXVzZSBvdGhlciBwbGF5aW5nIENvbnRlbnQg
bWVkaWEgZWxlbWVudHMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8xIiAvPgotICAgIDx2aWRl
byBpZD0idmlkZW8yIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udHJvbHMtZXhpc3RlbmNlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250cm9s
cy1leGlzdGVuY2UtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTIgKzAsMCBAQAot
T25seSBDb250ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBoYXZlIG1lZGlhIHJlbW90ZSBjb250
cm9scyBhZnRlciBjcmVhdGlvbi4KLQotUlVOKHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCdj
b250ZW50JykpCi1FWFBFQ1RFRCAoc2Vzc2lvbi5jb250cm9scyAhPSAnbnVsbCcpIE9LCi1SVU4o
c2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudCcpKQotRVhQRUNURUQgKHNlc3Np
b24uY29udHJvbHMgPT0gJ251bGwnKSBPSwotUlVOKHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9u
KCd0cmFuc2llbnQtc29sbycpKQotRVhQRUNURUQgKHNlc3Npb24uY29udHJvbHMgPT0gJ251bGwn
KSBPSwotUlVOKHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCdhbWJpZW50JykpCi1FWFBFQ1RF
RCAoc2Vzc2lvbi5jb250cm9scyA9PSAnbnVsbCcpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0ZW5jZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udHJvbHMtZXhpc3RlbmNlLmh0bWwJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udHJvbHMt
ZXhpc3RlbmNlLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZh
ciBzZXNzaW9uOwotICAgIAotICAgICAgICBmdW5jdGlvbiBkb1Rlc3QgKCkgCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0gICAg
ICAgICAgICBydW4oInNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCdjb250ZW50JykiKTsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgic2Vzc2lvbi5jb250cm9scyIsIG51bGwsICchPScpOwot
Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigidHJhbnNpZW50Iik7Ci0g
ICAgICAgICAgICBydW4oInNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQnKSIp
OwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJzZXNzaW9uLmNvbnRyb2xzIiwgbnVsbCk7Ci0K
LSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJ0cmFuc2llbnQtc29sbyIp
OwotICAgICAgICAgICAgcnVuKCJzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigndHJhbnNpZW50
LXNvbG8nKSIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJzZXNzaW9uLmNvbnRyb2xzIiwg
bnVsbCk7Ci0KLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJhbWJpZW50
Iik7Ci0gICAgICAgICAgICBydW4oInNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCdhbWJpZW50
JykiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgic2Vzc2lvbi5jb250cm9scyIsIG51bGwp
OwotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgotICAgIDxwPk9ubHkgQ29udGVudCBNZWRp
YSBTZXNzaW9ucyBzaG91bGQgaGF2ZSBtZWRpYSByZW1vdGUgY29udHJvbHMgYWZ0ZXIgY3JlYXRp
b24uPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9kZWZhdWx0LXNlc3Npb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3Nlc3Npb24vZGVmYXVsdC1zZXNzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3
NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9kZWZhdWx0LXNlc3Npb24tZXhwZWN0
ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsNiArMCwwIEBACi1OZXcgbWVkaWEgZWxlbWVudHMg
YXJlIGFzc2lnbmVkIHRvIHRoZSBEZWZhdWx0IG1lZGlhIHNlc3Npb24sIHdoaWNoIGlzIG5vdCBl
eHBvc2VkIHRocm91Z2ggdGhlIHNlc3Npb24gYXR0cmlidXRlLgotCi1SVU4oYXVkaW9FbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKSkKLUVYUEVDVEVEIChhdWRpb0VsZW1l
bnQuc2Vzc2lvbiA9PSAnbnVsbCcpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVmYXVsdC1zZXNzaW9uLmh0bWwJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVmYXVsdC1zZXNzaW9uLmh0bWwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci0gICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIGZ1bmN0aW9uIGRvVGVzdCAoKSAK
LSAgICAgICAgewotICAgICAgICAgICAgdmFyIGF1ZGlvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImF1ZGlvIik7Ci0gICAgICAgICAgICBydW4oImF1ZGlvRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJykiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
YXVkaW9FbGVtZW50LnNlc3Npb24iLCBudWxsKTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwot
ICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImRvVGVzdCgp
Ij4KLSAgICA8cD5OZXcgbWVkaWEgZWxlbWVudHMgYXJlIGFzc2lnbmVkIHRvIHRoZSBEZWZhdWx0
IG1lZGlhIHNlc3Npb24sIHdoaWNoIGlzIG5vdCBleHBvc2VkIHRocm91Z2ggdGhlIHNlc3Npb24g
YXR0cmlidXRlLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBh
dXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlh
LWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBA
IC0xLDIxICswLDAgQEAKLSdDb250ZW50JyBzZXNzaW9ucyB0aGF0IGFyZSBhY3RpdmUgc2hvdWxk
IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBtZWRpYSBjb250cm9sIGV2ZW50cy4KLQotCi1FVkVOVChj
YW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0
YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLUlkbGUgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5v
dCByZXNwb25kIHRvIFBsYXkvUGF1c2UgZXZlbnRzLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAndHJ1ZScpIE9LCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJu
YWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVv
LnBhdXNlZCA9PSAndHJ1ZScpIE9LCi0KLVBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5nKQot
TWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykg
T0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24p
ID09ICdhY3RpdmUnKSBPSwotU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVOKGlu
dGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKSkKLUVYUEVDVEVEICh2
aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Np
b25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBh
dXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMt
aW4tY29udGVudC1zZXNzaW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjEgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRl
by10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2
YXIgc2Vzc2lvbjsKLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0KLSAgICAg
ICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2Fu
cGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmlu
ZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAg
dmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlp
bmcnLCBiZWdhblBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50
ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpZGxlIik7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiSWRsZSBNZWRpYSBTZXNzaW9ucyBz
aG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMuIik7Ci0KLSAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJTZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAg
cnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgY29u
c29sZVdyaXRlKCJQbGF5aW5nIG1lZGlhLiIpOwotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0g
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZl
Iik7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUGxheS9QYXVzZSBt
ZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFD
b250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVu
ZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgotICAgIDxwPidDb250ZW50JyBzZXNzaW9ucyB0aGF0IGFyZSBhY3RpdmUg
c2hvdWxkIHJlc3BvbmQgdG8gUGxheS9QYXVzZSBtZWRpYSBjb250cm9sIGV2ZW50cy48L3A+Ci0g
ICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNz
aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZhdWx0LXNlc3Npb25zLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBh
dXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZhdWx0LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCkBAIC0xLDE4ICswLDAgQEAKLSdEZWZhdWx0JyBtZWRpYSBzZXNzaW9ucyBzaG91bGQg
cmVzcG9uZCB0byBwbGF5L3BhdXNlIG1lZGlhIGV2ZW50cy4KLQotCi1FVkVOVChjYW5wbGF5dGhy
b3VnaCkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotU2VuZGluZyBQbGF5
L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQo
InBsYXktcGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotCi1Q
bGF5aW5nIG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBF
Q1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVk
aWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVz
ZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1FTkQgT0YgVEVTVAot
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRz
LWluLWRlZmF1bHQtc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWRlZmF1bHQtc2Vzc2lvbnMuaHRt
bAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBh
dXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZhdWx0LXNlc3Npb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIu
Li9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAg
ICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5
dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVk
aWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB3YWl0
Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0KLSAg
ICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJTZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAg
ICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIiknKTsK
LSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJQbGF5aW5nIG1lZGlhLiIpOwotICAgICAgICAgICAgdmlkZW8ucGxheSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7
Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAg
ICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwot
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidEZWZhdWx0
JyBtZWRpYSBzZXNzaW9ucyBzaG91bGQgcmVzcG9uZCB0byBwbGF5L3BhdXNlIG1lZGlhIGV2ZW50
cy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tbm9u
LWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vz
c2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLW5vbi1jb250ZW50LXNlc3Npb25z
LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDQxICswLDAgQEAKLSdUcmFuc2llbnQn
LCAnVHJhbnNpZW50IFNvbG8nLCBhbmQgJ0FtYmllbnQnIHNlc3Npb25zIHNob3VsZCBub3QgcmVz
cG9uZCB0byBQbGF5L1BhdXNlIG1lZGlhIGNvbnRyb2wgZXZlbnRzLgotCi0KLS0tLQotVGVzdGlu
ZyAidHJhbnNpZW50IiBzZXNzaW9uIGtpbmQKLS0tLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1F
VkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVz
ZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVu
dFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotTm9uLUNvbnRlbnQgTWVkaWEgU2Vzc2lv
bnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2UgZXZlbnRzLgotU2VuZGluZyBQbGF5
L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQo
InBsYXktcGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLS0t
LQotVGVzdGluZyAidHJhbnNpZW50LXNvbG8iIHNlc3Npb24ga2luZAotLS0tCi1FVkVOVChjYW5w
bGF5dGhyb3VnaCkKLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNU
RUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1Ob24tQ29udGVu
dCBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMu
Ci1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRp
YUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAn
ZmFsc2UnKSBPSwotLS0tCi1UZXN0aW5nICJhbWJpZW50IiBzZXNzaW9uIGtpbmQKLS0tLQotRVZF
TlQoY2FucGxheXRocm91Z2gpCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4K
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5h
bHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotTm9u
LUNvbnRlbnQgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2Ug
ZXZlbnRzLgotU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5z
ZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVz
ZWQgPT0gJ2ZhbHNlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2Ut
bWVkaWEtZXZlbnRzLWluLW5vbi1jb250ZW50LXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMt
aW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAg
ICAgdmFyIHNlc3Npb247Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuQWxsVGVzdHMoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9y
RXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHJ1blRl
c3QoInRyYW5zaWVudCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdChz
ZXNzaW9uS2luZCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnLS0tJyk7
Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Rlc3RpbmcgIicgKyBzZXNzaW9uS2luZCArICci
IHNlc3Npb24ga2luZCcpOwotICAgICAgICAgICAgY29uc29sZVdyaXRlKCctLS0nKTsKLQotICAg
ICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oc2Vzc2lvbktpbmQpOwotCi0gICAg
ICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2Nv
dW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAg
ICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZp
ZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkK
LSAgICAgICAgewotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIk5vbi1Db250ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3Qg
cmVzcG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4iKTsKLSAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAg
ICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwot
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmlkZW8uc2Vzc2lvbi5r
aW5kID09ICJ0cmFuc2llbnQiKQotICAgICAgICAgICAgICAgIHJ1blRlc3QoInRyYW5zaWVudC1z
b2xvIik7Ci0gICAgICAgICAgICBlbHNlIGlmICh2aWRlby5zZXNzaW9uLmtpbmQgPT0gInRyYW5z
aWVudC1zb2xvIikKLSAgICAgICAgICAgICAgICBydW5UZXN0KCJhbWJpZW50Iik7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh2aWRlby5zZXNzaW9uLmtpbmQgPT0gImFtYmllbnQiKQotICAgICAgICAg
ICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmYWls
VGVzdCgiVW5leHBlY3RlZCBzZXNzaW9uIGtpbmQiKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5BbGxUZXN0cygpIj4KLSAgICA8cD4nVHJhbnNp
ZW50JywgJ1RyYW5zaWVudCBTb2xvJywgYW5kICdBbWJpZW50JyBzZXNzaW9ucyBzaG91bGQgbm90
IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBtZWRpYSBjb250cm9sIGV2ZW50cy48L3A+Ci0gICAgPHZp
ZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3JlbGVhc2luZy1zZXNzaW9ucy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcmVsZWFz
aW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE1ICswLDAgQEAK
LVNlc3Npb25zIHRoYXQgYXJlIGV4cGxpY2l0bHkgcmVsZWFzZWQgc2hvdWxkIGhhdmUgdGhlaXIg
bWVkaWEgZWxlbWVudHMgaW5kZWZpbml0ZWx5IHBhdXNlZCBhbmQgZ28gaW50byBhbiBJZGxlIHN0
YXRlLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5aW5nIG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlh
IGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1F
WFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAn
YWN0aXZlJykgT0sKLVJVTihzZXNzaW9uLmRlYWN0aXZhdGUoKSkKLUVYUEVDVEVEICh2aWRlby5w
YXVzZWQgPT0gJ3RydWUnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJy
ZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3JlbGVhc2luZy1zZXNzaW9ucy5odG1sCShy
ZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3JlbGVhc2luZy1z
ZXNzaW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsK
LQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNl
c3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0KLSAgICAgICAgICAgIGZpbmRN
ZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gn
LCBiZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgi
dmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lv
biA9IHNlc3Npb247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBs
YXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiQmVn
aW4gcGxheWluZyBtZWRpYS4iKTsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJu
YWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAg
ICAgICAgICAgcnVuKCdzZXNzaW9uLmRlYWN0aXZhdGUoKScpOwotCi0gICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaWRsZSIpOwotCi0gICAgICAgICAgICBl
bmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KLSAgICA8cD5TZXNzaW9ucyB0aGF0IGFyZSBleHBsaWNpdGx5IHJlbGVh
c2VkIHNob3VsZCBoYXZlIHRoZWlyIG1lZGlhIGVsZW1lbnRzIGluZGVmaW5pdGVseSBwYXVzZWQg
YW5kIGdvIGludG8gYW4gSWRsZSBzdGF0ZS48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4K
LTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lv
bi1jcmVhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
c2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCkBAIC0xLDMwICswLDAgQEAKLU5ldyBtZWRpYSBzZXNzaW9ucyBzaG91
bGQgYmUgaW4gYW4gSWRsZSBzdGF0ZSBhZnRlciBjcmVhdGlvbi4KLQotCi0tLS0KLVRlc3Rpbmcg
Im5ldyBNZWRpYVNlc3Npb24oJ2NvbnRlbnQnKSIKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFT
ZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLS0tLQotCi0tLS0KLVRl
c3RpbmcgIm5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudCcpIgotRVhQRUNURUQgKGludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0K
LS0tLQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbigndHJhbnNpZW50LXNvbG8nKSIKLUVYUEVD
VEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxl
JykgT0sKLS0tLQotCi0tLS0KLVRlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24oJ2FtYmllbnQnKSIK
LUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09
ICdpZGxlJykgT0sKLS0tLQotCi0tLS0KLVRlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24oKSIKLUVY
UEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdp
ZGxlJykgT0sKLS0tLQotCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24uaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwJKG5vbmV4aXN0
ZW50KQpAQCAtMSwzOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIGZ1bmN0aW9uIGRvVGVzdCgpIAotICAgICAg
ICB7Ci0gICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoImNvbnRlbnQiKTsKLSAgICAgICAgICAg
IHRlc3RTZXNzaW9uS2luZCgidHJhbnNpZW50Iik7Ci0gICAgICAgICAgICB0ZXN0U2Vzc2lvbktp
bmQoInRyYW5zaWVudC1zb2xvIik7Ci0gICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoImFtYmll
bnQiKTsKLSAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgpOwotCi0gICAgICAgICAgICBjb25z
b2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gdGVzdFNlc3Npb25LaW5kKHNlc3Npb25LaW5kKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4tLS0iKTsKLQotICAgICAgICAgICAgaWYgKHNlc3Np
b25LaW5kICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVz
dGluZyBcIm5ldyBNZWRpYVNlc3Npb24oJyIgKyBzZXNzaW9uS2luZCArICInKVwiIik7Ci0gICAg
ICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oc2Vzc2lvbktpbmQpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3Rpbmcg
XCJuZXcgTWVkaWFTZXNzaW9uKClcIiIpOwotICAgICAgICAgICAgICAgIHNlc3Npb24gPSBuZXcg
TWVkaWFTZXNzaW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlh
U2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpZGxlIik7Ci0gICAgICAgICAgICBjb25z
b2xlV3JpdGUoIi0tLSIpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eSBvbmxvYWQ9ImRvVGVzdCgpIj4KLSAgICA8cD5OZXcgbWVkaWEgc2Vzc2lvbnMgc2hvdWxkIGJl
IGluIGFuIElkbGUgc3RhdGUgYWZ0ZXIgY3JlYXRpb24uPC9wPgotPC9ib2R5PgotPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5n
LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKQEAgLTEsMTQgKzAsMCBAQAotV2hlbiBzd2l0Y2hpbmcgbWVkaWEgc2Vzc2lvbnMsIG1lZGlh
IGVsZW1lbnRzIGJlbG9uZ2luZyB0byB0aGUgb2xkIHNlc3Npb24gc2hvdWxkIGJlIHBhdXNlZC4K
LQotCi1SVU4oc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKSkKLUVWRU5UKGNh
bnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1CZWdp
biBwbGF5aW5nIG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1F
WFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1SVU4odmlkZW8uc2Vzc2lvbiA9
IG5ldyBNZWRpYVNlc3Npb24oInRyYW5zaWVudCIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAndHJ1ZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL3N3aXRjaGluZy1zZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysr
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNlc3Npb25zLmh0bWwJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotCi0gICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgcnVuKCdzZXNzaW9uID0gbmV3IE1l
ZGlhU2Vzc2lvbigiY29udGVudCIpJyk7Ci0KLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQo
KTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlp
bmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4v
Y29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247
Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmcsIGZhbHNl
LCB0cnVlLCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlp
bmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1
c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiQmVnaW4gcGxheWluZyBt
ZWRpYS4iKTsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
c29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIHJ1bigndmlkZW8uc2Vz
c2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oInRyYW5zaWVudCIpJyk7Ci0KLSAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGVuZFRlc3Qo
KTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgotICAgIDxwPldoZW4gc3dpdGNoaW5nIG1lZGlhIHNlc3Npb25zLCBtZWRpYSBlbGVt
ZW50cyBiZWxvbmdpbmcgdG8gdGhlIG9sZCBzZXNzaW9uIHNob3VsZCBiZSBwYXVzZWQuPC9wPgot
ICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1l
dmVudHMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNiArMCwwIEBACi1QcmV2aW91cy9OZXh0IFRyYWNrIGV2
ZW50cyBzaG91bGQgbm90IGJlIGZpcmVkIGlmIHByZXZpb3VzL25leHRUcmFja0VuYWJsZWQgYXJl
ICdmYWxzZScuCi0KLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8ucGF1
c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5nKQot
TWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykg
T0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24p
ID09ICdhY3RpdmUnKSBPSwotU2VuZGluZyBOZXh0IFRyYWNrIG1lZGlhIGV2ZW50LgotUlVOKGlu
dGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoIm5leHQtdHJhY2siKSkKLVNlbmRpbmcgUHJl
dmlvdXMgVHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xF
dmVudCgicHJldmlvdXMtdHJhY2siKSkKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtZGlzYWJs
ZWQuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90
cmFjay1tZWRpYS1ldmVudHMtZGlzYWJsZWQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDY4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZp
bGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAg
ICAgICAgdmFyIHNlc3Npb24sIGNvbnRyb2xzOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNv
bnRlbnQiKTsKLSAgICAgICAgICAgIGNvbnRyb2xzID0gc2Vzc2lvbi5jb250cm9sczsKLSAgICAg
ICAgICAgIGNvbnRyb2xzLm5leHRUcmFja0VuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGNv
bnRyb2xzLnByZXZpb3VzVHJhY2tFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB3YWl0Rm9y
RXZlbnQoJ25leHR0cmFjaycsIHNraXBUb05leHRUcmFjaywgZmFsc2UsIHRydWUsIGNvbnRyb2xz
KTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncHJldmlvdXN0cmFjaycsIHNraXBUb1ByZXZp
b3VzVHJhY2ssIGZhbHNlLCB0cnVlLCBjb250cm9scyk7Ci0KLSAgICAgICAgICAgIGZpbmRNZWRp
YUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBi
ZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlk
ZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9
IHNlc3Npb247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlp
bmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBi
ZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
dmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiQmVnaW4g
cGxheWluZyBtZWRpYS4iKTsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5h
bHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotCi0gICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIE5leHQgVHJhY2sgbWVkaWEgZXZlbnQu
Iik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50
KCJuZXh0LXRyYWNrIiknKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIlNlbmRpbmcgUHJldmlvdXMgVHJhY2sgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAg
ICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwcmV2aW91cy10
cmFjayIpJyk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgd2luZG93LnNldFRp
bWVvdXQoImVuZFRlc3QoKSIsIDIwMCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIHNraXBUb05leHRUcmFjayhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgZmFp
bFRlc3QoIm5leHQtdHJhY2sgZXZlbnRzIHNob3VsZCBub3QgYmUgZmlyZWQuIik7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBza2lwVG9QcmV2aW91c1RyYWNrKGV2ZW50KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBmYWlsVGVzdCgicHJldmlvdXMtdHJhY2sgZXZlbnRzIHNob3VsZCBu
b3QgYmUgZmlyZWQuIik7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5QcmV2aW91cy9OZXh0IFRyYWNrIGV2ZW50cyBz
aG91bGQgbm90IGJlIGZpcmVkIGlmIHByZXZpb3VzL25leHRUcmFja0VuYWJsZWQgYXJlICdmYWxz
ZScuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50
LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1t
ZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxOSArMCwwIEBACi0nQ29udGVudCcgc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIHNo
b3VsZCByZXNwb25kIHRvIFByZXZpb3VzL05leHQgVHJhY2sgbWVkaWEgY29udHJvbCBldmVudHMu
Ci0KLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi1FWFBFQ1RFRCAodmlkZW8u
cGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5n
KQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNl
JykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pID09ICdhY3RpdmUnKSBPSwotU2VuZGluZyBOZXh0IFRyYWNrIG1lZGlhIGV2ZW50LgotUlVO
KGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoIm5leHQtdHJhY2siKSkKLUVWRU5UKG5l
eHR0cmFjaykKLVNlbmRpbmcgUHJldmlvdXMgVHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJu
YWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicHJldmlvdXMtdHJhY2siKSkKLUVWRU5UKHByZXZp
b3VzdHJhY2spCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29udGVu
dC1zZXNzaW9ucy5odG1sCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uLCBjb250cm9sczsKLQotICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Npb24gPSBu
ZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0gICAgICAgICAgICBjb250cm9scyA9IHNlc3Np
b24uY29udHJvbHM7Ci0gICAgICAgICAgICBjb250cm9scy5uZXh0VHJhY2tFbmFibGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGNvbnRyb2xzLnByZXZpb3VzVHJhY2tFbmFibGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHdhaXRGb3JFdmVudCgnbmV4dHRyYWNrJywgc2tpcFRvTmV4dFRyYWNrLCBmYWxz
ZSwgdHJ1ZSwgY29udHJvbHMpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwcmV2aW91c3Ry
YWNrJywgc2tpcFRvUHJldmlvdXNUcmFjaywgZmFsc2UsIHRydWUsIGNvbnRyb2xzKTsKLQotICAg
ICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdj
YW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBm
aW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAg
ICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxh
eWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdp
bnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImlkbGUiKTsKLQot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIpOwotICAgICAgICAgICAg
dmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5n
KGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2Fu
IHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZh
bHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRp
bmcgTmV4dCBUcmFjayBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVy
bmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoIm5leHQtdHJhY2siKScpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2tpcFRvTmV4dFRyYWNrKGV2ZW50KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUHJldmlvdXMgVHJh
Y2sgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFD
b250cm9sRXZlbnQoInByZXZpb3VzLXRyYWNrIiknKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIHNraXBUb1ByZXZpb3VzVHJhY2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidDb250ZW50JyBzZXNzaW9ucyB0aGF0IGFyZSBhY3Rp
dmUgc2hvdWxkIHJlc3BvbmQgdG8gUHJldmlvdXMvTmV4dCBUcmFjayBtZWRpYSBjb250cm9sIGV2
ZW50cy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LWludGVycnVwdGlvbnMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNp
ZW50LWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4ICswLDAgQEAKLSdUcmFuc2llbnQnIGludGVycnVwdGlv
biBldmVudHMgc2hvdWxkIGR1Y2sgYXVkaW8gZm9yICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy4K
LQotCi1XYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuCi1FVkVOVChj
YW5wbGF5dGhyb3VnaCkKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAoaW50ZXJuYWxz
Lm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLUVYUEVD
VEVEIChpbnRlcm5hbHMubWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ2aWRlbyIpKSA9PSAnMScpIE9LCi1TZW5kaW5nICdUcmFuc2llbnQnIHN0YXJ0LW9m
LWludGVycnVwdGlvbiBub3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Np
b25TdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQiKSkKLUVYUEVDVEVE
IChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpbnRlcnJ1
cHRlZCcpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSkgPT0gJzAuMjUnKSBPSwotU2VuZGluZyAn
VHJhbnNpZW50JyBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4KLVJVTihpbnRlcm5h
bHMuc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2ll
bnQiKSkKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYUVsZW1lbnRQbGF5
ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpID09ICcxJykgT0sKLUVO
RCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LWlu
dGVycnVwdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3RyYW5zaWVudC1pbnRlcnJ1cHRpb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91
dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LWludGVycnVwdGlvbnMuaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0gICAgCi0gICAgICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotICAgICAgICAgICAgc2Vz
c2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJXYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuIikKLSAg
ICAgICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOwot
ICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7
Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250
ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAg
ICAgICAgICAgIHZpZGVvLnZvbHVtZSA9IDE7Ci0gICAgICAgICAgICB2aWRlby5vbnBsYXlpbmcg
PSBiZWdhblBsYXlpbmc7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJl
Z2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZpZGVvIikucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
YmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ik1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmlkZW8iKSknLCAxKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiU2VuZGluZyAnVHJhbnNpZW50JyBzdGFydC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0
aW9uLiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25T
dGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQiKScpOwotCi0gICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRl
KHNlc3Npb24pJywgImludGVycnVwdGVkIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCdpbnRlcm5hbHMubWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ2aWRlbyIpKScsIDAuMjUpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJT
ZW5kaW5nICdUcmFuc2llbnQnIGVuZC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLiIpOwot
ICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVy
cnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50IiknKTsKLQotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScs
ICJhY3RpdmUiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRp
YUVsZW1lbnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpJywg
MSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGVuZFRlc3QoKTsK
LSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgotICAgIDxwPidUcmFuc2llbnQnIGludGVycnVwdGlvbiBldmVudHMgc2hvdWxkIGR1Y2sg
YXVkaW8gZm9yICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2
aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtc29sby1pbnRlcnJ1cHRpb25z
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi90cmFuc2llbnQtc29sby1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE4ICswLDAgQEAKLSdUcmFuc2llbnQgU29sbycgaW50ZXJydXB0aW9uIGV2ZW50
cyBzaG91bGQgcGF1c2UgZWxlbWVudHMgYmVsb25naW5nIHRvICdDb250ZW50JyBtZWRpYSBzZXNz
aW9ucy4KLQotCi1XYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuCi1F
VkVOVChjYW5wbGF5dGhyb3VnaCkKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAoaW50
ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sK
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLVNlbmRpbmcgJ1RyYW5zaWVu
dCBTb2xvJyBzdGFydC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFs
cy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNp
ZW50LXNvbG8iKSkKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRl
KHNlc3Npb24pID09ICdpbnRlcnJ1cHRlZCcpIE9LCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICd0cnVlJykgT0sKLVNlbmRpbmcgJ1RyYW5zaWVudCBTb2xvJyBlbmQtb2YtaW50ZXJydXB0aW9u
IG5vdGlmaWNhdGlvbi4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJy
dXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpKQotRVhQRUNURUQgKGludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1FWFBF
Q1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1zb2xvLWludGVycnVwdGlvbnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1zb2xv
LWludGVycnVwdGlvbnMuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi90cmFuc2llbnQtc29sby1pbnRlcnJ1cHRpb25zLmh0bWwJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotICAgIAotICAgICAgICBmdW5jdGlvbiBy
dW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNz
aW9uKCJjb250ZW50Iik7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiV2FpdGluZyBmb3Ig
Q29udGVudCBtZWRpYSB0byBiZWdpbiBwbGF5aW5nLiIpCi0KLSAgICAgICAgICAgIGZpbmRNZWRp
YUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBi
ZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlk
ZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9
IHNlc3Npb247Ci0gICAgICAgICAgICB2aWRlby5vbnBsYXlpbmcgPSBiZWdhblBsYXlpbmc7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkK
LSAgICAgICAgewotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB2
aWRlby5vbnBsYXlpbmcgPSBudWxsOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zb2xl
V3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVk
aWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCJTZW5kaW5nICdUcmFuc2llbnQgU29sbycgc3RhcnQtb2YtaW50ZXJy
dXB0aW9uIG5vdGlmaWNhdGlvbi4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5z
ZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50
LXNvbG8iKScpOwotCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVk
aWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImludGVycnVwdGVkIik7Ci0gICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyAnVHJhbnNpZW50IFNvbG8nIGVuZC1vZi1pbnRl
cnJ1cHRpb24gbm90aWZpY2F0aW9uLiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxz
LnNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50
LXNvbG8iKScpOwotCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVk
aWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD4nVHJhbnNp
ZW50IFNvbG8nIGludGVycnVwdGlvbiBldmVudHMgc2hvdWxkIHBhdXNlIGVsZW1lbnRzIGJlbG9u
Z2luZyB0byAnQ29udGVudCcgbWVkaWEgc2Vzc2lvbnMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlk
ZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="425180"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409461</attachid>
            <date>2020-09-23 04:56:24 -0700</date>
            <delta_ts>2020-09-30 08:33:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216831-20200923045623.patch</filename>
            <type>text/plain</type>
            <size>293570</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA5
LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29k
ZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNGVFcuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlOgorICAgICAgICBSZW1vdmUgb3B0aW9uIHRvIGJ1aWxkIHdpdGggTUVESUFfU0VTU0lP
Tiwgbm8gb25lIHdhcyBkb2luZyBpdC4KKwogMjAyMC0wOS0yMiAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgYnVpbGQgcnVsZXMgaW4gTWFrZWZp
bGVzIGFuZCBNYWtlZmlsZS5zaGFyZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1MikK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA5LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgY29kZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFi
bGUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NjgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgbWVkaWEgc2Vzc2lv
biByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9h
aXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXNlc3Npb246IFJlbW92ZWQuCisgICAgICAgIERlbGV0ZSBNb2R1bGVzL21lZGlhc2Vz
c2lvbiBhbmQgcGxhdGZvcm0vbWVkaWFzZXNzaW9uLiBNb3ZlIGZpbGVzIHRoYXQKKyAgICAgICAg
d2VyZSBhY3R1YWxseSB1c2VkIGZvciB0aGUgV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUIGZlYXR1
cmUgdG8gCisgICAgICAgIE1vZHVsZXMvYWlycGxheSB3aGVyZSBvdGhlciBwYXJ0cyBvZiB0aGF0
IGZlYXR1cmUgYXJlIGltcGxlbWVudGVkLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgUmVtb3ZlIGFsbCBj
b2RlIGluc2lkZSBFTkFCTEUoTUVESUFfU0VTU0lPTikuCisKIDIwMjAtMDktMjIgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIFN3aXRjaCB0byBuZXcg
ZmlsZSBuYW1lIGNvbnZlbnRpb24gZm9yIHBhcnRpYWwgaW50ZXJmYWNlcwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlh
Y2FwYWJpbGl0aWVzIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJvbHMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFyZWNvcmRlciIKLSAgICAiJHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9tZWRpYXNlc3Npb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvbWVkaWFzb3VyY2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjIgpAQCAt
MTM4LDcgKzEzNyw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbWVkaWFyZWNvcmRlciIKLSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vbWVkaWFzZXNzaW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2NrIgpAQCAtMTk3LDcgKzE5NSw2IEBAIHNl
dChXZWJDb3JlX0lETF9JTkNMVURFUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiCiAgICAgTW9kdWxl
cy9tZWRpYWNhcGFiaWxpdGllcwogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlcgotICAgIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbQogICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucwogICAgIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QKQEAgLTMyNiwxMCArMzIzLDYg
QEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5pZGwKICAgICBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlckVycm9yRXZlbnQuaWRsCiAKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50K01lZGlhU2Vzc2lvbi5pZGwKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJl
bW90ZUNvbnRyb2xzLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5p
ZGwKLQogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9UcmFjaytNZWRpYVNvdXJjZS5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTCtNZWRpYVNvdXJjZS5pZGwKICAgICBNb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjc0NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsOSArMTU2LDYgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXJlY29yZGVyL0Jsb2JFdmVudC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJv
ckV2ZW50LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlh
RWxlbWVudCtNZWRpYVNlc3Npb24uaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNv
dXJjZS9BdWRpb1RyYWNrK01lZGlhU291cmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9ET01VUkwrTWVkaWFTb3VyY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNv
cHkpCkBAIC05NjAsMTQgKzk2MCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNYXBFbGVtZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWFycXVlZUVsZW1lbnQuaAotJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50K01lZGlh
U2Vzc2lvbi5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50K1JlbW90ZVBsYXliYWNr
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1M
TWVkaWFFbGVtZW50K1JlbW90ZVBsYXliYWNrLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudC5oCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1l
bnRNZWRpYVNlc3Npb24uY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxh
eWJhY2suY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNZWRpYUVsZW1lbnRSZW1vdGVQbGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTEyMjgsMTAg
KzEyMjQsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUmVjb3JkZXIu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJl
Y29yZGVyRXJyb3JFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNv
bnRyb2xzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTZXNzaW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBWUEFU
SCA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYWNvbnRyb2xzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFyZWNvcmRlciBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbiBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwK
QEAgLTI1Niw5ICsyNTUsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJh
Y2srTWVkaWFTb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2
NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw2IEBACiBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCisgICAg
TW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAor
CiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCiAg
ICAgTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLmgKQEAgLTg3LDEyICs4OSw2IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJvdmlkZXIuaAogCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uRXZlbnRzLmgKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0
YS5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudC5oCi0KICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NhbXBsZU1hcC5oCiAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lv
biAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDkgKzEzMCw2IEBAIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuY3BwCiBN
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKIE1vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCi1Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50TWVkaWFTZXNzaW9uLmNwcAotTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5jcHAKLU1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3BwCiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5
LmNwcApAQCAtMzA5Miw4ICszMDg5LDYgQEAgSlNNZWRpYVF1ZXJ5TGlzdC5jcHAKIEpTTWVkaWFR
dWVyeUxpc3RFdmVudC5jcHAKIEpTTWVkaWFSZWNvcmRlci5jcHAKIEpTTWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQuY3BwCi1KU01lZGlhUmVtb3RlQ29udHJvbHMuY3BwCi1KU01lZGlhU2Vzc2lvbi5j
cHAKIEpTTWVkaWFTb3VyY2UuY3BwCiBKU01lZGlhU3RyZWFtLmNwcAogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZp
c2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5jcHAKIEpT
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCiBKU0FwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAor
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiBNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q29u
dGFjdEZpZWxkLmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmNwcApAQCAtODgs
NyArODksNiBAQCBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlCiBNb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQotTW9k
dWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIE1vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJh
c2VNYW5hZ2VyQ29jb2EubW0KQEAgLTUyMSw3ICs1MjEsNiBAQCBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2CiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQotcGxhdGZvcm0vbWVkaWFzZXNz
aW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlP
Uy5tbSBAbm8tdW5pZnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAkobm9uZXhpc3RlbnQpCkBA
IC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0vLyBGSVhNRTogVGhlc2UgZG9uJ3Qgc2VlbSB0byBiZSBpbiBhbnkgY3VycmVudCBzcGVj
aWZpY2F0aW9ucy4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZW0uCi0vLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMjE2ODMxLgotWwotICAgIENvbmRpdGlvbmFsPVZJREVPJk1FRElB
X1NFU1NJT04sCi0gICAgSW1wbGVtZW50ZWRCeT1IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
Ci1dIHBhcnRpYWwgaW50ZXJmYWNlIEhUTUxNZWRpYUVsZW1lbnQgewotICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcga2luZDsKLQotICAgIGF0dHJpYnV0ZSBNZWRpYVNlc3Npb24/IHNlc3Npb247Ci19
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxl
bWVudE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9u
IDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgiCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6a2lu
ZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAg
ICByZXR1cm4gZWxlbWVudC0+a2luZCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb246OnNldEtpbmQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3RyaW5nJiBraW5kKQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxl
bWVudC0+c2V0S2luZChraW5kKTsKLX0KLQotTWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50
TWVkaWFTZXNzaW9uOjpzZXNzaW9uKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAg
QVNTRVJUKGVsZW1lbnQpOwotICAgIHJldHVybiBlbGVtZW50LT5zZXNzaW9uKCk7Ci19Ci0KLXZv
aWQgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6c2V0U2Vzc2lvbihIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKGVsZW1l
bnQpOwotICAgIGVsZW1lbnQtPnNldFNlc3Npb24oc2Vzc2lvbik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBFTkFCTEUo
VklERU8pICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oCShyZXZp
c2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi0jaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24gewotcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIGtpbmQoSFRNTE1lZGlhRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lkIHNldEtp
bmQoSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwotCi0gICAgc3RhdGljIE1lZGlh
U2Vzc2lvbiogc2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgc2V0
U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFTZXNzaW9uKik7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5B
QkxFKFZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFSZW1vdGVDb250cm9scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5jcHAJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJv
bHMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJNZWRpYVJlbW90ZUNvbnRyb2xzLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVJlbW90ZUNvbnRyb2xzKTsKLQotTWVkaWFSZW1v
dGVDb250cm9sczo6TWVkaWFSZW1vdGVDb250cm9scyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoY29udGV4dCkKLSAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQotewotfQotCi12b2lkIE1l
ZGlhUmVtb3RlQ29udHJvbHM6OmNsZWFyU2Vzc2lvbigpCi17Ci0gICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKLX0KLQotTWVkaWFSZW1vdGVDb250cm9sczo6fk1lZGlhUmVtb3RlQ29udHJvbHMoKSA9
IGRlZmF1bHQ7Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250cm9sczo6c2V0UHJldmlvdXNUcmFja0Vu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpCi17Ci0gICAgaWYgKG1fcHJldmlvdXNUcmFja0VuYWJsZWQg
PT0gaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ByZXZpb3VzVHJhY2tFbmFi
bGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAgICAgbV9zZXNzaW9u
LT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250
cm9sczo6c2V0TmV4dFRyYWNrRW5hYmxlZChib29sIGlzRW5hYmxlZCkKLXsKLSAgICBpZiAobV9u
ZXh0VHJhY2tFbmFibGVkID09IGlzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9u
ZXh0VHJhY2tFbmFibGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAg
ICAgbV9zZXNzaW9uLT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuaAko
cmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFSZW1vdGVDb250cm9scy5oCShub25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVJlbW90ZUNvbnRyb2xzIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFSZW1vdGVDb250cm9scz4sIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhUmVtb3RlQ29u
dHJvbHMpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFSZW1vdGVDb250cm9scz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU2Vzc2lvbiogc2Vzc2lv
biA9IG51bGxwdHIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJl
bW90ZUNvbnRyb2xzKGNvbnRleHQsIHNlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBib29sIHByZXZp
b3VzVHJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1RyYWNrRW5hYmxlZDsg
fQotICAgIHZvaWQgc2V0UHJldmlvdXNUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICBib29sIG5l
eHRUcmFja0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX25leHRUcmFja0VuYWJsZWQ7IH0KLSAg
ICB2b2lkIHNldE5leHRUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVk
PE1lZGlhUmVtb3RlQ29udHJvbHM+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVJl
bW90ZUNvbnRyb2xzPjo6ZGVyZWY7Ci0KLSAgICB2b2lkIGNsZWFyU2Vzc2lvbigpOwotCi0gICAg
dmlydHVhbCB+TWVkaWFSZW1vdGVDb250cm9scygpOwotCi0gICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVJl
bW90ZUNvbnRyb2xzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KLQotcHJpdmF0ZToKLSAgICBNZWRpYVJl
bW90ZUNvbnRyb2xzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBNZWRpYVNlc3Npb24qKTsKLQot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQot
ICAgIGJvb2wgbV9wcmV2aW91c1RyYWNrRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX25l
eHRUcmFja0VuYWJsZWQgeyBmYWxzZSB9OwotCi0gICAgTWVkaWFTZXNzaW9uKiBtX3Nlc3Npb24g
eyBudWxscHRyIH07Ci0KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90ZUNv
bnRyb2xzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5pZGwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAotXSBp
bnRlcmZhY2UgTWVkaWFSZW1vdGVDb250cm9scyA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoKTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIHByZXZpb3VzVHJhY2tFbmFibGVkOwotICAgIGF0dHJpYnV0ZSBib29sZWFuIG5l
eHRUcmFja0VuYWJsZWQ7Ci0KLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucHJldmlvdXN0
cmFjazsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmV4dHRyYWNrOwotfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI4MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQu
aCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgot
I2luY2x1ZGUgIlBhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1NZWRpYVNlc3Npb246
Ok1lZGlhU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIEtpbmQga2luZCkKLSAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2tpbmQoa2luZCkKLXsKLSAgICAvLyA0LiBNZWRpYSBT
ZXNzaW9ucwotICAgIC8vIDMuIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Np
b24gdHlwZSBpcyAiY29udGVudCIsIHRoZW4gY3JlYXRlIGEgbmV3IG1lZGlhIHJlbW90ZSBjb250
cm9sbGVyIGZvciBtZWRpYQotICAgIC8vICAgIHNlc3Npb24uIChPdGhlcndpc2UgbWVkaWEgc2Vz
c2lvbiBoYXMgbm8gbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuKQotICAgIGlmIChtX2tpbmQgPT0g
S2luZDo6Q29udGVudCkKLSAgICAgICAgbV9jb250cm9scyA9IE1lZGlhUmVtb3RlQ29udHJvbHM6
OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5n
bGV0b24oKS5hZGRNZWRpYVNlc3Npb24oKnRoaXMpOwotfQotCi1NZWRpYVNlc3Npb246On5NZWRp
YVNlc3Npb24oKQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnJlbW92
ZU1lZGlhU2Vzc2lvbigqdGhpcyk7Ci0KLSAgICBpZiAobV9jb250cm9scykKLSAgICAgICAgbV9j
b250cm9scy0+Y2xlYXJTZXNzaW9uKCk7Ci19Ci0KLU1lZGlhUmVtb3RlQ29udHJvbHMqIE1lZGlh
U2Vzc2lvbjo6Y29udHJvbHMoKQotewotICAgIHJldHVybiBtX2NvbnRyb2xzLmdldCgpOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6YWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmIGVs
ZW1lbnQpCi17Ci0gICAgQVNTRVJUKCFtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5jb250YWlucygm
ZWxlbWVudCkpOwotICAgIG1fcGFydGljaXBhdGluZ0VsZW1lbnRzLmFkZCgmZWxlbWVudCk7Ci19
Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpyZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkKLXsKLSAgICBBU1NFUlQobV9wYXJ0aWNpcGF0aW5nRWxlbWVudHMuY29udGFp
bnMoJmVsZW1lbnQpKTsKLSAgICBtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5yZW1vdmUoJmVsZW1l
bnQpOwotCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIG1f
YWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgfSk7Ci0K
LSAgICBpZiAobV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cykKLSAgICAgICAg
bV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy0+cmVtb3ZlKCZlbGVtZW50KTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYgd29ya2VyKQotewotICAgIGlmIChQYWdlICpwYWdl
ID0gbV9kb2N1bWVudC5wYWdlKCkpIHsKLSAgICAgICAgYm9vbCBoYWRBY3RpdmVNZWRpYUVsZW1l
bnRzID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuaGFzQWN0aXZlTWVkaWFFbGVt
ZW50cygpOwotCi0gICAgICAgIHdvcmtlcigpOwotCi0gICAgICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKTsKLSAgICAgICAgaWYgKGhhZEFjdGl2ZU1lZGlhRWxlbWVudHMgIT0gaGFz
QWN0aXZlTWVkaWFFbGVtZW50cykKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
Lmhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGhhc0FjdGl2
ZU1lZGlhRWxlbWVudHMpOwotICAgIH0gZWxzZQotICAgICAgICB3b3JrZXIoKTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OmFkZEFjdGl2ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KQotewotICAgIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoWyZdKCkgewotICAgICAg
ICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5hZGQoJmVsZW1lbnQpOwotICAgIH0pOwot
fQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aXNNZWRpYUVsZW1lbnRBY3RpdmUoSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVu
dHMuY29udGFpbnMoJmVsZW1lbnQpOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aGFzQWN0aXZl
TWVkaWFFbGVtZW50cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FjdGl2ZVBhcnRpY2lwYXRp
bmdFbGVtZW50cy5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0
YShjb25zdCBPcHRpb25hbDxNZXRhZGF0YT4mIG9wdGlvbmFsTWV0YWRhdGEpCi17Ci0gICAgaWYg
KCFvcHRpb25hbE1ldGFkYXRhKQotICAgICAgICBtX21ldGFkYXRhID0geyB9OwotICAgIGVsc2Ug
ewotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IG9wdGlvbmFsTWV0YWRhdGEudmFsdWUoKTsKLSAg
ICAgICAgbV9tZXRhZGF0YSA9IHsgbWV0YWRhdGEudGl0bGUsIG1ldGFkYXRhLmFydGlzdCwgbWV0
YWRhdGEuYWxidW0sIG1fZG9jdW1lbnQuY29tcGxldGVVUkwobWV0YWRhdGEuYXJ0d29yaykgfTsK
LSAgICB9Ci0KLSAgICBpZiAoYXV0byogcGFnZSA9IG1fZG9jdW1lbnQucGFnZSgpKQotICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5tZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSht
X21ldGFkYXRhKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmRlYWN0aXZhdGUoKQotewotICAg
IC8vIDUuMS4yLiBPYmplY3QgbWVtYmVycwotICAgIC8vIFdoZW4gdGhlIGRlYWN0aXZhdGUoKSBt
ZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKLSAgICAvLyAxLiBMZXQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLgotICAgIC8vIDIuIEluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEgc2Vzc2lv
buKAmXMgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAvLyAzLiBTZXQgbWVkaWEg
c2Vzc2lvbidzIHJlc3VtZSBsaXN0IHRvIGFuIGVtcHR5IGxpc3QuCi0gICAgLy8gNC4gU2V0IG1l
ZGlhIHNlc3Npb24ncyBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIHRvIGFuIGVtcHR5IGxp
c3QuCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIHdoaWxl
ICghbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMudGFrZUFueSgpLT5wYXVzZSgpOwotICAgIH0p
OwotCi0gICAgLy8gNS4gUnVuIHRoZSBtZWRpYSBzZXNzaW9uIGRlYWN0aXZhdGlvbiBhbGdvcml0
aG0gZm9yIG1lZGlhIHNlc3Npb24uCi0gICAgcmVsZWFzZUludGVybmFsKCk7Ci19Ci0KLXZvaWQg
TWVkaWFTZXNzaW9uOjpyZWxlYXNlSW50ZXJuYWwoKQotewotICAgIC8vIDYuNS4gUmVsZWFzaW5n
IGEgbWVkaWEgc2Vzc2lvbgotICAgIC8vIDEuIElmIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGN1
cnJlbnQgc3RhdGUgaXMgaWRsZSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYg
KG1fY3VycmVudFN0YXRlID09IFN0YXRlOjpJZGxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyAyLiBJZiBjdXJyZW50IG1lZGlhIHNlc3Npb24gc3RpbGwgaGFzIG9uZSBvciBtb3JlIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLCB0aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVw
cy4KLSAgICBpZiAoIW1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gMy4gT3B0aW9uYWxseSwgYmFzZWQgb24gcGxhdGZvcm0g
Y29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcmVsZWFzZSBhbnkgY3VycmVudGx5IGhl
bGQgcGxhdGZvcm0gbWVkaWEgZm9jdXMKLSAgICAvLyAgICBmb3IgY3VycmVudCBtZWRpYSBzZXNz
aW9uLgotICAgIC8vIDQuIE9wdGlvbmFsbHksIGJhc2VkIG9uIHBsYXRmb3JtIGNvbnZlbnRpb25z
LCB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSBhbnkgcHJldmlvdXNseSBlc3RhYmxpc2hlZCBv
bmdvaW5nIG1lZGlhCi0gICAgLy8gICAgaW50ZXJmYWNlIGluIHRoZSB1bmRlcmx5aW5nIHBsYXRm
b3Jt4oCZcyBub3RpZmljYXRpb25zIGFyZWEgYW5kIGFueSBvbmdvaW5nIG1lZGlhIGludGVyZmFj
ZSBpbiB0aGUgdW5kZXJseWluZwotICAgIC8vICAgIHBsYXRmb3JtJ3MgbG9jayBzY3JlZW4gYXJl
YSBmb3IgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBhbnkuCi0gICAgLy8gNS4gT3B0aW9uYWxs
eSwgYmFzZWQgb24gcGxhdGZvcm0gY29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcHJl
dmVudCBhbnkgaGFyZHdhcmUgYW5kL29yIHNvZnR3YXJlIG1lZGlhIGtleXMKLSAgICAvLyAgICBm
cm9tIGNvbnRyb2xsaW5nIHBsYXliYWNrIG9mIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLgotICAgIC8vIDYuIFNldCBjdXJyZW50IG1l
ZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6SWRsZTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246Omludm9rZSgpCi17Ci0gICAg
Ly8gNC40IEFjdGl2YXRpbmcgYSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gMS4gSWYgd2UncmUgYWxy
ZWFkeSBBQ1RJVkUgdGhlbiByZXR1cm4gc3VjY2Vzcy4KLSAgICBpZiAobV9jdXJyZW50U3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyAyLiBPcHRp
b25hbGx5LCBiYXNlZCBvbiBwbGF0Zm9ybSBjb252ZW50aW9ucywgcmVxdWVzdCB0aGUgbW9zdCBh
cHByb3ByaWF0ZSBwbGF0Zm9ybS1sZXZlbCBtZWRpYSBmb2N1cyBmb3IgbWVkaWEKLSAgICAvLyAg
ICBzZXNzaW9uIGJhc2VkIG9uIGl0cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZS4KLQotICAg
IC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwcy4uLgotCi0gICAgLy8gNC4gU2V0IG91ciBjdXJyZW50
IHN0YXRlIHRvIEFDVElWRSBhbmQgcmV0dXJuIHN1Y2Nlc3MuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6QWN0aXZlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lv
bjo6aGFuZGxlRHVja0ludGVycnVwdGlvbigpCi17Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDog
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnNldFNob3Vs
ZER1Y2sodHJ1ZSk7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpJbnRlcnJ1cHRlZDsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmhhbmRsZVVuZHVja0ludGVycnVwdGlvbigpCi17Ci0g
ICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0g
ICAgICAgIGVsZW1lbnQtPnNldFNob3VsZER1Y2soZmFsc2UpOwotCi0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6QWN0aXZlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6aGFuZGxlSW5kZWZp
bml0ZVBhdXNlSW50ZXJydXB0aW9uKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci0KLSAgICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5j
bGVhcigpOwotICAgIG1fY3VycmVudFN0YXRlID0gU3RhdGU6OklkbGU7Ci19Ci0KLXZvaWQgTWVk
aWFTZXNzaW9uOjpoYW5kbGVQYXVzZUludGVycnVwdGlvbigpCi17Ci0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6SW50ZXJydXB0ZWQ7Ci0KLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpoYW5kbGVVbnBhdXNl
SW50ZXJydXB0aW9uKCkKLXsKLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpBY3RpdmU7Ci0K
LSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OnRvZ2dsZVBsYXliYWNrKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0
aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAg
IGlmIChlbGVtZW50LT5wYXVzZWQoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZWxlbWVudC0+cGF1c2UoKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb246OnNhZmVseUl0ZXJhdGVBY3RpdmVNZWRpYUVsZW1lbnRzKGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Kik+JiBoYW5kbGVyKQotewotICAg
IEFTU0VSVCghbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyk7Ci0KLSAgICBI
YXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5
ID0gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgbV9pdGVyYXRlZEFjdGl2ZVBh
cnRpY2lwYXRpbmdFbGVtZW50cyA9ICZhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5Owot
Ci0gICAgd2hpbGUgKCFhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LmlzRW1wdHkoKSkK
LSAgICAgICAgaGFuZGxlcihhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LnRha2VBbnko
KSk7Ci0KLSAgICBtX2l0ZXJhdGVkQWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzID0gbnVsbHB0
cjsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb05leHRUcmFjaygpCi17Ci0gICAgaWYg
KG1fY29udHJvbHMgJiYgbV9jb250cm9scy0+bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICBt
X2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm5leHR0
cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb1ByZXZpb3VzVHJhY2soKQotewotICAg
IGlmIChtX2NvbnRyb2xzICYmIG1fY29udHJvbHMtPnByZXZpb3VzVHJhY2tFbmFibGVkKCkpCi0g
ICAgICAgIG1fY29udHJvbHMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucHJldmlvdXN0cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNvbnRyb2xJc0VuYWJsZWRE
aWRDaGFuZ2UoKQotewotICAgIC8vIE1lZGlhIHJlbW90ZSBjb250cm9scyBhcmUgb25seSBhbGxv
d2VkIG9uIENvbnRlbnQgbWVkaWEgc2Vzc2lvbnMuCi0gICAgQVNTRVJUKG1fa2luZCA9PSBLaW5k
OjpDb250ZW50KTsKLQotICAgIC8vIE1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0byBDb250ZW50
IG1lZGlhIHNlc3Npb25zIGhhdmUgbXV0dWFsbHktZXhjbHVzaXZlIHBsYXliYWNrLgotICAgIEFT
U0VSVChtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5zaXplKCkgPD0gMSk7Ci0KLSAgICBp
ZiAobV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gKm1fYWN0aXZlUGFydGljaXBh
dGluZ0VsZW1lbnRzLmJlZ2luKCk7Ci0gICAgbV9kb2N1bWVudC51cGRhdGVJc1BsYXlpbmdNZWRp
YShlbGVtZW50LT5lbGVtZW50SUQoKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCShub25leGlzdGVudCkKQEAg
LTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSAiTWVkaWFSZW1vdGVDb250cm9scy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU2Vzc2lvbj4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgS2luZCB7IENvbnRlbnQs
IFRyYW5zaWVudCwgVHJhbnNpZW50U29sbywgQW1iaWVudCB9OwotICAgIGVudW0gY2xhc3MgU3Rh
dGUgeyBJZGxlLCBBY3RpdmUsIEludGVycnVwdGVkIH07Ci0KLSAgICBzdHJ1Y3QgTWV0YWRhdGEg
ewotICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgICAgIFN0cmluZyBhcnRpc3Q7Ci0gICAgICAg
IFN0cmluZyBhbGJ1bTsKLSAgICAgICAgU3RyaW5nIGFydHdvcms7Ci0gICAgfTsKLQotICAgIHN0
YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24oZG9j
dW1lbnQsIGtpbmQpKTsKLSAgICB9Ci0KLSAgICB+TWVkaWFTZXNzaW9uKCk7Ci0KLSAgICBLaW5k
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBNZWRpYVJlbW90ZUNvbnRyb2xz
KiBjb250cm9scygpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KLSAgICBib29sIGhhc0FjdGl2ZU1lZGlh
RWxlbWVudHMoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0TWV0YWRhdGEoY29uc3QgT3B0aW9uYWw8
TWV0YWRhdGE+Jik7Ci0KLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLQotICAgIC8vIFJ1bnMgdGhl
IG1lZGlhIHNlc3Npb24gaW52b2NhdGlvbiBhbGdvcml0aG0gYW5kIHJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzLgotICAgIGJvb2wgaW52b2tlKCk7Ci0KLSAgICB2b2lkIGhhbmRsZUR1Y2tJbnRlcnJ1
cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZUluZGVmaW5pdGVQYXVzZUludGVycnVwdGlvbigpOwot
ICAgIHZvaWQgaGFuZGxlUGF1c2VJbnRlcnJ1cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZVVuZHVj
a0ludGVycnVwdGlvbigpOwotICAgIHZvaWQgaGFuZGxlVW5wYXVzZUludGVycnVwdGlvbigpOwot
Ci0gICAgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7
Ci0gICAgdm9pZCBza2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICB2b2lkIGNvbnRyb2xJc0Vu
YWJsZWREaWRDaGFuZ2UoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKLQotICAgIE1lZGlhU2Vzc2lvbihEb2N1bWVudCYsIEtpbmQpOwotCi0gICAgdm9p
ZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIHZvaWQgcmVtb3ZlTWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKLQotICAgIHZvaWQgc2FmZWx5SXRlcmF0ZUFj
dGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1l
bnQqKT4mKTsKLSAgICB2b2lkIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKHZvaWQpPiYpOwotICAgIHZvaWQgYWRkQWN0aXZlTWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQmKTsKLSAgICBib29sIGlzTWVkaWFFbGVtZW50QWN0aXZlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKLQotICAgIHZvaWQgcmVsZWFzZUludGVybmFsKCk7Ci0KLSAgICBTdGF0ZSBt
X2N1cnJlbnRTdGF0ZSB7IFN0YXRlOjpJZGxlIH07Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9wYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVk
aWFFbGVtZW50Kj4qIG1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMgeyBudWxs
cHRyIH07Ci0KLSAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBjb25zdCBLaW5kIG1fa2lu
ZDsKLSAgICBSZWZQdHI8TWVkaWFSZW1vdGVDb250cm9scz4gbV9jb250cm9sczsKLSAgICBNZWRp
YVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NFU1NJT04pICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPU1F
RElBX1NFU1NJT04sCi0gICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKLV0gaW50ZXJmYWNlIE1lZGlhU2Vzc2lvbiB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlh
U2Vzc2lvbktpbmQga2luZCA9ICJjb250ZW50Iik7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVkaWFTZXNzaW9uS2luZCBraW5kOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVJlbW90
ZUNvbnRyb2xzPyBjb250cm9sczsKLQotICAgIHVuZGVmaW5lZCBzZXRNZXRhZGF0YShNZWRpYU1l
dGFkYXRhPyBtZXRhZGF0YSk7Ci0KLSAgICB1bmRlZmluZWQgZGVhY3RpdmF0ZSgpOwotfTsKLQot
ZW51bSBNZWRpYVNlc3Npb25LaW5kIHsKLSAgICAiY29udGVudCIsCi0gICAgInRyYW5zaWVudCIs
Ci0gICAgInRyYW5zaWVudC1zb2xvIiwKLSAgICAiYW1iaWVudCIKLX07Ci0KLWRpY3Rpb25hcnkg
TWVkaWFNZXRhZGF0YSB7Ci0gICAgRE9NU3RyaW5nIHRpdGxlOwotICAgIERPTVN0cmluZyBhcnRp
c3Q7Ci0gICAgRE9NU3RyaW5nIGFsYnVtOwotICAgIFVTVlN0cmluZyBhcnR3b3JrOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkV2ZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbkV2ZW50cy5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25FdmVudHMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gTWVkaWFFdmVudFR5cGUgewotICAgIFBsYXlQYXVzZSwKLSAg
ICBUcmFja05leHQsCi0gICAgVHJhY2tQcmV2aW91cwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnRlbnRTZXNzaW9uS2luZCA9ICJjb250ZW50IjsKLQotTWVkaWFTZXNz
aW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj4gbWFuYWdlcjsKLSAgICByZXR1
cm4gbWFuYWdlcjsKLX0KLQotTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdl
cigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIG1faW50ZXJydXB0aW9uUHJvdmlkZXIgPSBh
ZG9wdFJlZihuZXcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMoKnRoaXMpKTsK
LSAgICBtX2ludGVycnVwdGlvblByb3ZpZGVyLT5iZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlv
bnMoKTsKLSNlbmRpZgotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Omhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKSBjb25zdAotewotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lv
bnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPmhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQotewotICAgIG1fc2Vzc2lvbnMuYWRkKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KQotewotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5YmFjaygpCi17Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICBTdHJpbmcgc2Vzc2lvbktpbmQgPSBzZXNzaW9uLT5r
aW5kKCk7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUoKSA9PSBNZWRpYVNlc3Np
b246OlN0YXRlOjpBY3RpdmUgJiYgKHNlc3Npb25LaW5kID09IGNvbnRlbnRTZXNzaW9uS2luZCB8
fCBzZXNzaW9uS2luZCA9PSAiIikpCi0gICAgICAgICAgICBzZXNzaW9uLT50b2dnbGVQbGF5YmFj
aygpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9OZXh0VHJh
Y2soKQotewotICAgIC8vIDUuMi4yIFdoZW4gdGhlIHVzZXIgcHJlc3NlcyB0aGUgTWVkaWFUcmFj
a05leHQgbWVkaWEga2V5LCB0aGVuIGZvciBlYWNoIENvbnRlbnQtYmFzZWQgbWVkaWEgc2Vzc2lv
biB0aGF0IGlzCi0gICAgLy8gY3VycmVudGx5IEFDVElWRSBhbmQgaGFzIGEgbWVkaWEgcmVtb3Rl
IGNvbnRyb2xsZXIgd2l0aCBpdHMgbmV4dFRyYWNrRW5hYmxlZCBhdHRyaWJ1dGUgc2V0IHRvIHRy
dWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbmV4
dHRyYWNrIGF0IGl0cyBtZWRpYSByZW1vdGUgY29udHJvbGxlci4KLSAgICBmb3IgKGF1dG8qIHNl
c3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUo
KSA9PSBNZWRpYVNlc3Npb246OlN0YXRlOjpBY3RpdmUgJiYgc2Vzc2lvbi0+a2luZCgpID09IGNv
bnRlbnRTZXNzaW9uS2luZCkKLSAgICAgICAgICAgIHNlc3Npb24tPnNraXBUb05leHRUcmFjaygp
OwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9QcmV2aW91c1Ry
YWNrKCkKLXsKLSAgICAvLyA1LjIuMiBXaGVuIHRoZSB1c2VyIHByZXNzZXMgdGhlIE1lZGlhVHJh
Y2tQcmV2aW91cyBtZWRpYSBrZXksIHRoZW4gZm9yIGVhY2ggQ29udGVudC1iYXNlZCBtZWRpYSBz
ZXNzaW9uIHRoYXQgaXMKLSAgICAvLyBjdXJyZW50bHkgQUNUSVZFIGFuZCBoYXMgYSBtZWRpYSBy
ZW1vdGUgY29udHJvbGxlciB3aXRoIGl0cyBwcmV2aW91c1RyYWNrRW5hYmxlZCBhdHRyaWJ1dGUg
c2V0IHRvIHRydWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQg
bmFtZWQgcHJldmlvdXN0cmFjayBhdCBpdHMgbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuCi0gICAg
Zm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+
Y3VycmVudFN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlICYmIHNlc3Npb24t
PmtpbmQoKSA9PSBjb250ZW50U2Vzc2lvbktpbmQpCi0gICAgICAgICAgICBzZXNzaW9uLT5za2lw
VG9QcmV2aW91c1RyYWNrKCk7Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbklu
dGVycnVwdGluZ0NhdGVnb3J5IGludGVycnVwdGluZ0NhdGVnb3J5KQotewotICAgIC8vIDQuNS4y
IEludGVycnVwdGluZyBhIG1lZGlhIHNlc3Npb24KLSAgICAvLyBXaGVuIGEgc3RhcnQtb2YtaW50
ZXJydXB0aW9uIG5vdGlmaWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9y
bSwgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9u
IGludGVycnVwdGlvbiBhbGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMs
IHBhc3NpbmcgaW4gZWFjaCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9y
IChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBz
ZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSBpcyBub3QgYWN0aXZlLCB0aGVuIHRlcm1pbmF0ZSB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgKHNlc3Npb24tPmN1cnJlbnRTdGF0ZSgpICE9IE1lZGlhU2Vz
c2lvbjo6U3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8v
IDIuIExldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSB0aGUgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSB0aGF0IHRyaWdnZXJlZCB0aGlzIGludGVycnVwdGlvbi4KLSAgICAg
ICAgLy8gICAgSWYgdGhpcyBpbnRlcnJ1cHRpb24gaGFzIG5vIGtub3duIG1lZGlhIHNlc3Npb24g
Y2F0ZWdvcnksIGxldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSBEZWZh
dWx0LgotCi0gICAgICAgIC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwczoKLSAgICAgICAgaWYgKGlu
dGVycnVwdGluZ0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpD
b250ZW50KSB7Ci0gICAgICAgICAgICAvLyAtICBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBDb250ZW50OgotICAgICAgICAgICAgLy8gICAgSWYgbWVkaWEgc2Vzc2lv
bidzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiB0eXBlIGlzIERlZmF1bHQgb3IgQ29udGVudCB0aGVu
IGluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEKLSAgICAgICAgICAgIC8vICAgIHNlc3Np
b24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQgc2V0IG1lZGlhIHNl
c3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+
a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09
IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFu
ZGxlSW5kZWZpbml0ZVBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50
ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRy
YW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Np
b24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRlbnQgdGhl
biBkdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MgYWN0aXZlCi0gICAgICAgICAgICAvLyAgIGF1
ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAgICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkg
PT0gTWVkaWFTZXNzaW9uS2luZDo6RGVmYXVsdCB8fCBzZXNzaW9uLT5raW5kKCkgPT0gTWVkaWFT
ZXNzaW9uS2luZDo6Q29udGVudCkKLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVEdWNr
SW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkg
PT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8pIHsKLSAg
ICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMg
VHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJy
ZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2llbnQgb3Ig
VHJhbnNpZW50IFNvbG8gdGhlbiBwYXVzZQotICAgICAgICAgICAgLy8gICBhbGwgb2YgbWVkaWEg
c2Vzc2lvbidzIGFjdGl2ZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIGFuZCBzZXQgY3Vy
cmVudCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAg
ICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkK
LSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVQYXVzZUludGVycnVwdGlvbigpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSBpbnRlcnJ1cHRpbmdDYXRlZ29yeSkKLXsKLSAgICAvLyA0LjUuMiBJbnRlcnJ1cHRpbmcg
YSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gV2hlbiBhbiBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlm
aWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9ybSwgdGhlbiB0aGUgdXNl
ciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9uIGNvbnRpbnVhdGlvbiBh
bGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMsIHBhc3NpbmcgaW4gZWFj
aCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSBpcyBub3QgaW50ZXJydXB0ZWQsIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgot
ICAgICAgICBpZiAoc2Vzc2lvbi0+Y3VycmVudFN0YXRlKCkgIT0gTWVkaWFTZXNzaW9uOjpTdGF0
ZTo6SW50ZXJydXB0ZWQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAyLiBM
ZXQgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgYmUgdGhlIG1lZGlhIHNlc3Np
b24gY2F0ZWdvcnkgdGhhdCBpbml0aWFsbHkgdHJpZ2dlcmVkIHRoaXMgaW50ZXJydXB0aW9uLgot
ICAgICAgICAvLyAgICBJZiB0aGlzIGludGVycnVwdGlvbiBoYXMgbm8ga25vd24gbWVkaWEgc2Vz
c2lvbiBjYXRlZ29yeSwgbGV0IGludGVycnVwdGluZyBtZWRpYSBzZXNzaW9uIGNhdGVnb3J5IGJl
IERlZmF1bHQuCi0KLSAgICAgICAgLy8gMy4gUnVuIHRoZXNlIHN1YnN0ZXBzOgotICAgICAgICBp
ZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnk6OlRyYW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlh
IHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRl
bnQsIHRoZW4gdW5kdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MKLSAgICAgICAgICAgIC8vICAg
YWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9u
J3MgY3VycmVudCBzdGF0ZSB0byBhY3RpdmUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2lu
ZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09IE1l
ZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxl
VW5kdWNrSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0
ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8p
IHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdv
cnkgaXMgVHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24n
cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2ll
bnQsIG9yIFRyYW5zaWVudCBTb2xvLCB0aGVuCi0gICAgICAgICAgICAvLyAgIHVucGF1c2UgdGhl
IG1lZGlhIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQg
c2V0IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGFjdGl2ZS4KLSAgICAgICAgICAg
IGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkKLSAgICAg
ICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVVbnBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJM
RShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMjY3
NDUwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
TWFuYWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyIDogcHVi
bGljIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50IHsKLSAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNpbmdsZXRvbigpOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
a2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGlu
Z0NhdGVnb3J5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lv
bjsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLQotICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cygpIGNvbnN0OwotCi0gICAgdm9pZCBhZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNz
aW9uJik7Ci0gICAgdm9pZCByZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7Ci0KLSAg
ICBSZWZQdHI8TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI+IG1faW50ZXJydXB0aW9u
UHJvdmlkZXI7Ci0gICAgSGFzaFNldDxNZWRpYVNlc3Npb24qPiBtX3Nlc3Npb25zOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
ZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBN
ZWRpYVNlc3Npb25NZXRhZGF0YSBmaW5hbCB7Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9uTWV0
YWRhdGEoKSA9IGRlZmF1bHQ7Ci0KLSAgICBNZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFydGlzdCwgY29uc3QgU3RyaW5nJiBhbGJ1bSwgY29u
c3QgVVJMJiBhcnR3b3JrVVJMKQotICAgICAgICA6IG1fdGl0bGUodGl0bGUpCi0gICAgICAgICwg
bV9hcnRpc3QoYXJ0aXN0KQotICAgICAgICAsIG1fYWxidW0oYWxidW0pCi0gICAgICAgICwgbV9h
cnR3b3JrVVJMKGFydHdvcmtVUkwpIHsgfQotCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aXRsZTsgfQotICAgIFN0cmluZyBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2Fy
dGlzdDsgfQotICAgIFN0cmluZyBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxidW07IH0KLSAg
ICBVUkwgYXJ0d29ya1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0d29ya1VSTDsgfQotCi1wcml2
YXRlOgotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2FydGlzdDsKLSAgICBTdHJp
bmcgbV9hbGJ1bTsKLSAgICBVUkwgbV9hcnR3b3JrVVJMOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCShyZXZpc2lvbiAy
Njc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjc0NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5o
IgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKLSNpbmNsdWRlICJX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMu
aD4KLSNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBTZWNvbmRzIHRh
c2tEZWxheUludGVydmFsIHsgMTAwX21zIH07Ci0KLSNkZWZpbmUgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSIGxvZ2dlcigpLmxvZ0Fsd2F5cwotCi1zdHJ1Y3QgQ2xpZW50U3RhdGUgewot
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAgIGV4cGxpY2l0IENsaWVu
dFN0YXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCi0gICAgICAgIDogY2xpZW50KGNs
aWVudCkKLSAgICAgICAgLCBjb250ZXh0SWQoY29udGV4dElkKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yID09IChDbGllbnRTdGF0ZSBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gY29udGV4dElkID09IG90aGVyLmNvbnRleHRJZCAmJiAmY2xpZW50
ID09ICZvdGhlci5jbGllbnQ7Ci0gICAgfQotCi0gICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYgY2xpZW50OwotICAgIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkOwotICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBm
bGFncyB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9OwotICAgIGJvb2wg
cmVxdWVzdGVkUGlja2VyIHsgZmFsc2UgfTsKLSAgICBib29sIHByZXZpb3VzbHlSZXF1ZXN0ZWRQ
aWNrZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgY29uZmlndXJhdGlvblJlcXVpcmVkIHsgdHJ1ZSB9
OwotICAgIGJvb2wgcGxheWVkVG9FbmQgeyBmYWxzZSB9OwotfTsKLQotc3RhdGljIGJvb2wgZmxh
Z3NBcmVTZXQoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHZhbHVlLCB1bnNpZ25lZCBm
bGFncykKLXsKLSAgICByZXR1cm4gdmFsdWUgJiBmbGFnczsKLX0KLQotU3RyaW5nIG1lZGlhUHJv
ZHVjZXJTdGF0ZVN0cmluZyhNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpCi17
Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmc7Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nQXVkaW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIklzUGxheWluZ0F1ZGlv
KyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKQotICAg
ICAgICBzdHJpbmcuYXBwZW5kKCJJc1BsYXlpbmdWaWRlbysiKTsKLSAgICBpZiAoZmxhZ3MgJiBN
ZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKQotICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKyIpOwotICAgIGlmIChmbGFncyAmIE1l
ZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIpCi0gICAg
ICAgIHN0cmluZy5hcHBlbmQoIkhhc1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyKyIpOwotICAg
IGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJSZXF1aXJlc1RhcmdldE1vbml0b3JpbmcrIik7
Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkKLSAgICAgICAgc3RyaW5nLmFwcGVuZCgiRXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSsiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpEaWRQbGF5VG9FbmQp
Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoIkRpZFBsYXlUb0VuZCsiKTsKLSAgICBpZiAoZmxhZ3Mg
JiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQo
Ikhhc0F1ZGlvT3JWaWRlbysiKTsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RyaW5nLmFwcGVuZCgiSXNOb3RQbGF5aW5nIik7Ci0gICAgZWxzZQotICAgICAgICBzdHJpbmcu
cmVzaXplKHN0cmluZy5sZW5ndGgoKSAtIDEpOwotCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIiB7
ICIsIHN0cmluZy50b1N0cmluZygpLCAiIH0iKTsKLX0KLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9u
TG9nZ2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25Mb2dnZXIp
OwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+IGNyZWF0ZShXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyJiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
TWVkaWFTZXNzaW9uTG9nZ2VyPihtYW5hZ2VyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKGNvbnN0IGNoYXIq
IG1ldGhvZE5hbWUsIENsaWVudFN0YXRlKiBzdGF0ZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1
bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXN0YXRlLT5jbGllbnQuYWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbG9nZ2Vy
LT5sb2dBbHdheXMoTG9nTWVkaWEsIG1ha2VTdHJpbmcoIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OiIsIG1ldGhvZE5hbWUsICcgJyksIHN0YXRlLT5jb250ZXh0SWQudG9VSW50NjQoKSwgc3RhdGUt
PmZsYWdzLCBhcmd1bWVudHMuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoIW1fbWFuYWdlci5hbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgbV9sb2dnZXItPmxvZ0Fsd2F5cyhMb2dNZWRpYSwgbWFrZVN0cmlu
ZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0aG9kTmFtZSwgJyAnKSwgYXJndW1lbnRz
Li4uKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxXZWJN
ZWRpYVNlc3Npb25Mb2dnZXI+IHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFTZXNzaW9uTG9nZ2Vy
PihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJik7Ci0gICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIpCi0gICAgICAgIDogbV9tYW5hZ2VyKG1hbmFn
ZXIpCi0gICAgICAgICwgbV9sb2dnZXIoTG9nZ2VyOjpjcmVhdGUodGhpcykpCi0gICAgewotICAg
IH0KLQotICAgIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1fbWFuYWdlcjsKLSAgICBSZWY8TG9n
Z2VyPiBtX2xvZ2dlcjsKLX07Ci0KLVdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6bG9nZ2VyKCkKLXsKLSAgICBpZiAoIW1fbG9nZ2VyKQotICAgICAgICBtX2xv
Z2dlciA9IFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcjo6Y3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVy
biAqbV9sb2dnZXI7Ci19Ci0KLWJvb2wgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFsbE9mKG1fY2xpZW50U3RhdGUs
IFtdIChhdXRvJiBzdGF0ZSkgewotICAgICAgICByZXR1cm4gc3RhdGUtPmNsaWVudC5hbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKLXsKLSAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxlZCA9PSBlbmFibGVkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwot
ICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwotfQotCi12b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCi17
Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtb2Nr
UGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6Om1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKLXsK
LSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwotICAgIG1vY2tQ
aWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsKLX0KLQotTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQotewotICAgIGlmICghbV9w
aWNrZXJPdmVycmlkZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8TWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9waWNr
ZXJPdmVycmlkZS5nZXQoKTsKLX0KLQotV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFyZ2V0UGlja2VyKCkKLXsKLSAgICBpZiAobV9t
b2NrUGlja2VyRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIG1vY2tQaWNrZXIoKTsKLQotICAgIHJl
dHVybiBwbGF0Zm9ybVBpY2tlcigpOwotfQotCi1XZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyKCkKLSAgICA6IG1fdGFza1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnRhc2tUaW1lckZpcmVkKQotICAgICwg
bV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCkKLXsKLX0KLQotV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLVBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xp
ZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ID09IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybiB7IH07Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIGNvbnRleHRJZC50b1VJbnQ2NCgpKTsKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtl
VW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwotCi0gICAgaWYgKG1fZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAg
c2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotCi0gICAgcmV0dXJuIGNvbnRleHRJZDsKLX0KLQotdm9p
ZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIHNpemVfdCBpbmRleCA9IGZp
bmQoJmNsaWVudCwgY29udGV4dElkKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwot
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5n
ZXQoKSk7Ci0KLSAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVE
ZWxheWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZUFsbFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50cyhXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50JiBjbGllbnQpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9jbGllbnRTdGF0ZS5zaXpl
KCk7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgaWYgKCZtX2NsaWVudFN0YXRlW2kgLSAxXS0+Y2xp
ZW50ID09ICZjbGllbnQpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFO
QUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOwotICAgICAgICAgICAg
bV9jbGllbnRTdGF0ZS5yZW1vdmUoaSAtIDEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNjaGVk
dWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8mIGNsaWVudFJlcXVlc3RpbmdQaWNrZXIgPSBtX2NsaWVudFN0
YXRlW2luZGV4XTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAg
ICAgICBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyID0gc3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1Bp
Y2tlcjsKLSAgICAgICAgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9
PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwotICAgIH0KLQotICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwotCi0g
ICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5kZXhd
LT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSk7Ci0gICAg
dGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNsaWVudC5wbGF0Zm9ybVZp
ZXcoKSwgRmxvYXRSZWN0KHJlY3QpLCBoYXNBY3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFuY2Up
OwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlRGlkQ2hhbmdl
KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBuZXdGbGFncykKLXsKLSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRl
eHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGNoYW5nZWRDbGllbnRTdGF0
ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhdOwotICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBvbGRGbGFncyA9IGNoYW5nZWRDbGllbnRTdGF0ZS0+ZmxhZ3M7Ci0gICAgaWYgKG5ld0Zs
YWdzID09IG9sZEZsYWdzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3
IGZsYWdzID0gIiwgbmV3RmxhZ3MpOwotCi0gICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9
IG5ld0ZsYWdzOwotCi0gICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHVwZGF0ZUNv
bmZpZ3VyYXRpb25GbGFncyA9IE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRN
b25pdG9yaW5nIHwgTWVkaWFQcm9kdWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlM
aXN0ZW5lciB8IE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKLSAgICBpZiAoKG9sZEZs
YWdzICYgdXBkYXRlQ29uZmlndXJhdGlvbkZsYWdzKSAhPSAobmV3RmxhZ3MgJiB1cGRhdGVDb25m
aWd1cmF0aW9uRmxhZ3MpKQotICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0
b3JpbmdDb25maWd1cmF0aW9uVGFzayk7Ci0KLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgcGxheWluZ1RvVGFyZ2V0RmxhZ3MgPSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4
dGVybmFsRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW87Ci0gICAgaWYgKChv
bGRGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZsYWdzKSAhPSAobmV3RmxhZ3MgJiBwbGF5aW5nVG9U
YXJnZXRGbGFncykpIHsKLSAgICAgICAgaWYgKGZsYWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgIWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJv
ZHVjZXI6OkRpZFBsYXlUb0VuZCkpCi0gICAgICAgICAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPnBs
YXllZFRvRW5kID0gdHJ1ZTsKLSAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhXYXRjaGRvZ1Rp
bWVyQ29uZmlndXJhdGlvblRhc2spOwotICAgIH0KLQotICAgIGlmICghbV9wbGF5YmFja1Rhcmdl
dCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSB8fCAhZmxhZ3NBcmVTZXQo
bmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkV4dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRhdGUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEbyBub3QgaW50ZXJydXB0IGFub3RoZXIgZWxl
bWVudCBhbHJlYWR5IHBsYXlpbmcgdG8gYSBkZXZpY2UuCi0gICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7
Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0
YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG8gbm90IGJlZ2luIHBsYXlpbmcgdG8gdGhlIGRldmlj
ZSB1bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qgc3RhcnRlZC4KLSAgICBpZiAoIWZsYWdzQXJlU2V0
KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgfHwgZmxhZ3NBcmVTZXQo
b2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJyZXR1cm5pbmcgZWFybHksIHBs
YXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBpZiAoc3RhdGUg
PT0gY2hhbmdlZENsaWVudFN0YXRlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2Fs
bGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKLSAgICAgICAgc3Rh
dGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElk
LCBmYWxzZSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOwotICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+Y2xpZW50
LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+Y29udGV4
dElkLCB0cnVlKTsKLQotICAgIGlmIChpbmRleCAmJiBtX2NsaWVudFN0YXRlLnNpemUoKSA+IDEp
Ci0gICAgICAgIHN0ZDo6c3dhcChtX2NsaWVudFN0YXRlLmF0KGluZGV4KSwgbV9jbGllbnRTdGF0
ZS5hdCgwKSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQotewotICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgImhhcyBhY3RpdmUgcm91dGUgPSAiLCB0
YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOwotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3Zl
KHRhcmdldCk7Ci0gICAgbV90YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5
ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
Ym9vbCBhdmFpbGFibGUpCi17Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBhdmFpbGFibGUpOwotICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
PSBhdmFpbGFibGU7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpCi0gICAg
ICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
c3RhdGUtPmNvbnRleHRJZCwgYXZhaWxhYmxlKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCgpCi17Ci0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0
UGlja2VyRGlzbWlzc2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENs
aWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y29uZmlndXJlTmV3Q2xpZW50cygpCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xp
ZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc3RhdGUtPmNvbmZpZ3VyYXRpb25SZXF1
aXJlZCA9IGZhbHNlOwotICAgICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZSkKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7Ci0KLSAgICAgICAgaWYgKG1fcGxh
eWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Ci0gICAgfQot
fQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
Q2xpZW50cygpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBub3RG
b3VuZDsKLSAgICBib29sIGhhdmVBY3RpdmVSb3V0ZSA9IG1fcGxheWJhY2tUYXJnZXQgJiYgbV9w
bGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9
IG1fY2xpZW50U3RhdGVbaV07Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3RhdGUt
PnJlcXVlc3RlZFBpY2tlcik7Ci0KLSAgICAgICAgaWYgKChtX3RhcmdldENoYW5nZWQgfHwgbV9w
bGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkgJiYgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcikK
LSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gaTsKLQotICAg
ICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgZmxh
Z3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFs
RGV2aWNlKSkKLSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaTsK
LQotICAgICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQg
JiYgaGF2ZUFjdGl2ZVJvdXRlICYmIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyKQot
ICAgICAgICAgICAgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBpOwotICAgIH0K
LQotICAgIGlmIChpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciAhPSBub3RGb3VuZCkK
LSAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mQ2xpZW50VGhh
dFJlcXVlc3RlZFBpY2tlcjsKLSAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PT0gbm90Rm91bmQgJiYgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgIT0gbm90Rm91
bmQpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaW5kZXhPZkxhc3RD
bGllbnRUb1JlcXVlc3RQaWNrZXI7Ci0gICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFy
Z2V0ID09IG5vdEZvdW5kICYmIGhhdmVBY3RpdmVSb3V0ZSAmJiBmbGFnc0FyZVNldChtX2NsaWVu
dFN0YXRlWzBdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkgJiYgIWZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbMF0tPmZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRv
VGFyZ2V0ID0gMDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5z
aXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07Ci0K
LSAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50
LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNv
cHlSZWYoKSk7Ci0KLSAgICAgICAgaWYgKGkgIT0gaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJn
ZXQgfHwgIWhhdmVBY3RpdmVSb3V0ZSkgewotICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOwotICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoc3RhdGUtPnJlcXVlc3RlZFBpY2tlciAmJiBtX3BsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tU
YXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxh
eWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoc3RhdGUtPmNvbnRleHRJZCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChtX3RhcmdldENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3Nl
ZCkKLSAgICAgICAgICAgIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAoaGF2ZUFjdGl2ZVJvdXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRl
eE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldF07Ci0gICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3Rh
dGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewot
ICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7
Ci0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV90YXJn
ZXRDaGFuZ2VkID0gZmFsc2U7Ci0gICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOwotfQotCi12
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRv
cmluZygpCi17Ci0gICAgYm9vbCBtb25pdG9yaW5nUmVxdWlyZWQgPSBmYWxzZTsKLSAgICBib29s
IGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVyID0gZmFsc2U7Ci0gICAgYm9vbCBoYXZlQ2xpZW50V2l0
aE1lZGlhID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsK
LSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5n
ZXQoKSk7Ci0gICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpSZXF1aXJl
c1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewotICAgICAgICAgICAgbW9uaXRvcmluZ1JlcXVp
cmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChz
dGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVyKQotICAgICAgICAgICAgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSB0cnVlOwot
ICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVv
KQotICAgICAgICAgICAgaGF2ZUNsaWVudFdpdGhNZWRpYSA9IHRydWU7Ci0gICAgfQotCi0gICAg
aWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAoaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYgaGF2
ZUNsaWVudFdpdGhNZWRpYSkpIHsKLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwotICAgICAgICB0YXJnZXRQaWNr
ZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGlu
ZyBtb25pdG9yaW5nIik7Ci0gICAgICAgIHRhcmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKCk7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzIHRhc2tzKQotewotICAgIG1f
dGFza0ZsYWdzIHw9IHRhc2tzOwotICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCh0YXNrRGVs
YXlJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVy
RmlyZWQoKQotewotICAgIGlmIChtX3Rhc2tGbGFncyAmIEluaXRpYWxDb25maWd1cmF0aW9uVGFz
aykKLSAgICAgICAgY29uZmlndXJlTmV3Q2xpZW50cygpOwotICAgIGlmIChtX3Rhc2tGbGFncyAm
IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzaykKLSAgICAgICAgY29uZmlndXJlUGxheWJh
Y2tUYXJnZXRDbGllbnRzKCk7Ci0gICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0TW9uaXRvcmlu
Z0NvbmZpZ3VyYXRpb25UYXNrKQotICAgICAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0
b3JpbmcoKTsKLSAgICBpZiAobV90YXNrRmxhZ3MgJiBXYXRjaGRvZ1RpbWVyQ29uZmlndXJhdGlv
blRhc2spCi0gICAgICAgIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIG1fdGFza0Zs
YWdzID0gTm9UYXNrOwotfQotCi1zaXplX3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZmluZChX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9jbGllbnRTdGF0
ZVtpXS0+Y29udGV4dElkID09IGNvbnRleHRJZCAmJiAmbV9jbGllbnRTdGF0ZVtpXS0+Y2xpZW50
ID09IGNsaWVudCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLQotICAgIHJldHVybiBu
b3RGb3VuZDsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYXRj
aGRvZ1RpbWVyKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRjaGRvZ1RpbWVySW50
ZXJ2YWxBZnRlclBhdXNpbmcgeyAxX2ggfTsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRj
aGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCB7IDhfbWluIH07Ci0KLSAgICBpZiAo
IW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkp
IHsKLSAgICAgICAgaWYgKG1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1l
ciIpOwotICAgICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKLSAgICAg
ICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYm9vbCBzdG9wVGltZXIgPSBmYWxzZTsKLSAgICBib29sIGRpZFBs
YXlUb0VuZCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7
Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7Ci0KLSAgICAg
ICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgICAgICBzdG9wVGltZXIgPSB0cnVlOwotICAg
ICAgICBpZiAoc3RhdGUtPnBsYXllZFRvRW5kKQotICAgICAgICAgICAgZGlkUGxheVRvRW5kID0g
dHJ1ZTsKLSAgICAgICAgc3RhdGUtPnBsYXllZFRvRW5kID0gZmFsc2U7Ci0gICAgfQotCi0gICAg
aWYgKHN0b3BUaW1lcikgewotICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sICJzdG9wcGluZyB0aW1lciIpOwotICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0lu
dGVydmFsID0geyB9OwotICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFNlY29uZHMgaW50ZXJ2YWwgPSBkaWRQbGF5VG9FbmQgPyB3YXRjaGRvZ1Rp
bWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCA6IHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVy
UGF1c2luZzsKLSAgICAgICAgaWYgKGludGVydmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2
YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBtX3dhdGNo
ZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJ0aW1lciBzY2hlZHVsZWQgZm9y
ICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vjb25kcyIpOwotICAgICAgICBtX2N1cnJlbnRXYXRj
aGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFy
Z2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwotICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLQotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrLmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IENsaWVudFN0YXRlOwotY2xhc3MgSW50UmVjdDsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkxv
Z2dlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQ7Ci0KLWNsYXNzIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKTsK
LXB1YmxpYzoKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBzaGFyZWQoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UmVjdCYsIGJvb2ws
IGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50U3RhdGVEaWRDaGFuZ2UoV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7Ci0KLSAg
ICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAg
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLSAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyKCk7Ci0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXImIHBsYXRmb3JtUGlja2VyKCkgPSAwOwotICAgIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBwbGF0Zm9ybU1hbmFnZXIoKTsKLQotcHJpdmF0ZToKLQotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXImIHRhcmdldFBpY2tlcigpOwotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBtb2NrUGlja2VyKCk7Ci0KLSAgICAvLyBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKLSAgICB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJl
ZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoKSBvdmVycmlkZTsKLQotICAg
IHNpemVfdCBmaW5kKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQqLCBQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKLQotICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tU
YXJnZXRDbGllbnRzKCk7Ci0gICAgdm9pZCBjb25maWd1cmVOZXdDbGllbnRzKCk7Ci0gICAgdm9p
ZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKLSAgICB2b2lkIGNvbmZpZ3Vy
ZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIGVudW0gQ29uZmlndXJhdGlvblRhc2tGbGFncyB7Ci0g
ICAgICAgIE5vVGFzayA9IDAsCi0gICAgICAgIEluaXRpYWxDb25maWd1cmF0aW9uVGFzayA9IDEg
PDwgMCwKLSAgICAgICAgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAxLAot
ICAgICAgICBUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDIsCi0gICAg
ICAgIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMywKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgQ29uZmlndXJhdGlvblRhc2tzOwotICAgIFN0cmluZyB0b1N0cmlu
ZyhDb25maWd1cmF0aW9uVGFza3MpOwotCi0gICAgdm9pZCBzY2hlZHVsZURlbGF5ZWRUYXNrKENv
bmZpZ3VyYXRpb25UYXNrcyk7Ci0gICAgdm9pZCB0YXNrVGltZXJGaXJlZCgpOwotCi0gICAgdm9p
ZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKLQotICAgIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgbG9n
Z2VyKCk7Ci0KLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Rh
c2tUaW1lcjsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3dh
dGNoZG9nVGltZXI7Ci0KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENsaWVudFN0YXRlPj4g
bV9jbGllbnRTdGF0ZTsKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFj
a1RhcmdldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2s+IG1fcGlja2VyT3ZlcnJpZGU7Ci0gICAgQ29uZmlndXJhdGlvblRhc2tzIG1f
dGFza0ZsYWdzIHsgTm9UYXNrIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lv
bkxvZ2dlcj4gbV9sb2dnZXI7Ci0gICAgU2Vjb25kcyBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFs
OwotICAgIGJvb2wgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX3RhcmdldENoYW5nZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wbGF5YmFja1Rh
cmdldFBpY2tlckRpc21pc3NlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21vY2tQaWNrZXJFbmFi
bGVkIHsgZmFsc2UgfTsKLX07Ci0KLVN0cmluZyBtZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBM
b2dBcmd1bWVudDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJu
IFdlYkNvcmU6Om1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhmbGFncyk7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlckNsaWVudC5oCShyZXZpc2lvbiAyNjc0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlICJNZWRpYVBsYXli
YWNrVGFyZ2V0LmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNE
aXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIFBsYXRmb3JtVmlldyogcGxhdGZvcm1WaWV3KCkgY29uc3QgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9QbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkv
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIgorI2luY2x1ZGUgIldlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IFNlY29uZHMgdGFza0RlbGF5
SW50ZXJ2YWwgeyAxMDBfbXMgfTsKKworI2RlZmluZSBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIgbG9nZ2VyKCkubG9nQWx3YXlzCisKK3N0cnVjdCBDbGllbnRTdGF0ZSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZXhwbGljaXQgQ2xpZW50U3RhdGUo
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICAgICAgOiBjbGllbnQoY2xpZW50KQor
ICAgICAgICAsIGNvbnRleHRJZChjb250ZXh0SWQpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IgPT0gKENsaWVudFN0YXRlIGNvbnN0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb250ZXh0SWQgPT0gb3RoZXIuY29udGV4dElkICYmICZjbGllbnQgPT0gJm90
aGVyLmNsaWVudDsKKyAgICB9CisKKyAgICBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBj
bGllbnQ7CisgICAgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQ7CisgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIGZsYWdzIHsg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CisgICAgYm9vbCByZXF1ZXN0
ZWRQaWNrZXIgeyBmYWxzZSB9OworICAgIGJvb2wgcHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciB7
IGZhbHNlIH07CisgICAgYm9vbCBjb25maWd1cmF0aW9uUmVxdWlyZWQgeyB0cnVlIH07CisgICAg
Ym9vbCBwbGF5ZWRUb0VuZCB7IGZhbHNlIH07Cit9OworCitzdGF0aWMgYm9vbCBmbGFnc0FyZVNl
dChNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdmFsdWUsIHVuc2lnbmVkIGZsYWdzKQor
eworICAgIHJldHVybiB2YWx1ZSAmIGZsYWdzOworfQorCitTdHJpbmcgbWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBmbGFncykKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZzsKKyAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpJc1Bs
YXlpbmdBdWRpbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSXNQbGF5aW5nQXVkaW8rIik7Cisg
ICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pCisgICAgICAgIHN0
cmluZy5hcHBlbmQoIklzUGxheWluZ1ZpZGVvKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJv
ZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpCisgICAgICAgIHN0cmluZy5hcHBlbmQo
IklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UrIik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9k
dWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcikKKyAgICAgICAgc3Ry
aW5nLmFwcGVuZCgiSGFzVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIrIik7CisgICAgaWYgKGZs
YWdzICYgTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpCisg
ICAgICAgIHN0cmluZy5hcHBlbmQoIlJlcXVpcmVzVGFyZ2V0TW9uaXRvcmluZysiKTsKKyAgICBp
ZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KQorICAgICAgICBzdHJpbmcuYXBwZW5kKCJFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OkRpZFBsYXlUb0VuZCkKKyAgICAg
ICAgc3RyaW5nLmFwcGVuZCgiRGlkUGxheVRvRW5kKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlh
UHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFzQXVk
aW9PclZpZGVvKyIpOworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc05vdFBsYXlpbmciKTsKKyAgICBlbHNlCisgICAgICAgIHN0cmluZy5yZXNpemUo
c3RyaW5nLmxlbmd0aCgpIC0gMSk7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZygiIHsgIiwgc3Ry
aW5nLnRvU3RyaW5nKCksICIgfSIpOworfQorCitjbGFzcyBXZWJNZWRpYVNlc3Npb25Mb2dnZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcik7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4gY3JlYXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXImIG1hbmFnZXIpCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVNl
c3Npb25Mb2dnZXI+KG1hbmFnZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgQ2xpZW50U3RhdGUqIHN0YXRlLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICghc3RhdGUtPmNsaWVudC5hbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9sb2dnZXItPmxvZ0Fs
d2F5cyhMb2dNZWRpYSwgbWFrZVN0cmluZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0
aG9kTmFtZSwgJyAnKSwgc3RhdGUtPmNvbnRleHRJZC50b1VJbnQ2NCgpLCBzdGF0ZS0+ZmxhZ3Ms
IGFyZ3VtZW50cy4uLik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIGlubGluZSB2b2lkIGxvZ0Fsd2F5cyhjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBj
b25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgh
bV9tYW5hZ2VyLmFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX2xvZ2dlci0+bG9nQWx3YXlzKExvZ01lZGlhLCBtYWtlU3RyaW5nKCJXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjoiLCBtZXRob2ROYW1lLCAnICcpLCBhcmd1bWVudHMuLi4pOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vz
c2lvbkxvZ2dlcj4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXImKTsKKyAgICBXZWJNZWRpYVNlc3Npb25Mb2dnZXIoV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAg
ICAgICAgLCBtX2xvZ2dlcihMb2dnZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICB7CisgICAgfQorCisg
ICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbV9tYW5hZ2VyOworICAgIFJlZjxMb2dnZXI+IG1f
bG9nZ2VyOworfTsKKworV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpsb2dnZXIoKQoreworICAgIGlmICghbV9sb2dnZXIpCisgICAgICAgIG1fbG9nZ2VyID0g
V2ViTWVkaWFTZXNzaW9uTG9nZ2VyOjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuICptX2xv
Z2dlcjsKK30KKworYm9vbCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWxsT2YobV9jbGllbnRTdGF0ZSwgW10gKGF1
dG8mIHN0YXRlKSB7CisgICAgICAgIHJldHVybiBzdGF0ZS0+Y2xpZW50LmFsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQorewor
ICAgIGlmIChtX21vY2tQaWNrZXJFbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbV9t
b2NrUGlja2VyRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1vY2tQaWNrZXIo
KS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQoreworICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbW9ja1BpY2tlcigp
LmRpc21pc3NQb3B1cCgpOworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tlcigpCit7CisgICAgaWYgKCFtX3BpY2tlck92
ZXJyaWRlKQorICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOworCisgICAgcmV0dXJuICptX3BpY2tlck92ZXJy
aWRlLmdldCgpOworfQorCitXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXJnZXRQaWNrZXIoKQoreworICAgIGlmIChtX21vY2tQaWNr
ZXJFbmFibGVkKQorICAgICAgICByZXR1cm4gbW9ja1BpY2tlcigpOworCisgICAgcmV0dXJuIHBs
YXRmb3JtUGlja2VyKCk7Cit9CisKK1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIoKQorICAgIDogbV90YXNrVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVyRmlyZWQpCisgICAgLCBtX3dhdGNo
ZG9nVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKQoreworfQorCitXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcigpID0gZGVmYXVsdDsKKworUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
PT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgY29u
dGV4dElkLnRvVUludDY0KCkpOworICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8
Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CisKKyAgICBpZiAobV9leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0KQorICAgICAgICBzY2hlZHVs
ZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7CisKKyAgICByZXR1cm4gY29udGV4dElkOworfQorCit2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xp
ZW50LCBjb250ZXh0SWQpOworICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsK
KworICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGluZGV4KTsKKyAgICBzY2hlZHVsZURlbGF5ZWRU
YXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
QWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGll
bnQmIGNsaWVudCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0YXRlLnNpemUoKTsgaSA+
IDA7IC0taSkgeworICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAtIDFdLT5jbGllbnQgPT0g
JmNsaWVudCkgeworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBtX2NsaWVu
dFN0YXRlLnJlbW92ZShpIC0gMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGll
bnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBib29sLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
IT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byYgY2xpZW50UmVxdWVzdGluZ1BpY2tlciA9IG1fY2xpZW50U3RhdGVbaW5k
ZXhdOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIHN0
YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwor
ICAgICAgICBzdGF0ZS0+cHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVu
dFJlcXVlc3RpbmdQaWNrZXI7CisgICAgfQorCisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisKKyAgICBib29s
IGhhc0FjdGl2ZVJvdXRlID0gZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVtpbmRleF0tPmZsYWdz
LCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKTsKKyAgICB0YXJnZXRQ
aWNrZXIoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY2xpZW50LnBsYXRmb3JtVmlldygpLCBG
bG9hdFJlY3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7Cit9CisK
K3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5l
d0ZsYWdzKQoreworICAgIHNpemVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsK
KyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY2hhbmdlZENsaWVudFN0YXRlID0gbV9j
bGllbnRTdGF0ZVtpbmRleF07CisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9s
ZEZsYWdzID0gY2hhbmdlZENsaWVudFN0YXRlLT5mbGFnczsKKyAgICBpZiAobmV3RmxhZ3MgPT0g
b2xkRmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCksICJuZXcgZmxhZ3Mg
PSAiLCBuZXdGbGFncyk7CisKKyAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPmZsYWdzID0gbmV3Rmxh
Z3M7CisKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdXBkYXRlQ29uZmlndXJh
dGlvbkZsYWdzID0gTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3Jp
bmcgfCBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
IHwgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVvOworICAgIGlmICgob2xkRmxhZ3MgJiB1
cGRhdGVDb25maWd1cmF0aW9uRmxhZ3MpICE9IChuZXdGbGFncyAmIHVwZGF0ZUNvbmZpZ3VyYXRp
b25GbGFncykpCisgICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0Nv
bmZpZ3VyYXRpb25UYXNrKTsKKworICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBw
bGF5aW5nVG9UYXJnZXRGbGFncyA9IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxE
ZXZpY2UgfCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbzsKKyAgICBpZiAoKG9sZEZsYWdz
ICYgcGxheWluZ1RvVGFyZ2V0RmxhZ3MpICE9IChuZXdGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZs
YWdzKSkgeworICAgICAgICBpZiAoZmxhZ3NBcmVTZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiAhZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiBmbGFnc0FyZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6
RGlkUGxheVRvRW5kKSkKKyAgICAgICAgICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+cGxheWVkVG9F
bmQgPSB0cnVlOworICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFdhdGNoZG9nVGltZXJDb25m
aWd1cmF0aW9uVGFzayk7CisgICAgfQorCisgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFt
X3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpIHx8ICFmbGFnc0FyZVNldChuZXdGbGFn
cywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIERvIG5vdCBpbnRlcnJ1cHQgYW5vdGhlciBlbGVtZW50IGFs
cmVhZHkgcGxheWluZyB0byBhIGRldmljZS4KKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGll
bnRTdGF0ZSkgeworICAgICAgICBpZiAoc3RhdGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVT
ZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKKyAgICAg
ICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0
KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0byB0aGUgZGV2aWNlIHVubGVz
cyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgorICAgIGlmICghZmxhZ3NBcmVTZXQobmV3Rmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBmbGFnc0FyZVNldChvbGRGbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInJldHVybmluZyBlYXJseSwgcGxheWJhY2sg
ZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAo
YXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIGlmIChzdGF0ZSA9PSBjaGFu
Z2VkQ2xpZW50U3RhdGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAgICAgICBzdGF0ZS0+Y2xp
ZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNl
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHRydWUpIik7CisgICAgY2hhbmdlZENsaWVudFN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY2hhbmdlZENsaWVudFN0YXRlLT5jb250ZXh0SWQsIHRy
dWUpOworCisgICAgaWYgKGluZGV4ICYmIG1fY2xpZW50U3RhdGUuc2l6ZSgpID4gMSkKKyAgICAg
ICAgc3RkOjpzd2FwKG1fY2xpZW50U3RhdGUuYXQoaW5kZXgpLCBtX2NsaWVudFN0YXRlLmF0KDAp
KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5YmFja1RhcmdldChS
ZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCit7CisgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+
aGFzQWN0aXZlUm91dGUoKSk7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0
KTsKKyAgICBtX3RhcmdldENoYW5nZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2so
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2
YWlsYWJsZSkKK3sKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGF2YWlsYWJsZSk7CisgICAgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGF2YWls
YWJsZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkKKyAgICAgICAgc3Rh
dGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShzdGF0ZS0+
Y29udGV4dElkLCBhdmFpbGFibGUpOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKCkKK3sKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJE
aXNtaXNzZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0Nv
bmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25m
aWd1cmVOZXdDbGllbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0
ZSkgeworICAgICAgICBpZiAoIXN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0g
ZmFsc2U7CisgICAgICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAg
ICAgICAgICAgc3RhdGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShzdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKKworICAgICAgICBpZiAobV9wbGF5YmFja1Rh
cmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRz
KCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IG5vdEZvdW5kOwor
ICAgIGJvb2wgaGF2ZUFjdGl2ZVJvdXRlID0gbV9wbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNr
VGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGll
bnRTdGF0ZVtpXTsKKworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sIHN0YXRlLmdldCgpLCAiLCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVz
dGVkUGlja2VyKTsKKworICAgICAgICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc2VkKSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQorICAgICAg
ICAgICAgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOworCisgICAgICAgIGlm
IChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBmbGFnc0FyZVNl
dChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2Up
KQorICAgICAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpOworCisgICAg
ICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBoYXZl
QWN0aXZlUm91dGUgJiYgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAg
ICAgICBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IGk7CisgICAgfQorCisgICAg
aWYgKGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyICE9IG5vdEZvdW5kKQorICAgICAg
ICBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IGluZGV4T2ZDbGllbnRUaGF0UmVxdWVz
dGVkUGlja2VyOworICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RG
b3VuZCAmJiBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciAhPSBub3RGb3VuZCkKKyAg
ICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mTGFzdENsaWVudFRv
UmVxdWVzdFBpY2tlcjsKKyAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0g
bm90Rm91bmQgJiYgaGF2ZUFjdGl2ZVJvdXRlICYmIGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVb
MF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KSAmJiAhZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVswXS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSkKKyAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PSAwOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpXTsKKworICAgICAg
ICBpZiAobV9wbGF5YmFja1RhcmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxh
eWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigp
KTsKKworICAgICAgICBpZiAoaSAhPSBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCB8fCAh
aGF2ZUFjdGl2ZVJvdXRlKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoZmFsc2UpIik7CisgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzdGF0ZS0+cmVxdWVzdGVkUGlja2VyICYmIG1fcGxheWJhY2tUYXJn
ZXRQaWNrZXJEaXNtaXNzZWQpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBp
Y2tlcldhc0Rpc21pc3NlZCIpOworICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5wbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChzdGF0ZS0+Y29udGV4dElkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQgPSBmYWxzZTsKKyAgICAgICAgaWYg
KG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKQorICAg
ICAgICAgICAgc3RhdGUtPnJlcXVlc3RlZFBpY2tlciA9IGZhbHNlOworICAgIH0KKworICAgIGlm
IChoYXZlQWN0aXZlUm91dGUgJiYgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0YXRlW2luZGV4T2ZDbGll
bnRXaWxsUGxheVRvVGFyZ2V0XTsKKyAgICAgICAgaWYgKCFmbGFnc0FyZVNldChzdGF0ZS0+Zmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpKSB7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKKyAgICAg
ICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3RhcmdldENoYW5n
ZWQgPSBmYWxzZTsKKyAgICBjb25maWd1cmVXYXRjaGRvZ1RpbWVyKCk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCkK
K3sKKyAgICBib29sIG1vbml0b3JpbmdSZXF1aXJlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQXZh
aWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsKKyAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEg
PSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpKTsK
KyAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJh
Y2tUYXJnZXRNb25pdG9yaW5nKSB7CisgICAgICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlLT5m
bGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVu
ZXIpCisgICAgICAgICAgICBoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciA9IHRydWU7CisgICAgICAg
IGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCisgICAg
ICAgICAgICBoYXZlQ2xpZW50V2l0aE1lZGlhID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobW9u
aXRvcmluZ1JlcXVpcmVkIHx8IChoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciAmJiBoYXZlQ2xpZW50
V2l0aE1lZGlhKSkgeworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sICJzdGFydGluZyBtb25pdG9yaW5nIik7CisgICAgICAgIHRhcmdldFBpY2tlcigpLnN0
YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIG1vbml0
b3JpbmciKTsKKyAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1
bGVEZWxheWVkVGFzayhDb25maWd1cmF0aW9uVGFza3MgdGFza3MpCit7CisgICAgbV90YXNrRmxh
Z3MgfD0gdGFza3M7CisgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90KHRhc2tEZWxheUludGVy
dmFsKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXNrVGltZXJGaXJlZCgp
Cit7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrKQorICAg
ICAgICBjb25maWd1cmVOZXdDbGllbnRzKCk7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKQorICAgICAgICBjb25maWd1cmVQbGF5YmFja1Rhcmdl
dENsaWVudHMoKTsKKyAgICBpZiAobV90YXNrRmxhZ3MgJiBUYXJnZXRNb25pdG9yaW5nQ29uZmln
dXJhdGlvblRhc2spCisgICAgICAgIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygp
OworICAgIGlmIChtX3Rhc2tGbGFncyAmIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzaykK
KyAgICAgICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAgbV90YXNrRmxhZ3MgPSBO
b1Rhc2s7Cit9CisKK3NpemVfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpmaW5kKFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Ns
aWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2NsaWVudFN0YXRlW2ldLT5j
b250ZXh0SWQgPT0gY29udGV4dElkICYmICZtX2NsaWVudFN0YXRlW2ldLT5jbGllbnQgPT0gY2xp
ZW50KQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcmV0dXJuIG5vdEZvdW5k
OworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhdGNoZG9nVGlt
ZXIoKQoreworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGltZXJJbnRlcnZhbEFm
dGVyUGF1c2luZyB7IDFfaCB9OworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGlt
ZXJJbnRlcnZhbEFmdGVyUGxheWluZ1RvRW5kIHsgOF9taW4gfTsKKworICAgIGlmICghbV9wbGF5
YmFja1RhcmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkgeworICAg
ICAgICBpZiAobV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIEFMV0FZ
U19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVyIik7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OworICAgICAgICAgICAg
bV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBib29sIHN0b3BUaW1lciA9IGZhbHNlOworICAgIGJvb2wgZGlkUGxheVRvRW5k
ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKKworICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIHBsYXllZFRvRW5kID0gIiwgc3RhdGUtPnBsYXllZFRvRW5kKTsKKworICAgICAgICBpZiAo
ZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVy
bmFsRGV2aWNlKSAmJiBmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ1ZpZGVvKSkKKyAgICAgICAgICAgIHN0b3BUaW1lciA9IHRydWU7CisgICAgICAgIGlm
IChzdGF0ZS0+cGxheWVkVG9FbmQpCisgICAgICAgICAgICBkaWRQbGF5VG9FbmQgPSB0cnVlOwor
ICAgICAgICBzdGF0ZS0+cGxheWVkVG9FbmQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3Rv
cFRpbWVyKSB7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
XywgInN0b3BwaW5nIHRpbWVyIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwg
PSB7IH07CisgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgU2Vjb25kcyBpbnRlcnZhbCA9IGRpZFBsYXlUb0VuZCA/IHdhdGNoZG9nVGltZXJJbnRl
cnZhbEFmdGVyUGxheWluZ1RvRW5kIDogd2F0Y2hkb2dUaW1lckludGVydmFsQWZ0ZXJQYXVzaW5n
OworICAgICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAh
bV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1l
ci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOworICAgICAgICB9CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50
ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50
ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXyk7CisgICAgdGFyZ2V0UGlja2VyKCkuaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKKyNpbmNs
dWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVk
ZSAiUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2xpZW50U3RhdGU7CitjbGFzcyBJ
bnRSZWN0OworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyOworY2xhc3MgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIpOworcHVibGljOgorCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZCgpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQo
Ym9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciBhZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVB
bGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBJbnRSZWN0JiwgYm9vbCwgYm9vbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGllbnRTdGF0ZURpZENoYW5nZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50
JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKworICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcigp
OworICAgIHZpcnR1YWwgfldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKKworICAgIHZpcnR1YWwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgcGxhdGZvcm1QaWNrZXIoKSA9IDA7
CisgICAgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHBsYXRmb3JtTWFuYWdlcigpOwor
Citwcml2YXRlOgorCisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgdGFy
Z2V0UGlja2VyKCk7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2sm
IG1vY2tQaWNrZXIoKTsKKworICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVu
dAorICAgIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCgpIG92ZXJyaWRlOworCisgICAgc2l6ZV90IGZpbmQoV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudCosIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIp
OworCisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldENsaWVudHMoKTsKKyAgICB2b2lk
IGNvbmZpZ3VyZU5ld0NsaWVudHMoKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
TW9uaXRvcmluZygpOworICAgIHZvaWQgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAg
ZW51bSBDb25maWd1cmF0aW9uVGFza0ZsYWdzIHsKKyAgICAgICAgTm9UYXNrID0gMCwKKyAgICAg
ICAgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAwLAorICAgICAgICBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDEsCisgICAgICAgIFRhcmdldE1vbml0b3JpbmdD
b25maWd1cmF0aW9uVGFzayA9IDEgPDwgMiwKKyAgICAgICAgV2F0Y2hkb2dUaW1lckNvbmZpZ3Vy
YXRpb25UYXNrID0gMSA8PCAzLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBDb25maWd1
cmF0aW9uVGFza3M7CisgICAgU3RyaW5nIHRvU3RyaW5nKENvbmZpZ3VyYXRpb25UYXNrcyk7CisK
KyAgICB2b2lkIHNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzKTsKKyAgICB2
b2lkIHRhc2tUaW1lckZpcmVkKCk7CisKKyAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwor
CisgICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBsb2dnZXIoKTsKKworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fdGFza1RpbWVyOworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fd2F0Y2hkb2dUaW1lcjsKKworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50U3RhdGU+PiBtX2NsaWVudFN0YXRlOworICAgIFJlZlB0
cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4gbV9waWNrZXJPdmVy
cmlkZTsKKyAgICBDb25maWd1cmF0aW9uVGFza3MgbV90YXNrRmxhZ3MgeyBOb1Rhc2sgfTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBT
ZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CisgICAgYm9vbCBtX2V4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGFyZ2V0Q2hhbmdlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fbW9ja1BpY2tlckVuYWJsZWQgeyBmYWxzZSB9OworfTsKKworU3Ry
aW5nIG1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3M+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBmbGFncykgeyByZXR1cm4gV2ViQ29yZTo6bWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKGZsYWdzKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJw
bGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1
ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVkZSAiUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1WaWV3KiBwbGF0Zm9ybVZpZXcoKSBj
b25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY3NDUwKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MDkxLDE4ICs0MDkxLDggQEAKIAkJQzZGMDkwMEExNDMyN0I2MTAwNjg1ODQ5
IC8qIE11dGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM2RjA5MDAxMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbkNhbGxiYWNr
LmggKi87IH07CiAJCUM2RjA5MDBGMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbk9ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOTAw
NjE0MzI3QjYxMDA2ODU4NDkgLyogTXV0YXRpb25PYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM2RjA5MDJEMTQzMjdENEYwMDY4NTg0
OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RjA5MDI1MTQzMjdENEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2Jz
ZXJ2ZXIuaCAqLzsgfTsKLQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwMjdG
NDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovOyB9OwotCQlDOTA4NDNEMDFC
MThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwODQzQ0UxQjE4RTQ3RDAwQjY4NTY0IC8q
IE1lZGlhUmVtb3RlQ29udHJvbHMuaCAqLzsgfTsKLQkJQzkwRjY1NTUxQjIyNTNCMTAwMjE2M0Ex
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzkwRjY1NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwICovOyB9OwotCQlDOTBGNjU1NjFCMjI1M0JFMDAyMTYzQTEgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzkwRjY1NTQxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAq
LzsgfTsKLQkJQzkzN0ZFOEQxQjFGNjgyMTAwOEVDQzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM5NjhCMkU2MUIxRTcyRjcwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
LmggKi87IH07Ci0JCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzk2RjVFQzExQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLmggKi87IH07Ci0JCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAv
KiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTZGNUVDMzFCNTg3MjI2MDA5MUVBOUQgLyog
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwICovOyB9OwotCQlDOTZGNUVDODFC
NTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5NkY1RUM0MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovOyB9Owog
CQlDOTkwNTgxMzFFMzJDNzVGMDA3M0JEREEgLyogU3VjY2Vzc09yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEg
LyogU3VjY2Vzc09yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzlENDY3MDUxRTYwQzQ2NTAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5RDQ2NzA0MUU2MEMz
RUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDOUQ4NTFFRTFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDOUY4
N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUY4N0NGRDFCMjhFNUY2MDA5NzlC
ODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFu
aW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
QTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQTZDMTUzMDIyMEI5OENDMDA1
NUNCRkMgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQUUzQjgxRkI4MEVBRTAwRjVFRkIyIC8qIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDQTdFOUI0OTI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0E3RTlCNDcyNDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCAqLzsg
fTsKQEAgLTE0MTU2LDI5ICsxNDE0Niw4IEBACiAJCUM2RjA5MDI0MTQzMjdENEYwMDY4NTg0OSAv
KiBKU011dGF0aW9uT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNdXRhdGlvbk9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzZGMDkwMjUxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uT2JzZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGMDkxN0UxNDNBMkJCOTAwNjg1ODQ5IC8qIEpTTXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDOTAyNkI2MzFCMUNGNUFCMDAxRDk5QTcgLyogSlNNZWRpYVJlbW90ZUNvbnRyb2xz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFSZW1vdGVD
b250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI2QjY0MUIxQ0Y1
QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3RlQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE1lZGlhU2Vzc2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5
MDI3RjNGMUIxRDBBRDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwODQzQ0QxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlh
UmVtb3RlQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFSZW1vdGVDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5
MDg0M0NFMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwRjY1NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MEY2
NTU0MUIyMjUzOTYwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzkzNDU4QkIxQjE4RDc3RTAwODhFRTEyIC8qIE1lZGlhUmVtb3Rl
Q29udHJvbHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTY4QjJFNTFCMUU3MDQ1MDBFRjFG
ODEgLyogSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MTWVkaWFF
bGVtZW50K01lZGlhU2Vzc2lvbi5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OTY4QjJFNjFCMUU3MkY3MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NjhCMkU3MUIxRTc3ODEwMEVGMUY4MSAvKiBIVE1MTWVk
aWFFbGVtZW50TWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDOTZGNUVDMTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzk2RjVFQzIxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUM0MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN1Y2Nlc3NPci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUQ0
NjcwNDFFNjBDM0VCMDA4MTk1RkIgLyogQXV0b3BsYXlFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dXRvcGxheUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5RDg1MUVFMUIz
OURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNlc3Npb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOURBREJDQTFCMUQzQjI1MDAxRjE3
RDggLyogSlNNZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlGODdDRkQx
QjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU2Vzc2lvbkV2ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4
NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EwOTFE
ODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5
bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTE2MzVEQzIwNzJF
NzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTY2OTYsMzAgKzE2NjY1LDYgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKLQkJMDcwOUQ3OEIxQUU1NTUyRTAwNEU0MkY4IC8qIG1lZGlhc2Vzc2lv
biAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzk2OEIy
RTUxQjFFNzA0NTAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbCAq
LywKLQkJCQlDOTY4QjJFNzFCMUU3NzgxMDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlh
U2Vzc2lvbi5jcHAgKi8sCi0JCQkJQzk2OEIyRTYxQjFFNzJGNzAwRUYxRjgxIC8qIEhUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uaCAqLywKLQkJCQlDOTA4NDNDRDFCMThFNDdEMDBCNjg1NjQg
LyogTWVkaWFSZW1vdGVDb250cm9scy5jcHAgKi8sCi0JCQkJQzkwODQzQ0UxQjE4RTQ3RDAwQjY4
NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCAqLywKLQkJCQlDOTM0NThCQjFCMThENzdFMDA4
OEVFMTIgLyogTWVkaWFSZW1vdGVDb250cm9scy5pZGwgKi8sCi0JCQkJQzkwMjdGM0YxQjFEMEFE
MjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi8sCi0JCQkJQzkwMjdGNDAxQjFEMEFEMjAw
QkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovLAotCQkJCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZF
RiAvKiBNZWRpYVNlc3Npb24uaWRsICovLAotCQkJCUM5Rjg3Q0ZEMUIyOEU1RjYwMDk3OUI4MyAv
KiBNZWRpYVNlc3Npb25FdmVudHMuaCAqLywKLQkJCQlDOTBGNjU1MzFCMjI1Mzk2MDAyMTYzQTEg
LyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8sCi0JCQkJQzkwRjY1NTQxQjIyNTM5NjAwMjE2
M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKLQkJCQlDOUQ4NTFFRTFCMzlEQzc4MDA4
NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLywKLQkJCQk0NDZEQzY0NjI0QTI5RDlC
MDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAot
CQkJCTA3MDlENzhDMUFFNTU1NTQwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCAqLywKLQkJCQkwNzA5RDc4RDFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oICovLAotCQkJCTA3MDlENzk0MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1
MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0yMzI0OSw3ICsyMzE5NCw2IEBACiAJCQkJQ0RCRDNEMjcxRkU4NUM5MjAwMTJDNTQ1
IC8qIG1lZGlhY2FwYWJpbGl0aWVzICovLAogCQkJCUNEOUEzN0Y1MTdDN0Q5MzYwMEM1RkE3QSAv
KiBtZWRpYWNvbnRyb2xzICovLAogCQkJCTREM0IwMEEwMjE1RDVDMEYwMDc2Qjk4MyAvKiBtZWRp
YXJlY29yZGVyICovLAotCQkJCTA3MDlENzhCMUFFNTU1MkUwMDRFNDJGOCAvKiBtZWRpYXNlc3Np
b24gKi8sCiAJCQkJQjFBOTQyREQxNUI1Q0UyMjAwRDUyNUQxIC8qIG1lZGlhc291cmNlICovLAog
CQkJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk3MUQ2
QUEzOTFEQTRFQUY3MDBCMjM5NjkgLyogbW9kZXJuLW1lZGlhLWNvbnRyb2xzICovLApAQCAtMjQz
MzYsMTAgKzI0MjgwLDYgQEAKIAkJCQkyRDlCRjcxMTFEQkZEOTE0MDA3QTdEOTkgLyogSlNNZWRp
YUVuY3J5cHRlZEV2ZW50LmggKi8sCiAJCQkJRTQ0NjE0MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpT
TWVkaWFFcnJvci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVk
aWFFcnJvci5oICovLAotCQkJCUM5MDI2QjYzMUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVt
b3RlQ29udHJvbHMuY3BwICovLAotCQkJCUM5MDI2QjY0MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01l
ZGlhUmVtb3RlQ29udHJvbHMuaCAqLywKLQkJCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyog
SlNNZWRpYVNlc3Npb24uY3BwICovLAotCQkJCUM5REFEQkNBMUIxRDNCMjUwMDFGMTdEOCAvKiBK
U01lZGlhU2Vzc2lvbi5oICovLAogCQkJCTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09F
U0VsZW1lbnRJbmRleFVpbnQuY3BwICovLAogCQkJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAv
KiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLywKIAkJCQk5MDAxNzg3RTEyRTAzNzA3MDA2NDg0
NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCAqLywKQEAgLTI2ODYwLDcgKzI2ODAw
LDYgQEAKIAkJCQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICovLAogCQkJCTlBQzZG
MDIwMjExNDhGMUUwMENCREEwNiAvKiBtZWRpYWNhcGFiaWxpdGllcyAqLywKIAkJCQk0RDNCNTAx
MjIxN0U1OEEzMDA2NjVEQjEgLyogbWVkaWFyZWNvcmRlciAqLywKLQkJCQlDOTZGNUVCRjFCNTg3
MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9uICovLAogCQkJCTA3MjIxQjkyMTdDRjBBRDQwMDg0
OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyog
bW9jayAqLywKIAkJCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0d29yayAqLywKQEAg
LTI3MTYzLDI1ICsyNzEwMiw2IEBACiAJCQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OwotCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNz
aW9uICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDOTZG
NUVDMDFCNTg3MjI2MDA5MUVBOUQgLyogbWFjICovLAotCQkJCUM5NkY1RUMzMUI1ODcyMjYwMDkx
RUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi8sCi0JCQkJQzk2
RjVFQzQxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0JCX07Ci0JCUM5NkY1RUMwMUI1ODcyMjYwMDkxRUE5RCAvKiBtYWMgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUM5NkY1RUMxMUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oICovLAot
CQkJCUM5NkY1RUMyMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlck1hYy5tbSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gbWFjOwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI3NTYyLDkgKzI3
NDgyLDEzIEBACiAJCUNFMjYxNjlEMTg3RTY1NTQwMDc5NTVGMyAvKiBhaXJwbGF5ICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NDZEQzY0NjI0QTI5RDlC
MDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAog
CQkJCUE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmNwcCAqLywKIAkJCQlBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovLAogCQkJCUE1REVCREExMTZG
QjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50Lmlk
bCAqLywKKwkJCQkwNzA5RDc4QzFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5jcHAgKi8sCisJCQkJMDcwOUQ3OEQxQUU1NTU1NDAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCAqLywKKwkJCQkwNzA5RDc5NDFBRTU1QTI5MDA0RTQyRjggLyogV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhaXJwbGF5Owog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxNTYxLDcgKzMxNDg1LDYgQEAKIAkJCQlB
OEVBN0NBQjBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDQ2MTNBNTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q1MjA5RTYxQjBCRDlFMTAwNzcxODRFIC8qIEhUTUxNZWRp
YUVsZW1lbnRFbnVtcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzkzN0ZFOEQxQjFGNjgyMTAwOEVD
QzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQzMxMkVBMjJGQ0Q3QzYwMDEyMDRFQyAvKiBIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxheWJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUY0MEExOTE2REYwMEE4RUY1RiAvKiBIVE1M
TWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJGMzFFMDc1MUZBM0I2MkIwMEUwNTlC
QSAvKiBIVE1MTWVudUl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyOTAzLDIzICsz
MjgyNiwxNiBAQAogCQkJCTQxNEI3RkFEMjREODFDQzEwMDMzRDQ0MiAvKiBNZWRpYVJlY29yZGVy
UHJpdmF0ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRENzNGOTRFMjE4QzRBODcwMDNB
M0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTc2RTg5NjIzQzM1MzdCMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1v
dGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlF
IC8qIE1lZGlhUmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRUZDRDdBMTlE
QjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQkY5REIzQzFEMzk3M0FEMDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3RDI3NUUxRUFDNTc5ODAw
QkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTAy
N0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVs
cGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyog
TWVkaWFTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzk2RjVFQzgxQjU4
NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5MEY2NTU2MUIyMjUz
QkUwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTdGN0FFRjIxMzlCRjZGMDBGQkE3RUMgLyogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJF
IC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3
QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQx
RUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTQ2LDggKzM1MDYyLDYgQEAKIAkJCQkxQjEyNEQ4
RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUM5NkY1RUM3MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyog
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgw
NDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
cmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjk4LDEwICsyOTgsNiBAQAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgi
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vz
c2lvbi5oIgotI2VuZGlmCi0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xv
b2suaCIKICNlbmRpZgpAQCAtNDE3NSwyMiArNDE3MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZUlzUGxheWluZ01lZGlhKHVpbnQKICAgICBzdGF0ZSB8PSBNZWRpYVN0cmVhbVRyYWNrOjpjYXB0
dXJlU3RhdGUoKnRoaXMpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAg
ICBpZiAoSFRNTE1lZGlhRWxlbWVudCogc291cmNlRWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6
OmVsZW1lbnRXaXRoSUQoc291cmNlRWxlbWVudElEKSkgewotICAgICAgICBpZiAoc291cmNlRWxl
bWVudC0+aXNQbGF5aW5nKCkpCi0gICAgICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpJ
c1NvdXJjZUVsZW1lbnRQbGF5aW5nOwotCi0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc291
cmNlRWxlbWVudC0+c2Vzc2lvbigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogY29udHJvbHMg
PSBzZXNzaW9uLT5jb250cm9scygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzLT5w
cmV2aW91c1RyYWNrRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBNZWRp
YVByb2R1Y2VyOjpJc1ByZXZpb3VzVHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAgICAgICAgICAg
ICBpZiAoY29udHJvbHMtPm5leHRUcmFja0VuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUgfD0gTWVkaWFQcm9kdWNlcjo6SXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKG1fdXNlckhhc0lu
dGVyYWN0ZWRXaXRoTWVkaWFFbGVtZW50KQogICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2Vy
OjpIYXNVc2VySW50ZXJhY3RlZFdpdGhNZWRpYUVsZW1lbnQ7CiAKQEAgLTc0NTksMTcgKzc0Mzks
NiBAQCB2b2lkIERvY3VtZW50OjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0RpCiAKICNlbmRpZiAv
LyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0KLU1lZGlhU2Vzc2lvbiYgRG9jdW1lbnQ6OmRlZmF1bHRNZWRpYVNlc3Npb24oKQot
ewotICAgIGlmICghbV9kZWZhdWx0TWVkaWFTZXNzaW9uKQotICAgICAgICBtX2RlZmF1bHRNZWRp
YVNlc3Npb24gPSBNZWRpYVNlc3Npb246OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLSAgICByZXR1cm4gKm1fZGVmYXVsdE1lZGlhU2Vzc2lvbjsKLX0KLQotI2VuZGlmCi0KIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnQ6OnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlz
aW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsNyArMTc3LDYgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNz
IE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNz
IE1lZGlhUXVlcnlNYXRjaGVyOwotY2xhc3MgTWVkaWFTZXNzaW9uOwogY2xhc3MgTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwog
Y2xhc3MgTm9kZUZpbHRlcjsKQEAgLTEwOTUsMTAgKzEwOTQsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCB2aWRlb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpIGNvbnN0OwogICAgIGJvb2wgbWVk
aWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICBNZWRpYVNlc3Npb24mIGRlZmF1bHRNZWRpYVNlc3Npb24oKTsKLSNlbmRpZgot
CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZShQQUw6OlNlc3Npb25JRCk7
CiAKICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CkBAIC0xOTUwLDEw
ICsxOTQ1LDYgQEAgcHJpdmF0ZToKICAgICBUYXJnZXRDbGllbnRUb0lkTWFwIG1fY2xpZW50VG9J
RE1hcDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgUmVmUHRyPE1l
ZGlhU2Vzc2lvbj4gbV9kZWZhdWx0TWVkaWFTZXNzaW9uOwotI2VuZGlmCi0KICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHk+IG1faWRiQ29ubmVjdGlvblByb3h5OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIy
LDYgQEAgTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYURldmljZXMgY29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQ
VEVEX01FRElBCiBNZWRpYVF1ZXJ5TGlzdAotTWVkaWFSZW1vdGVDb250cm9scyBjb25kaXRpb25h
bD1NRURJQV9TRVNTSU9OCiBNZWRpYVJlY29yZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQog
TWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRp
b25hbD1NRURJQV9TVFJFQU0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDEwICsxMzUsNiBAQAogI2luY2x1
ZGUgIldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCi0jZW5k
aWYKLQogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKQEAgLTMxNiwzMCArMzEyLDYgQEAgSGFzaFNldDxIVE1M
TWVkaWFFbGVtZW50Kj4mIEhUTUxNZWRpYUVsZQogICAgIHJldHVybiBlbGVtZW50czsKIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBIVE1M
TWVkaWFFbGVtZW50Kj4gSURUb0VsZW1lbnRNYXA7Ci0KLXN0YXRpYyBJRFRvRWxlbWVudE1hcCYg
ZWxlbWVudElEc1RvRWxlbWVudHMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJRFRv
RWxlbWVudE1hcD4gbWFwOwotICAgIHJldHVybiBtYXA7Ci19Ci0KLUhUTUxNZWRpYUVsZW1lbnQq
IEhUTUxNZWRpYUVsZW1lbnQ6OmVsZW1lbnRXaXRoSUQodWludDY0X3QgaWQpCi17Ci0gICAgaWYg
KGlkID09IEhUTUxNZWRpYUVsZW1lbnRJbnZhbGlkSUQpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGVsZW1lbnRJRHNUb0VsZW1lbnRzKCkuZ2V0KGlkKTsKLX0KLQotc3Rh
dGljIHVpbnQ2NF90IG5leHRFbGVtZW50SUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBlbGVt
ZW50SUQgPSAwOwotICAgIHJldHVybiArK2VsZW1lbnRJRDsKLX0KLSNlbmRpZgotCiBzdHJ1Y3Qg
TWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gewogICAgIGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24q
IHNlc3Npb247CiAgICAgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBv
c2UgcHVycG9zZTsKQEAgLTUxNSwxMyArNDg3LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpm
aW5pc2hJbml0aWFsaXphdAogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0gICAgbV9lbGVtZW50SUQgPSBuZXh0RWxlbWVudElEKCk7Ci0gICAgZWxlbWVudElEc1Rv
RWxlbWVudHMoKS5hZGQobV9lbGVtZW50SUQsIHRoaXMpOwotCi0gICAgc2V0U2Vzc2lvbkludGVy
bmFsKGRvY3VtZW50LmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7Ci0jZW5kaWYKLQogICAgIHJlZ2lz
dGVyV2l0aERvY3VtZW50KGRvY3VtZW50KTsKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQ
TEFURk9STShNQUMpCkBAIC01ODYsMTUgKzU1MSw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1M
TWVkaWFFbGVtZW50KCkKICAgICBpZiAobV9pc29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xh
dGVkV29ybGQtPmNsZWFyV3JhcHBlcnMoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
ICAgIGlmIChtX3Nlc3Npb24pIHsKLSAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVNZWRpYUVsZW1l
bnQoKnRoaXMpOwotICAgICAgICBtX3Nlc3Npb24gPSBudWxscHRyOwotICAgIH0KLQotICAgIGVs
ZW1lbnRJRHNUb0VsZW1lbnRzKCkucmVtb3ZlKG1fZWxlbWVudElEKTsKLSNlbmRpZgotCiAgICAg
bV9zZWVrVGFza1F1ZXVlLmNsb3NlKCk7CiAgICAgbV9yZXN1bWVUYXNrUXVldWUuY2xvc2UoKTsK
ICAgICBtX3Byb21pc2VUYXNrUXVldWUuY2xvc2UoKTsKQEAgLTM0NTAsMzEgKzM0MDYsNiBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAKICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQotICAgICAgICAvLyA2LjMgQWN0aXZhdGluZyBhIG1lZGlhIHNlc3Npb24gZnJvbSBhIG1lZGlh
IGVsZW1lbnQKLSAgICAgICAgLy8gV2hlbiB0aGUgcGxheSgpIG1ldGhvZCBpcyBpbnZva2VkLCB0
aGUgcGF1c2VkIGF0dHJpYnV0ZSBpcyB0cnVlLCBhbmQgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRl
IGhhcyB0aGUgdmFsdWUKLSAgICAgICAgLy8gSEFWRV9GVVRVUkVfREFUQSBvciBIQVZFX0VOT1VH
SF9EQVRBLCB0aGVuCi0gICAgICAgIC8vIDEuIExldCBtZWRpYSBzZXNzaW9uIGJlIHRoZSB2YWx1
ZSBvZiB0aGUgY3VycmVudCBtZWRpYSBzZXNzaW9uLgotICAgICAgICAvLyAyLiBJZiB3ZSBhcmUg
bm90IGN1cnJlbnRseSBpbiBtZWRpYSBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgcGFydGljaXBh
dGluZyBtZWRpYSBlbGVtZW50cyB0aGVuIGFwcGVuZAotICAgICAgICAvLyAgICBvdXJzZWx2ZXMg
dG8gdGhpcyBsaXN0LgotICAgICAgICAvLyAzLiBMZXQgYWN0aXZhdGVkIGJlIHRoZSByZXN1bHQg
b2YgcnVubmluZyB0aGUgbWVkaWEgc2Vzc2lvbiBpbnZvY2F0aW9uIGFsZ29yaXRobSBmb3IgbWVk
aWEgc2Vzc2lvbi4KLSAgICAgICAgLy8gNC4gSWYgYWN0aXZhdGVkIGlzIGZhaWx1cmUsIHBhdXNl
IG91cnNlbHZlcy4KLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VHSF9EQVRB
IHx8IG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBKSB7Ci0gICAgICAgICAgICBpZiAo
bV9zZXNzaW9uKSB7Ci0gICAgICAgICAgICAgICAgbV9zZXNzaW9uLT5hZGRBY3RpdmVNZWRpYUVs
ZW1lbnQoKnRoaXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+a2luZCgpID09
IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLmZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdl
KG1fZWxlbWVudElEKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAo
IW1fc2Vzc2lvbi0+aW52b2tlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF1c2UoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9D
VVJSRU5UX0RBVEEpCiAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0
aW5nRXZlbnQpOwogICAgIH0gZWxzZSBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RB
VEEpCkBAIC0zNjc3LDExICszNjA4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRl
ZChib29sIG11dAogCiAgICAgICAgIHVwZGF0ZVNob3VsZFBsYXkoKTsKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1f
ZWxlbWVudElEKTsKLSNlbHNlCiAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVk
aWEoKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CkBAIC01MDY4LDExICs0OTk1LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhYwogICAgICAgICBzZXRBdXRv
cGxheUV2ZW50UGxheWJhY2tTdGF0ZShBdXRvcGxheUV2ZW50UGxheWJhY2tTdGF0ZTo6UHJldmVu
dGVkQXV0b3BsYXkpOwogICAgIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGRv
Y3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9lbGVtZW50SUQpOwotI2Vsc2UKICAgICBk
b2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7Ci0jZW5kaWYKIAogICAgIGNoZWNrRm9y
QXVkaW9BbmRWaWRlbygpOwogICAgIHVwZGF0ZVNsZWVwRGlzYWJsaW5nKCk7CkBAIC01MjQ1LDEy
ICs1MTY4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAgICAg
ICBtX3BsYXllci0+c2V0Vm9sdW1lKGVmZmVjdGl2ZVZvbHVtZSgpKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlh
KG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwotI2VuZGlmCi0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC01
MzY3LDExICs1Mjg1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5aW5nKGJvb2wg
cAogICAgIGlmIChtX3BsYXlpbmcpCiAgICAgICAgIHNjaGVkdWxlTm90aWZ5QWJvdXRQbGF5aW5n
KCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlz
UGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwpAQCAtNzU5NSwxMSArNzUw
OSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVkaWFTdGF0ZSgKIAogICAgIG1f
bWVkaWFTdGF0ZSA9IHN0YXRlOwogICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYVN0YXRlRGlkQ2hh
bmdlKG1fbWVkaWFTdGF0ZSk7Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgZG9jdW1l
bnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYShtX2VsZW1lbnRJRCk7Ci0jZWxzZQorCiAgICAgZG9j
dW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAt
NzcwNCwxMSArNzYxNSw2IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVWb2x1
bWUKICAgICBkb3VibGUgdm9sdW1lTXVsdGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVt
ZSgpIDogMTsKICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCiAgICAgICAgIHZvbHVtZU11bHRp
cGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOwotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotICAgIGlmIChtX3Nob3VsZER1Y2spCi0gICAgICAgIHZvbHVtZU11bHRpcGxpZXIg
Kj0gMC4yNTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGll
cjsKIH0KIApAQCAtNzc2OSw3MCArNzY3NSw2IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y2Fu
U2F2ZU1lZGlhRGF0YSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKLQotZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllclZvbHVtZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnZvbHVtZSgpIDogMDsKLX0KLQot
TWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50OjpzZXNzaW9uKCkgY29uc3QKLXsKLSAgICBS
ZWZQdHI8TWVkaWFTZXNzaW9uPiBzZXNzaW9uID0gbV9zZXNzaW9uLmdldCgpOwotICAgIGlmIChz
ZXNzaW9uICYmIHNlc3Npb24gPT0gJmRvY3VtZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBzZXNzaW9uLmdldCgpOwotfQot
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlc3Npb24oTWVkaWFTZXNzaW9uKiBzZXNzaW9u
KQotewotICAgIC8vIDYuMS4gRXh0ZW5zaW9ucyB0byB0aGUgSFRNTE1lZGlhRWxlbWVudCBpbnRl
cmZhY2UKLSAgICAvLyAxLiBMZXQgbSBiZSB0aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVzdGlvbi4K
LSAgICAvLyAyLiBMZXQgb2xkIG1lZGlhIHNlc3Npb24gYmUgbeKAmXMgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLCBpZiBpdCBoYXMgb25lLCBhbmQgbnVsbCBvdGhlcndpc2UuCi0gICAgLy8gMy4gTGV0
IG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgbmV3IHZhbHVlIG9yIHRoZSB0b3At
bGV2ZWwgYnJvd3NpbmcgY29udGV4dOKAmXMgbWVkaWEgc2Vzc2lvbiBpZiB0aGUgbmV3IHZhbHVl
IGlzIG51bGwuCi0gICAgLy8gNC4gTGV0IG5ldyBtZWRpYSBzZXNzaW9uIGJlIG3igJlzIGN1cnJl
bnQgbWVkaWEgc2Vzc2lvbi4KLQotICAgIC8vIDUuIFVwZGF0ZSBtZWRpYSBzZXNzaW9uczogSWYg
b2xkIG1lZGlhIHNlc3Npb24gYW5kIG5ldyBtZWRpYSBzZXNzaW9uIGFyZSB0aGUgc2FtZSAod2hl
dGhlciBib3RoIG51bGwgb3IgYm90aCB0aGUgc2FtZSBtZWRpYSBzZXNzaW9uKSwgdGhlbiB0ZXJt
aW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKG1fc2Vzc2lvbi5nZXQoKSA9PSBzZXNzaW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIC8vIDYuIElm
IG0gaXMgYW4gYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50IG9mIG9sZCBtZWRpYSBzZXNzaW9u
LCB0aGVuIHBhdXNlIG0gYW5kIHJlbW92ZSBtIGZyb20gb2xkIG1lZGlhIHNlc3Npb27igJlzIGxp
c3Qgb2YgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAgICAgaWYgKG1fc2Vzc2lv
bi0+aXNNZWRpYUVsZW1lbnRBY3RpdmUoKnRoaXMpKQotICAgICAgICAgICAgcGF1c2UoKTsKLQot
ICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZU1lZGlhRWxlbWVudCgqdGhpcyk7Ci0KLSAgICAgICAg
Ly8gNy4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwgYW5kIG5vIGxvbmdlciBoYXMg
b25lIG9yIG1vcmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cywgdGhlbiBydW4gdGhlIG1l
ZGlhIHNlc3Npb24gZGVhY3RpdmF0aW9uIGFsZ29yaXRobSBmb3Igb2xkIG1lZGlhIHNlc3Npb24u
Ci0gICAgICAgIGlmICghbV9zZXNzaW9uLT5oYXNBY3RpdmVNZWRpYUVsZW1lbnRzKCkpCi0gICAg
ICAgICAgICBtX3Nlc3Npb24tPmRlYWN0aXZhdGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoc2Vzc2lv
bikKLSAgICAgICAgc2V0U2Vzc2lvbkludGVybmFsKCpzZXNzaW9uKTsKLSAgICBlbHNlCi0gICAg
ICAgIHNldFNlc3Npb25JbnRlcm5hbChkb2N1bWVudCgpLmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7
Ci19Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2Vzc2lvbkludGVybmFsKE1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKLXsKLSAgICBtX3Nlc3Npb24gPSAmc2Vzc2lvbjsKLSAgICBzZXNzaW9u
LmFkZE1lZGlhRWxlbWVudCgqdGhpcyk7Ci0gICAgbV9raW5kID0gc2Vzc2lvbi5raW5kKCk7Ci19
Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRHVjayhib29sIGR1Y2spCi17Ci0g
ICAgaWYgKG1fc2hvdWxkRHVjayA9PSBkdWNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3No
b3VsZER1Y2sgPSBkdWNrOwotICAgIHVwZGF0ZVZvbHVtZSgpOwotfQotCi0jZW5kaWYKLQogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjphbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFu
Z2VkKCkKIHsKICAgICBpZiAocG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9tZWRpYVNlc3Npb24t
PnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSAmJiAhaXNGdWxsc2NyZWVuKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMjY3
NDUwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4MCwyMSArNDgwLDYgQEAgcHVibGljOgogICAgIHZvaWQgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogICAgIHZvaWQgbWVkaWFMb2FkaW5n
RmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBwbGF5ZXJWb2x1bWUoKSBj
b25zdDsKLQotICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsg
fQotICAgIHZvaWQgc2V0S2luZChjb25zdCBTdHJpbmcmIGtpbmQpIHsgbV9raW5kID0ga2luZDsg
fQotCi0gICAgTWVkaWFTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZXNz
aW9uKE1lZGlhU2Vzc2lvbiopOwotCi0gICAgdm9pZCBzZXRTaG91bGREdWNrKGJvb2wpOwotCi0g
ICAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnRXaXRoSUQodWludDY0X3QpOwotICAg
IHVpbnQ2NF90IGVsZW1lbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudElEOyB9Ci0jZW5k
aWYKLQogICAgIFJlZlB0cjxWaWRlb1BsYXliYWNrUXVhbGl0eT4gZ2V0VmlkZW9QbGF5YmFja1F1
YWxpdHkoKTsKIAogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJlbG9hZDsgfQpAQCAtNzAyLDEwICs2ODcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIHNldFNlc3Npb25JbnRlcm5hbChNZWRpYVNlc3Np
b24mKTsKLSNlbmRpZgotCiAgICAgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBv
dmVycmlkZTsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBvdmVycmlk
ZTsKIApAQCAtMTAzNywxMyArMTAxOCw2IEBAIHByaXZhdGU6CiAgICAgLy8gY2FsbGluZyB0aGUg
bWVkaWEgZW5naW5lIHJlY3Vyc2l2ZWx5LgogICAgIGludCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXll
ckNhbGxiYWNrIHsgMCB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgU3RyaW5n
IG1fa2luZDsKLSAgICBSZWZQdHI8TWVkaWFTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgYm9vbCBt
X3Nob3VsZER1Y2sgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fZWxlbWVudElEOwotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9t
ZWRpYVNvdXJjZTsKICAgICB1bnNpZ25lZCBtX2Ryb3BwZWRWaWRlb0ZyYW1lcyB7IDAgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDEy
ICs0NjMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hh
bmdlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncywgdWludDY0X3QpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KEF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxB
dXRvcGxheUV2ZW50RmxhZ3M+KSB7IH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAg
IHZpcnR1YWwgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENo
YW5nZShib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRD
aGFuZ2UoY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QpIHsgfQotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICB2aXJ0dWFsIGJvb2wgd3JhcENyeXB0b0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDEwICsxNTMsNiBAQAogI2luY2x1
ZGUgIlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuaCIKICNlbmRpZgpAQCAtMjA2MiwzMSArMjA1OCw2IEBAIHZvaWQgUGFnZTo6cmVzdW1l
QWxsTWVkaWFCdWZmZXJpbmcoKQogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLQotdm9pZCBQYWdlOjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlw
ZSkKLXsKLSAgICBzd2l0Y2ggKGV2ZW50VHlwZSkgewotICAgIGNhc2UgTWVkaWFFdmVudFR5cGU6
OlBsYXlQYXVzZToKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9n
Z2xlUGxheWJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6
VHJhY2tOZXh0OgotICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5za2lw
VG9OZXh0VHJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6
VHJhY2tQcmV2aW91czoKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCku
c2tpcFRvUHJldmlvdXNUcmFjaygpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQg
UGFnZTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxl
bWVudElEKQotewotICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gSFRNTE1lZGlh
RWxlbWVudDo6ZWxlbWVudFdpdGhJRChlbGVtZW50SUQpKQotICAgICAgICBlbGVtZW50LT5zZXRW
b2x1bWUodm9sdW1lLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLX0KLQotI2VuZGlmCi0KIHVuc2ln
bmVkIFBhZ2U6OnN1YmZyYW1lQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBtYWluRnJhbWUo
KS50cmVlKCkuZGVzY2VuZGFudENvdW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24g
MjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDEwICs2Myw2IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVzdC5oIgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25FdmVu
dHMuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNp
bmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2VuZGlmCkBAIC02NTYsMTEg
KzY1Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJv
b2wgY2FuVXNlKSB7IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBjYW5Vc2U7IH0KICAgICBi
b29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Vc2VDcmVk
ZW50aWFsU3RvcmFnZTsgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3Qp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZv
aWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjY3NDUw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbklu
dGVycnVwdGlvblByb3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXIuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLU1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOjpNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlckNsaWVudCYgY2xpZW50KQotICAgIDogbV9jbGllbnQoJmNsaWVudCkKLXsKLX0KLQotTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI6On5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlcigpID0gZGVmYXVsdDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXIuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcl9oCi0jZGVmaW5lIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyX2gKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNz
IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IHsKLSAgICBDb250ZW50LAotICAgIFRy
YW5zaWVudCwKLSAgICBUcmFuc2llbnRTb2xvCi19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVw
dGluZ0NhdGVnb3J5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFbmRPZkludGVy
cnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSkgPSAw
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyPiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXIoTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmKTsKLSAg
ICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcigpOwotCi0gICAgLy8g
VG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxp
c3RlbmluZ0ZvckludGVycnVwdGlvbnMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgPSAwOwotCi0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2NsaWVudDsgfQot
Ci1wcml2YXRlOgotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50KiBt
X2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJfaCAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21h
Yy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uUHJvdmlkZXJNYWMuaAkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYy5oCShub25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWNfaAotI2RlZmluZSBNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hY19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlck1hYyA6IHB1YmxpYyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXI6Ok1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOwotCi0gICAgdm9pZCBiZWdp
bkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYygpID0gZGVmYXVsdDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNT
SU9OKSAmJiBQTEFURk9STShNQUMpCi0KLSNlbmRpZiAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hY19oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNl
c3Npb24vbWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0JKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJNYWMubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hYy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIFBMQVRGT1JN
KE1BQykKLQotI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERpZEJlZ2lu
UmluZ2luZ05vdGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlkQmVnaW5SaW5naW5nIik7Ci1zdGF0
aWMgY29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERpZEVuZFJpbmdpbmdOb3RpZmljYXRpb24gPSBDRlNU
UigiQ2FsbERpZEVuZFJpbmdpbmciKTsKLXN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBjYWxsRGlk
Q29ubmVjdE5vdGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlkQ29ubmVjdCIpOwotCi1zdGF0aWMg
dm9pZCBjYWxsRGlkQmVnaW5SaW5naW5nKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBv
YnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0g
ICAgQVNTRVJUX0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyKiBwcm92aWRlciA9IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlciopb2JzZXJ2ZXI7Ci0gICAgcHJvdmlkZXItPmNsaWVudCgpLmRpZFJlY2VpdmVTdGFydE9m
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5
OjpUcmFuc2llbnQpOwotfQotCi1zdGF0aWMgdm9pZCBjYWxsRGlkRW5kUmluZ2luZyhDRk5vdGlm
aWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lk
KiwgQ0ZEaWN0aW9uYXJ5UmVmKQotewotICAgIEFTU0VSVF9BUkcob2JzZXJ2ZXIsIG9ic2VydmVy
KTsKLSAgICBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyogcHJvdmlkZXIgPSAo
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMqKW9ic2VydmVyOwotICAgIHByb3Zp
ZGVyLT5jbGllbnQoKS5kaWRSZWNlaXZlRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGNhbGxEaWRDb25uZWN0KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZl
ciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgQVNT
RVJUX0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyTWFjKiBwcm92aWRlciA9IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYyopb2JzZXJ2ZXI7Ci0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGll
bnQmIGNsaWVudCA9IHByb3ZpZGVyLT5jbGllbnQoKTsKLSAgICBjbGllbnQuZGlkUmVjZWl2ZUVu
ZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVn
b3J5OjpUcmFuc2llbnQpOwotICAgIGNsaWVudC5kaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlv
bk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeTo6Q29udGVudCk7
Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWM6OmJlZ2luTGlz
dGVuaW5nRm9ySW50ZXJydXB0aW9ucygpCi17Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYg
bm90aWZpY2F0aW9uQ2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXREaXN0cmlidXRlZENl
bnRlcigpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9u
Q2VudGVyLCB0aGlzLCBjYWxsRGlkQmVnaW5SaW5naW5nLCBjYWxsRGlkQmVnaW5SaW5naW5nTm90
aWZpY2F0aW9uLCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3Rp
ZmljYXRpb25DZW50ZXIsIHRoaXMsIGNhbGxEaWRFbmRSaW5naW5nLCBjYWxsRGlkRW5kUmluZ2lu
Z05vdGlmaWNhdGlvbiwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
bm90aWZpY2F0aW9uQ2VudGVyLCB0aGlzLCBjYWxsRGlkQ29ubmVjdCwgY2FsbERpZENvbm5lY3RO
b3RpZmljYXRpb24sIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVs
aXZlckltbWVkaWF0ZWx5KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlck1hYzo6c3RvcExpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKQotewotICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyUmVtb3ZlRXZlcnlPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldERp
c3RyaWJ1dGVkQ2VudGVyKCksIHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUs
MTEgKzI4NSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oIgogI2VuZGlmCkBAIC00Mjg2LDU3ICs0MjgxLDggQEAgYm9vbCBJbnRlcm5hbHM6OmVsZW1l
bnRJc0Jsb2NraW5nRGlzcGxheQogewogICAgIHJldHVybiBlbGVtZW50LmlzRGlzYWJsaW5nU2xl
ZXAoKTsKIH0KLQogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotCi12b2lkIEludGVybmFsczo6c2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdv
cnkpCi17Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVN0
YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oY2F0ZWdvcnkpOwotfQotCi12b2lkIEludGVy
bmFsczo6c2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlh
U2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KQotewotICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNh
dGlvbihjYXRlZ29yeSk7Ci19Ci0KLVN0cmluZyBJbnRlcm5hbHM6Om1lZGlhU2Vzc2lvbkN1cnJl
bnRTdGF0ZShNZWRpYVNlc3Npb24qIHNlc3Npb24pIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChzZXNz
aW9uLT5jdXJyZW50U3RhdGUoKSkgewotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0
aXZlOgotICAgICAgICByZXR1cm4gImFjdGl2ZSI7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OlN0
YXRlOjpJbnRlcnJ1cHRlZDoKLSAgICAgICAgcmV0dXJuICJpbnRlcnJ1cHRlZCI7Ci0gICAgY2Fz
ZSBNZWRpYVNlc3Npb246OlN0YXRlOjpJZGxlOgotICAgICAgICByZXR1cm4gImlkbGUiOwotICAg
IH0KLX0KLQotZG91YmxlIEludGVybmFsczo6bWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKEhUTUxN
ZWRpYUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX0FSRyhlbGVtZW50LCBl
bGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVudC0+cGxheWVyVm9sdW1lKCk7Ci19Ci0KLXZvaWQg
SW50ZXJuYWxzOjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQp
Ci17Ci0gICAgLy8gRklYTUU6IE5vIGdvb2QgcmVhc29uIHRvIHVzZSBhIHNpbmdsZSBmdW5jdGlv
biB3aXRoIGFuIGFyZ3VtZW50IGluc3RlYWQgb2YgdGhyZWUgZnVuY3Rpb25zLgotICAgIHN3aXRj
aCAoZXZlbnQpIHsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6OlBsYXlQYXVzZToKLSAgICAg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9nZ2xlUGxheWJhY2soKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpQ29udHJvbEV2ZW50OjpOZXh0VHJhY2s6Ci0gICAg
ICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb05leHRUcmFjaygpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6OlByZXZpb3VzVHJhY2s6
Ci0gICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb1ByZXZpb3Vz
VHJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0KICNpZiBFTkFCTEUoV0VCX0FVRElPKQogdm9pZCBJbnRlcm5hbHM6OnNl
dEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9D
b250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwgU3Ry
aW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAi
TWVkaWFFbGVtZW50U2Vzc2lvbi5oIgogI2VuZGlmCkBAIC02NjYsMTUgKzY2Miw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1l
bnQmKSBjb25zdDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9p
ZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSk7Ci0gICAgdm9pZCBzZW5kTWVkaWFTZXNzaW9uRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnkpOwotICAgIFN0cmluZyBtZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoTWVkaWFTZXNzaW9uJikg
Y29uc3Q7Ci0gICAgZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVt
ZW50JikgY29uc3Q7Ci0gICAgZW51bSBjbGFzcyBNZWRpYUNvbnRyb2xFdmVudCB7IFBsYXlQYXVz
ZSwgTmV4dFRyYWNrLCBQcmV2aW91c1RyYWNrIH07Ci0gICAgdm9pZCBzZW5kTWVkaWFDb250cm9s
RXZlbnQoTWVkaWFDb250cm9sRXZlbnQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRldmljZVN0YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJ
KHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTggKzQ2LDYgQEAgZW51bSBSZXNvdXJjZUxvYWRQcmlv
cml0eSB7CiAgICAgIlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2giCiB9OwogCi1bQ29uZGl0
aW9uYWw9TUVESUFfU0VTU0lPTl0gZW51bSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29y
eSB7Ci0gICAgImNvbnRlbnQiLAotICAgICJ0cmFuc2llbnQiLAotICAgICJ0cmFuc2llbnQtc29s
byIKLX07Ci0KLVtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBlbnVtIE1lZGlhQ29udHJvbEV2
ZW50IHsKLSAgICAicGxheS1wYXVzZSIsCi0gICAgIm5leHQtdHJhY2siLAotICAgICJwcmV2aW91
cy10cmFjayIKLX07Ci0KIGVudW0gQXV0b0ZpbGxCdXR0b25UeXBlIHsKICAgICAiTm9uZSIsCiAg
ICAgIkNvbnRhY3RzIiwKQEAgLTY5NiwxMSArNjg0LDYgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVn
b3J5IHsKIAogICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJpbmcgaW50ZXJydXB0aW9u
VHlwZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgZW5kTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFncyk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NF
U1NJT05dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlm
aWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7Ci0gICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnkgY2F0ZWdvcnkpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBET01TdHJpbmcg
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKE1lZGlhU2Vzc2lvbiBzZXNzaW9uKTsKLSAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShI
VE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9O
XSB1bmRlZmluZWQgc2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50IGV2ZW50
KTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlvbldpbGxCZWNv
bWVJbmFjdGl2ZSgpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQg
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKG9wdGlvbmFsIGJvb2xlYW4gc3VzcGVuZGVk
VW5kZXJMb2NrID0gZmFsc2UpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIw
MjAtMDktMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyBh
bGwgY29kZSBpbiBFTkFCTEUoTUVESUFfU0VTU0lPTikgYW5kIGFsbCBtZWRpYSBzZXNzaW9uCisg
ICAgICAgIHJlbGF0ZWQgU1BJLiBJdCB3YXMgbmV2ZXIgZW5hYmxlZCBhbmQgbm90aGluZyBldmVy
IGFkb3B0ZWQgaXQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBSZW1vdmUgbWVkaWEgc2Vzc2lvbiByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICog
U2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJNZWRp
YVNlc3Npb25NZXRhZGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL1dlYk1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgUmVtb3ZlIGFsbCBj
b2RlIGluIEVOQUJMRShNRURJQV9TRVNTSU9OKS4KKwogMjAyMC0wOS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIGZhc3Qv
Y2FudmFzL2NhbnZhcy1ibGVuZC1pbWFnZS5odG1sIGFuZCBmYXN0L2NhbnZhcy9jYW52YXMtYmxl
bmQtc29saWQuaHRtbCBmYWlsIG9uIG1hY09TCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI2
NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
OCw3ICsxOTgsNiBAQCBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCiBTaGFyZWQvV2Vi
SW1hZ2UuY3BwCiBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQv
V2ViS2l0MkluaXRpYWxpemUuY3BwIEBuby11bmlmeQotU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1l
dGFkYXRhLmNwcAogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCiBTaGFyZWQvV2ViTW91c2VF
dmVudC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTM4MCw3ICszNzksNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tIaXRUZXN0UmVzdWx0LmNwcAog
VUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLSW5z
cGVjdG9yLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAK
LVVJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAogVUlQcm9jZXNzL0FQ
SS9DL1dLTWVzc2FnZUxpc3RlbmVyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja0Rpc3BsYXku
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxNSArMjI2LDEyIEBAIFVJUHJvY2Vzcy9I
aWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2EKIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmNwcAogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAK
IFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKLVVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuY3BwCi1VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
Q2xpZW50LmNwcAogVUlQcm9jZXNzL1dlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKIFVJUHJv
Y2Vzcy9XS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tCiAKIFVJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZURhdGFSZWNvcmQuY3BwCiAKIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRNZW51TGlz
dGVuZXIuY3BwCi1VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tUZXN0aW5nU3VwcG9ydC5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJTY3JpcHRSZWYuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDEwICsxMDksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRl
eHQuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNlc3Npb25NZXRhZGF0YS5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdHVyZURldmljZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgpAQCAtMjExNywzMiArMjExMyw2IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhU2Vzc2lv
bk1ldGFkYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhU2Vzc2lvbk1l
dGFkYXRhJiByZXN1bHQpCi17Ci0gICAgZW5jb2RlciA8PCByZXN1bHQuYXJ0aXN0KCk7Ci0gICAg
ZW5jb2RlciA8PCByZXN1bHQuYWxidW0oKTsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC50aXRsZSgp
OwotICAgIGVuY29kZXIgPDwgcmVzdWx0LmFydHdvcmtVUkwoKTsKLX0KLQotYm9vbCBBcmd1bWVu
dENvZGVyPE1lZGlhU2Vzc2lvbk1ldGFkYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1l
ZGlhU2Vzc2lvbk1ldGFkYXRhJiByZXN1bHQpCi17Ci0gICAgU3RyaW5nIGFydGlzdCwgYWxidW0s
IHRpdGxlOwotICAgIFVSTCBhcnR3b3JrVVJMOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJ0
aXN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxi
dW0pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRs
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydHdv
cmtVUkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gTWVkaWFTZXNzaW9u
TWV0YWRhdGEodGl0bGUsIGFydGlzdCwgYWxidW0sIGFydHdvcmtVUkwpOwotICAgIHJldHVybiB0
cnVlOwotfQotI2VuZGlmCi0KIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDEwICsx
ODcsNiBAQCBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci1jbGFzcyBNZWRpYVNlc3Npb25NZXRhZGF0YTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCkBAIC02MzUsMTMgKzYz
MSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIH07CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YT4gewotICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsK
LSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJD
b3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpOwotfTsKLSNlbmRpZgotCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YSYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gZGVj
b2RlKERlY29kZXImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRp
YVNlc3Npb25NZXRhZGF0YS5jcHAJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZWY8V2ViTWVk
aWFTZXNzaW9uTWV0YWRhdGE+IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpjcmVhdGUoY29uc3Qg
TWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKG1ldGFkYXRhKSk7Ci19Ci0KLVdlYk1lZGlhU2Vz
c2lvbk1ldGFkYXRhOjpXZWJNZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBNZWRpYVNlc3Npb25N
ZXRhZGF0YSYgbWV0YWRhdGEpCi0gICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQotewotfQotCi1X
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YTo6fldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKCkKLXsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lP
TikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEuaAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFT
ZXNzaW9uTWV0YWRhdGEuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhX2gKLSNkZWZpbmUgV2ViTWVkaWFT
ZXNzaW9uTWV0YWRhdGFfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRl
ICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJNZWRpYVNlc3Npb25NZXRhZGF0YT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJik7Ci0gICAgfldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKCk7
Ci0KLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLnRpdGxlKCk7
IH0KLSAgICBTdHJpbmcgYXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnRpc3Qo
KTsgfQotICAgIFN0cmluZyBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW0o
KTsgfQotICAgIFN0cmluZyBhcnR3b3JrVVJMKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5h
cnR3b3JrVVJMKCkuc3RyaW5nKCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZWRp
YVNlc3Npb25NZXRhZGF0YShjb25zdCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpOwot
Ci0gICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEgbV9tZXRhZGF0YTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCi0K
LSNlbmRpZiAvLyBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDYgQEAg
cHVibGljOgogICAgICAgICBXZWJzaXRlUG9saWNpZXMsCiAgICAgICAgIFdpbmRvd0ZlYXR1cmVz
LAogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIE1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlciwKLSAgICAgICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEsCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShXRUJfQVVUSE4pCiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UsCiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCkBAIC00MjgsMTEgKzQyMyw2IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3QKICAgICAgICAgQVBJOjpP
YmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2llcywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6
OldpbmRvd0ZlYXR1cmVzLAogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIsCi0gICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSwKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OldlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlz
aW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDUsOCArMTA1LDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tIaXRUZXN0UmVzdQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJY29uRGF0YWJhc2Uq
IFdLSWNvbkRhdGFiYXNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNwZWN0
b3IqIFdLSW5zcGVjdG9yUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWY7Ci10eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciogV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tNZXNzYWdlTGlzdGVuZXIqIFdLTWVzc2FnZUxpc3RlbmVyUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uQWN0aW9uKiBXS05hdmlnYXRpb25B
Y3Rpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBX
S05hdmlnYXRpb25EYXRhUmVmOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCisjaW5jbHVkZSAiUHJvY2Vz
c1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlc1JlcGxpZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAko
bm9uZXhpc3RlbnQpCkBAIC0xLDExNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotCi0jaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY29uc3QgY2hhciogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIiOwotfQotCi1SZWY8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPiBXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXI6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
KHByb2Nlc3NQb29sKSk7Ci19Ci0KLVdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6V2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKLSAgICA6
IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKSB7IH0KLQotLy8gV2ViQ29udGV4dFN1
cHBsZW1lbnQKLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnJlZldlYkNvbnRl
eHRTdXBwbGVtZW50KCkKLXsKLSAgICBBUEk6Ok9iamVjdDo6cmVmKCk7Ci19Ci0KLXZvaWQgV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKLXsK
LSAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXI6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQp
OwotfQotCi1ib29sIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dmFsdWVGb3JQbGF5YmFj
a0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIGF0
dHJpYnV0ZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fZm9jdXNlZE1lZGlhRWxlbWVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fcGxheWJhY2tBdHRyaWJ1dGVzICYgYXR0
cmlidXRlOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxh
eWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0
ZSBhdHRyaWJ1dGUsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBtX3Bs
YXliYWNrQXR0cmlidXRlcyB8PSBhdHRyaWJ1dGU7Ci0gICAgZWxzZQotICAgICAgICBtX3BsYXli
YWNrQXR0cmlidXRlcyAmPSB+YXR0cmlidXRlOwotCi0gICAgbV9jbGllbnQuZGlkQ2hhbmdlUGxh
eWJhY2tBdHRyaWJ1dGUodGhpcywgYXR0cmlidXRlLCB2YWx1ZSk7Ci19Ci0KLXZvaWQgV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQoZG91
YmxlIHZvbHVtZSkKLXsKLSAgICBpZiAoIW1fZm9jdXNlZE1lZGlhRWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKFdlYlBhZ2VQcm94eSogcHJveHkgPSBtX2ZvY3VzZWRNZWRpYUVs
ZW1lbnQtPmZpcnN0KQotICAgICAgICBwcm94eS0+c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9s
dW1lLCBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPnNlY29uZCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyOjp1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFTdGF0
ZShXZWJQYWdlUHJveHkqIHByb3h5LCB1aW50NjRfdCBlbGVtZW50SUQsIFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBmbGFncykKLXsKLSAgICBpZiAobV9mb2N1c2VkTWVk
aWFFbGVtZW50KSB7Ci0gICAgICAgIGlmIChwcm94eSA9PSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQt
PmZpcnN0ICYmIGVsZW1lbnRJRCA9PSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPnNlY29uZCkgewot
ICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tBdHRyaWJ1dGUoSXNQbGF5aW5nLCBmbGFncyAmIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzU291cmNlRWxlbWVudFBsYXlpbmcpOwotICAgICAgICAg
ICAgdXBkYXRlUGxheWJhY2tBdHRyaWJ1dGUoSXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZCwgZmxh
Z3MgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpJc05leHRUcmFja0NvbnRyb2xFbmFibGVkKTsK
LSAgICAgICAgICAgIHVwZGF0ZVBsYXliYWNrQXR0cmlidXRlKElzUHJldmlvdXNUcmFja0NvbnRy
b2xFbmFibGVkLCBmbGFncyAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzUHJldmlvdXNUcmFj
a0NvbnRyb2xFbmFibGVkKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBXZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5JiBw
cm94eSwgdWludDY0X3QgZWxlbWVudElEKQotewotICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9
IG1ha2VVbmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOwotfQot
Ci12b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y2xlYXJGb2N1c2VkTWVkaWFFbGVt
ZW50KCkKLXsKLSAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBudWxscHRyOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmgJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNzMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxl
bWVudC5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIgot
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdHlwZWRl
ZiBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5KiwgdWludDY0X3Q+IEZvY3VzZWRNZWRpYUVsZW1lbnQ7
Ci0KLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Ok1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4sIHB1Ymxp
YyBXZWJDb250ZXh0U3VwcGxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIq
IHN1cHBsZW1lbnROYW1lKCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcj4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVD
bGllbnQoY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlKik7Ci0KLSAg
ICBib29sIHZhbHVlRm9yUGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJQbGF5YmFja0F0dHJpYnV0ZSkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVQbGF5YmFja0F0dHJp
YnV0ZXNGcm9tTWVkaWFTdGF0ZShXZWJQYWdlUHJveHkqLCB1aW50NjRfdCwgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKLSAgICB2b2lkIHNldFZvbHVtZU9mRm9jdXNl
ZE1lZGlhRWxlbWVudChkb3VibGUpOwotCi0gICAgdm9pZCBzZXRGb2N1c2VkTWVkaWFFbGVtZW50
KFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGNsZWFyRm9jdXNlZE1lZGlhRWxl
bWVudCgpOwotCi0gICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUEk6Ok9i
amVjdDo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyKFdlYlByb2Nlc3NQb29sKik7Ci0KLSAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVu
dAotICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgdXBkYXRl
UGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJp
YnV0ZSwgYm9vbCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9jdXNlZE1lZGlhRWxlbWVudD4g
bV9mb2N1c2VkTWVkaWFFbGVtZW50OwotICAgIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxh
eWJhY2tBdHRyaWJ1dGVzIG1fcGxheWJhY2tBdHRyaWJ1dGVzIHsgMCB9OwotICAgIFdlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudCBtX2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlckNsaWVudC5jcHAJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIgotCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQg
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50OjpkaWRDaGFuZ2VQbGF5YmFja0F0dHJp
YnV0ZShXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqIG1hbmFnZXIsIFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUgcGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wgdmFs
dWUpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQuZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUo
dG9BUEkobWFuYWdlciksIHBsYXliYWNrQXR0cmlidXRlLCB2YWx1ZSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAy
Njc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudF9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgotI2luY2x1ZGUgIldLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEFQ
SSB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjsKLQotY2xhc3MgV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZT4gewotcHVibGljOgotICAgIHZvaWQgZGlkQ2hh
bmdlUGxheWJhY2tBdHRyaWJ1dGUoV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKiwgV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSwgYm9vbCk7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0j
ZW5kaWYgLy8gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQ0LDEyICsyNDQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25N
ZXRhZGF0YS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWV0YWRhdGEuaD4KLSNl
bmRpZgotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkuaCIKICNlbmRpZgpAQCAtNjA2NywyNCArNjA2MSw2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi12b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBl
dmVudFR5cGUpCi17Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlTWVkaWFFdmVudChl
dmVudFR5cGUpKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVt
ZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKLXsKLSAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwgZWxlbWVudElEKSk7Ci19Ci0j
ZW5kaWYKLQogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3co
Ym9vbCBtYXlTdGFydE1lZGlhKQogewogICAgIGlmIChtYXlTdGFydE1lZGlhID09IG1fbWF5U3Rh
cnRNZWRpYVdoZW5JbldpbmRvdykKQEAgLTg5ODksMTIgKzg5NjUsNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bmF2aWdhdGlvbkdlc3R1cmVTbmFwCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlp
bmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbmV3U3RhdGUs
IHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKIHsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LSAgICBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqIGZvY3VzTWFuYWdlciA9IHByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigp
OwotICAgIEFTU0VSVChmb2N1c01hbmFnZXIpOwotICAgIGZvY3VzTWFuYWdlci0+dXBkYXRlUGxh
eWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlhU3RhdGUodGhpcywgc291cmNlRWxlbWVudElELCBuZXdT
dGF0ZSk7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFtX3By
b2Nlc3MtPnRocm90dGxlcigpLnNob3VsZEJlUnVubmFibGUoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtOTE0MywyNiArOTExMyw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpub3dQbGF5aW5nSW5mb0Nh
bGxiYWMKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi12b2lkIFdlYlBh
Z2VQcm94eTo6aGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2Uo
Ym9vbCBzdGF0ZSkKLXsKLSAgICBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1l
bnRzID0gc3RhdGU7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjptZWRpYVNlc3Npb25NZXRhZGF0
YURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRhdGEp
Ci17Ci0gICAgUmVmPFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhPiB3ZWJNZXRhZGF0YSA9IFdlYk1l
ZGlhU2Vzc2lvbk1ldGFkYXRhOjpjcmVhdGUobWV0YWRhdGEpOwotICAgIG1fdWlDbGllbnQtPm1l
ZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKCp0aGlzLCB3ZWJNZXRhZGF0YS5wdHIoKSk7Ci19
Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5n
ZSh1aW50NjRfdCBlbGVtZW50SUQpCi17Ci0gICAgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
KiBmb2N1c01hbmFnZXIgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4oKTsKLSAgICBBU1NFUlQoZm9jdXNNYW5hZ2VyKTsKLSAg
ICBmb2N1c01hbmFnZXItPnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoKnRoaXMsIGVsZW1lbnRJRCk7
Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2Vi
Q29yZTo6QXV0b3BsYXlFdmVudCBldmVudCwgT3B0aW9uU2V0PEF1dG9wbGF5RXZlbnRGbGFncz4g
ZmxhZ3MpCiB7CiAgICAgbV91aUNsaWVudC0+aGFuZGxlQXV0b3BsYXlFdmVudCgqdGhpcywgZXZl
bnQsIGZsYWdzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDEyICsxNjksNiBAQCBPQkpDX0NMQVNTIF9XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5OwogI2luY2x1ZGUgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLWNsYXNzIE1lZGlhU2Vzc2lvbk1ldGFkYXRhOwotfQotI2VuZGlmCi0KICNpZiBVU0Uo
RElSRUNUMkQpCiBpbnRlcmZhY2UgSUQzRDExRGV2aWNlMTsKICNlbmRpZgpAQCAtMTM0NCwxMiAr
MTMzOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAg
ICAgdm9pZCByZXN1bWVBbGxNZWRpYVBsYXliYWNrKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICBib29sIGhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50czsg
fQotICAgIHZvaWQgaGFuZGxlTWVkaWFFdmVudChXZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSk7Ci0g
ICAgdm9pZCBzZXRWb2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUsIHVpbnQ2NF90KTsKLSNlbmRp
ZgotICAgICAgICAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgZGlkQWxsb3dQ
b2ludGVyTG9jaygpOwogICAgIHZvaWQgZGlkRGVueVBvaW50ZXJMb2NrKCk7CkBAIC0xNDc1LDEy
ICsxNDYzLDYgQEAgcHVibGljOgogICAgIHZvaWQgbm93UGxheWluZ0luZm9DYWxsYmFjayhib29s
LCBib29sLCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNr
SUQpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIGhhc01l
ZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wpOwotICAgIHZv
aWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWV0YWRhdGEmKTsKLSAgICB2b2lkIGZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hh
bmdlKHVpbnQ2NF90KTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEFQSTo6SGl0
VGVzdFJlc3VsdCogbGFzdE1vdXNlTW92ZUhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RNb3VzZU1vdmVIaXRUZXN0UmVzdWx0LmdldCgpOyB9CiAgICAgdm9pZCBwZXJmb3JtSW1t
ZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCk7CkBAIC0y
Nzc4LDEwICsyNzYwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNOZXZlclJpY2hseUVkaXRh
YmxlRm9yVG91Y2hCYXIgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICBib29sIG1faGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMg
eyBmYWxzZSB9OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fcmVxdWlyZXNUYXJnZXRNb25p
dG9yaW5nIHsgZmFsc2UgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjY3NDY3KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC00NzQsMTIgKzQ3NCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
SXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UodW5zaWduZWQgc3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVs
ZW1lbnRJRCkKICAgICBIYW5kbGVBdXRvcGxheUV2ZW50KGVudW06dWludDhfdCBXZWJDb3JlOjpB
dXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdz
PiBmbGFncykKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIEhhc01lZGlhU2Vzc2lv
bldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCi0gICAgTWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEgbWV0
YWRhdGEpOwotICAgIEZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90
IGVsZW1lbnRJRCkKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1J
bW1lZGlhdGVBY3Rpb25IaXRUZXN0KHN0cnVjdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRh
IHJlc3VsdCwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw5ICsyODgsNiBAQCBXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jCiAgICAgYWRkU3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eT4oKTsKICAgICBhZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKTsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBhZGRTdXBwbGVtZW50
PFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4oKTsKLSNlbmRpZgogCiAgICAgcHJvY2Vzc1Bv
b2xzKCkuYXBwZW5kKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSw2IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmgiCi0jZW5kaWYKLQogI2lmIFVTRShTT1VQKQogI2luY2x1ZGUgPFdl
YkNvcmUvU291cE5ldHdvcmtQcm94eVNldHRpbmdzLmg+CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShyZXZpc2lvbiAyNjc0NjcpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsMTAgKzYwLDYgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgTmF2aWdh
dGlvbkFjdGlvbkRhdGE7Ci0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLWNsYXNzIFdlYk1l
ZGlhU2Vzc2lvbk1ldGFkYXRhOwotI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtMTYx
LDEwICsxNTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FwdHVyZVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncykgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVu
dEZsYWdzPikgeyB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKikgeyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaWYgSEFWRShBUFBfTElOS1MpCiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQoX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8gKikgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw2IEBAIGNs
YXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbjsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5Owot
Y2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOwotY2xhc3MgV2ViTWVkaWFTZXNzaW9u
TWV0YWRhdGE7CiBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjsKQEAgLTEzNiw4ICsx
MzQsNiBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tIVFRQQ29va2llU3RvcmVSZWYsCiBXS19BRERf
QVBJX01BUFBJTkcoV0tIaXRUZXN0UmVzdWx0UmVmLCBBUEk6OkhpdFRlc3RSZXN1bHQpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tJY29uRGF0YWJhc2VSZWYsIFdlYkljb25EYXRhYmFzZSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS0luc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCi1XS19BRERf
QVBJX01BUFBJTkcoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYsIFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlcikKLVdLX0FERF9BUElfTUFQUElORyhXS01lZGlhU2Vzc2lvbk1ldGFkYXRh
UmVmLCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSkKIFdLX0FERF9BUElfTUFQUElORyhXS01lc3Nh
Z2VMaXN0ZW5lclJlZiwgQVBJOjpNZXNzYWdlTGlzdGVuZXIpCiBXS19BRERfQVBJX01BUFBJTkco
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24pCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwgQVBJOjpOYXZpZ2F0aW9uRGF0YSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24g
MjY3NDY3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQxLDE2ICs0NDEsNiBAQCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJSZWYgV0tDb250ZXh0R2V0CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyUmVmPihXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3Jl
KCkpOwogfQogCi1XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBXS0NvbnRleHRHZXRNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dCktPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+
KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci0jZW5kaWYKLX0KLQogV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldE5v
dGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzIsNyArMTcyLDYgQEAgV0tfRVhQT1JUIFdLQ29va2llTWFuYWdlclJlZiBXS0NvbnRleHRHZQog
V0tfRVhQT1JUIFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldEdlb2xvY2F0aW9u
TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tJY29uRGF0YWJhc2VS
ZWYgV0tDb250ZXh0R2V0SWNvbkRhdGFiYXNlKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VY
UE9SVCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9y
YWdlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRI
X1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUpOwotV0tf
RVhQT1JUIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIFdLQ29udGV4dEdldE1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250
ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgV0tD
b250ZXh0R2V0UmVzb3VyY2VDYWNoZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpIFdLX0Nf
QVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZh
dWx0RGF0YVN0b3JlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MjY3NDY3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlE
IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKLSAgICByZXR1cm4gdG9BUEkoV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
OjpBUElUeXBlKTsKLSNlbHNlCi0gICAgcmV0dXJuIHRvQVBJKEFQSTo6T2JqZWN0OjpUeXBlOjpO
dWxsKTsKLSNlbmRpZgotfQotCi12b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Q2xp
ZW50KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSogY2xpZW50KQotewotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIHRvSW1wbChtYW5hZ2VyKS0+aW5pdGlhbGl6ZUNsaWVudChjbGllbnQp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNs
aWVudCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclZhbHVl
Rm9yUGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYgbWFuYWdl
ciwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSBhdHRyaWJ1dGUp
Ci17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvSW1wbChtYW5hZ2Vy
KS0+dmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0ZShhdHRyaWJ1dGUpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0obWFuYWdlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGF0dHJpYnV0ZSk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJT
ZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJS
ZWYgbWFuYWdlciwgZG91YmxlIHZvbHVtZSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LSAgICB0b0ltcGwobWFuYWdlciktPnNldFZvbHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVudCh2b2x1
bWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KHZvbHVtZSk7Ci0jZW5kaWYKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAkocmV2aXNpb24g
MjY3NDY3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2gKLSNkZWZpbmUgV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZu
ZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBf
X2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotZW51bSBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIHsKLSAgICBJc1BsYXlpbmcgICAgICAgICAgICAg
ICAgICAgICA9IDEgPDwgMCwKLSAgICBJc1ByZXZpb3VzVHJhY2tDb250cm9sRW5hYmxlZCA9IDEg
PDwgMSwKLSAgICBJc05leHRUcmFja0NvbnRyb2xFbmFibGVkICAgICA9IDEgPDwgMiwKLX07Ci10
eXBlZGVmIHVpbnQzMl90IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1
dGVzOwotCi0vLyBNZWRpYSBTZXNzaW9uIEZvY3VzIE1hbmFnZXIgQ2xpZW50Ci10eXBlZGVmIHZv
aWQgKCpXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRl
KShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIHBsYXliYWNrQXR0cmlidXRlLCBib29sIHZhbHVl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJDbGllbnRCYXNlIHsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247Ci0gICAgY29uc3Qgdm9pZCAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50VjAgewotICAgIFdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgYmFzZTsKLQotICAgIC8vIFZlcnNpb24g
MC4KLSAgICBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckRpZENoYW5nZVBsYXliYWNrQXR0cmli
dXRlIGRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlOwotfSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlckNsaWVudFYwOwotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJHZXRUeXBlSUQoKTsKLQotV0tfRVhQT1JUIHZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJTZXRDbGllbnQoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYgbWFuYWdlciwgY29u
c3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpOwotCi1XS19F
WFBPUlQgYm9vbCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclZhbHVlRm9yUGxheWJhY2tBdHRy
aWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYsIFdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUpOwotV0tfRVhQT1JUIHZvaWQgV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJTZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQoV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJSZWYsIGRvdWJsZSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlm
Ci0KLSNlbmRpZiAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcl9oICovCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1l
dGFkYXRhLmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLTWVk
aWFTZXNzaW9uTWV0YWRhdGEuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
LVdLVHlwZUlEIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFHZXRUeXBlSUQoKQotewotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0b0FQSShXZWJNZWRpYVNlc3Npb25NZXRhZGF0
YTo6QVBJVHlwZSk7Ci0jZWxzZQotICAgIHJldHVybiB0b0FQSShBUEk6Ok9iamVjdDo6VHlwZTo6
TnVsbCk7Ci0jZW5kaWYKLX0KLQotV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNv
cHlUaXRsZShXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKQotewotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwobWV0YWRhdGEp
LT50aXRsZSgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCi1XS1N0cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhQ29weUFydGlzdChXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKQotewotI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwobWV0
YWRhdGEpLT5hcnRpc3QoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0KLQotV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Np
b25NZXRhZGF0YUNvcHlBbGJ1bShXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKQot
ewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0lt
cGwobWV0YWRhdGEpLT5hbGJ1bSgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRh
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCi1XS1VSTFJlZiBXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhQ29weUFydHdvcmtVUkwoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRh
ZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4gdG9Db3BpZWRV
UkxBUEkodG9JbXBsKG1ldGFkYXRhKS0+YXJ0d29ya1VSTCgpKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKG1ldGFkYXRhKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNTAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YV9oCi0jZGVm
aW5lIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5o
PgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFHZXRUeXBlSUQoKTsKLQotV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5VGl0bGUoV0tNZWRpYVNlc3Npb25N
ZXRhZGF0YVJlZiBtZXRhZGF0YSk7Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Np
b25NZXRhZGF0YUNvcHlBcnRpc3QoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSk7
Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBbGJ1bShX
S01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKTsKLVdLX0VYUE9SVCBXS1VSTFJlZiBX
S01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFydHdvcmtVUkwoV0tNZWRpYVNlc3Npb25NZXRhZGF0
YVJlZiBtZXRhZGF0YSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRp
ZiAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTEgKzk0
LDYgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNlbmRpZgogCi0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbkV2ZW50cy5oPgotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlICJWZXJzaW9uQ2hlY2tzLmgiCiAjZW5kaWYKQEAgLTIw
MjgsMTUgKzIwMjMsNiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFn
CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29y
ZEFwcGVhcmFuY2UodG9BUEkoJnBhZ2UpLCB0b0FQSSh1c2VySW5mbyksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAg
ICAgICB2b2lkIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEqIG1ldGFkYXRhKSBmaW5hbAotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50Lm1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQubWVkaWFTZXNz
aW9uTWV0YWRhdGFEaWRDaGFuZ2UodG9BUEkoJnBhZ2UpLCB0b0FQSShtZXRhZGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCiAgICAgICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKFdlYlBhZ2VQcm94eSog
cGFnZSkgZmluYWwKICAgICAgICAgewpAQCAtMjcyNyw0MyArMjcxMyw2IEBAIHZvaWQgV0tQYWdl
RGlkRGVueVBvaW50ZXJMb2NrKFdLUGFnZVJlZiAKICNlbmRpZgogfQogCi1ib29sIFdLUGFnZUhh
c01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKFdLUGFnZVJlZiBwYWdlKQotewot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0b0ltcGwocGFnZSktPmhhc01l
ZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShwYWdlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotdm9pZCBXS1BhZ2VI
YW5kbGVNZWRpYUV2ZW50KFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhRXZlbnRUeXBlIHdrRXZlbnRU
eXBlKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIE1lZGlhRXZlbnRUeXBlIGV2
ZW50VHlwZTsKLQotICAgIHN3aXRjaCAod2tFdmVudFR5cGUpIHsKLSAgICBjYXNlIGtXS01lZGlh
RXZlbnRUeXBlUGxheVBhdXNlOgotICAgICAgICBldmVudFR5cGUgPSBNZWRpYUV2ZW50VHlwZTo6
UGxheVBhdXNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGtXS01lZGlhRXZlbnRUeXBlVHJh
Y2tOZXh0OgotICAgICAgICBldmVudFR5cGUgPSBNZWRpYUV2ZW50VHlwZTo6VHJhY2tOZXh0Owot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIGtXS01lZGlhRXZlbnRUeXBlVHJhY2tQcmV2aW91czoK
LSAgICAgICAgZXZlbnRUeXBlID0gTWVkaWFFdmVudFR5cGU6OlRyYWNrUHJldmlvdXM7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdG9JbXBsKHBhZ2UpLT5oYW5kbGVNZWRpYUV2
ZW50KGV2ZW50VHlwZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSAgICBVTlVT
RURfUEFSQU0od2tFdmVudFR5cGUpOwotI2VuZGlmCi19Ci0KIHZvaWQgV0tQYWdlUG9zdE1lc3Nh
Z2VUb0luamVjdGVkQnVuZGxlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZVJlZiwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5UmVmKQogewogICAgIHRvSW1wbChwYWdlUmVm
KS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKHRvSW1wbChtZXNzYWdlTmFtZVJlZiktPnN0
cmluZygpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDE5ICsxNTEsOCBAQCBlbnVtIHsKIH07CiB0eXBlZGVmIHVpbnQzMl90IFdLTWVk
aWFTdGF0ZTsKIAotCiBXS19FWFBPUlQgV0tNZWRpYVN0YXRlIFdLUGFnZUdldE1lZGlhU3RhdGUo
V0tQYWdlUmVmIHBhZ2UpOwogCi1lbnVtIHsKLSAgICBrV0tNZWRpYUV2ZW50VHlwZVBsYXlQYXVz
ZSwKLSAgICBrV0tNZWRpYUV2ZW50VHlwZVRyYWNrTmV4dCwKLSAgICBrV0tNZWRpYUV2ZW50VHlw
ZVRyYWNrUHJldmlvdXMKLX07Ci10eXBlZGVmIHVpbnQzMl90IFdLTWVkaWFFdmVudFR5cGU7Ci0K
LVdLX0VYUE9SVCBib29sIFdLUGFnZUhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1l
bnRzKFdLUGFnZVJlZiBwYWdlKTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZUhhbmRsZU1lZGlhRXZl
bnQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFFdmVudFR5cGUgZXZlbnQpOwotCiBXS19FWFBPUlQg
dm9pZCBXS1BhZ2VMb2FkVVJMV2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koV0tQYWdl
UmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKTsKIAog
dHlwZWRlZiB2b2lkICgqV0tQYWdlUG9zdFByZXNlbnRhdGlvblVwZGF0ZUZ1bmN0aW9uKShXS0Vy
cm9yUmVmLCB2b2lkKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVVJQ2xpZW50LmgJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsx
MjYsNiBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VJc1BsYXlpbmdBdWRpb0RpZENoCiB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdp
blJlZiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgV0tTZWN1cml0eU9yaWdpblJlZiB0b3BMZXZl
bERvY3VtZW50T3JpZ2luLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Np
b25SZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQ2hl
Y2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFdLVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUmVmIGRldmljZXNSZXF1ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5
cGVkZWYgdm9pZCAoKldLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxsYmFjaykoV0tQYWdl
UmVmIHBhZ2UsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10
eXBlZGVmIHZvaWQgKCpXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0hhbmRsZUF1dG9wbGF5RXZl
bnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0b3BsYXlFdmVudCBldmVudCwgV0tBdXRv
cGxheUV2ZW50RmxhZ3MgZmxhZ3MsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tSZXF1ZXN0UG9p
bnRlckxvY2tDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwpAQCAtNTAzLDcgKzUwMiw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjUgewog
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0OwogICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2
YVNjcmlwdENvbmZpcm07CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0OwotICAg
IFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgog
fSBXS1BhZ2VVSUNsaWVudFY1OwogCiB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY2IHsK
QEAgLTU3Niw3ICs1NzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY2IHsKICAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1
ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1Owog
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhW
NTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1Bh
Z2U7CkBAIC02NTYsNyArNjU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWNyB7
CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
NTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsK
KyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRh
dGFEaWRDaGFuZ2UuCiAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFn
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVO
ZXdQYWdlOwpAQCAtNzQwLDcgKzczOSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50
VjggewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9y
VXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNh
dGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlLgogICAgIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVh
dGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZU5ld1BhZ2U7CkBAIC04MjgsNyArODI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdl
VUlDbGllbnRWOSB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNr
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRD
aGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0
YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdl
Q3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtOTE5LDcgKzkxOCw3IEBAIHR5cGVkZWYgc3RydWN0IFdL
UGFnZVVJQ2xpZW50VjEwIHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJh
Y2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2Fs
bGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9t
cHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0
YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBt
ZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KICAgICAKICAgICAvLyBWZXJzaW9uIDYuCiAg
ICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtMTAxNCw3ICsxMDEzLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTEgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVy
dENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlw
dEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENv
bmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2Ny
aXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2
YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vz
c2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBV
c2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogCiAgICAgLy8gVmVyc2lv
biA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTExMTIsNyArMTExMSw3IEBA
IHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjEyIHsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVu
SmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5K
YXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAg
IHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VN
ZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2Vk
NTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KICAgICAKICAg
ICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtMTIxMyw3
ICsxMjEyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTMgewogICAgIFdLUGFn
ZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAg
ICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQ
YWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAg
ICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAg
IFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1
ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1Owot
ICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdl
LgogCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAg
LTEzMTcsNyArMTMxNiw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1
ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1Owog
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhW
NTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1Bh
Z2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI2NzQ2NykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNl
TG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rp
bmcoV0tBcnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIFJlZlB0cjxBUEk6OkFy
cmF5PiBvcmlnaW5VUkxzQXJyYXkgPSB0b0ltcGwob3JpZ2luVVJMc1JlZik7CisgICAgUmVmUHRy
PEFQSTo6QXJyYXk+IG9yaWdpblVSTHNBcnJheSA9IFdlYktpdDo6dG9JbXBsKG9yaWdpblVSTHNS
ZWYpOwogICAgIHNpemVfdCBuZXdTaXplID0gb3JpZ2luVVJMc0FycmF5ID8gb3JpZ2luVVJMc0Fy
cmF5LT5zaXplKCkgOiAwOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnM7CiAgICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5ld1NpemUpOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzA4LDExICsxNzA4LDYgQEAKIAkJQzVG
QTFFRDMxOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJvdXRlUGlja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUZBMUVEMTE4RTEwNjIyMDBC
M0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIuaCAqLzsgfTsKIAkJQzZBNENBMEIyMjUyODk5
ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZBNENBMDkyMjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxl
UGFnZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUM2QTRDQTBDMjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkE0Q0EwQTIyNTI4OTk4
MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLm1tICovOyB9OwotCQlDOThDNDhBNjFCNkZENEMz
MDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOThDNDhBNDFCNkZENEMzMDAxNDUxMDMg
LyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi87IH07Ci0JCUM5OEM0OEFBMUI2RkQ1
QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk4QzQ4QTgxQjZGRDVCNTAwMTQ1MTAz
IC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzlDMTgzM0MxQjc0MDI2RDAwNzAzNkE3IC8qIFdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlDMTgzMzgxQjczRkQ2QTAwNzAzNkE3IC8qIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oICovOyB9OwotCQlDOUNENDM5ODFCNEIwMDFE
MDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5Q0Q0Mzk0MUI0QjAwMEUwMDIzOUUzMyAvKiBX
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovOyB9OwotCQlDOUNENDM5RDFCNEIwMjRGMDAyMzlF
MzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzlDRDQzOUExQjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFT
ZXNzaW9uTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDQTA1Mzk3OTIzRUUzMjQ0MDBBNTUzREMgLyogQ29udGVudEFzU3RyaW5nSW5j
bHVkZXNDaGlsZEZyYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0EwNTM5NzgyM0VFMzI0NDAwQTU1M0RDIC8qIENvbnRlbnRBc1N0cmluZ0luY2x1
ZGVzQ2hpbGRGcmFtZXMuaCAqLzsgfTsKIAkJQ0QwMDNBNTMxOUQ0OUI1RDAwNUFCQ0UwIC8qIFdl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMDAzQTUxMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCUNEMEM2ODMxMjAxRkQxMDEwMEE1OTQwOSAvKiBXS0Z1
bGxTY3JlZW5WaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QwQzY4MkYyMDFGRDEwMTAwQTU5NDA5IC8qIFdLRnVsbFNjcmVlblZp
ZXdDb250cm9sbGVyLmggKi87IH07CkBAIC01MDYzLDE2ICs1MDU4LDYgQEAKIAkJQzVGQTFFRDIx
OEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJvdXRlUGlja2VyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tBaXJQbGF5Um91dGVQaWNrZXIubW07IHBhdGgg
PSBpb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM2QTRDQTA5MjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM2QTRDQTBBMjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS0J1bmRsZVBhZ2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUM5OEM0OEEzMUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzk4QzQ4QTcxQjZGRDVC
NTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzk4QzQ4QTgxQjZGRDVCNTAwMTQ1MTAzIC8q
IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUM5QzE4MzM3MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzlDMTgzMzgxQjczRkQ2QTAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzlDRDQzOTMxQjRCMDAwRTAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlDRDQzOTQxQjRC
MDAwRTAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMDUzOTc4MjNFRTMyNDQwMEE1NTNEQyAvKiBD
b250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRl
bnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QwMDNBNTAxOUQ0OUI1RDAwNUFCQ0UwIC8qIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHA7IHBhdGggPSBNZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDAwM0E1MTE5RDQ5QjVE
MDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg7IHBhdGggPSBNZWRp
YUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTYxNDMsOCArNjEyOCw2IEBACiAJCQkJQzAzMzdERDIxMjdBMkEwRTAwOEZGNEY0
IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCUJDOUJBNTAyMTY5N0M0NTMwMEU0NDYx
NiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5jcHAgKi8sCiAJCQkJQkM5QkE1MDMxNjk3QzQ1MzAwRTQ0
NjE2IC8qIFdlYktpdDJJbml0aWFsaXplLmggKi8sCi0JCQkJQzlDRDQzOTMxQjRCMDAwRTAwMjM5
RTMzIC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCAqLywKLQkJCQlDOUNENDM5NDFCNEIw
MDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLywKIAkJCQk5MDU2MjBF
ODEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgKi8sCiAJCQkJOTA1NjIw
RTkxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1lbW9yeVNhbXBsZXIuaCAqLywKIAkJCQlDMDMzN0RB
RjEyN0EyOEQwMDA4RkY0RjQgLyogV2ViTW91c2VFdmVudC5jcHAgKi8sCkBAIC05MDcwLDEwICs5
MDUzLDYgQEAKIAkJCQlCQzFCRTFGMTEyRDU0REJEMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25Q
cm92aWRlci5jcHAgKi8sCiAJCQkJQkMxQkUxRjAxMkQ1NERCRDAwMDRBMjI4IC8qIFdlYkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaCAqLywKIAkJCQk1MUM4RTE5QjFGMjE2MTcyMDBCRjczMUIgLyogV2Vi
SWNvbkRhdGFiYXNlLmggKi8sCi0JCQkJQzk4QzQ4QTMxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgKi8sCi0JCQkJQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1
MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovLAotCQkJCUM5QzE4MzM3MUI3
M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwICov
LAotCQkJCUM5QzE4MzM4MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnQuaCAqLywKIAkJCQkyRDNFRjQ0MDE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLywKIAkJCQkyRDNFRjQ0MTE5MTc2NDYzMDAwMzQxODQg
LyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggKi8sCiAJCQkJN0NDQ0M4RjgxQTVGNTBGRDAw
OEZCMERBIC8qIFdlYk5hdmlnYXRpb25TdGF0ZS5jcHAgKi8sCkBAIC05Mjc2LDEwICs5MjU1LDYg
QEAKIAkJCQk1MUE5RTEwODEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLmNwcCAqLywKIAkJCQk1MUE5RTEwOTEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJMkQ3OTBBOUUxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5
b3V0TW9kZS5oICovLAotCQkJCUM5OEM0OEE3MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5jcHAgKi8sCi0JCQkJQzk4QzQ4QTgxQjZGRDVCNTAwMTQ1MTAzIC8q
IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi8sCi0JCQkJQzlDRDQzOTkxQjRCMDI0MjAw
MjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwICovLAotCQkJCUM5Q0Q0MzlBMUI0
QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8sCiAJCQkJNUNBQkRD
ODQyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmNwcCAqLywKIAkJCQk1Q0FC
REM4NTIyQzQwRkNDMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCAqLywKIAkJCQlDMTFF
MTY5MzIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5jcHAgKi8sCkBAIC0xMTM0MSw5
ICsxMTMxNiw2IEBACiAJCQkJQkM5QkE1MDUxNjk3QzQ1MzAwRTQ0NjE2IC8qIFdlYktpdDJJbml0
aWFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYyODBDNzE5MTk5NTBDMDA2QUQ5RjkgLyog
V2ViS2l0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QwMDNBNTMxOUQ0OUI1RDAwNUFC
Q0UwIC8qIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5
OEM0OEE2MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCUM5QzE4MzNDMUI3NDAyNkQwMDcwMzZBNyAvKiBXZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5Q0Q0Mzk4MUI0
QjAwMUQwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOUI1QkVDMjYyNDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEM0VGNDQzMTkxNzY0NjMwMDAzNDE4NCAvKiBXZWJNZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwOTg1NEVEMTJCQzRFMTgwMDBBRDA4
MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTExNjQyLDggKzExNjE0
LDYgQEAKIAkJCQk1MUE5RTEwQjEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDc5MEE5RjFBRDcxNjQ5MDBBQjkwQjMgLyog
V0tMYXlvdXRNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0U5MTIxNDIyOTNDMjgwMDA1QkVD
NzggLyogV0tNYWluLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOThDNDhBQTFCNkZENUI1MDAxNDUx
MDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5
Q0Q0MzlEMUI0QjAyNEYwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUI0MEVFNjFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50
aWZpZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBQkRDODYyMkM0MEZERTAwMUVE
RThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTFFMTY5NDIx
MkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNzAsMjUgKzExNzAsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6aGFuZGxlQXV0
b3BsYXlFdmVuCiAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxl
QXV0b3BsYXlFdmVudChldmVudCwgZmxhZ3MpKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6aGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1l
ZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpIYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50
c0RpZENoYW5nZShzdGF0ZSkpOwotfQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6bWVkaWFTZXNz
aW9uTWV0YWRhdGFEaWRDaGFuZ2UoY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRh
KQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1lZGlhU2Vzc2lv
bk1ldGFkYXRhRGlkQ2hhbmdlKG1ldGFkYXRhKSk7Ci19Ci0KLXZvaWQgV2ViQ2hyb21lQ2xpZW50
Ojpmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVtZW50SUQp
Ci17Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZENvbnRl
bnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UoZWxlbWVudElEKSk7Ci19Ci0KLSNlbmRpZgotCiAjaWYg
RU5BQkxFKFdFQl9DUllQVE8pCiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp3cmFwQ3J5cHRvS2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNjc0NjcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzNiwxMiArMzM2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlzUGxh
eWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFn
cywgdWludDY0X3QpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJDb3Jl
OjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikg
ZmluYWw7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIGhhc01lZGlhU2Vz
c2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wpIGZpbmFsOwotICAgIHZv
aWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWV0YWRhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50
RGlkQ2hhbmdlKHVpbnQ2NF90KSBmaW5hbDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQl9DUllQ
VE8pCiAgICAgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rv
cjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDI2NzQ2NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MTk4LDE4ICs1MTk4LDYgQEAgdm9pZCBXZWJQYWdlOjpzdG9w
TWVkaWFDYXB0dXJlKCkKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi12
b2lkIFdlYlBhZ2U6OmhhbmRsZU1lZGlhRXZlbnQodWludDMyX3QgZXZlbnRUeXBlKQotewotICAg
IG1fcGFnZS0+aGFuZGxlTWVkaWFFdmVudChzdGF0aWNfY2FzdDxNZWRpYUV2ZW50VHlwZT4oZXZl
bnRUeXBlKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91
YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQotewotICAgIG1fcGFnZS0+c2V0Vm9sdW1l
T2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpOwotfQotI2VuZGlmCi0KIHZvaWQgV2Vi
UGFnZTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiB7
CiAgICAgaWYgKG1heVN0YXJ0TWVkaWEgPT0gbV9tYXlTdGFydE1lZGlhV2hlbkluV2luZG93KQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNp
b24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NjcsMTEgKzk2Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCk7CiAgICAgdm9pZCBzdG9wTWVkaWFDYXB0
dXJlKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIGhhbmRsZU1lZGlh
RXZlbnQodWludDMyX3QgLyogV2ViQ29yZTo6TWVkaWFFdmVudFR5cGUgKi8pOwotICAgIHZvaWQg
c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlLCB1aW50NjRfdCk7Ci0jZW5kaWYKLQogICAg
IHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwogCiAgICAgYm9vbCBt
YWluRnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjY3NDY3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDExLDExICs0MTEsNiBAQCBHZW5l
cmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWluCiAgICAgU2V0TWF5U3RhcnRNZWRp
YVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiAgICAgU3RvcE1lZGlhQ2FwdHVyZSgp
CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBIYW5kbGVNZWRpYUV2ZW50KHVpbnQz
Ml90IGV2ZW50VHlwZSkKLSAgICBTZXRWb2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUgdm9sdW1l
LCB1aW50NjRfdCBlbGVtZW50SUQpCi0jZW5kaWYKLQogICAgIFNldENhblJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbChib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkKICAgICBT
ZXRDYW5SdW5Nb2RhbChib29sIGNhblJ1bk1vZGFsKQogCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0
aW9uc0ZUVy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFr
ZQkocmV2aXNpb24gMjY3NDUwKQorKysgU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
V0VCX0FVRElPIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfQ0FQVFVSRSBQUklWQVRFIE9GRikKLVdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TRVNTSU9OIFBSSVZB
VEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NP
VVJDRSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX01FRElBX1NUUkVBTSBQUklWQVRFIE9GRikKSW5kZXg6IFNvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2Vi
S2l0RmVhdHVyZXMuY21ha2UJKHJldmlzaW9uIDI2NzQ1MCkKKysrIFNvdXJjZS9jbWFrZS9XZWJL
aXRGZWF0dXJlcy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTY2LDcgKzE2Niw2IEBAIG1hY3Jv
KFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01B
VEhNTCAiVG9nZ2xlIE1hdGhNTCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9NRURJQV9DQVBUVVJFICJUb2dnbGUgTWVkaWEgQ2FwdHVyZSBzdXBw
b3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFf
Q09OVFJPTFNfU0NSSVBUICJUb2dnbGUgZGVmaW5pdGlvbiBvZiBtZWRpYSBjb250cm9scyBpbiBK
YXZhc2NyaXB0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9N
RURJQV9TRVNTSU9OICJUb2dnbGUgTWVkaWEgU2Vzc2lvbiBzdXBwb3J0IiBQUklWQVRFIE9GRikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU09VUkNFICJUb2dnbGUgTWVk
aWEgU291cmNlIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTICJUb2dnbGUgTWVkaWEgU3RhdGlzdGljcyBzdXBwb3J0
IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RS
RUFNICJUb2dnbGUgTWVkaWEgU3RyZWFtIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY3
NDUyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjAtMDktMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZv
ciBidWlsZGluZyB3aXRoIE1FRElBX1NFU1NJT04gZW5hYmxlZC4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIFVwZGF0ZSBuYW1lcyB0byBuZXcgJ3Vu
dXNlZCcgbmFtaW5nLgorCiAyMDIwLTA5LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBUTFNWZXJzaW9uIEFQSSB0ZXN0cyBtb3Jl
IHJvYnVzdC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0JKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw2IEBAIG15ICgKICAgICAkbWF0aG1sU3Vw
cG9ydCwKICAgICAkbWVkaWFDYXB0dXJlU3VwcG9ydCwKICAgICAkbWVkaWFDb250cm9sc1Njcmlw
dFN1cHBvcnQsCi0gICAgJG1lZGlhU2Vzc2lvblN1cHBvcnQsCiAgICAgJG1lZGlhU291cmNlU3Vw
cG9ydCwKICAgICAkbWVkaWFTdGF0aXN0aWNzU3VwcG9ydCwKICAgICAkbWVkaWFTdHJlYW1TdXBw
b3J0LApAQCAtMzk5LDkgKzM5OCw2IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9
PiAibWVkaWEtY29udHJvbHMtc2NyaXB0IiwgZGVzYyA9PiAiVG9nZ2xlIGRlZmluaXRpb24gb2Yg
bWVkaWEgY29udHJvbHMgaW4gSmF2YXNjcmlwdCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9N
RURJQV9DT05UUk9MU19TQ1JJUFQiLCB2YWx1ZSA9PiBcJG1lZGlhQ29udHJvbHNTY3JpcHRTdXBw
b3J0IH0sCiAKLSAgICB7IG9wdGlvbiA9PiAibWVkaWEtc2Vzc2lvbiIsIGRlc2MgPT4gIlRvZ2ds
ZSBNZWRpYSBTZXNzaW9uIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTUVESUFf
U0VTU0lPTiIsIHZhbHVlID0+IFwkbWVkaWFTZXNzaW9uU3VwcG9ydCB9LAotCiAgICAgeyBvcHRp
b24gPT4gIm1lZGlhLXNvdXJjZSIsIGRlc2MgPT4gIlRvZ2dsZSBNZWRpYSBTb3VyY2Ugc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9NRURJQV9TT1VSQ0UiLCB2YWx1ZSA9PiBcJG1l
ZGlhU291cmNlU3VwcG9ydCB9LAogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY3NDUwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw3ICszODEsNyBAQCBX
S1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnCiAgICAgICAgIDAsIC8vIHJ1
bkphdmFTY3JpcHRBbGVydAogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQogICAg
ICAgICAwLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0Ci0gICAgICAgIDAsIC8vIG1lZGlhU2Vzc2lv
bk1ldGFkYXRhRGlkQ2hhbmdlCisgICAgICAgIDAsIC8vIHVudXNlZDUKICAgICAgICAgY3JlYXRl
T3RoZXJQYWdlLAogICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQsCiAgICAgICAgIDAsIC8vIHJ1
bkphdmFTY3JpcHRDb25maXJtCkBAIC03MTUsNyArNzE1LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6Y3JlYXRlV2ViVmlld1dpdGhPcAogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQK
ICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KICAgICAgICAgMCwgLy8gcnVuSmF2
YVNjcmlwdFByb21wdAotICAgICAgICAwLCAvLyBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5n
ZQorICAgICAgICAwLCAvLyB1bnVzZWQ1CiAgICAgICAgIGNyZWF0ZU90aGVyUGFnZSwKICAgICAg
ICAgcnVuSmF2YVNjcmlwdEFsZXJ0LAogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmly
bQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDktMjIgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVE
SUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGFsd2F5cyBza2lwcGVkIE1lZGlhIFNlc3Np
b24gdGVzdHMuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGdwdS1w
cm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogbWVkaWEvc2Vzc2lvbjogUmVtb3Zl
ZC4KKwogMjAyMC0wOS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBCaXF1YWRGaWx0ZXJOb2RlJ3MgbG93cGFzcyAmIGhpZ2hwYXNzIGZpbHRlcnMKSW5k
ZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTkxNiw5ICsxOTE2LDYgQEAgZmFzdC9p
bWFnZXMvYW5pbWF0ZWQtd2VicC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xNDYxODIg
ZWRpdGluZy9zZWxlY3Rpb24vbGVhay1kb2N1bWVudC13aXRoLXNlbGVjdGlvbi1pbnNpZGUuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgTWVkaWEgU2Vzc2lvbnMgaXMgbm90IHlldCBlbmFibGVk
IGJ5IGRlZmF1bHQ6IEVOQUJMRShNRURJQV9TRVNTSU9OKQotbWVkaWEvc2Vzc2lvbiBbIFNraXAg
XQotCiAjIEV4cGVyaW1lbnRhbCBIMjY1IHN1cHBvcnQuCiB3ZWJydGMvaDI2NS5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIApJbmRleDogTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsOCArMjU4LDYgQEAgbWVkaWEvcHJlc2Vu
dGF0aW9ubW9kZWNoYW5nZWQtZmlyZWQtb25jZQogbWVkaWEvcHJvZ3Jlc3MtZXZlbnRzLWdlbmVy
YXRlZC1jb3JyZWN0bHkuaHRtbCBbIFNraXAgXQogbWVkaWEvcmVtb3RlcGxheWJhY2stcHJvbXB0
Lmh0bWwgWyBTa2lwIF0KIAotbWVkaWEvc2Vzc2lvbiBbIFNraXAgXQotCiBtZWRpYS90cmFjay9h
dWRpby9hdWRpby10cmFjay1ta3Ytdm9yYmlzLWFkZHRyYWNrLmh0bWwgWyBTa2lwIF0KIG1lZGlh
L3RyYWNrL2F1ZGlvL2F1ZGlvLXRyYWNrLW1rdi12b3JiaXMtZW5hYmxlZC5odG1sIFsgU2tpcCBd
CiBtZWRpYS90cmFjay9hdWRpby9hdWRpby10cmFjay1ta3Ytdm9yYmlzLWxhbmd1YWdlLmh0bWwg
WyBTa2lwIF0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1
cHRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEyICswLDAgQEAKLSdDb250ZW50JyBzdGFydCBv
ZiBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBpbmRlZmluaXRlbHkgcGF1c2UgJ0NvbnRlbnQn
IG1lZGlhIHNlc3Npb25zLgotCi0KLVdhaXRpbmcgZm9yIENvbnRlbnQgbWVkaWEgdG8gYmVnaW4g
cGxheWluZy4KLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlh
U2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLVNlbmRpbmcgJ0Nv
bnRlbnQnIHN0YXJ0LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxz
LnNlbmRNZWRpYVNlc3Npb25TdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJjb250ZW50
IikpCi1UaGUgbWVkaWEgZWxlbWVudCB3YXMgcGF1c2VkLgotRVhQRUNURUQgKGludGVybmFscy5t
ZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotRU5EIE9GIFRF
U1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlv
bnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQt
aW50ZXJydXB0aW9ucy5odG1sCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEs
NTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQg
c3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVk
aWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgotICAgICAgICB2YXIgc2Vzc2lvbjsKLSAgICAKLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IAotICAgICAgICB7Ci0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAg
ICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotCi0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoIldhaXRpbmcgZm9yIENvbnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4i
KQotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29u
dGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0g
ICAgICAgICAgICB2aWRlby5vbnBsYXlpbmcgPSBiZWdhblBsYXlpbmc7Ci0gICAgICAgICAgICB2
aWRlby5vbmNhbnBsYXl0aHJvdWdoID0gY2FucGxheXRocm91Z2g7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICB2
aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmco
ZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4g
cGxheWluZy4iKTsKLSAgICAgICAgICAgIHZpZGVvLm9ucGF1c2UgPSBwYXVzZWQ7Ci0KLSAgICAg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2
ZSIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2Vu
ZGluZyAnQ29udGVudCcgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4iKTsKLSAg
ICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVy
cnVwdGlvbk5vdGlmaWNhdGlvbigiY29udGVudCIpJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBwYXVzZWQoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiVGhlIG1lZGlhIGVsZW1lbnQgd2FzIHBhdXNlZC4iKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pJywgImlkbGUiKTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAg
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J0Nv
bnRlbnQnIHN0YXJ0IG9mIGludGVycnVwdGlvbiBldmVudHMgc2hvdWxkIGluZGVmaW5pdGVseSBw
YXVzZSAnQ29udGVudCcgbWVkaWEgc2Vzc2lvbnMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8i
IGNvbnRyb2xzPiA8L3ZpZGVvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1zZXNzaW9uLWZvY3VzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9jb250ZW50LXNlc3Npb24tZm9jdXMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEs
MjIgKzAsMCBAQAotUGxheWluZyBhIG1lZGlhIGVsZW1lbnQgYmVsb25naW5nIHRvIGEgQ29udGVu
dCBtZWRpYSBzZXNzaW9uIHNob3VsZCBwYXVzZSBvdGhlciBwbGF5aW5nIENvbnRlbnQgbWVkaWEg
ZWxlbWVudHMuCi0KLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8xLnBh
dXNlZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5aW5nIGZpcnN0IHZpZGVvLgotRVZFTlQocGxh
eWluZykKLUZpcnN0IHZpZGVvIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8xLnBhdXNl
ZCA9PSAnZmFsc2UnKSBPSwotCi1TZXR0aW5nIHVwIHNlY29uZCB2aWRlby4KLUVWRU5UKGNhbnBs
YXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvMS5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVD
VEVEICh2aWRlbzIucGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBsYXlpbmcgc2Vjb25kIHZp
ZGVvLgotRVZFTlQocGxheWluZykKLVNlY29uZCB2aWRlbyBiZWdhbiBwbGF5aW5nLgotRVhQRUNU
RUQgKHZpZGVvMi5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVWRU5UKHBhdXNlKQotRVhQRUNURUQg
KHZpZGVvMS5wYXVzZWQgPT0gJ3RydWUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy5odG1s
CShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQt
c2Vzc2lvbi1mb2N1cy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vz
c2lvbiwgdmlkZW8xLCB2aWRlbzI7Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAg
ICAgICB7Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIp
OwotCi0gICAgICAgICAgICB2aWRlbzEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8x
Iik7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5
aW5nVmlkZW8xLCBmYWxzZSwgdHJ1ZSwgdmlkZW8xKTsKLSAgICAgICAgICAgIHZpZGVvMS5zcmMg
PSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAg
ICAgICB2aWRlbzEuc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQo
J3BsYXlpbmcnLCBiZWdhblBsYXlpbmdWaWRlbzEsIGZhbHNlLCB0cnVlLCB2aWRlbzEpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nVmlkZW8xKGV2ZW50KQotICAg
ICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMS5wYXVzZWQnLCB0cnVlKTsK
LQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIGZpcnN0IHZpZGVvLiIp
OwotICAgICAgICAgICAgdmlkZW8xLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIGJlZ2FuUGxheWluZ1ZpZGVvMShldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
c29sZVdyaXRlKCJGaXJzdCB2aWRlbyBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCd2aWRlbzEucGF1c2VkJywgZmFsc2UpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZXR0aW5n
IHVwIHNlY29uZCB2aWRlby4iKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmlkZW8yID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvMiIpOwotICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZ1ZpZGVvMiwgZmFsc2UsIHRydWUsIHZp
ZGVvMik7Ci0gICAgICAgICAgICB2aWRlbzIuc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAi
Li4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8yLnNlc3Npb24gPSBzZXNz
aW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nVmlk
ZW8yLCBmYWxzZSwgdHJ1ZSwgdmlkZW8yKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
ZnVuY3Rpb24gYmVnaW5QbGF5aW5nVmlkZW8yKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMS5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ3ZpZGVvMi5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVu
dCgncGF1c2UnLCBwYXVzZWRWaWRlbzEsIGZhbHNlLCB0cnVlLCB2aWRlbzEpOwotCi0gICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBsYXlpbmcgc2Vjb25kIHZpZGVvLiIpOwotICAgICAg
ICAgICAgdmlkZW8yLnBsYXkoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rp
b24gcGF1c2VkVmlkZW8xKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ3ZpZGVvMS5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZ1ZpZGVvMihldmVudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZWNvbmQgdmlkZW8gYmVnYW4gcGxheWlu
Zy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8yLnBhdXNlZCcsIGZhbHNlKTsK
LSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgotICAgIDxwPlBsYXlpbmcgYSBtZWRpYSBlbGVtZW50IGJlbG9uZ2luZyB0byBhIENvbnRl
bnQgbWVkaWEgc2Vzc2lvbiBzaG91bGQgcGF1c2Ugb3RoZXIgcGxheWluZyBDb250ZW50IG1lZGlh
IGVsZW1lbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvMSIgLz4KLSAgICA8dmlkZW8gaWQ9
InZpZGVvMiIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vY29udHJvbHMtZXhpc3RlbmNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0ZW5jZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udHJvbHMtZXhp
c3RlbmNlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEyICswLDAgQEAKLU9ubHkg
Q29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91bGQgaGF2ZSBtZWRpYSByZW1vdGUgY29udHJvbHMg
YWZ0ZXIgY3JlYXRpb24uCi0KLVJVTihzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbignY29udGVu
dCcpKQotRVhQRUNURUQgKHNlc3Npb24uY29udHJvbHMgIT0gJ251bGwnKSBPSwotUlVOKHNlc3Np
b24gPSBuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQnKSkKLUVYUEVDVEVEIChzZXNzaW9uLmNv
bnRyb2xzID09ICdudWxsJykgT0sKLVJVTihzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigndHJh
bnNpZW50LXNvbG8nKSkKLUVYUEVDVEVEIChzZXNzaW9uLmNvbnRyb2xzID09ICdudWxsJykgT0sK
LVJVTihzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbignYW1iaWVudCcpKQotRVhQRUNURUQgKHNl
c3Npb24uY29udHJvbHMgPT0gJ251bGwnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0ZW5jZS5odG1sCShyZXZp
c2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0
ZW5jZS5odG1sCShub25leGlzdGVudCkKQEAgLTEsMzMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vz
c2lvbjsKLSAgICAKLSAgICAgICAgZnVuY3Rpb24gZG9UZXN0ICgpIAotICAgICAgICB7Ci0gICAg
ICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotICAgICAgICAg
ICAgcnVuKCJzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbignY29udGVudCcpIik7Ci0gICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInNlc3Npb24uY29udHJvbHMiLCBudWxsLCAnIT0nKTsKLQotICAg
ICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oInRyYW5zaWVudCIpOwotICAgICAg
ICAgICAgcnVuKCJzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigndHJhbnNpZW50JykiKTsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgic2Vzc2lvbi5jb250cm9scyIsIG51bGwpOwotCi0gICAg
ICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigidHJhbnNpZW50LXNvbG8iKTsKLSAg
ICAgICAgICAgIHJ1bigic2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudC1zb2xv
JykiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgic2Vzc2lvbi5jb250cm9scyIsIG51bGwp
OwotCi0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiYW1iaWVudCIpOwot
ICAgICAgICAgICAgcnVuKCJzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbignYW1iaWVudCcpIik7
Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInNlc3Npb24uY29udHJvbHMiLCBudWxsKTsKLQot
ICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4KLSAgICA8cD5Pbmx5IENvbnRlbnQgTWVkaWEgU2Vz
c2lvbnMgc2hvdWxkIGhhdmUgbWVkaWEgcmVtb3RlIGNvbnRyb2xzIGFmdGVyIGNyZWF0aW9uLjwv
cD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVm
YXVsdC1zZXNzaW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2NzQ1MCkK
KysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVmYXVsdC1zZXNzaW9uLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCkBAIC0xLDYgKzAsMCBAQAotTmV3IG1lZGlhIGVsZW1lbnRzIGFyZSBh
c3NpZ25lZCB0byB0aGUgRGVmYXVsdCBtZWRpYSBzZXNzaW9uLCB3aGljaCBpcyBub3QgZXhwb3Nl
ZCB0aHJvdWdoIHRoZSBzZXNzaW9uIGF0dHJpYnV0ZS4KLQotUlVOKGF1ZGlvRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJykpCi1FWFBFQ1RFRCAoYXVkaW9FbGVtZW50LnNl
c3Npb24gPT0gJ251bGwnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9kZWZhdWx0LXNlc3Npb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi5odG1sCShyZXZpc2lvbiAyNjc0NTApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi5odG1sCShub25leGlz
dGVudCkKQEAgLTEsMTkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
ICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBmdW5jdGlvbiBkb1Rlc3QgKCkgCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZhciBhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJhdWRpbyIpOwotICAgICAgICAgICAgcnVuKCJhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdhdWRpbycpIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImF1ZGlv
RWxlbWVudC5zZXNzaW9uIiwgbnVsbCk7Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAg
ICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+Ci0g
ICAgPHA+TmV3IG1lZGlhIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCB0byB0aGUgRGVmYXVsdCBtZWRp
YSBzZXNzaW9uLCB3aGljaCBpcyBub3QgZXhwb3NlZCB0aHJvdWdoIHRoZSBzZXNzaW9uIGF0dHJp
YnV0ZS48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1t
ZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2
NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVu
dHMtaW4tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwy
MSArMCwwIEBACi0nQ29udGVudCcgc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIHNob3VsZCByZXNw
b25kIHRvIFBsYXkvUGF1c2UgbWVkaWEgY29udHJvbCBldmVudHMuCi0KLQotRVZFTlQoY2FucGxh
eXRocm91Z2gpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShz
ZXNzaW9uKSA9PSAnaWRsZScpIE9LCi1JZGxlIE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVz
cG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3Ry
dWUnKSBPSwotU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5z
ZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVz
ZWQgPT0gJ3RydWUnKSBPSwotCi1QbGF5aW5nIG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlh
IGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1F
WFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAn
YWN0aXZlJykgT0sKLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5h
bHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8u
cGF1c2VkID09ICd0cnVlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1t
ZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy5odG1sCShyZXZpc2lvbiAyNjc0NTApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNv
bnRlbnQtc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDYxICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVz
dC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNl
c3Npb247Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAg
ICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotCi0gICAgICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0
aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRp
YUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVv
LnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywg
YmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaWRsZSIpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIklkbGUgTWVkaWEgU2Vzc2lvbnMgc2hvdWxk
IG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2UgZXZlbnRzLiIpOwotCi0gICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
U2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bign
aW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiUGxheWluZyBtZWRpYS4iKTsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdp
bnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwot
Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEg
ZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJv
bEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3Zp
ZGVvLnBhdXNlZCcsIHRydWUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBlbmRUZXN0
KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KLSAgICA8cD4nQ29udGVudCcgc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIHNob3Vs
ZCByZXNwb25kIHRvIFBsYXkvUGF1c2UgbWVkaWEgY29udHJvbCBldmVudHMuPC9wPgotICAgIDx2
aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWRlZmF1bHQtc2Vzc2lvbnMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxh
eS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1t
ZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxOCArMCwwIEBACi0nRGVmYXVsdCcgbWVkaWEgc2Vzc2lvbnMgc2hvdWxkIHJlc3Bv
bmQgdG8gcGxheS9wYXVzZSBtZWRpYSBldmVudHMuCi0KLQotRVZFTlQoY2FucGxheXRocm91Z2gp
Ci1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLVNlbmRpbmcgUGxheS9QYXVz
ZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5
LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLQotUGxheWlu
ZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQg
KHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2
ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKSkK
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1k
ZWZhdWx0LXNlc3Npb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZhdWx0LXNlc3Npb25zLmh0bWwJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1t
ZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNzaW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEs
NDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQg
c3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVk
aWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZp
bmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91
Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmls
ZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1
bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiUGxheWluZyBtZWRpYS4iKTsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJTZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVu
KCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD4nRGVmYXVsdCcgbWVk
aWEgc2Vzc2lvbnMgc2hvdWxkIHJlc3BvbmQgdG8gcGxheS9wYXVzZSBtZWRpYSBldmVudHMuPC9w
PgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLW5vbi1jb250
ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLW5vbi1jb250ZW50LXNlc3Npb25z
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0nVHJhbnNpZW50JywgJ1Ry
YW5zaWVudCBTb2xvJywgYW5kICdBbWJpZW50JyBzZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQg
dG8gUGxheS9QYXVzZSBtZWRpYSBjb250cm9sIGV2ZW50cy4KLQotCi0tLS0KLVRlc3RpbmcgInRy
YW5zaWVudCIgc2Vzc2lvbiBraW5kCi0tLS0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVZFTlQo
cGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0
ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLU5vbi1Db250ZW50IE1lZGlhIFNlc3Npb25zIHNo
b3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4KLVNlbmRpbmcgUGxheS9QYXVz
ZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5
LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi0tLS0KLVRl
c3RpbmcgInRyYW5zaWVudC1zb2xvIiBzZXNzaW9uIGtpbmQKLS0tLQotRVZFTlQoY2FucGxheXRo
cm91Z2gpCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2
aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotTm9uLUNvbnRlbnQgTWVk
aWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2UgZXZlbnRzLgotU2Vu
ZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250
cm9sRXZlbnQoInBsYXktcGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNl
JykgT0sKLS0tLQotVGVzdGluZyAiYW1iaWVudCIgc2Vzc2lvbiBraW5kCi0tLS0KLUVWRU5UKGNh
bnBsYXl0aHJvdWdoKQotRVZFTlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBF
Q1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1l
ZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLU5vbi1Db250
ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50
cy4KLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1l
ZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICdmYWxzZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLW5vbi1jb250ZW50LXNlc3Npb25zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlh
LWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy5odG1sCShyZXZpc2lvbiAyNjc0NTApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLW5v
bi1jb250ZW50LXNlc3Npb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MyArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVv
LXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZh
ciBzZXNzaW9uOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1bkFsbFRlc3RzKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50
KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICBydW5UZXN0KCJ0
cmFuc2llbnQiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qoc2Vzc2lv
bktpbmQpIAotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoJy0tLScpOwotICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCdUZXN0aW5nICInICsgc2Vzc2lvbktpbmQgKyAnIiBzZXNz
aW9uIGtpbmQnKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnLS0tJyk7Ci0KLSAgICAgICAg
ICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKHNlc3Npb25LaW5kKTsKLQotICAgICAgICAg
ICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGlu
ZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB3
YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotCi0gICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJOb24tQ29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3Bv
bmQgdG8gUGxheS9QYXVzZSBldmVudHMuIik7Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJTZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVu
KCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZpZGVvLnNlc3Npb24ua2luZCA9
PSAidHJhbnNpZW50IikKLSAgICAgICAgICAgICAgICBydW5UZXN0KCJ0cmFuc2llbnQtc29sbyIp
OwotICAgICAgICAgICAgZWxzZSBpZiAodmlkZW8uc2Vzc2lvbi5raW5kID09ICJ0cmFuc2llbnQt
c29sbyIpCi0gICAgICAgICAgICAgICAgcnVuVGVzdCgiYW1iaWVudCIpOwotICAgICAgICAgICAg
ZWxzZSBpZiAodmlkZW8uc2Vzc2lvbi5raW5kID09ICJhbWJpZW50IikKLSAgICAgICAgICAgICAg
ICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZmFpbFRlc3Qo
IlVuZXhwZWN0ZWQgc2Vzc2lvbiBraW5kIik7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5IG9ubG9hZD0icnVuQWxsVGVzdHMoKSI+Ci0gICAgPHA+J1RyYW5zaWVudCcs
ICdUcmFuc2llbnQgU29sbycsIGFuZCAnQW1iaWVudCcgc2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNw
b25kIHRvIFBsYXkvUGF1c2UgbWVkaWEgY29udHJvbCBldmVudHMuPC9wPgotICAgIDx2aWRlbyBp
ZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3JlbGVhc2luZy1zZXNzaW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3JlbGVhc2luZy1z
ZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNSArMCwwIEBACi1TZXNz
aW9ucyB0aGF0IGFyZSBleHBsaWNpdGx5IHJlbGVhc2VkIHNob3VsZCBoYXZlIHRoZWlyIG1lZGlh
IGVsZW1lbnRzIGluZGVmaW5pdGVseSBwYXVzZWQgYW5kIGdvIGludG8gYW4gSWRsZSBzdGF0ZS4K
LQotCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3Ry
dWUnKSBPSwotQmVnaW4gcGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdh
biBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNU
RUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2
ZScpIE9LCi1SVU4oc2Vzc2lvbi5kZWFjdGl2YXRlKCkpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2Vk
ID09ICd0cnVlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0
YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lvbnMuaHRtbAkocmV2aXNp
b24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lv
bnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDUxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0KLSAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBzZXNzaW9u
ID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotCi0gICAgICAgICAgICBmaW5kTWVkaWFF
bGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVn
aW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVv
IiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBz
ZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5n
LCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVn
aW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3Zp
ZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBs
YXlpbmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5t
ZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAg
ICAgIHJ1bignc2Vzc2lvbi5kZWFjdGl2YXRlKCknKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImlkbGUiKTsKLQotICAgICAgICAgICAgZW5kVGVz
dCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Ci0gICAgPHA+U2Vzc2lvbnMgdGhhdCBhcmUgZXhwbGljaXRseSByZWxlYXNlZCBz
aG91bGQgaGF2ZSB0aGVpciBtZWRpYSBlbGVtZW50cyBpbmRlZmluaXRlbHkgcGF1c2VkIGFuZCBn
byBpbnRvIGFuIElkbGUgc3RhdGUuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3Jl
YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vc2Vzc2lvbi1jcmVhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzMCArMCwwIEBACi1OZXcgbWVkaWEgc2Vzc2lvbnMgc2hvdWxkIGJl
IGluIGFuIElkbGUgc3RhdGUgYWZ0ZXIgY3JlYXRpb24uCi0KLQotLS0tCi1UZXN0aW5nICJuZXcg
TWVkaWFTZXNzaW9uKCdjb250ZW50JykiCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lv
bkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi0tLS0KLQotLS0tCi1UZXN0aW5n
ICJuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQnKSIKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVk
aWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLS0tLQotCi0tLS0K
LVRlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudC1zb2xvJykiCi1FWFBFQ1RFRCAo
aW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9L
Ci0tLS0KLQotLS0tCi1UZXN0aW5nICJuZXcgTWVkaWFTZXNzaW9uKCdhbWJpZW50JykiCi1FWFBF
Q1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRs
ZScpIE9LCi0tLS0KLQotLS0tCi1UZXN0aW5nICJuZXcgTWVkaWFTZXNzaW9uKCkiCi1FWFBFQ1RF
RCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScp
IE9LCi0tLS0KLQotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
c2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91
dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi5odG1sCShub25leGlzdGVudCkK
QEAgLTEsMzkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxz
Y3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBmdW5jdGlvbiBkb1Rlc3QoKSAKLSAgICAgICAgewot
ICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCJjb250ZW50Iik7Ci0gICAgICAgICAgICB0ZXN0
U2Vzc2lvbktpbmQoInRyYW5zaWVudCIpOwotICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCJ0
cmFuc2llbnQtc29sbyIpOwotICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCJhbWJpZW50Iik7
Ci0gICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoKTsKLQotICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIHRlc3RTZXNzaW9uS2luZChzZXNzaW9uS2luZCkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+LS0tIik7Ci0KLSAgICAgICAgICAgIGlmIChzZXNzaW9uS2lu
ZCAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3Rpbmcg
XCJuZXcgTWVkaWFTZXNzaW9uKCciICsgc2Vzc2lvbktpbmQgKyAiJylcIiIpOwotICAgICAgICAg
ICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKHNlc3Npb25LaW5kKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0aW5nIFwibmV3
IE1lZGlhU2Vzc2lvbigpXCIiKTsKLSAgICAgICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlh
U2Vzc2lvbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Np
b25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaWRsZSIpOwotICAgICAgICAgICAgY29uc29sZVdy
aXRlKCItLS0iKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJkb1Rlc3QoKSI+Ci0gICAgPHA+TmV3IG1lZGlhIHNlc3Npb25zIHNob3VsZCBiZSBpbiBh
biBJZGxlIHN0YXRlIGFmdGVyIGNyZWF0aW9uLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3N3aXRjaGluZy1zZXNz
aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vc3dpdGNoaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBA
IC0xLDE0ICswLDAgQEAKLVdoZW4gc3dpdGNoaW5nIG1lZGlhIHNlc3Npb25zLCBtZWRpYSBlbGVt
ZW50cyBiZWxvbmdpbmcgdG8gdGhlIG9sZCBzZXNzaW9uIHNob3VsZCBiZSBwYXVzZWQuCi0KLQot
UlVOKHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50IikpCi1FVkVOVChjYW5wbGF5
dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotQmVnaW4gcGxh
eWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNU
RUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotUlVOKHZpZGVvLnNlc3Npb24gPSBuZXcg
TWVkaWFTZXNzaW9uKCJ0cmFuc2llbnQiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3Ry
dWUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9z
d2l0Y2hpbmctc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3N3aXRjaGluZy1zZXNzaW9ucy5odG1sCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL3N3aXRjaGluZy1zZXNzaW9ucy5odG1sCShub25leGlzdGVu
dCkKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAg
IDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsKLQotICAgICAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJ1bignc2Vzc2lvbiA9IG5ldyBNZWRpYVNl
c3Npb24oImNvbnRlbnQiKScpOwotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0g
ICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsK
LSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRl
bnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAg
ICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1
ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2
ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcs
IHRydWUpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBsYXlpbmcgbWVkaWEu
Iik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
dmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBydW4oJ3ZpZGVvLnNlc3Npb24g
PSBuZXcgTWVkaWFTZXNzaW9uKCJ0cmFuc2llbnQiKScpOwotCi0gICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0g
ICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KLSAgICA8cD5XaGVuIHN3aXRjaGluZyBtZWRpYSBzZXNzaW9ucywgbWVkaWEgZWxlbWVudHMg
YmVsb25naW5nIHRvIHRoZSBvbGQgc2Vzc2lvbiBzaG91bGQgYmUgcGF1c2VkLjwvcD4KLSAgICA8
dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRz
LWRpc2FibGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKQEAgLTEsMTYgKzAsMCBAQAotUHJldmlvdXMvTmV4dCBUcmFjayBldmVudHMg
c2hvdWxkIG5vdCBiZSBmaXJlZCBpZiBwcmV2aW91cy9uZXh0VHJhY2tFbmFibGVkIGFyZSAnZmFs
c2UnLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5aW5nIG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlh
IGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1F
WFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAn
YWN0aXZlJykgT0sKLVNlbmRpbmcgTmV4dCBUcmFjayBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5h
bHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJuZXh0LXRyYWNrIikpCi1TZW5kaW5nIFByZXZpb3Vz
IFRyYWNrIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQo
InByZXZpb3VzLXRyYWNrIikpCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLmh0
bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2st
bWVkaWEtZXZlbnRzLWRpc2FibGVkLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Zp
ZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAg
IHZhciBzZXNzaW9uLCBjb250cm9sczsKLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50
Iik7Ci0gICAgICAgICAgICBjb250cm9scyA9IHNlc3Npb24uY29udHJvbHM7Ci0gICAgICAgICAg
ICBjb250cm9scy5uZXh0VHJhY2tFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBjb250cm9s
cy5wcmV2aW91c1RyYWNrRW5hYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50
KCduZXh0dHJhY2snLCBza2lwVG9OZXh0VHJhY2ssIGZhbHNlLCB0cnVlLCBjb250cm9scyk7Ci0g
ICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3ByZXZpb3VzdHJhY2snLCBza2lwVG9QcmV2aW91c1Ry
YWNrLCBmYWxzZSwgdHJ1ZSwgY29udHJvbHMpOwotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVt
ZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5Q
bGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwg
Ii4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNz
aW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBm
YWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5Q
bGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVv
LnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBsYXlp
bmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93
LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1l
ZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBOZXh0IFRyYWNrIG1lZGlhIGV2ZW50LiIpOwot
ICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgibmV4
dC10cmFjayIpJyk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJTZW5kaW5nIFByZXZpb3VzIFRyYWNrIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAg
ICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicHJldmlvdXMtdHJhY2si
KScpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KCJlbmRUZXN0KCkiLCAyMDApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBza2lwVG9OZXh0VHJhY2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZhaWxUZXN0
KCJuZXh0LXRyYWNrIGV2ZW50cyBzaG91bGQgbm90IGJlIGZpcmVkLiIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgZnVuY3Rpb24gc2tpcFRvUHJldmlvdXNUcmFjayhldmVudCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmFpbFRlc3QoInByZXZpb3VzLXRyYWNrIGV2ZW50cyBzaG91bGQgbm90IGJl
IGZpcmVkLiIpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+UHJldmlvdXMvTmV4dCBUcmFjayBldmVudHMgc2hvdWxk
IG5vdCBiZSBmaXJlZCBpZiBwcmV2aW91cy9uZXh0VHJhY2tFbmFibGVkIGFyZSAnZmFsc2UnLjwv
cD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNz
aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEt
ZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAg
LTEsMTkgKzAsMCBAQAotJ0NvbnRlbnQnIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQg
cmVzcG9uZCB0byBQcmV2aW91cy9OZXh0IFRyYWNrIG1lZGlhIGNvbnRyb2wgZXZlbnRzLgotCi0K
LUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25D
dXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotRVhQRUNURUQgKHZpZGVvLnBhdXNl
ZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5aW5nIG1lZGlhLgotRVZFTlQocGxheWluZykKLU1l
ZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9L
Ci1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9
PSAnYWN0aXZlJykgT0sKLVNlbmRpbmcgTmV4dCBUcmFjayBtZWRpYSBldmVudC4KLVJVTihpbnRl
cm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJuZXh0LXRyYWNrIikpCi1FVkVOVChuZXh0dHJh
Y2spCi1TZW5kaW5nIFByZXZpb3VzIFRyYWNrIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5z
ZW5kTWVkaWFDb250cm9sRXZlbnQoInByZXZpb3VzLXRyYWNrIikpCi1FVkVOVChwcmV2aW91c3Ry
YWNrKQotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFj
ay1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vz
c2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy5odG1sCShub25leGlzdGVu
dCkKQEAgLTEsNjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAg
IDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbiwgY29udHJvbHM7Ci0KLSAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1l
ZGlhU2Vzc2lvbigiY29udGVudCIpOwotICAgICAgICAgICAgY29udHJvbHMgPSBzZXNzaW9uLmNv
bnRyb2xzOwotICAgICAgICAgICAgY29udHJvbHMubmV4dFRyYWNrRW5hYmxlZCA9IHRydWU7Ci0g
ICAgICAgICAgICBjb250cm9scy5wcmV2aW91c1RyYWNrRW5hYmxlZCA9IHRydWU7Ci0gICAgICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ25leHR0cmFjaycsIHNraXBUb05leHRUcmFjaywgZmFsc2UsIHRy
dWUsIGNvbnRyb2xzKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncHJldmlvdXN0cmFjaycs
IHNraXBUb1ByZXZpb3VzVHJhY2ssIGZhbHNlLCB0cnVlLCBjb250cm9scyk7Ci0KLSAgICAgICAg
ICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxh
eXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1l
ZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlk
ZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcn
LCBiZWdhblBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJu
YWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpZGxlIik7Ci0KLSAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiQmVnaW4gcGxheWluZyBtZWRpYS4iKTsKLSAgICAgICAgICAgIHZpZGVv
LnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVu
dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5
aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7
Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24p
JywgImFjdGl2ZSIpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIE5l
eHQgVHJhY2sgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMu
c2VuZE1lZGlhQ29udHJvbEV2ZW50KCJuZXh0LXRyYWNrIiknKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNraXBUb05leHRUcmFjayhldmVudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIFByZXZpb3VzIFRyYWNrIG1l
ZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJv
bEV2ZW50KCJwcmV2aW91cy10cmFjayIpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBza2lwVG9QcmV2aW91c1RyYWNrKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBlbmRU
ZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KLSAgICA8cD4nQ29udGVudCcgc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIHNo
b3VsZCByZXNwb25kIHRvIFByZXZpb3VzL05leHQgVHJhY2sgbWVkaWEgY29udHJvbCBldmVudHMu
PC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1pbnRlcnJ1cHRpb25zLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1p
bnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NDUwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxOCArMCwwIEBACi0nVHJhbnNpZW50JyBpbnRlcnJ1cHRpb24gZXZl
bnRzIHNob3VsZCBkdWNrIGF1ZGlvIGZvciAnQ29udGVudCcgbWVkaWEgc2Vzc2lvbnMuCi0KLQot
V2FpdGluZyBmb3IgQ29udGVudCBtZWRpYSB0byBiZWdpbiBwbGF5aW5nLgotRVZFTlQoY2FucGxh
eXRocm91Z2gpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKGludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1FWFBFQ1RFRCAo
aW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidmlkZW8iKSkgPT0gJzEnKSBPSwotU2VuZGluZyAnVHJhbnNpZW50JyBzdGFydC1vZi1pbnRl
cnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uU3Rh
cnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50IikpCi1FWFBFQ1RFRCAoaW50
ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaW50ZXJydXB0ZWQn
KSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYUVsZW1lbnRQbGF5ZXJWb2x1bWUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpID09ICcwLjI1JykgT0sKLVNlbmRpbmcgJ1RyYW5z
aWVudCcgZW5kLW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNl
bmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50Iikp
Ci1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9
PSAnYWN0aXZlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFFbGVtZW50UGxheWVyVm9s
dW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpKSA9PSAnMScpIE9LCi1FTkQgT0Yg
VEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1pbnRlcnJ1
cHRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFu
c2llbnQtaW50ZXJydXB0aW9ucy5odG1sCShyZXZpc2lvbiAyNjc0NTApCisrKyBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1pbnRlcnJ1cHRpb25zLmh0bWwJKG5vbmV4aXN0ZW50
KQpAQCAtMSw2MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotICAgIAotICAgICAgICBmdW5jdGlvbiBy
dW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLSAgICAgICAgICAgIHNlc3Npb24g
PSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiV2FpdGluZyBmb3IgQ29udGVudCBtZWRpYSB0byBiZWdpbiBwbGF5aW5nLiIpCi0gICAgICAg
ICAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKLSAgICAg
ICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAg
ICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9j
b3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAg
ICAgICB2aWRlby52b2x1bWUgPSAxOwotICAgICAgICAgICAgdmlkZW8ub25wbGF5aW5nID0gYmVn
YW5QbGF5aW5nOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmdW5jdGlvbiBiZWdpblBs
YXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ2aWRlbyIpLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2Fu
UGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRp
YSBiZWdhbiBwbGF5aW5nLiIpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykg
ewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1
cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ2ludGVybmFscy5tZWRpYUVsZW1lbnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZpZGVvIikpJywgMSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IlNlbmRpbmcgJ1RyYW5zaWVudCcgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4i
KTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRP
ZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50IiknKTsKLQotICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKScsICJpbnRlcnJ1cHRlZCIpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50
ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dmlkZW8iKSknLCAwLjI1KTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGlu
ZyAnVHJhbnNpZW50JyBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4iKTsKLSAgICAg
ICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRp
b25Ob3RpZmljYXRpb24oInRyYW5zaWVudCIpJyk7Ci0KLSAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0
aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFFbGVt
ZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpKScsIDEpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAg
ICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
LSAgICA8cD4nVHJhbnNpZW50JyBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBkdWNrIGF1ZGlv
IGZvciAnQ29udGVudCcgbWVkaWEgc2Vzc2lvbnMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8i
IC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Ry
YW5zaWVudC1zb2xvLWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24v
dHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxOCArMCwwIEBACi0nVHJhbnNpZW50IFNvbG8nIGludGVycnVwdGlvbiBldmVudHMgc2hv
dWxkIHBhdXNlIGVsZW1lbnRzIGJlbG9uZ2luZyB0byAnQ29udGVudCcgbWVkaWEgc2Vzc2lvbnMu
Ci0KLQotV2FpdGluZyBmb3IgQ29udGVudCBtZWRpYSB0byBiZWdpbiBwbGF5aW5nLgotRVZFTlQo
Y2FucGxheXRocm91Z2gpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKGludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1FWFBF
Q1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1TZW5kaW5nICdUcmFuc2llbnQgU29s
bycgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4KLVJVTihpbnRlcm5hbHMuc2Vu
ZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudC1z
b2xvIikpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKSA9PSAnaW50ZXJydXB0ZWQnKSBPSwotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1
ZScpIE9LCi1TZW5kaW5nICdUcmFuc2llbnQgU29sbycgZW5kLW9mLWludGVycnVwdGlvbiBub3Rp
ZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVwdGlv
bk5vdGlmaWNhdGlvbigidHJhbnNpZW50LXNvbG8iKSkKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVk
aWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQg
KHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtc29sby1pbnRlcnJ1cHRpb25zLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtc29sby1pbnRl
cnJ1cHRpb25zLmh0bWwJKHJldmlzaW9uIDI2NzQ1MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy5odG1sCShub25leGlzdGVudCkKQEAg
LTEsNTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3Jp
cHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
bWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsKLSAgICAKLSAgICAgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigi
Y29udGVudCIpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIldhaXRpbmcgZm9yIENvbnRl
bnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4iKQotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVt
ZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5Q
bGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwg
Ii4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNz
aW9uOwotICAgICAgICAgICAgdmlkZW8ub25wbGF5aW5nID0gYmVnYW5QbGF5aW5nOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdmlkZW8u
b25wbGF5aW5nID0gbnVsbDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLSAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiU2VuZGluZyAnVHJhbnNpZW50IFNvbG8nIHN0YXJ0LW9mLWludGVycnVwdGlv
biBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1l
ZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudC1zb2xv
IiknKTsKLQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpbnRlcnJ1cHRlZCIpOwotICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ1RyYW5zaWVudCBTb2xvJyBlbmQtb2YtaW50ZXJydXB0
aW9uIG5vdGlmaWNhdGlvbi4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5k
TWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudC1zb2xv
IiknKTsKLQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLSAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J1RyYW5zaWVudCBT
b2xvJyBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBwYXVzZSBlbGVtZW50cyBiZWxvbmdpbmcg
dG8gJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAv
PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410124</attachid>
            <date>2020-09-30 08:33:44 -0700</date>
            <delta_ts>2020-09-30 09:03:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216831-20200930083343.patch</filename>
            <type>text/plain</type>
            <size>293838</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzc5
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA5
LTMwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29k
ZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc0ZUVy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVy
ZXMuY21ha2U6CisgICAgICAgIFJlbW92ZSBvcHRpb24gdG8gYnVpbGQgd2l0aCBNRURJQV9TRVNT
SU9OLCBubyBvbmUgd2FzIGRvaW5nIGl0LgorCiAyMDIwLTA5LTMwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBJbnRlcm5hbCBh
dWRpbyByZW5kZXJpbmcgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY3NzkwKQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJs
ZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgUmVtb3ZlIG1lZGlhIHNlc3Np
b24gcmVsYXRlZCBmaWxlcy4KKworICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9QbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
YWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgICogTW9k
dWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb246IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzZXNzaW9uOiBSZW1vdmVkLgorICAgICAgICBEZWxldGUgTW9kdWxlcy9tZWRpYXNl
c3Npb24gYW5kIHBsYXRmb3JtL21lZGlhc2Vzc2lvbi4gTW92ZSBmaWxlcyB0aGF0CisgICAgICAg
IHdlcmUgYWN0dWFsbHkgdXNlZCBmb3IgdGhlIFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCBmZWF0
dXJlIHRvIAorICAgICAgICBNb2R1bGVzL2FpcnBsYXkgd2hlcmUgb3RoZXIgcGFydHMgb2YgdGhh
dCBmZWF0dXJlIGFyZSBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgIFJlbW92ZSBhbGwg
Y29kZSBpbnNpZGUgRU5BQkxFKE1FRElBX1NFU1NJT04pLgorCiAyMDIwLTA5LTMwICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBSZW5hbWUgTGlu
ZUJyZWFrZXIgdG8gSW5saW5lQ29udGVudEJyZWFrZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGll
cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xzIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIiCi0gICAgIiR7V0VCQ09SRV9ESVJ9L01v
ZHVsZXMvbWVkaWFzZXNzaW9uIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc291
cmNlIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0YyIKQEAgLTEzOSw3ICsxMzgs
NiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIiCi0gICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc2Vz
c2lvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0iCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0YyIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vbW9jayIKQEAgLTE5OCw3ICsxOTYsNiBAQCBzZXQoV2ViQ29yZV9J
RExfSU5DTFVERVMKICAgICBNb2R1bGVzL2luZGV4ZWRkYgogICAgIE1vZHVsZXMvbWVkaWFjYXBh
YmlsaXRpZXMKICAgICBNb2R1bGVzL21lZGlhcmVjb3JkZXIKLSAgICBNb2R1bGVzL21lZGlhc2Vz
c2lvbgogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0KICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMK
ICAgICBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0CkBAIC0zMjcsMTAgKzMyNCw2IEBAIHNldChXZWJD
b3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2
ZW50LmlkbAogCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudCtNZWRp
YVNlc3Npb24uaWRsCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9s
cy5pZGwKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCi0KICAgICBN
b2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2srTWVkaWFTb3VyY2UuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXNvdXJjZS9ET01VUkwrTWVkaWFTb3VyY2UuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTU2
LDkgKzE1Niw2IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWQKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVudC5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVk
aWFTZXNzaW9uLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFS
ZW1vdGVDb250cm9scy5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9U
cmFjaytNZWRpYVNvdXJjZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtOTc0
LDE4ICs5NzQsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWFwRWxl
bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxNYXJxdWVlRWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTE1hcnF1ZWVFbGVtZW50LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRp
YUVsZW1lbnQrTWVkaWFTZXNzaW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudCtSZW1vdGVQbGF5YmFjay5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVu
dCtSZW1vdGVQbGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50QXVkaW9PdXRw
dXQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxNZWRpYUVsZW1lbnRBdWRpb091dHB1dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1l
bnRNZWRpYVNlc3Npb24uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxheWJhY2suY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRSZW1vdGVQ
bGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNZW51RWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTE1lbnVFbGVtZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lbnVJdGVtRWxlbWVudC5jcHAKQEAgLTEyNDQsMTAg
KzEyMzgsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUmVjb3JkZXIu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJl
Y29yZGVyRXJyb3JFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNv
bnRyb2xzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTZXNzaW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBWUEFU
SCA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYWNvbnRyb2xzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFyZWNvcmRlciBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbiBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwK
QEAgLTI1Niw5ICsyNTUsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJh
Y2srTWVkaWFTb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2
Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw2IEBACiBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCisgICAg
TW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAor
CiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCiAg
ICAgTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLmgKQEAgLTg3LDEyICs4OSw2IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJvdmlkZXIuaAogCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uRXZlbnRzLmgKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0
YS5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudC5oCi0KICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NhbXBsZU1hcC5oCiAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lv
biAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDkgKzEzMCw2IEBAIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuY3BwCiBN
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKIE1vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCi1Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50TWVkaWFTZXNzaW9uLmNwcAotTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5jcHAKLU1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3BwCiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5
LmNwcApAQCAtMzEwOSw4ICszMTA2LDYgQEAgSlNNZWRpYVF1ZXJ5TGlzdC5jcHAKIEpTTWVkaWFR
dWVyeUxpc3RFdmVudC5jcHAKIEpTTWVkaWFSZWNvcmRlci5jcHAKIEpTTWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQuY3BwCi1KU01lZGlhUmVtb3RlQ29udHJvbHMuY3BwCi1KU01lZGlhU2Vzc2lvbi5j
cHAKIEpTTWVkaWFTb3VyY2UuY3BwCiBKU01lZGlhU3RyZWFtLmNwcAogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5jcHAKIEpT
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCiBKU0FwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAor
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiBNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q29u
dGFjdEZpZWxkLmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmNwcApAQCAtODgs
NyArODksNiBAQCBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlCiBNb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQotTW9k
dWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIE1vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJh
c2VNYW5hZ2VyQ29jb2EubW0KQEAgLTUyMSw3ICs1MjEsNiBAQCBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2CiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQotcGxhdGZvcm0vbWVkaWFzZXNz
aW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlP
Uy5tbSBAbm8tdW5pZnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAkobm9uZXhpc3RlbnQpCkBA
IC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0vLyBGSVhNRTogVGhlc2UgZG9uJ3Qgc2VlbSB0byBiZSBpbiBhbnkgY3VycmVudCBzcGVj
aWZpY2F0aW9ucy4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZW0uCi0vLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMjE2ODMxLgotWwotICAgIENvbmRpdGlvbmFsPVZJREVPJk1FRElB
X1NFU1NJT04sCi0gICAgSW1wbGVtZW50ZWRCeT1IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
Ci1dIHBhcnRpYWwgaW50ZXJmYWNlIEhUTUxNZWRpYUVsZW1lbnQgewotICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcga2luZDsKLQotICAgIGF0dHJpYnV0ZSBNZWRpYVNlc3Npb24/IHNlc3Npb247Ci19
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxl
bWVudE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgiCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6a2lu
ZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAg
ICByZXR1cm4gZWxlbWVudC0+a2luZCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb246OnNldEtpbmQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3RyaW5nJiBraW5kKQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxl
bWVudC0+c2V0S2luZChraW5kKTsKLX0KLQotTWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50
TWVkaWFTZXNzaW9uOjpzZXNzaW9uKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAg
QVNTRVJUKGVsZW1lbnQpOwotICAgIHJldHVybiBlbGVtZW50LT5zZXNzaW9uKCk7Ci19Ci0KLXZv
aWQgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6c2V0U2Vzc2lvbihIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKGVsZW1l
bnQpOwotICAgIGVsZW1lbnQtPnNldFNlc3Npb24oc2Vzc2lvbik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBFTkFCTEUo
VklERU8pICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oCShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi0jaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24gewotcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIGtpbmQoSFRNTE1lZGlhRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lkIHNldEtp
bmQoSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwotCi0gICAgc3RhdGljIE1lZGlh
U2Vzc2lvbiogc2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgc2V0
U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFTZXNzaW9uKik7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5B
QkxFKFZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFSZW1vdGVDb250cm9scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5jcHAJKHJldmlzaW9uIDI2Nzc5MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJv
bHMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJNZWRpYVJlbW90ZUNvbnRyb2xzLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVJlbW90ZUNvbnRyb2xzKTsKLQotTWVkaWFSZW1v
dGVDb250cm9sczo6TWVkaWFSZW1vdGVDb250cm9scyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoY29udGV4dCkKLSAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQotewotfQotCi12b2lkIE1l
ZGlhUmVtb3RlQ29udHJvbHM6OmNsZWFyU2Vzc2lvbigpCi17Ci0gICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKLX0KLQotTWVkaWFSZW1vdGVDb250cm9sczo6fk1lZGlhUmVtb3RlQ29udHJvbHMoKSA9
IGRlZmF1bHQ7Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250cm9sczo6c2V0UHJldmlvdXNUcmFja0Vu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpCi17Ci0gICAgaWYgKG1fcHJldmlvdXNUcmFja0VuYWJsZWQg
PT0gaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ByZXZpb3VzVHJhY2tFbmFi
bGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAgICAgbV9zZXNzaW9u
LT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250
cm9sczo6c2V0TmV4dFRyYWNrRW5hYmxlZChib29sIGlzRW5hYmxlZCkKLXsKLSAgICBpZiAobV9u
ZXh0VHJhY2tFbmFibGVkID09IGlzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9u
ZXh0VHJhY2tFbmFibGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAg
ICAgbV9zZXNzaW9uLT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuaAko
cmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFSZW1vdGVDb250cm9scy5oCShub25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVJlbW90ZUNvbnRyb2xzIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFSZW1vdGVDb250cm9scz4sIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhUmVtb3RlQ29u
dHJvbHMpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFSZW1vdGVDb250cm9scz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU2Vzc2lvbiogc2Vzc2lv
biA9IG51bGxwdHIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJl
bW90ZUNvbnRyb2xzKGNvbnRleHQsIHNlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBib29sIHByZXZp
b3VzVHJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1RyYWNrRW5hYmxlZDsg
fQotICAgIHZvaWQgc2V0UHJldmlvdXNUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICBib29sIG5l
eHRUcmFja0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX25leHRUcmFja0VuYWJsZWQ7IH0KLSAg
ICB2b2lkIHNldE5leHRUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVk
PE1lZGlhUmVtb3RlQ29udHJvbHM+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVJl
bW90ZUNvbnRyb2xzPjo6ZGVyZWY7Ci0KLSAgICB2b2lkIGNsZWFyU2Vzc2lvbigpOwotCi0gICAg
dmlydHVhbCB+TWVkaWFSZW1vdGVDb250cm9scygpOwotCi0gICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVJl
bW90ZUNvbnRyb2xzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KLQotcHJpdmF0ZToKLSAgICBNZWRpYVJl
bW90ZUNvbnRyb2xzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBNZWRpYVNlc3Npb24qKTsKLQot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQot
ICAgIGJvb2wgbV9wcmV2aW91c1RyYWNrRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX25l
eHRUcmFja0VuYWJsZWQgeyBmYWxzZSB9OwotCi0gICAgTWVkaWFTZXNzaW9uKiBtX3Nlc3Npb24g
eyBudWxscHRyIH07Ci0KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90ZUNv
bnRyb2xzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5pZGwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAotXSBp
bnRlcmZhY2UgTWVkaWFSZW1vdGVDb250cm9scyA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoKTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIHByZXZpb3VzVHJhY2tFbmFibGVkOwotICAgIGF0dHJpYnV0ZSBib29sZWFuIG5l
eHRUcmFja0VuYWJsZWQ7Ci0KLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucHJldmlvdXN0
cmFjazsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmV4dHRyYWNrOwotfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI4MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQu
aCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgot
I2luY2x1ZGUgIlBhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1NZWRpYVNlc3Npb246
Ok1lZGlhU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIEtpbmQga2luZCkKLSAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2tpbmQoa2luZCkKLXsKLSAgICAvLyA0LiBNZWRpYSBT
ZXNzaW9ucwotICAgIC8vIDMuIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Np
b24gdHlwZSBpcyAiY29udGVudCIsIHRoZW4gY3JlYXRlIGEgbmV3IG1lZGlhIHJlbW90ZSBjb250
cm9sbGVyIGZvciBtZWRpYQotICAgIC8vICAgIHNlc3Npb24uIChPdGhlcndpc2UgbWVkaWEgc2Vz
c2lvbiBoYXMgbm8gbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuKQotICAgIGlmIChtX2tpbmQgPT0g
S2luZDo6Q29udGVudCkKLSAgICAgICAgbV9jb250cm9scyA9IE1lZGlhUmVtb3RlQ29udHJvbHM6
OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5n
bGV0b24oKS5hZGRNZWRpYVNlc3Npb24oKnRoaXMpOwotfQotCi1NZWRpYVNlc3Npb246On5NZWRp
YVNlc3Npb24oKQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnJlbW92
ZU1lZGlhU2Vzc2lvbigqdGhpcyk7Ci0KLSAgICBpZiAobV9jb250cm9scykKLSAgICAgICAgbV9j
b250cm9scy0+Y2xlYXJTZXNzaW9uKCk7Ci19Ci0KLU1lZGlhUmVtb3RlQ29udHJvbHMqIE1lZGlh
U2Vzc2lvbjo6Y29udHJvbHMoKQotewotICAgIHJldHVybiBtX2NvbnRyb2xzLmdldCgpOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6YWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmIGVs
ZW1lbnQpCi17Ci0gICAgQVNTRVJUKCFtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5jb250YWlucygm
ZWxlbWVudCkpOwotICAgIG1fcGFydGljaXBhdGluZ0VsZW1lbnRzLmFkZCgmZWxlbWVudCk7Ci19
Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpyZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkKLXsKLSAgICBBU1NFUlQobV9wYXJ0aWNpcGF0aW5nRWxlbWVudHMuY29udGFp
bnMoJmVsZW1lbnQpKTsKLSAgICBtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5yZW1vdmUoJmVsZW1l
bnQpOwotCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIG1f
YWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgfSk7Ci0K
LSAgICBpZiAobV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cykKLSAgICAgICAg
bV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy0+cmVtb3ZlKCZlbGVtZW50KTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYgd29ya2VyKQotewotICAgIGlmIChQYWdlICpwYWdl
ID0gbV9kb2N1bWVudC5wYWdlKCkpIHsKLSAgICAgICAgYm9vbCBoYWRBY3RpdmVNZWRpYUVsZW1l
bnRzID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuaGFzQWN0aXZlTWVkaWFFbGVt
ZW50cygpOwotCi0gICAgICAgIHdvcmtlcigpOwotCi0gICAgICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKTsKLSAgICAgICAgaWYgKGhhZEFjdGl2ZU1lZGlhRWxlbWVudHMgIT0gaGFz
QWN0aXZlTWVkaWFFbGVtZW50cykKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
Lmhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGhhc0FjdGl2
ZU1lZGlhRWxlbWVudHMpOwotICAgIH0gZWxzZQotICAgICAgICB3b3JrZXIoKTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OmFkZEFjdGl2ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KQotewotICAgIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoWyZdKCkgewotICAgICAg
ICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5hZGQoJmVsZW1lbnQpOwotICAgIH0pOwot
fQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aXNNZWRpYUVsZW1lbnRBY3RpdmUoSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVu
dHMuY29udGFpbnMoJmVsZW1lbnQpOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aGFzQWN0aXZl
TWVkaWFFbGVtZW50cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FjdGl2ZVBhcnRpY2lwYXRp
bmdFbGVtZW50cy5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0
YShjb25zdCBPcHRpb25hbDxNZXRhZGF0YT4mIG9wdGlvbmFsTWV0YWRhdGEpCi17Ci0gICAgaWYg
KCFvcHRpb25hbE1ldGFkYXRhKQotICAgICAgICBtX21ldGFkYXRhID0geyB9OwotICAgIGVsc2Ug
ewotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IG9wdGlvbmFsTWV0YWRhdGEudmFsdWUoKTsKLSAg
ICAgICAgbV9tZXRhZGF0YSA9IHsgbWV0YWRhdGEudGl0bGUsIG1ldGFkYXRhLmFydGlzdCwgbWV0
YWRhdGEuYWxidW0sIG1fZG9jdW1lbnQuY29tcGxldGVVUkwobWV0YWRhdGEuYXJ0d29yaykgfTsK
LSAgICB9Ci0KLSAgICBpZiAoYXV0byogcGFnZSA9IG1fZG9jdW1lbnQucGFnZSgpKQotICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5tZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSht
X21ldGFkYXRhKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmRlYWN0aXZhdGUoKQotewotICAg
IC8vIDUuMS4yLiBPYmplY3QgbWVtYmVycwotICAgIC8vIFdoZW4gdGhlIGRlYWN0aXZhdGUoKSBt
ZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKLSAgICAvLyAxLiBMZXQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLgotICAgIC8vIDIuIEluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEgc2Vzc2lv
buKAmXMgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAvLyAzLiBTZXQgbWVkaWEg
c2Vzc2lvbidzIHJlc3VtZSBsaXN0IHRvIGFuIGVtcHR5IGxpc3QuCi0gICAgLy8gNC4gU2V0IG1l
ZGlhIHNlc3Npb24ncyBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIHRvIGFuIGVtcHR5IGxp
c3QuCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIHdoaWxl
ICghbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMudGFrZUFueSgpLT5wYXVzZSgpOwotICAgIH0p
OwotCi0gICAgLy8gNS4gUnVuIHRoZSBtZWRpYSBzZXNzaW9uIGRlYWN0aXZhdGlvbiBhbGdvcml0
aG0gZm9yIG1lZGlhIHNlc3Npb24uCi0gICAgcmVsZWFzZUludGVybmFsKCk7Ci19Ci0KLXZvaWQg
TWVkaWFTZXNzaW9uOjpyZWxlYXNlSW50ZXJuYWwoKQotewotICAgIC8vIDYuNS4gUmVsZWFzaW5n
IGEgbWVkaWEgc2Vzc2lvbgotICAgIC8vIDEuIElmIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGN1
cnJlbnQgc3RhdGUgaXMgaWRsZSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYg
KG1fY3VycmVudFN0YXRlID09IFN0YXRlOjpJZGxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyAyLiBJZiBjdXJyZW50IG1lZGlhIHNlc3Npb24gc3RpbGwgaGFzIG9uZSBvciBtb3JlIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLCB0aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVw
cy4KLSAgICBpZiAoIW1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gMy4gT3B0aW9uYWxseSwgYmFzZWQgb24gcGxhdGZvcm0g
Y29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcmVsZWFzZSBhbnkgY3VycmVudGx5IGhl
bGQgcGxhdGZvcm0gbWVkaWEgZm9jdXMKLSAgICAvLyAgICBmb3IgY3VycmVudCBtZWRpYSBzZXNz
aW9uLgotICAgIC8vIDQuIE9wdGlvbmFsbHksIGJhc2VkIG9uIHBsYXRmb3JtIGNvbnZlbnRpb25z
LCB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSBhbnkgcHJldmlvdXNseSBlc3RhYmxpc2hlZCBv
bmdvaW5nIG1lZGlhCi0gICAgLy8gICAgaW50ZXJmYWNlIGluIHRoZSB1bmRlcmx5aW5nIHBsYXRm
b3Jt4oCZcyBub3RpZmljYXRpb25zIGFyZWEgYW5kIGFueSBvbmdvaW5nIG1lZGlhIGludGVyZmFj
ZSBpbiB0aGUgdW5kZXJseWluZwotICAgIC8vICAgIHBsYXRmb3JtJ3MgbG9jayBzY3JlZW4gYXJl
YSBmb3IgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBhbnkuCi0gICAgLy8gNS4gT3B0aW9uYWxs
eSwgYmFzZWQgb24gcGxhdGZvcm0gY29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcHJl
dmVudCBhbnkgaGFyZHdhcmUgYW5kL29yIHNvZnR3YXJlIG1lZGlhIGtleXMKLSAgICAvLyAgICBm
cm9tIGNvbnRyb2xsaW5nIHBsYXliYWNrIG9mIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLgotICAgIC8vIDYuIFNldCBjdXJyZW50IG1l
ZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6SWRsZTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246Omludm9rZSgpCi17Ci0gICAg
Ly8gNC40IEFjdGl2YXRpbmcgYSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gMS4gSWYgd2UncmUgYWxy
ZWFkeSBBQ1RJVkUgdGhlbiByZXR1cm4gc3VjY2Vzcy4KLSAgICBpZiAobV9jdXJyZW50U3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyAyLiBPcHRp
b25hbGx5LCBiYXNlZCBvbiBwbGF0Zm9ybSBjb252ZW50aW9ucywgcmVxdWVzdCB0aGUgbW9zdCBh
cHByb3ByaWF0ZSBwbGF0Zm9ybS1sZXZlbCBtZWRpYSBmb2N1cyBmb3IgbWVkaWEKLSAgICAvLyAg
ICBzZXNzaW9uIGJhc2VkIG9uIGl0cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZS4KLQotICAg
IC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwcy4uLgotCi0gICAgLy8gNC4gU2V0IG91ciBjdXJyZW50
IHN0YXRlIHRvIEFDVElWRSBhbmQgcmV0dXJuIHN1Y2Nlc3MuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6QWN0aXZlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lv
bjo6aGFuZGxlRHVja0ludGVycnVwdGlvbigpCi17Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDog
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnNldFNob3Vs
ZER1Y2sodHJ1ZSk7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpJbnRlcnJ1cHRlZDsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmhhbmRsZVVuZHVja0ludGVycnVwdGlvbigpCi17Ci0g
ICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0g
ICAgICAgIGVsZW1lbnQtPnNldFNob3VsZER1Y2soZmFsc2UpOwotCi0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6QWN0aXZlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6aGFuZGxlSW5kZWZp
bml0ZVBhdXNlSW50ZXJydXB0aW9uKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci0KLSAgICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5j
bGVhcigpOwotICAgIG1fY3VycmVudFN0YXRlID0gU3RhdGU6OklkbGU7Ci19Ci0KLXZvaWQgTWVk
aWFTZXNzaW9uOjpoYW5kbGVQYXVzZUludGVycnVwdGlvbigpCi17Ci0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6SW50ZXJydXB0ZWQ7Ci0KLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpoYW5kbGVVbnBhdXNl
SW50ZXJydXB0aW9uKCkKLXsKLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpBY3RpdmU7Ci0K
LSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OnRvZ2dsZVBsYXliYWNrKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0
aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAg
IGlmIChlbGVtZW50LT5wYXVzZWQoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZWxlbWVudC0+cGF1c2UoKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb246OnNhZmVseUl0ZXJhdGVBY3RpdmVNZWRpYUVsZW1lbnRzKGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Kik+JiBoYW5kbGVyKQotewotICAg
IEFTU0VSVCghbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyk7Ci0KLSAgICBI
YXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5
ID0gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgbV9pdGVyYXRlZEFjdGl2ZVBh
cnRpY2lwYXRpbmdFbGVtZW50cyA9ICZhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5Owot
Ci0gICAgd2hpbGUgKCFhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LmlzRW1wdHkoKSkK
LSAgICAgICAgaGFuZGxlcihhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LnRha2VBbnko
KSk7Ci0KLSAgICBtX2l0ZXJhdGVkQWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzID0gbnVsbHB0
cjsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb05leHRUcmFjaygpCi17Ci0gICAgaWYg
KG1fY29udHJvbHMgJiYgbV9jb250cm9scy0+bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICBt
X2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm5leHR0
cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb1ByZXZpb3VzVHJhY2soKQotewotICAg
IGlmIChtX2NvbnRyb2xzICYmIG1fY29udHJvbHMtPnByZXZpb3VzVHJhY2tFbmFibGVkKCkpCi0g
ICAgICAgIG1fY29udHJvbHMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucHJldmlvdXN0cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNvbnRyb2xJc0VuYWJsZWRE
aWRDaGFuZ2UoKQotewotICAgIC8vIE1lZGlhIHJlbW90ZSBjb250cm9scyBhcmUgb25seSBhbGxv
d2VkIG9uIENvbnRlbnQgbWVkaWEgc2Vzc2lvbnMuCi0gICAgQVNTRVJUKG1fa2luZCA9PSBLaW5k
OjpDb250ZW50KTsKLQotICAgIC8vIE1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0byBDb250ZW50
IG1lZGlhIHNlc3Npb25zIGhhdmUgbXV0dWFsbHktZXhjbHVzaXZlIHBsYXliYWNrLgotICAgIEFT
U0VSVChtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5zaXplKCkgPD0gMSk7Ci0KLSAgICBp
ZiAobV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gKm1fYWN0aXZlUGFydGljaXBh
dGluZ0VsZW1lbnRzLmJlZ2luKCk7Ci0gICAgbV9kb2N1bWVudC51cGRhdGVJc1BsYXlpbmdNZWRp
YShlbGVtZW50LT5lbGVtZW50SUQoKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCShub25leGlzdGVudCkKQEAg
LTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSAiTWVkaWFSZW1vdGVDb250cm9scy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU2Vzc2lvbj4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgS2luZCB7IENvbnRlbnQs
IFRyYW5zaWVudCwgVHJhbnNpZW50U29sbywgQW1iaWVudCB9OwotICAgIGVudW0gY2xhc3MgU3Rh
dGUgeyBJZGxlLCBBY3RpdmUsIEludGVycnVwdGVkIH07Ci0KLSAgICBzdHJ1Y3QgTWV0YWRhdGEg
ewotICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgICAgIFN0cmluZyBhcnRpc3Q7Ci0gICAgICAg
IFN0cmluZyBhbGJ1bTsKLSAgICAgICAgU3RyaW5nIGFydHdvcms7Ci0gICAgfTsKLQotICAgIHN0
YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24oZG9j
dW1lbnQsIGtpbmQpKTsKLSAgICB9Ci0KLSAgICB+TWVkaWFTZXNzaW9uKCk7Ci0KLSAgICBLaW5k
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBNZWRpYVJlbW90ZUNvbnRyb2xz
KiBjb250cm9scygpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KLSAgICBib29sIGhhc0FjdGl2ZU1lZGlh
RWxlbWVudHMoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0TWV0YWRhdGEoY29uc3QgT3B0aW9uYWw8
TWV0YWRhdGE+Jik7Ci0KLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLQotICAgIC8vIFJ1bnMgdGhl
IG1lZGlhIHNlc3Npb24gaW52b2NhdGlvbiBhbGdvcml0aG0gYW5kIHJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzLgotICAgIGJvb2wgaW52b2tlKCk7Ci0KLSAgICB2b2lkIGhhbmRsZUR1Y2tJbnRlcnJ1
cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZUluZGVmaW5pdGVQYXVzZUludGVycnVwdGlvbigpOwot
ICAgIHZvaWQgaGFuZGxlUGF1c2VJbnRlcnJ1cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZVVuZHVj
a0ludGVycnVwdGlvbigpOwotICAgIHZvaWQgaGFuZGxlVW5wYXVzZUludGVycnVwdGlvbigpOwot
Ci0gICAgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7
Ci0gICAgdm9pZCBza2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICB2b2lkIGNvbnRyb2xJc0Vu
YWJsZWREaWRDaGFuZ2UoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKLQotICAgIE1lZGlhU2Vzc2lvbihEb2N1bWVudCYsIEtpbmQpOwotCi0gICAgdm9p
ZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIHZvaWQgcmVtb3ZlTWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKLQotICAgIHZvaWQgc2FmZWx5SXRlcmF0ZUFj
dGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1l
bnQqKT4mKTsKLSAgICB2b2lkIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKHZvaWQpPiYpOwotICAgIHZvaWQgYWRkQWN0aXZlTWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQmKTsKLSAgICBib29sIGlzTWVkaWFFbGVtZW50QWN0aXZlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKLQotICAgIHZvaWQgcmVsZWFzZUludGVybmFsKCk7Ci0KLSAgICBTdGF0ZSBt
X2N1cnJlbnRTdGF0ZSB7IFN0YXRlOjpJZGxlIH07Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9wYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVk
aWFFbGVtZW50Kj4qIG1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMgeyBudWxs
cHRyIH07Ci0KLSAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBjb25zdCBLaW5kIG1fa2lu
ZDsKLSAgICBSZWZQdHI8TWVkaWFSZW1vdGVDb250cm9scz4gbV9jb250cm9sczsKLSAgICBNZWRp
YVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NFU1NJT04pICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwJKHJl
dmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPU1F
RElBX1NFU1NJT04sCi0gICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKLV0gaW50ZXJmYWNlIE1lZGlhU2Vzc2lvbiB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlh
U2Vzc2lvbktpbmQga2luZCA9ICJjb250ZW50Iik7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVkaWFTZXNzaW9uS2luZCBraW5kOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVJlbW90
ZUNvbnRyb2xzPyBjb250cm9sczsKLQotICAgIHVuZGVmaW5lZCBzZXRNZXRhZGF0YShNZWRpYU1l
dGFkYXRhPyBtZXRhZGF0YSk7Ci0KLSAgICB1bmRlZmluZWQgZGVhY3RpdmF0ZSgpOwotfTsKLQot
ZW51bSBNZWRpYVNlc3Npb25LaW5kIHsKLSAgICAiY29udGVudCIsCi0gICAgInRyYW5zaWVudCIs
Ci0gICAgInRyYW5zaWVudC1zb2xvIiwKLSAgICAiYW1iaWVudCIKLX07Ci0KLWRpY3Rpb25hcnkg
TWVkaWFNZXRhZGF0YSB7Ci0gICAgRE9NU3RyaW5nIHRpdGxlOwotICAgIERPTVN0cmluZyBhcnRp
c3Q7Ci0gICAgRE9NU3RyaW5nIGFsYnVtOwotICAgIFVTVlN0cmluZyBhcnR3b3JrOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkV2ZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbkV2ZW50cy5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25FdmVudHMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gTWVkaWFFdmVudFR5cGUgewotICAgIFBsYXlQYXVzZSwKLSAg
ICBUcmFja05leHQsCi0gICAgVHJhY2tQcmV2aW91cwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnRlbnRTZXNzaW9uS2luZCA9ICJjb250ZW50IjsKLQotTWVkaWFTZXNz
aW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj4gbWFuYWdlcjsKLSAgICByZXR1
cm4gbWFuYWdlcjsKLX0KLQotTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdl
cigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIG1faW50ZXJydXB0aW9uUHJvdmlkZXIgPSBh
ZG9wdFJlZihuZXcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMoKnRoaXMpKTsK
LSAgICBtX2ludGVycnVwdGlvblByb3ZpZGVyLT5iZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlv
bnMoKTsKLSNlbmRpZgotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Omhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKSBjb25zdAotewotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lv
bnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPmhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQotewotICAgIG1fc2Vzc2lvbnMuYWRkKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KQotewotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5YmFjaygpCi17Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICBTdHJpbmcgc2Vzc2lvbktpbmQgPSBzZXNzaW9uLT5r
aW5kKCk7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUoKSA9PSBNZWRpYVNlc3Np
b246OlN0YXRlOjpBY3RpdmUgJiYgKHNlc3Npb25LaW5kID09IGNvbnRlbnRTZXNzaW9uS2luZCB8
fCBzZXNzaW9uS2luZCA9PSAiIikpCi0gICAgICAgICAgICBzZXNzaW9uLT50b2dnbGVQbGF5YmFj
aygpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9OZXh0VHJh
Y2soKQotewotICAgIC8vIDUuMi4yIFdoZW4gdGhlIHVzZXIgcHJlc3NlcyB0aGUgTWVkaWFUcmFj
a05leHQgbWVkaWEga2V5LCB0aGVuIGZvciBlYWNoIENvbnRlbnQtYmFzZWQgbWVkaWEgc2Vzc2lv
biB0aGF0IGlzCi0gICAgLy8gY3VycmVudGx5IEFDVElWRSBhbmQgaGFzIGEgbWVkaWEgcmVtb3Rl
IGNvbnRyb2xsZXIgd2l0aCBpdHMgbmV4dFRyYWNrRW5hYmxlZCBhdHRyaWJ1dGUgc2V0IHRvIHRy
dWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbmV4
dHRyYWNrIGF0IGl0cyBtZWRpYSByZW1vdGUgY29udHJvbGxlci4KLSAgICBmb3IgKGF1dG8qIHNl
c3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUo
KSA9PSBNZWRpYVNlc3Npb246OlN0YXRlOjpBY3RpdmUgJiYgc2Vzc2lvbi0+a2luZCgpID09IGNv
bnRlbnRTZXNzaW9uS2luZCkKLSAgICAgICAgICAgIHNlc3Npb24tPnNraXBUb05leHRUcmFjaygp
OwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9QcmV2aW91c1Ry
YWNrKCkKLXsKLSAgICAvLyA1LjIuMiBXaGVuIHRoZSB1c2VyIHByZXNzZXMgdGhlIE1lZGlhVHJh
Y2tQcmV2aW91cyBtZWRpYSBrZXksIHRoZW4gZm9yIGVhY2ggQ29udGVudC1iYXNlZCBtZWRpYSBz
ZXNzaW9uIHRoYXQgaXMKLSAgICAvLyBjdXJyZW50bHkgQUNUSVZFIGFuZCBoYXMgYSBtZWRpYSBy
ZW1vdGUgY29udHJvbGxlciB3aXRoIGl0cyBwcmV2aW91c1RyYWNrRW5hYmxlZCBhdHRyaWJ1dGUg
c2V0IHRvIHRydWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQg
bmFtZWQgcHJldmlvdXN0cmFjayBhdCBpdHMgbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuCi0gICAg
Zm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+
Y3VycmVudFN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlICYmIHNlc3Npb24t
PmtpbmQoKSA9PSBjb250ZW50U2Vzc2lvbktpbmQpCi0gICAgICAgICAgICBzZXNzaW9uLT5za2lw
VG9QcmV2aW91c1RyYWNrKCk7Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbklu
dGVycnVwdGluZ0NhdGVnb3J5IGludGVycnVwdGluZ0NhdGVnb3J5KQotewotICAgIC8vIDQuNS4y
IEludGVycnVwdGluZyBhIG1lZGlhIHNlc3Npb24KLSAgICAvLyBXaGVuIGEgc3RhcnQtb2YtaW50
ZXJydXB0aW9uIG5vdGlmaWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9y
bSwgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9u
IGludGVycnVwdGlvbiBhbGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMs
IHBhc3NpbmcgaW4gZWFjaCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9y
IChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBz
ZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSBpcyBub3QgYWN0aXZlLCB0aGVuIHRlcm1pbmF0ZSB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgKHNlc3Npb24tPmN1cnJlbnRTdGF0ZSgpICE9IE1lZGlhU2Vz
c2lvbjo6U3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8v
IDIuIExldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSB0aGUgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSB0aGF0IHRyaWdnZXJlZCB0aGlzIGludGVycnVwdGlvbi4KLSAgICAg
ICAgLy8gICAgSWYgdGhpcyBpbnRlcnJ1cHRpb24gaGFzIG5vIGtub3duIG1lZGlhIHNlc3Npb24g
Y2F0ZWdvcnksIGxldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSBEZWZh
dWx0LgotCi0gICAgICAgIC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwczoKLSAgICAgICAgaWYgKGlu
dGVycnVwdGluZ0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpD
b250ZW50KSB7Ci0gICAgICAgICAgICAvLyAtICBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBDb250ZW50OgotICAgICAgICAgICAgLy8gICAgSWYgbWVkaWEgc2Vzc2lv
bidzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiB0eXBlIGlzIERlZmF1bHQgb3IgQ29udGVudCB0aGVu
IGluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEKLSAgICAgICAgICAgIC8vICAgIHNlc3Np
b24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQgc2V0IG1lZGlhIHNl
c3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+
a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09
IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFu
ZGxlSW5kZWZpbml0ZVBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50
ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRy
YW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Np
b24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRlbnQgdGhl
biBkdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MgYWN0aXZlCi0gICAgICAgICAgICAvLyAgIGF1
ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAgICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkg
PT0gTWVkaWFTZXNzaW9uS2luZDo6RGVmYXVsdCB8fCBzZXNzaW9uLT5raW5kKCkgPT0gTWVkaWFT
ZXNzaW9uS2luZDo6Q29udGVudCkKLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVEdWNr
SW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkg
PT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8pIHsKLSAg
ICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMg
VHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJy
ZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2llbnQgb3Ig
VHJhbnNpZW50IFNvbG8gdGhlbiBwYXVzZQotICAgICAgICAgICAgLy8gICBhbGwgb2YgbWVkaWEg
c2Vzc2lvbidzIGFjdGl2ZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIGFuZCBzZXQgY3Vy
cmVudCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAg
ICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkK
LSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVQYXVzZUludGVycnVwdGlvbigpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSBpbnRlcnJ1cHRpbmdDYXRlZ29yeSkKLXsKLSAgICAvLyA0LjUuMiBJbnRlcnJ1cHRpbmcg
YSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gV2hlbiBhbiBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlm
aWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9ybSwgdGhlbiB0aGUgdXNl
ciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9uIGNvbnRpbnVhdGlvbiBh
bGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMsIHBhc3NpbmcgaW4gZWFj
aCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSBpcyBub3QgaW50ZXJydXB0ZWQsIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgot
ICAgICAgICBpZiAoc2Vzc2lvbi0+Y3VycmVudFN0YXRlKCkgIT0gTWVkaWFTZXNzaW9uOjpTdGF0
ZTo6SW50ZXJydXB0ZWQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAyLiBM
ZXQgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgYmUgdGhlIG1lZGlhIHNlc3Np
b24gY2F0ZWdvcnkgdGhhdCBpbml0aWFsbHkgdHJpZ2dlcmVkIHRoaXMgaW50ZXJydXB0aW9uLgot
ICAgICAgICAvLyAgICBJZiB0aGlzIGludGVycnVwdGlvbiBoYXMgbm8ga25vd24gbWVkaWEgc2Vz
c2lvbiBjYXRlZ29yeSwgbGV0IGludGVycnVwdGluZyBtZWRpYSBzZXNzaW9uIGNhdGVnb3J5IGJl
IERlZmF1bHQuCi0KLSAgICAgICAgLy8gMy4gUnVuIHRoZXNlIHN1YnN0ZXBzOgotICAgICAgICBp
ZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnk6OlRyYW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlh
IHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRl
bnQsIHRoZW4gdW5kdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MKLSAgICAgICAgICAgIC8vICAg
YWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9u
J3MgY3VycmVudCBzdGF0ZSB0byBhY3RpdmUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2lu
ZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09IE1l
ZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxl
VW5kdWNrSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0
ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8p
IHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdv
cnkgaXMgVHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24n
cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2ll
bnQsIG9yIFRyYW5zaWVudCBTb2xvLCB0aGVuCi0gICAgICAgICAgICAvLyAgIHVucGF1c2UgdGhl
IG1lZGlhIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQg
c2V0IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGFjdGl2ZS4KLSAgICAgICAgICAg
IGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkKLSAgICAg
ICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVVbnBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJM
RShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMjY3
NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
TWFuYWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyIDogcHVi
bGljIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50IHsKLSAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNpbmdsZXRvbigpOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
a2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGlu
Z0NhdGVnb3J5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lv
bjsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLQotICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cygpIGNvbnN0OwotCi0gICAgdm9pZCBhZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNz
aW9uJik7Ci0gICAgdm9pZCByZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7Ci0KLSAg
ICBSZWZQdHI8TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI+IG1faW50ZXJydXB0aW9u
UHJvdmlkZXI7Ci0gICAgSGFzaFNldDxNZWRpYVNlc3Npb24qPiBtX3Nlc3Npb25zOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
ZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBN
ZWRpYVNlc3Npb25NZXRhZGF0YSBmaW5hbCB7Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9uTWV0
YWRhdGEoKSA9IGRlZmF1bHQ7Ci0KLSAgICBNZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFydGlzdCwgY29uc3QgU3RyaW5nJiBhbGJ1bSwgY29u
c3QgVVJMJiBhcnR3b3JrVVJMKQotICAgICAgICA6IG1fdGl0bGUodGl0bGUpCi0gICAgICAgICwg
bV9hcnRpc3QoYXJ0aXN0KQotICAgICAgICAsIG1fYWxidW0oYWxidW0pCi0gICAgICAgICwgbV9h
cnR3b3JrVVJMKGFydHdvcmtVUkwpIHsgfQotCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aXRsZTsgfQotICAgIFN0cmluZyBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2Fy
dGlzdDsgfQotICAgIFN0cmluZyBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxidW07IH0KLSAg
ICBVUkwgYXJ0d29ya1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0d29ya1VSTDsgfQotCi1wcml2
YXRlOgotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2FydGlzdDsKLSAgICBTdHJp
bmcgbV9hbGJ1bTsKLSAgICBVUkwgbV9hcnR3b3JrVVJMOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCShyZXZpc2lvbiAy
Njc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjc3OTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5o
IgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKLSNpbmNsdWRlICJX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMu
aD4KLSNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBTZWNvbmRzIHRh
c2tEZWxheUludGVydmFsIHsgMTAwX21zIH07Ci0KLSNkZWZpbmUgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSIGxvZ2dlcigpLmxvZ0Fsd2F5cwotCi1zdHJ1Y3QgQ2xpZW50U3RhdGUgewot
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAgIGV4cGxpY2l0IENsaWVu
dFN0YXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCi0gICAgICAgIDogY2xpZW50KGNs
aWVudCkKLSAgICAgICAgLCBjb250ZXh0SWQoY29udGV4dElkKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yID09IChDbGllbnRTdGF0ZSBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gY29udGV4dElkID09IG90aGVyLmNvbnRleHRJZCAmJiAmY2xpZW50
ID09ICZvdGhlci5jbGllbnQ7Ci0gICAgfQotCi0gICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYgY2xpZW50OwotICAgIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkOwotICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBm
bGFncyB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9OwotICAgIGJvb2wg
cmVxdWVzdGVkUGlja2VyIHsgZmFsc2UgfTsKLSAgICBib29sIHByZXZpb3VzbHlSZXF1ZXN0ZWRQ
aWNrZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgY29uZmlndXJhdGlvblJlcXVpcmVkIHsgdHJ1ZSB9
OwotICAgIGJvb2wgcGxheWVkVG9FbmQgeyBmYWxzZSB9OwotfTsKLQotc3RhdGljIGJvb2wgZmxh
Z3NBcmVTZXQoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHZhbHVlLCB1bnNpZ25lZCBm
bGFncykKLXsKLSAgICByZXR1cm4gdmFsdWUgJiBmbGFnczsKLX0KLQotU3RyaW5nIG1lZGlhUHJv
ZHVjZXJTdGF0ZVN0cmluZyhNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpCi17
Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmc7Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nQXVkaW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIklzUGxheWluZ0F1ZGlv
KyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKQotICAg
ICAgICBzdHJpbmcuYXBwZW5kKCJJc1BsYXlpbmdWaWRlbysiKTsKLSAgICBpZiAoZmxhZ3MgJiBN
ZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKQotICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKyIpOwotICAgIGlmIChmbGFncyAmIE1l
ZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIpCi0gICAg
ICAgIHN0cmluZy5hcHBlbmQoIkhhc1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyKyIpOwotICAg
IGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJSZXF1aXJlc1RhcmdldE1vbml0b3JpbmcrIik7
Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkKLSAgICAgICAgc3RyaW5nLmFwcGVuZCgiRXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSsiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpEaWRQbGF5VG9FbmQp
Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoIkRpZFBsYXlUb0VuZCsiKTsKLSAgICBpZiAoZmxhZ3Mg
JiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQo
Ikhhc0F1ZGlvT3JWaWRlbysiKTsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RyaW5nLmFwcGVuZCgiSXNOb3RQbGF5aW5nIik7Ci0gICAgZWxzZQotICAgICAgICBzdHJpbmcu
cmVzaXplKHN0cmluZy5sZW5ndGgoKSAtIDEpOwotCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIiB7
ICIsIHN0cmluZy50b1N0cmluZygpLCAiIH0iKTsKLX0KLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9u
TG9nZ2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25Mb2dnZXIp
OwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+IGNyZWF0ZShXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyJiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
TWVkaWFTZXNzaW9uTG9nZ2VyPihtYW5hZ2VyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKGNvbnN0IGNoYXIq
IG1ldGhvZE5hbWUsIENsaWVudFN0YXRlKiBzdGF0ZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1
bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXN0YXRlLT5jbGllbnQuYWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbG9nZ2Vy
LT5sb2dBbHdheXMoTG9nTWVkaWEsIG1ha2VTdHJpbmcoIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OiIsIG1ldGhvZE5hbWUsICcgJyksIHN0YXRlLT5jb250ZXh0SWQudG9VSW50NjQoKSwgc3RhdGUt
PmZsYWdzLCBhcmd1bWVudHMuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoIW1fbWFuYWdlci5hbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgbV9sb2dnZXItPmxvZ0Fsd2F5cyhMb2dNZWRpYSwgbWFrZVN0cmlu
ZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0aG9kTmFtZSwgJyAnKSwgYXJndW1lbnRz
Li4uKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxXZWJN
ZWRpYVNlc3Npb25Mb2dnZXI+IHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFTZXNzaW9uTG9nZ2Vy
PihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJik7Ci0gICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIpCi0gICAgICAgIDogbV9tYW5hZ2VyKG1hbmFn
ZXIpCi0gICAgICAgICwgbV9sb2dnZXIoTG9nZ2VyOjpjcmVhdGUodGhpcykpCi0gICAgewotICAg
IH0KLQotICAgIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1fbWFuYWdlcjsKLSAgICBSZWY8TG9n
Z2VyPiBtX2xvZ2dlcjsKLX07Ci0KLVdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6bG9nZ2VyKCkKLXsKLSAgICBpZiAoIW1fbG9nZ2VyKQotICAgICAgICBtX2xv
Z2dlciA9IFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcjo6Y3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVy
biAqbV9sb2dnZXI7Ci19Ci0KLWJvb2wgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFsbE9mKG1fY2xpZW50U3RhdGUs
IFtdIChhdXRvJiBzdGF0ZSkgewotICAgICAgICByZXR1cm4gc3RhdGUtPmNsaWVudC5hbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKLXsKLSAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxlZCA9PSBlbmFibGVkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwot
ICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwotfQotCi12b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCi17
Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtb2Nr
UGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6Om1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKLXsK
LSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwotICAgIG1vY2tQ
aWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsKLX0KLQotTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQotewotICAgIGlmICghbV9w
aWNrZXJPdmVycmlkZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8TWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9waWNr
ZXJPdmVycmlkZS5nZXQoKTsKLX0KLQotV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFyZ2V0UGlja2VyKCkKLXsKLSAgICBpZiAobV9t
b2NrUGlja2VyRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIG1vY2tQaWNrZXIoKTsKLQotICAgIHJl
dHVybiBwbGF0Zm9ybVBpY2tlcigpOwotfQotCi1XZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyKCkKLSAgICA6IG1fdGFza1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnRhc2tUaW1lckZpcmVkKQotICAgICwg
bV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCkKLXsKLX0KLQotV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLVBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xp
ZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ID09IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybiB7IH07Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIGNvbnRleHRJZC50b1VJbnQ2NCgpKTsKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtl
VW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwotCi0gICAgaWYgKG1fZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAg
c2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotCi0gICAgcmV0dXJuIGNvbnRleHRJZDsKLX0KLQotdm9p
ZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIHNpemVfdCBpbmRleCA9IGZp
bmQoJmNsaWVudCwgY29udGV4dElkKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwot
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5n
ZXQoKSk7Ci0KLSAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVE
ZWxheWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZUFsbFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50cyhXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50JiBjbGllbnQpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9jbGllbnRTdGF0ZS5zaXpl
KCk7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgaWYgKCZtX2NsaWVudFN0YXRlW2kgLSAxXS0+Y2xp
ZW50ID09ICZjbGllbnQpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFO
QUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOwotICAgICAgICAgICAg
bV9jbGllbnRTdGF0ZS5yZW1vdmUoaSAtIDEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNjaGVk
dWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8mIGNsaWVudFJlcXVlc3RpbmdQaWNrZXIgPSBtX2NsaWVudFN0
YXRlW2luZGV4XTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAg
ICAgICBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyID0gc3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1Bp
Y2tlcjsKLSAgICAgICAgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9
PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwotICAgIH0KLQotICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwotCi0g
ICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5kZXhd
LT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSk7Ci0gICAg
dGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNsaWVudC5wbGF0Zm9ybVZp
ZXcoKSwgRmxvYXRSZWN0KHJlY3QpLCBoYXNBY3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFuY2Up
OwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlRGlkQ2hhbmdl
KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBuZXdGbGFncykKLXsKLSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRl
eHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGNoYW5nZWRDbGllbnRTdGF0
ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhdOwotICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBvbGRGbGFncyA9IGNoYW5nZWRDbGllbnRTdGF0ZS0+ZmxhZ3M7Ci0gICAgaWYgKG5ld0Zs
YWdzID09IG9sZEZsYWdzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3
IGZsYWdzID0gIiwgbmV3RmxhZ3MpOwotCi0gICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9
IG5ld0ZsYWdzOwotCi0gICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHVwZGF0ZUNv
bmZpZ3VyYXRpb25GbGFncyA9IE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRN
b25pdG9yaW5nIHwgTWVkaWFQcm9kdWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlM
aXN0ZW5lciB8IE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKLSAgICBpZiAoKG9sZEZs
YWdzICYgdXBkYXRlQ29uZmlndXJhdGlvbkZsYWdzKSAhPSAobmV3RmxhZ3MgJiB1cGRhdGVDb25m
aWd1cmF0aW9uRmxhZ3MpKQotICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0
b3JpbmdDb25maWd1cmF0aW9uVGFzayk7Ci0KLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgcGxheWluZ1RvVGFyZ2V0RmxhZ3MgPSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4
dGVybmFsRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW87Ci0gICAgaWYgKChv
bGRGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZsYWdzKSAhPSAobmV3RmxhZ3MgJiBwbGF5aW5nVG9U
YXJnZXRGbGFncykpIHsKLSAgICAgICAgaWYgKGZsYWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgIWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJv
ZHVjZXI6OkRpZFBsYXlUb0VuZCkpCi0gICAgICAgICAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPnBs
YXllZFRvRW5kID0gdHJ1ZTsKLSAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhXYXRjaGRvZ1Rp
bWVyQ29uZmlndXJhdGlvblRhc2spOwotICAgIH0KLQotICAgIGlmICghbV9wbGF5YmFja1Rhcmdl
dCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSB8fCAhZmxhZ3NBcmVTZXQo
bmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkV4dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRhdGUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEbyBub3QgaW50ZXJydXB0IGFub3RoZXIgZWxl
bWVudCBhbHJlYWR5IHBsYXlpbmcgdG8gYSBkZXZpY2UuCi0gICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7
Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0
YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG8gbm90IGJlZ2luIHBsYXlpbmcgdG8gdGhlIGRldmlj
ZSB1bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qgc3RhcnRlZC4KLSAgICBpZiAoIWZsYWdzQXJlU2V0
KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgfHwgZmxhZ3NBcmVTZXQo
b2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJyZXR1cm5pbmcgZWFybHksIHBs
YXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBpZiAoc3RhdGUg
PT0gY2hhbmdlZENsaWVudFN0YXRlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2Fs
bGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKLSAgICAgICAgc3Rh
dGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElk
LCBmYWxzZSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOwotICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+Y2xpZW50
LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+Y29udGV4
dElkLCB0cnVlKTsKLQotICAgIGlmIChpbmRleCAmJiBtX2NsaWVudFN0YXRlLnNpemUoKSA+IDEp
Ci0gICAgICAgIHN0ZDo6c3dhcChtX2NsaWVudFN0YXRlLmF0KGluZGV4KSwgbV9jbGllbnRTdGF0
ZS5hdCgwKSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQotewotICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgImhhcyBhY3RpdmUgcm91dGUgPSAiLCB0
YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOwotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3Zl
KHRhcmdldCk7Ci0gICAgbV90YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5
ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
Ym9vbCBhdmFpbGFibGUpCi17Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBhdmFpbGFibGUpOwotICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
PSBhdmFpbGFibGU7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpCi0gICAg
ICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
c3RhdGUtPmNvbnRleHRJZCwgYXZhaWxhYmxlKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCgpCi17Ci0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0
UGlja2VyRGlzbWlzc2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENs
aWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y29uZmlndXJlTmV3Q2xpZW50cygpCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xp
ZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc3RhdGUtPmNvbmZpZ3VyYXRpb25SZXF1
aXJlZCA9IGZhbHNlOwotICAgICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZSkKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7Ci0KLSAgICAgICAgaWYgKG1fcGxh
eWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Ci0gICAgfQot
fQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
Q2xpZW50cygpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBub3RG
b3VuZDsKLSAgICBib29sIGhhdmVBY3RpdmVSb3V0ZSA9IG1fcGxheWJhY2tUYXJnZXQgJiYgbV9w
bGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9
IG1fY2xpZW50U3RhdGVbaV07Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3RhdGUt
PnJlcXVlc3RlZFBpY2tlcik7Ci0KLSAgICAgICAgaWYgKChtX3RhcmdldENoYW5nZWQgfHwgbV9w
bGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkgJiYgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcikK
LSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gaTsKLQotICAg
ICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgZmxh
Z3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFs
RGV2aWNlKSkKLSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaTsK
LQotICAgICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQg
JiYgaGF2ZUFjdGl2ZVJvdXRlICYmIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyKQot
ICAgICAgICAgICAgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBpOwotICAgIH0K
LQotICAgIGlmIChpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciAhPSBub3RGb3VuZCkK
LSAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mQ2xpZW50VGhh
dFJlcXVlc3RlZFBpY2tlcjsKLSAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PT0gbm90Rm91bmQgJiYgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgIT0gbm90Rm91
bmQpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaW5kZXhPZkxhc3RD
bGllbnRUb1JlcXVlc3RQaWNrZXI7Ci0gICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFy
Z2V0ID09IG5vdEZvdW5kICYmIGhhdmVBY3RpdmVSb3V0ZSAmJiBmbGFnc0FyZVNldChtX2NsaWVu
dFN0YXRlWzBdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkgJiYgIWZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbMF0tPmZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRv
VGFyZ2V0ID0gMDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5z
aXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07Ci0K
LSAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50
LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNv
cHlSZWYoKSk7Ci0KLSAgICAgICAgaWYgKGkgIT0gaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJn
ZXQgfHwgIWhhdmVBY3RpdmVSb3V0ZSkgewotICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOwotICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoc3RhdGUtPnJlcXVlc3RlZFBpY2tlciAmJiBtX3BsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tU
YXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxh
eWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoc3RhdGUtPmNvbnRleHRJZCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChtX3RhcmdldENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3Nl
ZCkKLSAgICAgICAgICAgIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAoaGF2ZUFjdGl2ZVJvdXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRl
eE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldF07Ci0gICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3Rh
dGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewot
ICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7
Ci0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV90YXJn
ZXRDaGFuZ2VkID0gZmFsc2U7Ci0gICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOwotfQotCi12
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRv
cmluZygpCi17Ci0gICAgYm9vbCBtb25pdG9yaW5nUmVxdWlyZWQgPSBmYWxzZTsKLSAgICBib29s
IGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVyID0gZmFsc2U7Ci0gICAgYm9vbCBoYXZlQ2xpZW50V2l0
aE1lZGlhID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsK
LSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5n
ZXQoKSk7Ci0gICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpSZXF1aXJl
c1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewotICAgICAgICAgICAgbW9uaXRvcmluZ1JlcXVp
cmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChz
dGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVyKQotICAgICAgICAgICAgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSB0cnVlOwot
ICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVv
KQotICAgICAgICAgICAgaGF2ZUNsaWVudFdpdGhNZWRpYSA9IHRydWU7Ci0gICAgfQotCi0gICAg
aWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAoaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYgaGF2
ZUNsaWVudFdpdGhNZWRpYSkpIHsKLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwotICAgICAgICB0YXJnZXRQaWNr
ZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGlu
ZyBtb25pdG9yaW5nIik7Ci0gICAgICAgIHRhcmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKCk7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzIHRhc2tzKQotewotICAgIG1f
dGFza0ZsYWdzIHw9IHRhc2tzOwotICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCh0YXNrRGVs
YXlJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVy
RmlyZWQoKQotewotICAgIGlmIChtX3Rhc2tGbGFncyAmIEluaXRpYWxDb25maWd1cmF0aW9uVGFz
aykKLSAgICAgICAgY29uZmlndXJlTmV3Q2xpZW50cygpOwotICAgIGlmIChtX3Rhc2tGbGFncyAm
IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzaykKLSAgICAgICAgY29uZmlndXJlUGxheWJh
Y2tUYXJnZXRDbGllbnRzKCk7Ci0gICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0TW9uaXRvcmlu
Z0NvbmZpZ3VyYXRpb25UYXNrKQotICAgICAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0
b3JpbmcoKTsKLSAgICBpZiAobV90YXNrRmxhZ3MgJiBXYXRjaGRvZ1RpbWVyQ29uZmlndXJhdGlv
blRhc2spCi0gICAgICAgIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIG1fdGFza0Zs
YWdzID0gTm9UYXNrOwotfQotCi1zaXplX3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZmluZChX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9jbGllbnRTdGF0
ZVtpXS0+Y29udGV4dElkID09IGNvbnRleHRJZCAmJiAmbV9jbGllbnRTdGF0ZVtpXS0+Y2xpZW50
ID09IGNsaWVudCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLQotICAgIHJldHVybiBu
b3RGb3VuZDsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYXRj
aGRvZ1RpbWVyKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRjaGRvZ1RpbWVySW50
ZXJ2YWxBZnRlclBhdXNpbmcgeyAxX2ggfTsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRj
aGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCB7IDhfbWluIH07Ci0KLSAgICBpZiAo
IW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkp
IHsKLSAgICAgICAgaWYgKG1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1l
ciIpOwotICAgICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKLSAgICAg
ICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYm9vbCBzdG9wVGltZXIgPSBmYWxzZTsKLSAgICBib29sIGRpZFBs
YXlUb0VuZCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7
Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7Ci0KLSAgICAg
ICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgICAgICBzdG9wVGltZXIgPSB0cnVlOwotICAg
ICAgICBpZiAoc3RhdGUtPnBsYXllZFRvRW5kKQotICAgICAgICAgICAgZGlkUGxheVRvRW5kID0g
dHJ1ZTsKLSAgICAgICAgc3RhdGUtPnBsYXllZFRvRW5kID0gZmFsc2U7Ci0gICAgfQotCi0gICAg
aWYgKHN0b3BUaW1lcikgewotICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sICJzdG9wcGluZyB0aW1lciIpOwotICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0lu
dGVydmFsID0geyB9OwotICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFNlY29uZHMgaW50ZXJ2YWwgPSBkaWRQbGF5VG9FbmQgPyB3YXRjaGRvZ1Rp
bWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCA6IHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVy
UGF1c2luZzsKLSAgICAgICAgaWYgKGludGVydmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2
YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBtX3dhdGNo
ZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJ0aW1lciBzY2hlZHVsZWQgZm9y
ICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vjb25kcyIpOwotICAgICAgICBtX2N1cnJlbnRXYXRj
aGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFy
Z2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwotICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLQotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrLmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IENsaWVudFN0YXRlOwotY2xhc3MgSW50UmVjdDsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkxv
Z2dlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQ7Ci0KLWNsYXNzIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKTsK
LXB1YmxpYzoKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBzaGFyZWQoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UmVjdCYsIGJvb2ws
IGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50U3RhdGVEaWRDaGFuZ2UoV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7Ci0KLSAg
ICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAg
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLSAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyKCk7Ci0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXImIHBsYXRmb3JtUGlja2VyKCkgPSAwOwotICAgIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBwbGF0Zm9ybU1hbmFnZXIoKTsKLQotcHJpdmF0ZToKLQotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXImIHRhcmdldFBpY2tlcigpOwotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBtb2NrUGlja2VyKCk7Ci0KLSAgICAvLyBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKLSAgICB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJl
ZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoKSBvdmVycmlkZTsKLQotICAg
IHNpemVfdCBmaW5kKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQqLCBQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKLQotICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tU
YXJnZXRDbGllbnRzKCk7Ci0gICAgdm9pZCBjb25maWd1cmVOZXdDbGllbnRzKCk7Ci0gICAgdm9p
ZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKLSAgICB2b2lkIGNvbmZpZ3Vy
ZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIGVudW0gQ29uZmlndXJhdGlvblRhc2tGbGFncyB7Ci0g
ICAgICAgIE5vVGFzayA9IDAsCi0gICAgICAgIEluaXRpYWxDb25maWd1cmF0aW9uVGFzayA9IDEg
PDwgMCwKLSAgICAgICAgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAxLAot
ICAgICAgICBUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDIsCi0gICAg
ICAgIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMywKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgQ29uZmlndXJhdGlvblRhc2tzOwotICAgIFN0cmluZyB0b1N0cmlu
ZyhDb25maWd1cmF0aW9uVGFza3MpOwotCi0gICAgdm9pZCBzY2hlZHVsZURlbGF5ZWRUYXNrKENv
bmZpZ3VyYXRpb25UYXNrcyk7Ci0gICAgdm9pZCB0YXNrVGltZXJGaXJlZCgpOwotCi0gICAgdm9p
ZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKLQotICAgIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgbG9n
Z2VyKCk7Ci0KLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Rh
c2tUaW1lcjsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3dh
dGNoZG9nVGltZXI7Ci0KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENsaWVudFN0YXRlPj4g
bV9jbGllbnRTdGF0ZTsKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFj
a1RhcmdldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2s+IG1fcGlja2VyT3ZlcnJpZGU7Ci0gICAgQ29uZmlndXJhdGlvblRhc2tzIG1f
dGFza0ZsYWdzIHsgTm9UYXNrIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lv
bkxvZ2dlcj4gbV9sb2dnZXI7Ci0gICAgU2Vjb25kcyBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFs
OwotICAgIGJvb2wgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX3RhcmdldENoYW5nZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wbGF5YmFja1Rh
cmdldFBpY2tlckRpc21pc3NlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21vY2tQaWNrZXJFbmFi
bGVkIHsgZmFsc2UgfTsKLX07Ci0KLVN0cmluZyBtZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBM
b2dBcmd1bWVudDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJu
IFdlYkNvcmU6Om1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhmbGFncyk7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlckNsaWVudC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlICJNZWRpYVBsYXli
YWNrVGFyZ2V0LmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNE
aXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIFBsYXRmb3JtVmlldyogcGxhdGZvcm1WaWV3KCkgY29uc3QgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9QbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkv
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIgorI2luY2x1ZGUgIldlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IFNlY29uZHMgdGFza0RlbGF5
SW50ZXJ2YWwgeyAxMDBfbXMgfTsKKworI2RlZmluZSBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIgbG9nZ2VyKCkubG9nQWx3YXlzCisKK3N0cnVjdCBDbGllbnRTdGF0ZSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZXhwbGljaXQgQ2xpZW50U3RhdGUo
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICAgICAgOiBjbGllbnQoY2xpZW50KQor
ICAgICAgICAsIGNvbnRleHRJZChjb250ZXh0SWQpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IgPT0gKENsaWVudFN0YXRlIGNvbnN0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb250ZXh0SWQgPT0gb3RoZXIuY29udGV4dElkICYmICZjbGllbnQgPT0gJm90
aGVyLmNsaWVudDsKKyAgICB9CisKKyAgICBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBj
bGllbnQ7CisgICAgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQ7CisgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIGZsYWdzIHsg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CisgICAgYm9vbCByZXF1ZXN0
ZWRQaWNrZXIgeyBmYWxzZSB9OworICAgIGJvb2wgcHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciB7
IGZhbHNlIH07CisgICAgYm9vbCBjb25maWd1cmF0aW9uUmVxdWlyZWQgeyB0cnVlIH07CisgICAg
Ym9vbCBwbGF5ZWRUb0VuZCB7IGZhbHNlIH07Cit9OworCitzdGF0aWMgYm9vbCBmbGFnc0FyZVNl
dChNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdmFsdWUsIHVuc2lnbmVkIGZsYWdzKQor
eworICAgIHJldHVybiB2YWx1ZSAmIGZsYWdzOworfQorCitTdHJpbmcgbWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBmbGFncykKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZzsKKyAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpJc1Bs
YXlpbmdBdWRpbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSXNQbGF5aW5nQXVkaW8rIik7Cisg
ICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pCisgICAgICAgIHN0
cmluZy5hcHBlbmQoIklzUGxheWluZ1ZpZGVvKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJv
ZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpCisgICAgICAgIHN0cmluZy5hcHBlbmQo
IklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UrIik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9k
dWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcikKKyAgICAgICAgc3Ry
aW5nLmFwcGVuZCgiSGFzVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIrIik7CisgICAgaWYgKGZs
YWdzICYgTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpCisg
ICAgICAgIHN0cmluZy5hcHBlbmQoIlJlcXVpcmVzVGFyZ2V0TW9uaXRvcmluZysiKTsKKyAgICBp
ZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KQorICAgICAgICBzdHJpbmcuYXBwZW5kKCJFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OkRpZFBsYXlUb0VuZCkKKyAgICAg
ICAgc3RyaW5nLmFwcGVuZCgiRGlkUGxheVRvRW5kKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlh
UHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFzQXVk
aW9PclZpZGVvKyIpOworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc05vdFBsYXlpbmciKTsKKyAgICBlbHNlCisgICAgICAgIHN0cmluZy5yZXNpemUo
c3RyaW5nLmxlbmd0aCgpIC0gMSk7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZygiIHsgIiwgc3Ry
aW5nLnRvU3RyaW5nKCksICIgfSIpOworfQorCitjbGFzcyBXZWJNZWRpYVNlc3Npb25Mb2dnZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcik7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4gY3JlYXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXImIG1hbmFnZXIpCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVNl
c3Npb25Mb2dnZXI+KG1hbmFnZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgQ2xpZW50U3RhdGUqIHN0YXRlLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICghc3RhdGUtPmNsaWVudC5hbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9sb2dnZXItPmxvZ0Fs
d2F5cyhMb2dNZWRpYSwgbWFrZVN0cmluZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0
aG9kTmFtZSwgJyAnKSwgc3RhdGUtPmNvbnRleHRJZC50b1VJbnQ2NCgpLCBzdGF0ZS0+ZmxhZ3Ms
IGFyZ3VtZW50cy4uLik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIGlubGluZSB2b2lkIGxvZ0Fsd2F5cyhjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBj
b25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgh
bV9tYW5hZ2VyLmFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX2xvZ2dlci0+bG9nQWx3YXlzKExvZ01lZGlhLCBtYWtlU3RyaW5nKCJXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjoiLCBtZXRob2ROYW1lLCAnICcpLCBhcmd1bWVudHMuLi4pOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vz
c2lvbkxvZ2dlcj4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXImKTsKKyAgICBXZWJNZWRpYVNlc3Npb25Mb2dnZXIoV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAg
ICAgICAgLCBtX2xvZ2dlcihMb2dnZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICB7CisgICAgfQorCisg
ICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbV9tYW5hZ2VyOworICAgIFJlZjxMb2dnZXI+IG1f
bG9nZ2VyOworfTsKKworV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpsb2dnZXIoKQoreworICAgIGlmICghbV9sb2dnZXIpCisgICAgICAgIG1fbG9nZ2VyID0g
V2ViTWVkaWFTZXNzaW9uTG9nZ2VyOjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuICptX2xv
Z2dlcjsKK30KKworYm9vbCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWxsT2YobV9jbGllbnRTdGF0ZSwgW10gKGF1
dG8mIHN0YXRlKSB7CisgICAgICAgIHJldHVybiBzdGF0ZS0+Y2xpZW50LmFsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQorewor
ICAgIGlmIChtX21vY2tQaWNrZXJFbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbV9t
b2NrUGlja2VyRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1vY2tQaWNrZXIo
KS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQoreworICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbW9ja1BpY2tlcigp
LmRpc21pc3NQb3B1cCgpOworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tlcigpCit7CisgICAgaWYgKCFtX3BpY2tlck92
ZXJyaWRlKQorICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOworCisgICAgcmV0dXJuICptX3BpY2tlck92ZXJy
aWRlLmdldCgpOworfQorCitXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXJnZXRQaWNrZXIoKQoreworICAgIGlmIChtX21vY2tQaWNr
ZXJFbmFibGVkKQorICAgICAgICByZXR1cm4gbW9ja1BpY2tlcigpOworCisgICAgcmV0dXJuIHBs
YXRmb3JtUGlja2VyKCk7Cit9CisKK1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIoKQorICAgIDogbV90YXNrVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVyRmlyZWQpCisgICAgLCBtX3dhdGNo
ZG9nVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKQoreworfQorCitXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcigpID0gZGVmYXVsdDsKKworUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
PT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgY29u
dGV4dElkLnRvVUludDY0KCkpOworICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8
Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CisKKyAgICBpZiAobV9leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0KQorICAgICAgICBzY2hlZHVs
ZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7CisKKyAgICByZXR1cm4gY29udGV4dElkOworfQorCit2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xp
ZW50LCBjb250ZXh0SWQpOworICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsK
KworICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGluZGV4KTsKKyAgICBzY2hlZHVsZURlbGF5ZWRU
YXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
QWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGll
bnQmIGNsaWVudCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0YXRlLnNpemUoKTsgaSA+
IDA7IC0taSkgeworICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAtIDFdLT5jbGllbnQgPT0g
JmNsaWVudCkgeworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBtX2NsaWVu
dFN0YXRlLnJlbW92ZShpIC0gMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGll
bnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBib29sLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
IT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byYgY2xpZW50UmVxdWVzdGluZ1BpY2tlciA9IG1fY2xpZW50U3RhdGVbaW5k
ZXhdOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIHN0
YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwor
ICAgICAgICBzdGF0ZS0+cHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVu
dFJlcXVlc3RpbmdQaWNrZXI7CisgICAgfQorCisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisKKyAgICBib29s
IGhhc0FjdGl2ZVJvdXRlID0gZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVtpbmRleF0tPmZsYWdz
LCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKTsKKyAgICB0YXJnZXRQ
aWNrZXIoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY2xpZW50LnBsYXRmb3JtVmlldygpLCBG
bG9hdFJlY3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7Cit9CisK
K3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5l
d0ZsYWdzKQoreworICAgIHNpemVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsK
KyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY2hhbmdlZENsaWVudFN0YXRlID0gbV9j
bGllbnRTdGF0ZVtpbmRleF07CisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9s
ZEZsYWdzID0gY2hhbmdlZENsaWVudFN0YXRlLT5mbGFnczsKKyAgICBpZiAobmV3RmxhZ3MgPT0g
b2xkRmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCksICJuZXcgZmxhZ3Mg
PSAiLCBuZXdGbGFncyk7CisKKyAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPmZsYWdzID0gbmV3Rmxh
Z3M7CisKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdXBkYXRlQ29uZmlndXJh
dGlvbkZsYWdzID0gTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3Jp
bmcgfCBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
IHwgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVvOworICAgIGlmICgob2xkRmxhZ3MgJiB1
cGRhdGVDb25maWd1cmF0aW9uRmxhZ3MpICE9IChuZXdGbGFncyAmIHVwZGF0ZUNvbmZpZ3VyYXRp
b25GbGFncykpCisgICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0Nv
bmZpZ3VyYXRpb25UYXNrKTsKKworICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBw
bGF5aW5nVG9UYXJnZXRGbGFncyA9IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxE
ZXZpY2UgfCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbzsKKyAgICBpZiAoKG9sZEZsYWdz
ICYgcGxheWluZ1RvVGFyZ2V0RmxhZ3MpICE9IChuZXdGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZs
YWdzKSkgeworICAgICAgICBpZiAoZmxhZ3NBcmVTZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiAhZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiBmbGFnc0FyZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6
RGlkUGxheVRvRW5kKSkKKyAgICAgICAgICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+cGxheWVkVG9F
bmQgPSB0cnVlOworICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFdhdGNoZG9nVGltZXJDb25m
aWd1cmF0aW9uVGFzayk7CisgICAgfQorCisgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFt
X3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpIHx8ICFmbGFnc0FyZVNldChuZXdGbGFn
cywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIERvIG5vdCBpbnRlcnJ1cHQgYW5vdGhlciBlbGVtZW50IGFs
cmVhZHkgcGxheWluZyB0byBhIGRldmljZS4KKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGll
bnRTdGF0ZSkgeworICAgICAgICBpZiAoc3RhdGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVT
ZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKKyAgICAg
ICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0
KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0byB0aGUgZGV2aWNlIHVubGVz
cyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgorICAgIGlmICghZmxhZ3NBcmVTZXQobmV3Rmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBmbGFnc0FyZVNldChvbGRGbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInJldHVybmluZyBlYXJseSwgcGxheWJhY2sg
ZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAo
YXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIGlmIChzdGF0ZSA9PSBjaGFu
Z2VkQ2xpZW50U3RhdGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAgICAgICBzdGF0ZS0+Y2xp
ZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNl
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHRydWUpIik7CisgICAgY2hhbmdlZENsaWVudFN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY2hhbmdlZENsaWVudFN0YXRlLT5jb250ZXh0SWQsIHRy
dWUpOworCisgICAgaWYgKGluZGV4ICYmIG1fY2xpZW50U3RhdGUuc2l6ZSgpID4gMSkKKyAgICAg
ICAgc3RkOjpzd2FwKG1fY2xpZW50U3RhdGUuYXQoaW5kZXgpLCBtX2NsaWVudFN0YXRlLmF0KDAp
KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5YmFja1RhcmdldChS
ZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCit7CisgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+
aGFzQWN0aXZlUm91dGUoKSk7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0
KTsKKyAgICBtX3RhcmdldENoYW5nZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2so
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2
YWlsYWJsZSkKK3sKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGF2YWlsYWJsZSk7CisgICAgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGF2YWls
YWJsZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkKKyAgICAgICAgc3Rh
dGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShzdGF0ZS0+
Y29udGV4dElkLCBhdmFpbGFibGUpOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKCkKK3sKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJE
aXNtaXNzZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0Nv
bmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25m
aWd1cmVOZXdDbGllbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0
ZSkgeworICAgICAgICBpZiAoIXN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0g
ZmFsc2U7CisgICAgICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAg
ICAgICAgICAgc3RhdGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShzdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKKworICAgICAgICBpZiAobV9wbGF5YmFja1Rh
cmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRz
KCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IG5vdEZvdW5kOwor
ICAgIGJvb2wgaGF2ZUFjdGl2ZVJvdXRlID0gbV9wbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNr
VGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGll
bnRTdGF0ZVtpXTsKKworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sIHN0YXRlLmdldCgpLCAiLCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVz
dGVkUGlja2VyKTsKKworICAgICAgICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc2VkKSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQorICAgICAg
ICAgICAgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOworCisgICAgICAgIGlm
IChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBmbGFnc0FyZVNl
dChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2Up
KQorICAgICAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpOworCisgICAg
ICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBoYXZl
QWN0aXZlUm91dGUgJiYgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAg
ICAgICBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IGk7CisgICAgfQorCisgICAg
aWYgKGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyICE9IG5vdEZvdW5kKQorICAgICAg
ICBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IGluZGV4T2ZDbGllbnRUaGF0UmVxdWVz
dGVkUGlja2VyOworICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RG
b3VuZCAmJiBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciAhPSBub3RGb3VuZCkKKyAg
ICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mTGFzdENsaWVudFRv
UmVxdWVzdFBpY2tlcjsKKyAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0g
bm90Rm91bmQgJiYgaGF2ZUFjdGl2ZVJvdXRlICYmIGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVb
MF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KSAmJiAhZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVswXS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSkKKyAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PSAwOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpXTsKKworICAgICAg
ICBpZiAobV9wbGF5YmFja1RhcmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxh
eWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigp
KTsKKworICAgICAgICBpZiAoaSAhPSBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCB8fCAh
aGF2ZUFjdGl2ZVJvdXRlKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoZmFsc2UpIik7CisgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzdGF0ZS0+cmVxdWVzdGVkUGlja2VyICYmIG1fcGxheWJhY2tUYXJn
ZXRQaWNrZXJEaXNtaXNzZWQpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBp
Y2tlcldhc0Rpc21pc3NlZCIpOworICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5wbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChzdGF0ZS0+Y29udGV4dElkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQgPSBmYWxzZTsKKyAgICAgICAgaWYg
KG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKQorICAg
ICAgICAgICAgc3RhdGUtPnJlcXVlc3RlZFBpY2tlciA9IGZhbHNlOworICAgIH0KKworICAgIGlm
IChoYXZlQWN0aXZlUm91dGUgJiYgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0YXRlW2luZGV4T2ZDbGll
bnRXaWxsUGxheVRvVGFyZ2V0XTsKKyAgICAgICAgaWYgKCFmbGFnc0FyZVNldChzdGF0ZS0+Zmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpKSB7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKKyAgICAg
ICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3RhcmdldENoYW5n
ZWQgPSBmYWxzZTsKKyAgICBjb25maWd1cmVXYXRjaGRvZ1RpbWVyKCk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCkK
K3sKKyAgICBib29sIG1vbml0b3JpbmdSZXF1aXJlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQXZh
aWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsKKyAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEg
PSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpKTsK
KyAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJh
Y2tUYXJnZXRNb25pdG9yaW5nKSB7CisgICAgICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlLT5m
bGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVu
ZXIpCisgICAgICAgICAgICBoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciA9IHRydWU7CisgICAgICAg
IGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCisgICAg
ICAgICAgICBoYXZlQ2xpZW50V2l0aE1lZGlhID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobW9u
aXRvcmluZ1JlcXVpcmVkIHx8IChoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciAmJiBoYXZlQ2xpZW50
V2l0aE1lZGlhKSkgeworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sICJzdGFydGluZyBtb25pdG9yaW5nIik7CisgICAgICAgIHRhcmdldFBpY2tlcigpLnN0
YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIG1vbml0
b3JpbmciKTsKKyAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1
bGVEZWxheWVkVGFzayhDb25maWd1cmF0aW9uVGFza3MgdGFza3MpCit7CisgICAgbV90YXNrRmxh
Z3MgfD0gdGFza3M7CisgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90KHRhc2tEZWxheUludGVy
dmFsKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXNrVGltZXJGaXJlZCgp
Cit7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrKQorICAg
ICAgICBjb25maWd1cmVOZXdDbGllbnRzKCk7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKQorICAgICAgICBjb25maWd1cmVQbGF5YmFja1Rhcmdl
dENsaWVudHMoKTsKKyAgICBpZiAobV90YXNrRmxhZ3MgJiBUYXJnZXRNb25pdG9yaW5nQ29uZmln
dXJhdGlvblRhc2spCisgICAgICAgIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygp
OworICAgIGlmIChtX3Rhc2tGbGFncyAmIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzaykK
KyAgICAgICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAgbV90YXNrRmxhZ3MgPSBO
b1Rhc2s7Cit9CisKK3NpemVfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpmaW5kKFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Ns
aWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2NsaWVudFN0YXRlW2ldLT5j
b250ZXh0SWQgPT0gY29udGV4dElkICYmICZtX2NsaWVudFN0YXRlW2ldLT5jbGllbnQgPT0gY2xp
ZW50KQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcmV0dXJuIG5vdEZvdW5k
OworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhdGNoZG9nVGlt
ZXIoKQoreworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGltZXJJbnRlcnZhbEFm
dGVyUGF1c2luZyB7IDFfaCB9OworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGlt
ZXJJbnRlcnZhbEFmdGVyUGxheWluZ1RvRW5kIHsgOF9taW4gfTsKKworICAgIGlmICghbV9wbGF5
YmFja1RhcmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkgeworICAg
ICAgICBpZiAobV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIEFMV0FZ
U19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVyIik7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OworICAgICAgICAgICAg
bV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBib29sIHN0b3BUaW1lciA9IGZhbHNlOworICAgIGJvb2wgZGlkUGxheVRvRW5k
ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKKworICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIHBsYXllZFRvRW5kID0gIiwgc3RhdGUtPnBsYXllZFRvRW5kKTsKKworICAgICAgICBpZiAo
ZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVy
bmFsRGV2aWNlKSAmJiBmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ1ZpZGVvKSkKKyAgICAgICAgICAgIHN0b3BUaW1lciA9IHRydWU7CisgICAgICAgIGlm
IChzdGF0ZS0+cGxheWVkVG9FbmQpCisgICAgICAgICAgICBkaWRQbGF5VG9FbmQgPSB0cnVlOwor
ICAgICAgICBzdGF0ZS0+cGxheWVkVG9FbmQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3Rv
cFRpbWVyKSB7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
XywgInN0b3BwaW5nIHRpbWVyIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwg
PSB7IH07CisgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgU2Vjb25kcyBpbnRlcnZhbCA9IGRpZFBsYXlUb0VuZCA/IHdhdGNoZG9nVGltZXJJbnRl
cnZhbEFmdGVyUGxheWluZ1RvRW5kIDogd2F0Y2hkb2dUaW1lckludGVydmFsQWZ0ZXJQYXVzaW5n
OworICAgICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAh
bV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1l
ci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOworICAgICAgICB9CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50
ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50
ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXyk7CisgICAgdGFyZ2V0UGlja2VyKCkuaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKKyNpbmNs
dWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVk
ZSAiUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2xpZW50U3RhdGU7CitjbGFzcyBJ
bnRSZWN0OworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyOworY2xhc3MgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIpOworcHVibGljOgorCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZCgpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQo
Ym9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciBhZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVB
bGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBJbnRSZWN0JiwgYm9vbCwgYm9vbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGllbnRTdGF0ZURpZENoYW5nZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50
JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKworICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcigp
OworICAgIHZpcnR1YWwgfldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKKworICAgIHZpcnR1YWwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgcGxhdGZvcm1QaWNrZXIoKSA9IDA7
CisgICAgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHBsYXRmb3JtTWFuYWdlcigpOwor
Citwcml2YXRlOgorCisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgdGFy
Z2V0UGlja2VyKCk7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2sm
IG1vY2tQaWNrZXIoKTsKKworICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVu
dAorICAgIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCgpIG92ZXJyaWRlOworCisgICAgc2l6ZV90IGZpbmQoV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudCosIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIp
OworCisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldENsaWVudHMoKTsKKyAgICB2b2lk
IGNvbmZpZ3VyZU5ld0NsaWVudHMoKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
TW9uaXRvcmluZygpOworICAgIHZvaWQgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAg
ZW51bSBDb25maWd1cmF0aW9uVGFza0ZsYWdzIHsKKyAgICAgICAgTm9UYXNrID0gMCwKKyAgICAg
ICAgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAwLAorICAgICAgICBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDEsCisgICAgICAgIFRhcmdldE1vbml0b3JpbmdD
b25maWd1cmF0aW9uVGFzayA9IDEgPDwgMiwKKyAgICAgICAgV2F0Y2hkb2dUaW1lckNvbmZpZ3Vy
YXRpb25UYXNrID0gMSA8PCAzLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBDb25maWd1
cmF0aW9uVGFza3M7CisgICAgU3RyaW5nIHRvU3RyaW5nKENvbmZpZ3VyYXRpb25UYXNrcyk7CisK
KyAgICB2b2lkIHNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzKTsKKyAgICB2
b2lkIHRhc2tUaW1lckZpcmVkKCk7CisKKyAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwor
CisgICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBsb2dnZXIoKTsKKworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fdGFza1RpbWVyOworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fd2F0Y2hkb2dUaW1lcjsKKworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50U3RhdGU+PiBtX2NsaWVudFN0YXRlOworICAgIFJlZlB0
cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4gbV9waWNrZXJPdmVy
cmlkZTsKKyAgICBDb25maWd1cmF0aW9uVGFza3MgbV90YXNrRmxhZ3MgeyBOb1Rhc2sgfTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBT
ZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CisgICAgYm9vbCBtX2V4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGFyZ2V0Q2hhbmdlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fbW9ja1BpY2tlckVuYWJsZWQgeyBmYWxzZSB9OworfTsKKworU3Ry
aW5nIG1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3M+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBmbGFncykgeyByZXR1cm4gV2ViQ29yZTo6bWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKGZsYWdzKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJw
bGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1
ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVkZSAiUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1WaWV3KiBwbGF0Zm9ybVZpZXcoKSBj
b25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY3NzkwKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MTAwLDE4ICs0MTAwLDggQEAKIAkJQzZGMDkwMEExNDMyN0I2MTAwNjg1ODQ5
IC8qIE11dGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM2RjA5MDAxMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbkNhbGxiYWNr
LmggKi87IH07CiAJCUM2RjA5MDBGMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbk9ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOTAw
NjE0MzI3QjYxMDA2ODU4NDkgLyogTXV0YXRpb25PYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM2RjA5MDJEMTQzMjdENEYwMDY4NTg0
OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RjA5MDI1MTQzMjdENEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2Jz
ZXJ2ZXIuaCAqLzsgfTsKLQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwMjdG
NDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovOyB9OwotCQlDOTA4NDNEMDFC
MThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwODQzQ0UxQjE4RTQ3RDAwQjY4NTY0IC8q
IE1lZGlhUmVtb3RlQ29udHJvbHMuaCAqLzsgfTsKLQkJQzkwRjY1NTUxQjIyNTNCMTAwMjE2M0Ex
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzkwRjY1NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwICovOyB9OwotCQlDOTBGNjU1NjFCMjI1M0JFMDAyMTYzQTEgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzkwRjY1NTQxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAq
LzsgfTsKLQkJQzkzN0ZFOEQxQjFGNjgyMTAwOEVDQzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM5NjhCMkU2MUIxRTcyRjcwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
LmggKi87IH07Ci0JCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzk2RjVFQzExQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLmggKi87IH07Ci0JCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAv
KiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTZGNUVDMzFCNTg3MjI2MDA5MUVBOUQgLyog
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwICovOyB9OwotCQlDOTZGNUVDODFC
NTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5NkY1RUM0MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovOyB9Owog
CQlDOTkwNTgxMzFFMzJDNzVGMDA3M0JEREEgLyogU3VjY2Vzc09yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEg
LyogU3VjY2Vzc09yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzlENDY3MDUxRTYwQzQ2NTAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5RDQ2NzA0MUU2MEMz
RUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDOUQ4NTFFRTFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDOUY4
N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUY4N0NGRDFCMjhFNUY2MDA5NzlC
ODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFu
aW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
QTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQTZDMTUzMDIyMEI5OENDMDA1
NUNCRkMgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQUUzQjgxRkI4MEVBRTAwRjVFRkIyIC8qIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDQTdFOUI0OTI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0E3RTlCNDcyNDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCAqLzsg
fTsKQEAgLTE0MjAyLDI5ICsxNDE5Miw4IEBACiAJCUM2RjA5MDI0MTQzMjdENEYwMDY4NTg0OSAv
KiBKU011dGF0aW9uT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNdXRhdGlvbk9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzZGMDkwMjUxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uT2JzZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGMDkxN0UxNDNBMkJCOTAwNjg1ODQ5IC8qIEpTTXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDOTAyNkI2MzFCMUNGNUFCMDAxRDk5QTcgLyogSlNNZWRpYVJlbW90ZUNvbnRyb2xz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFSZW1vdGVD
b250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI2QjY0MUIxQ0Y1
QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3RlQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE1lZGlhU2Vzc2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5
MDI3RjNGMUIxRDBBRDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwODQzQ0QxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlh
UmVtb3RlQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFSZW1vdGVDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5
MDg0M0NFMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwRjY1NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MEY2
NTU0MUIyMjUzOTYwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQzkzNDU4QkIxQjE4RDc3RTAwODhFRTEyIC8qIE1lZGlhUmVtb3Rl
Q29udHJvbHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTY4QjJFNTFCMUU3MDQ1MDBFRjFG
ODEgLyogSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MTWVkaWFF
bGVtZW50K01lZGlhU2Vzc2lvbi5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OTY4QjJFNjFCMUU3MkY3MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NjhCMkU3MUIxRTc3ODEwMEVGMUY4MSAvKiBIVE1MTWVk
aWFFbGVtZW50TWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDOTZGNUVDMTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzk2RjVFQzIxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM5NkY1RUM0MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN1Y2Nlc3NPci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUQ0
NjcwNDFFNjBDM0VCMDA4MTk1RkIgLyogQXV0b3BsYXlFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dXRvcGxheUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5RDg1MUVFMUIz
OURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNlc3Npb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOURBREJDQTFCMUQzQjI1MDAxRjE3
RDggLyogSlNNZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlGODdDRkQx
QjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU2Vzc2lvbkV2ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4
NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EwOTFE
ODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5
bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTE2MzVEQzIwNzJF
NzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTY3NDAsMzAgKzE2NzA5LDYgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKLQkJMDcwOUQ3OEIxQUU1NTUyRTAwNEU0MkY4IC8qIG1lZGlhc2Vzc2lv
biAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzk2OEIy
RTUxQjFFNzA0NTAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbCAq
LywKLQkJCQlDOTY4QjJFNzFCMUU3NzgxMDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlh
U2Vzc2lvbi5jcHAgKi8sCi0JCQkJQzk2OEIyRTYxQjFFNzJGNzAwRUYxRjgxIC8qIEhUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uaCAqLywKLQkJCQlDOTA4NDNDRDFCMThFNDdEMDBCNjg1NjQg
LyogTWVkaWFSZW1vdGVDb250cm9scy5jcHAgKi8sCi0JCQkJQzkwODQzQ0UxQjE4RTQ3RDAwQjY4
NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCAqLywKLQkJCQlDOTM0NThCQjFCMThENzdFMDA4
OEVFMTIgLyogTWVkaWFSZW1vdGVDb250cm9scy5pZGwgKi8sCi0JCQkJQzkwMjdGM0YxQjFEMEFE
MjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi8sCi0JCQkJQzkwMjdGNDAxQjFEMEFEMjAw
QkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovLAotCQkJCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZF
RiAvKiBNZWRpYVNlc3Npb24uaWRsICovLAotCQkJCUM5Rjg3Q0ZEMUIyOEU1RjYwMDk3OUI4MyAv
KiBNZWRpYVNlc3Npb25FdmVudHMuaCAqLywKLQkJCQlDOTBGNjU1MzFCMjI1Mzk2MDAyMTYzQTEg
LyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8sCi0JCQkJQzkwRjY1NTQxQjIyNTM5NjAwMjE2
M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKLQkJCQlDOUQ4NTFFRTFCMzlEQzc4MDA4
NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLywKLQkJCQk0NDZEQzY0NjI0QTI5RDlC
MDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAot
CQkJCTA3MDlENzhDMUFFNTU1NTQwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCAqLywKLQkJCQkwNzA5RDc4RDFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oICovLAotCQkJCTA3MDlENzk0MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1
MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0yMzMyOSw3ICsyMzI3NCw2IEBACiAJCQkJQ0RCRDNEMjcxRkU4NUM5MjAwMTJDNTQ1
IC8qIG1lZGlhY2FwYWJpbGl0aWVzICovLAogCQkJCUNEOUEzN0Y1MTdDN0Q5MzYwMEM1RkE3QSAv
KiBtZWRpYWNvbnRyb2xzICovLAogCQkJCTREM0IwMEEwMjE1RDVDMEYwMDc2Qjk4MyAvKiBtZWRp
YXJlY29yZGVyICovLAotCQkJCTA3MDlENzhCMUFFNTU1MkUwMDRFNDJGOCAvKiBtZWRpYXNlc3Np
b24gKi8sCiAJCQkJQjFBOTQyREQxNUI1Q0UyMjAwRDUyNUQxIC8qIG1lZGlhc291cmNlICovLAog
CQkJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk3MUQ2
QUEzOTFEQTRFQUY3MDBCMjM5NjkgLyogbW9kZXJuLW1lZGlhLWNvbnRyb2xzICovLApAQCAtMjQ0
MTYsMTAgKzI0MzYwLDYgQEAKIAkJCQkyRDlCRjcxMTFEQkZEOTE0MDA3QTdEOTkgLyogSlNNZWRp
YUVuY3J5cHRlZEV2ZW50LmggKi8sCiAJCQkJRTQ0NjE0MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpT
TWVkaWFFcnJvci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVk
aWFFcnJvci5oICovLAotCQkJCUM5MDI2QjYzMUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVt
b3RlQ29udHJvbHMuY3BwICovLAotCQkJCUM5MDI2QjY0MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01l
ZGlhUmVtb3RlQ29udHJvbHMuaCAqLywKLQkJCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyog
SlNNZWRpYVNlc3Npb24uY3BwICovLAotCQkJCUM5REFEQkNBMUIxRDNCMjUwMDFGMTdEOCAvKiBK
U01lZGlhU2Vzc2lvbi5oICovLAogCQkJCTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09F
U0VsZW1lbnRJbmRleFVpbnQuY3BwICovLAogCQkJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAv
KiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLywKIAkJCQk5MDAxNzg3RTEyRTAzNzA3MDA2NDg0
NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCAqLywKQEAgLTI2OTQ3LDcgKzI2ODg3
LDYgQEAKIAkJCQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICovLAogCQkJCTlBQzZG
MDIwMjExNDhGMUUwMENCREEwNiAvKiBtZWRpYWNhcGFiaWxpdGllcyAqLywKIAkJCQk0RDNCNTAx
MjIxN0U1OEEzMDA2NjVEQjEgLyogbWVkaWFyZWNvcmRlciAqLywKLQkJCQlDOTZGNUVCRjFCNTg3
MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9uICovLAogCQkJCTA3MjIxQjkyMTdDRjBBRDQwMDg0
OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyog
bW9jayAqLywKIAkJCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0d29yayAqLywKQEAg
LTI3MjUwLDI1ICsyNzE4OSw2IEBACiAJCQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OwotCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNz
aW9uICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDOTZG
NUVDMDFCNTg3MjI2MDA5MUVBOUQgLyogbWFjICovLAotCQkJCUM5NkY1RUMzMUI1ODcyMjYwMDkx
RUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi8sCi0JCQkJQzk2
RjVFQzQxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0JCX07Ci0JCUM5NkY1RUMwMUI1ODcyMjYwMDkxRUE5RCAvKiBtYWMgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUM5NkY1RUMxMUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oICovLAot
CQkJCUM5NkY1RUMyMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlck1hYy5tbSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gbWFjOwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI3NjQ5LDkgKzI3
NTY5LDEzIEBACiAJCUNFMjYxNjlEMTg3RTY1NTQwMDc5NTVGMyAvKiBhaXJwbGF5ICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NDZEQzY0NjI0QTI5RDlC
MDA2MUYzOTAgLyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAog
CQkJCUE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmNwcCAqLywKIAkJCQlBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovLAogCQkJCUE1REVCREExMTZG
QjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50Lmlk
bCAqLywKKwkJCQkwNzA5RDc4QzFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5jcHAgKi8sCisJCQkJMDcwOUQ3OEQxQUU1NTU1NDAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCAqLywKKwkJCQkwNzA5RDc5NDFBRTU1QTI5MDA0RTQyRjggLyogV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhaXJwbGF5Owog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxNjU0LDcgKzMxNTc4LDYgQEAKIAkJCQlB
OEVBN0NBQjBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDQ2MTNBNTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q1MjA5RTYxQjBCRDlFMTAwNzcxODRFIC8qIEhUTUxNZWRp
YUVsZW1lbnRFbnVtcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzkzN0ZFOEQxQjFGNjgyMTAwOEVD
QzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQzMxMkVBMjJGQ0Q3QzYwMDEyMDRFQyAvKiBIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxheWJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUY0MEExOTE2REYwMEE4RUY1RiAvKiBIVE1M
TWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJGMzFFMDc1MUZBM0I2MkIwMEUwNTlC
QSAvKiBIVE1MTWVudUl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzMDAwLDIzICsz
MjkyMywxNiBAQAogCQkJCTQxNEI3RkFEMjREODFDQzEwMDMzRDQ0MiAvKiBNZWRpYVJlY29yZGVy
UHJpdmF0ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRENzNGOTRFMjE4QzRBODcwMDNB
M0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTc2RTg5NjIzQzM1MzdCMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1v
dGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlF
IC8qIE1lZGlhUmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRUZDRDdBMTlE
QjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQkY5REIzQzFEMzk3M0FEMDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3RDI3NUUxRUFDNTc5ODAw
QkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTAy
N0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVs
cGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyog
TWVkaWFTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzk2RjVFQzgxQjU4
NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5MEY2NTU2MUIyMjUz
QkUwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTdGN0FFRjIxMzlCRjZGMDBGQkE3RUMgLyogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJF
IC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3
QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQx
RUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MjQyLDggKzM1MTU4LDYgQEAKIAkJCQkxQjEyNEQ4
RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUM5NkY1RUM3MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyog
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgw
NDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
cmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjk4LDEwICsyOTgsNiBAQAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgi
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vz
c2lvbi5oIgotI2VuZGlmCi0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xv
b2suaCIKICNlbmRpZgpAQCAtNDE4NSwyMiArNDE4MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZUlzUGxheWluZ01lZGlhKHVpbnQKICAgICBzdGF0ZSB8PSBNZWRpYVN0cmVhbVRyYWNrOjpjYXB0
dXJlU3RhdGUoKnRoaXMpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAg
ICBpZiAoSFRNTE1lZGlhRWxlbWVudCogc291cmNlRWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6
OmVsZW1lbnRXaXRoSUQoc291cmNlRWxlbWVudElEKSkgewotICAgICAgICBpZiAoc291cmNlRWxl
bWVudC0+aXNQbGF5aW5nKCkpCi0gICAgICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpJ
c1NvdXJjZUVsZW1lbnRQbGF5aW5nOwotCi0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc291
cmNlRWxlbWVudC0+c2Vzc2lvbigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogY29udHJvbHMg
PSBzZXNzaW9uLT5jb250cm9scygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzLT5w
cmV2aW91c1RyYWNrRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBNZWRp
YVByb2R1Y2VyOjpJc1ByZXZpb3VzVHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAgICAgICAgICAg
ICBpZiAoY29udHJvbHMtPm5leHRUcmFja0VuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUgfD0gTWVkaWFQcm9kdWNlcjo6SXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKG1fdXNlckhhc0lu
dGVyYWN0ZWRXaXRoTWVkaWFFbGVtZW50KQogICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2Vy
OjpIYXNVc2VySW50ZXJhY3RlZFdpdGhNZWRpYUVsZW1lbnQ7CiAKQEAgLTc0NjksMTcgKzc0NDks
NiBAQCB2b2lkIERvY3VtZW50OjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0RpCiAKICNlbmRpZiAv
LyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0KLU1lZGlhU2Vzc2lvbiYgRG9jdW1lbnQ6OmRlZmF1bHRNZWRpYVNlc3Npb24oKQot
ewotICAgIGlmICghbV9kZWZhdWx0TWVkaWFTZXNzaW9uKQotICAgICAgICBtX2RlZmF1bHRNZWRp
YVNlc3Npb24gPSBNZWRpYVNlc3Npb246OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLSAgICByZXR1cm4gKm1fZGVmYXVsdE1lZGlhU2Vzc2lvbjsKLX0KLQotI2VuZGlmCi0KIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnQ6OnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IGxvYWRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlz
aW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsNyArMTc3LDYgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNz
IE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNz
IE1lZGlhUXVlcnlNYXRjaGVyOwotY2xhc3MgTWVkaWFTZXNzaW9uOwogY2xhc3MgTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwog
Y2xhc3MgTm9kZUZpbHRlcjsKQEAgLTEwOTcsMTAgKzEwOTYsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCB2aWRlb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpIGNvbnN0OwogICAgIGJvb2wgbWVk
aWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICBNZWRpYVNlc3Npb24mIGRlZmF1bHRNZWRpYVNlc3Npb24oKTsKLSNlbmRpZgot
CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZShQQUw6OlNlc3Npb25JRCk7
CiAKICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CkBAIC0xOTUyLDEw
ICsxOTQ3LDYgQEAgcHJpdmF0ZToKICAgICBUYXJnZXRDbGllbnRUb0lkTWFwIG1fY2xpZW50VG9J
RE1hcDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgUmVmUHRyPE1l
ZGlhU2Vzc2lvbj4gbV9kZWZhdWx0TWVkaWFTZXNzaW9uOwotI2VuZGlmCi0KICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHk+IG1faWRiQ29ubmVjdGlvblByb3h5OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIy
LDYgQEAgTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYURldmljZXMgY29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQ
VEVEX01FRElBCiBNZWRpYVF1ZXJ5TGlzdAotTWVkaWFSZW1vdGVDb250cm9scyBjb25kaXRpb25h
bD1NRURJQV9TRVNTSU9OCiBNZWRpYVJlY29yZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQog
TWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRp
b25hbD1NRURJQV9TVFJFQU0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDEwICsxMzcsNiBAQAogI2luY2x1
ZGUgIldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCi0jZW5k
aWYKLQogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKQEAgLTMxOCwzMCArMzE0LDYgQEAgSGFzaFNldDxIVE1M
TWVkaWFFbGVtZW50Kj4mIEhUTUxNZWRpYUVsZQogICAgIHJldHVybiBlbGVtZW50czsKIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBIVE1M
TWVkaWFFbGVtZW50Kj4gSURUb0VsZW1lbnRNYXA7Ci0KLXN0YXRpYyBJRFRvRWxlbWVudE1hcCYg
ZWxlbWVudElEc1RvRWxlbWVudHMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJRFRv
RWxlbWVudE1hcD4gbWFwOwotICAgIHJldHVybiBtYXA7Ci19Ci0KLUhUTUxNZWRpYUVsZW1lbnQq
IEhUTUxNZWRpYUVsZW1lbnQ6OmVsZW1lbnRXaXRoSUQodWludDY0X3QgaWQpCi17Ci0gICAgaWYg
KGlkID09IEhUTUxNZWRpYUVsZW1lbnRJbnZhbGlkSUQpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGVsZW1lbnRJRHNUb0VsZW1lbnRzKCkuZ2V0KGlkKTsKLX0KLQotc3Rh
dGljIHVpbnQ2NF90IG5leHRFbGVtZW50SUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBlbGVt
ZW50SUQgPSAwOwotICAgIHJldHVybiArK2VsZW1lbnRJRDsKLX0KLSNlbmRpZgotCiBzdHJ1Y3Qg
TWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gewogICAgIGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24q
IHNlc3Npb247CiAgICAgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBv
c2UgcHVycG9zZTsKQEAgLTUxNywxMyArNDg5LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpm
aW5pc2hJbml0aWFsaXphdAogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0gICAgbV9lbGVtZW50SUQgPSBuZXh0RWxlbWVudElEKCk7Ci0gICAgZWxlbWVudElEc1Rv
RWxlbWVudHMoKS5hZGQobV9lbGVtZW50SUQsIHRoaXMpOwotCi0gICAgc2V0U2Vzc2lvbkludGVy
bmFsKGRvY3VtZW50LmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7Ci0jZW5kaWYKLQogICAgIHJlZ2lz
dGVyV2l0aERvY3VtZW50KGRvY3VtZW50KTsKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQ
TEFURk9STShNQUMpCkBAIC01ODgsMTUgKzU1Myw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1M
TWVkaWFFbGVtZW50KCkKICAgICBpZiAobV9pc29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xh
dGVkV29ybGQtPmNsZWFyV3JhcHBlcnMoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
ICAgIGlmIChtX3Nlc3Npb24pIHsKLSAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVNZWRpYUVsZW1l
bnQoKnRoaXMpOwotICAgICAgICBtX3Nlc3Npb24gPSBudWxscHRyOwotICAgIH0KLQotICAgIGVs
ZW1lbnRJRHNUb0VsZW1lbnRzKCkucmVtb3ZlKG1fZWxlbWVudElEKTsKLSNlbmRpZgotCiAgICAg
bV9zZWVrVGFza1F1ZXVlLmNsb3NlKCk7CiAgICAgbV9yZXN1bWVUYXNrUXVldWUuY2xvc2UoKTsK
ICAgICBtX3Byb21pc2VUYXNrUXVldWUuY2xvc2UoKTsKQEAgLTM0OTUsMzEgKzM0NTEsNiBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAKICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQotICAgICAgICAvLyA2LjMgQWN0aXZhdGluZyBhIG1lZGlhIHNlc3Npb24gZnJvbSBhIG1lZGlh
IGVsZW1lbnQKLSAgICAgICAgLy8gV2hlbiB0aGUgcGxheSgpIG1ldGhvZCBpcyBpbnZva2VkLCB0
aGUgcGF1c2VkIGF0dHJpYnV0ZSBpcyB0cnVlLCBhbmQgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRl
IGhhcyB0aGUgdmFsdWUKLSAgICAgICAgLy8gSEFWRV9GVVRVUkVfREFUQSBvciBIQVZFX0VOT1VH
SF9EQVRBLCB0aGVuCi0gICAgICAgIC8vIDEuIExldCBtZWRpYSBzZXNzaW9uIGJlIHRoZSB2YWx1
ZSBvZiB0aGUgY3VycmVudCBtZWRpYSBzZXNzaW9uLgotICAgICAgICAvLyAyLiBJZiB3ZSBhcmUg
bm90IGN1cnJlbnRseSBpbiBtZWRpYSBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgcGFydGljaXBh
dGluZyBtZWRpYSBlbGVtZW50cyB0aGVuIGFwcGVuZAotICAgICAgICAvLyAgICBvdXJzZWx2ZXMg
dG8gdGhpcyBsaXN0LgotICAgICAgICAvLyAzLiBMZXQgYWN0aXZhdGVkIGJlIHRoZSByZXN1bHQg
b2YgcnVubmluZyB0aGUgbWVkaWEgc2Vzc2lvbiBpbnZvY2F0aW9uIGFsZ29yaXRobSBmb3IgbWVk
aWEgc2Vzc2lvbi4KLSAgICAgICAgLy8gNC4gSWYgYWN0aXZhdGVkIGlzIGZhaWx1cmUsIHBhdXNl
IG91cnNlbHZlcy4KLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VHSF9EQVRB
IHx8IG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBKSB7Ci0gICAgICAgICAgICBpZiAo
bV9zZXNzaW9uKSB7Ci0gICAgICAgICAgICAgICAgbV9zZXNzaW9uLT5hZGRBY3RpdmVNZWRpYUVs
ZW1lbnQoKnRoaXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+a2luZCgpID09
IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLmZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdl
KG1fZWxlbWVudElEKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAo
IW1fc2Vzc2lvbi0+aW52b2tlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF1c2UoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9D
VVJSRU5UX0RBVEEpCiAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0
aW5nRXZlbnQpOwogICAgIH0gZWxzZSBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RB
VEEpCkBAIC0zNzIyLDExICszNjUzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRl
ZChib29sIG11dAogCiAgICAgICAgIHVwZGF0ZVNob3VsZFBsYXkoKTsKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1f
ZWxlbWVudElEKTsKLSNlbHNlCiAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVk
aWEoKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CkBAIC01MTE1LDExICs1MDQyLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhYwogICAgICAgICBzZXRBdXRv
cGxheUV2ZW50UGxheWJhY2tTdGF0ZShBdXRvcGxheUV2ZW50UGxheWJhY2tTdGF0ZTo6UHJldmVu
dGVkQXV0b3BsYXkpOwogICAgIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGRv
Y3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9lbGVtZW50SUQpOwotI2Vsc2UKICAgICBk
b2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7Ci0jZW5kaWYKIAogICAgIGNoZWNrRm9y
QXVkaW9BbmRWaWRlbygpOwogICAgIHVwZGF0ZVNsZWVwRGlzYWJsaW5nKCk7CkBAIC01MjkyLDEy
ICs1MjE1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAgICAg
ICBtX3BsYXllci0+c2V0Vm9sdW1lKGVmZmVjdGl2ZVZvbHVtZSgpKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlh
KG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwotI2VuZGlmCi0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC01
NDE0LDExICs1MzMyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5aW5nKGJvb2wg
cAogICAgIGlmIChtX3BsYXlpbmcpCiAgICAgICAgIHNjaGVkdWxlTm90aWZ5QWJvdXRQbGF5aW5n
KCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlz
UGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwpAQCAtNzY0MCwxMSArNzU1
NCw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVkaWFTdGF0ZSgKIAogICAgIG1f
bWVkaWFTdGF0ZSA9IHN0YXRlOwogICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYVN0YXRlRGlkQ2hh
bmdlKG1fbWVkaWFTdGF0ZSk7Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgZG9jdW1l
bnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYShtX2VsZW1lbnRJRCk7Ci0jZWxzZQorCiAgICAgZG9j
dW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAt
Nzc0OSwxMSArNzY2MCw2IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVWb2x1
bWUKICAgICBkb3VibGUgdm9sdW1lTXVsdGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVt
ZSgpIDogMTsKICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCiAgICAgICAgIHZvbHVtZU11bHRp
cGxpZXIgKj0gbV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOwotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotICAgIGlmIChtX3Nob3VsZER1Y2spCi0gICAgICAgIHZvbHVtZU11bHRpcGxpZXIg
Kj0gMC4yNTsKLSNlbmRpZgotCiAgICAgcmV0dXJuIG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGll
cjsKIH0KIApAQCAtNzgxNCw3MCArNzcyMCw2IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y2Fu
U2F2ZU1lZGlhRGF0YSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKLQotZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllclZvbHVtZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnZvbHVtZSgpIDogMDsKLX0KLQot
TWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50OjpzZXNzaW9uKCkgY29uc3QKLXsKLSAgICBS
ZWZQdHI8TWVkaWFTZXNzaW9uPiBzZXNzaW9uID0gbV9zZXNzaW9uLmdldCgpOwotICAgIGlmIChz
ZXNzaW9uICYmIHNlc3Npb24gPT0gJmRvY3VtZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBzZXNzaW9uLmdldCgpOwotfQot
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlc3Npb24oTWVkaWFTZXNzaW9uKiBzZXNzaW9u
KQotewotICAgIC8vIDYuMS4gRXh0ZW5zaW9ucyB0byB0aGUgSFRNTE1lZGlhRWxlbWVudCBpbnRl
cmZhY2UKLSAgICAvLyAxLiBMZXQgbSBiZSB0aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVzdGlvbi4K
LSAgICAvLyAyLiBMZXQgb2xkIG1lZGlhIHNlc3Npb24gYmUgbeKAmXMgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLCBpZiBpdCBoYXMgb25lLCBhbmQgbnVsbCBvdGhlcndpc2UuCi0gICAgLy8gMy4gTGV0
IG3igJlzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgbmV3IHZhbHVlIG9yIHRoZSB0b3At
bGV2ZWwgYnJvd3NpbmcgY29udGV4dOKAmXMgbWVkaWEgc2Vzc2lvbiBpZiB0aGUgbmV3IHZhbHVl
IGlzIG51bGwuCi0gICAgLy8gNC4gTGV0IG5ldyBtZWRpYSBzZXNzaW9uIGJlIG3igJlzIGN1cnJl
bnQgbWVkaWEgc2Vzc2lvbi4KLQotICAgIC8vIDUuIFVwZGF0ZSBtZWRpYSBzZXNzaW9uczogSWYg
b2xkIG1lZGlhIHNlc3Npb24gYW5kIG5ldyBtZWRpYSBzZXNzaW9uIGFyZSB0aGUgc2FtZSAod2hl
dGhlciBib3RoIG51bGwgb3IgYm90aCB0aGUgc2FtZSBtZWRpYSBzZXNzaW9uKSwgdGhlbiB0ZXJt
aW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKG1fc2Vzc2lvbi5nZXQoKSA9PSBzZXNzaW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIC8vIDYuIElm
IG0gaXMgYW4gYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50IG9mIG9sZCBtZWRpYSBzZXNzaW9u
LCB0aGVuIHBhdXNlIG0gYW5kIHJlbW92ZSBtIGZyb20gb2xkIG1lZGlhIHNlc3Npb27igJlzIGxp
c3Qgb2YgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAgICAgaWYgKG1fc2Vzc2lv
bi0+aXNNZWRpYUVsZW1lbnRBY3RpdmUoKnRoaXMpKQotICAgICAgICAgICAgcGF1c2UoKTsKLQot
ICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZU1lZGlhRWxlbWVudCgqdGhpcyk7Ci0KLSAgICAgICAg
Ly8gNy4gSWYgb2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwgYW5kIG5vIGxvbmdlciBoYXMg
b25lIG9yIG1vcmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cywgdGhlbiBydW4gdGhlIG1l
ZGlhIHNlc3Npb24gZGVhY3RpdmF0aW9uIGFsZ29yaXRobSBmb3Igb2xkIG1lZGlhIHNlc3Npb24u
Ci0gICAgICAgIGlmICghbV9zZXNzaW9uLT5oYXNBY3RpdmVNZWRpYUVsZW1lbnRzKCkpCi0gICAg
ICAgICAgICBtX3Nlc3Npb24tPmRlYWN0aXZhdGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoc2Vzc2lv
bikKLSAgICAgICAgc2V0U2Vzc2lvbkludGVybmFsKCpzZXNzaW9uKTsKLSAgICBlbHNlCi0gICAg
ICAgIHNldFNlc3Npb25JbnRlcm5hbChkb2N1bWVudCgpLmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7
Ci19Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2Vzc2lvbkludGVybmFsKE1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKLXsKLSAgICBtX3Nlc3Npb24gPSAmc2Vzc2lvbjsKLSAgICBzZXNzaW9u
LmFkZE1lZGlhRWxlbWVudCgqdGhpcyk7Ci0gICAgbV9raW5kID0gc2Vzc2lvbi5raW5kKCk7Ci19
Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRHVjayhib29sIGR1Y2spCi17Ci0g
ICAgaWYgKG1fc2hvdWxkRHVjayA9PSBkdWNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3No
b3VsZER1Y2sgPSBkdWNrOwotICAgIHVwZGF0ZVZvbHVtZSgpOwotfQotCi0jZW5kaWYKLQogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjphbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFu
Z2VkKCkKIHsKICAgICBpZiAocG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9tZWRpYVNlc3Npb24t
PnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSAmJiAhaXNGdWxsc2NyZWVuKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMjY3
NzkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4NSwyMSArNDg1LDYgQEAgcHVibGljOgogICAgIHZvaWQgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogICAgIHZvaWQgbWVkaWFMb2FkaW5n
RmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAotI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBwbGF5ZXJWb2x1bWUoKSBj
b25zdDsKLQotICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsg
fQotICAgIHZvaWQgc2V0S2luZChjb25zdCBTdHJpbmcmIGtpbmQpIHsgbV9raW5kID0ga2luZDsg
fQotCi0gICAgTWVkaWFTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZXNz
aW9uKE1lZGlhU2Vzc2lvbiopOwotCi0gICAgdm9pZCBzZXRTaG91bGREdWNrKGJvb2wpOwotCi0g
ICAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnRXaXRoSUQodWludDY0X3QpOwotICAg
IHVpbnQ2NF90IGVsZW1lbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudElEOyB9Ci0jZW5k
aWYKLQogICAgIFJlZlB0cjxWaWRlb1BsYXliYWNrUXVhbGl0eT4gZ2V0VmlkZW9QbGF5YmFja1F1
YWxpdHkoKTsKIAogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJlbG9hZDsgfQpAQCAtNzEwLDEwICs2OTUsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIHNldFNlc3Npb25JbnRlcm5hbChNZWRpYVNlc3Np
b24mKTsKLSNlbmRpZgotCiAgICAgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBv
dmVycmlkZTsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBvdmVycmlk
ZTsKIApAQCAtMTA0NSwxMyArMTAyNiw2IEBAIHByaXZhdGU6CiAgICAgLy8gY2FsbGluZyB0aGUg
bWVkaWEgZW5naW5lIHJlY3Vyc2l2ZWx5LgogICAgIGludCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXll
ckNhbGxiYWNrIHsgMCB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgU3RyaW5n
IG1fa2luZDsKLSAgICBSZWZQdHI8TWVkaWFTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgYm9vbCBt
X3Nob3VsZER1Y2sgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fZWxlbWVudElEOwotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9t
ZWRpYVNvdXJjZTsKICAgICB1bnNpZ25lZCBtX2Ryb3BwZWRWaWRlb0ZyYW1lcyB7IDAgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDY0LDEy
ICs0NjQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hh
bmdlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncywgdWludDY0X3QpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KEF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxB
dXRvcGxheUV2ZW50RmxhZ3M+KSB7IH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAg
IHZpcnR1YWwgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENo
YW5nZShib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRD
aGFuZ2UoY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QpIHsgfQotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICB2aXJ0dWFsIGJvb2wgd3JhcENyeXB0b0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiwgVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsNiBAQAogI2luY2x1
ZGUgIlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuaCIKICNlbmRpZgpAQCAtMjA5NywzMSArMjA5Myw2IEBAIHZvaWQgUGFnZTo6cmVzdW1l
QWxsTWVkaWFCdWZmZXJpbmcoKQogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLQotdm9pZCBQYWdlOjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlw
ZSkKLXsKLSAgICBzd2l0Y2ggKGV2ZW50VHlwZSkgewotICAgIGNhc2UgTWVkaWFFdmVudFR5cGU6
OlBsYXlQYXVzZToKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9n
Z2xlUGxheWJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6
VHJhY2tOZXh0OgotICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5za2lw
VG9OZXh0VHJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6
VHJhY2tQcmV2aW91czoKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCku
c2tpcFRvUHJldmlvdXNUcmFjaygpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQg
UGFnZTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxl
bWVudElEKQotewotICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gSFRNTE1lZGlh
RWxlbWVudDo6ZWxlbWVudFdpdGhJRChlbGVtZW50SUQpKQotICAgICAgICBlbGVtZW50LT5zZXRW
b2x1bWUodm9sdW1lLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLX0KLQotI2VuZGlmCi0KIHVuc2ln
bmVkIFBhZ2U6OnN1YmZyYW1lQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBtYWluRnJhbWUo
KS50cmVlKCkuZGVzY2VuZGFudENvdW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24g
MjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDEwICs2Miw2IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVzdC5oIgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25FdmVu
dHMuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNp
bmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2VuZGlmCkBAIC02NjAsMTEg
KzY1Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJv
b2wgY2FuVXNlKSB7IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBjYW5Vc2U7IH0KICAgICBi
b29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Vc2VDcmVk
ZW50aWFsU3RvcmFnZTsgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3Qp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZv
aWQgYWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjY3Nzkw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbklu
dGVycnVwdGlvblByb3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXIuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLU1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOjpNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlckNsaWVudCYgY2xpZW50KQotICAgIDogbV9jbGllbnQoJmNsaWVudCkKLXsKLX0KLQotTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI6On5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlcigpID0gZGVmYXVsdDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uUHJvdmlkZXIuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcl9oCi0jZGVmaW5lIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyX2gKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNz
IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IHsKLSAgICBDb250ZW50LAotICAgIFRy
YW5zaWVudCwKLSAgICBUcmFuc2llbnRTb2xvCi19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVw
dGluZ0NhdGVnb3J5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFbmRPZkludGVy
cnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSkgPSAw
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyPiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXIoTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmKTsKLSAg
ICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcigpOwotCi0gICAgLy8g
VG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxp
c3RlbmluZ0ZvckludGVycnVwdGlvbnMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgPSAwOwotCi0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2NsaWVudDsgfQot
Ci1wcml2YXRlOgotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50KiBt
X2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJfaCAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21h
Yy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uUHJvdmlkZXJNYWMuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYy5oCShub25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWNfaAotI2RlZmluZSBNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hY19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlck1hYyA6IHB1YmxpYyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXI6Ok1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOwotCi0gICAgdm9pZCBiZWdp
bkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYygpID0gZGVmYXVsdDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNT
SU9OKSAmJiBQTEFURk9STShNQUMpCi0KLSNlbmRpZiAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hY19oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNl
c3Npb24vbWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0JKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJNYWMubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hYy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIFBMQVRGT1JN
KE1BQykKLQotI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERpZEJlZ2lu
UmluZ2luZ05vdGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlkQmVnaW5SaW5naW5nIik7Ci1zdGF0
aWMgY29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERpZEVuZFJpbmdpbmdOb3RpZmljYXRpb24gPSBDRlNU
UigiQ2FsbERpZEVuZFJpbmdpbmciKTsKLXN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBjYWxsRGlk
Q29ubmVjdE5vdGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlkQ29ubmVjdCIpOwotCi1zdGF0aWMg
dm9pZCBjYWxsRGlkQmVnaW5SaW5naW5nKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBv
YnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0g
ICAgQVNTRVJUX0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyKiBwcm92aWRlciA9IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlciopb2JzZXJ2ZXI7Ci0gICAgcHJvdmlkZXItPmNsaWVudCgpLmRpZFJlY2VpdmVTdGFydE9m
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5
OjpUcmFuc2llbnQpOwotfQotCi1zdGF0aWMgdm9pZCBjYWxsRGlkRW5kUmluZ2luZyhDRk5vdGlm
aWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lk
KiwgQ0ZEaWN0aW9uYXJ5UmVmKQotewotICAgIEFTU0VSVF9BUkcob2JzZXJ2ZXIsIG9ic2VydmVy
KTsKLSAgICBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyogcHJvdmlkZXIgPSAo
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMqKW9ic2VydmVyOwotICAgIHByb3Zp
ZGVyLT5jbGllbnQoKS5kaWRSZWNlaXZlRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGNhbGxEaWRDb25uZWN0KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZl
ciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgQVNT
RVJUX0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyTWFjKiBwcm92aWRlciA9IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYyopb2JzZXJ2ZXI7Ci0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGll
bnQmIGNsaWVudCA9IHByb3ZpZGVyLT5jbGllbnQoKTsKLSAgICBjbGllbnQuZGlkUmVjZWl2ZUVu
ZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVn
b3J5OjpUcmFuc2llbnQpOwotICAgIGNsaWVudC5kaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlv
bk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeTo6Q29udGVudCk7
Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWM6OmJlZ2luTGlz
dGVuaW5nRm9ySW50ZXJydXB0aW9ucygpCi17Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYg
bm90aWZpY2F0aW9uQ2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXREaXN0cmlidXRlZENl
bnRlcigpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9u
Q2VudGVyLCB0aGlzLCBjYWxsRGlkQmVnaW5SaW5naW5nLCBjYWxsRGlkQmVnaW5SaW5naW5nTm90
aWZpY2F0aW9uLCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2
ZXJJbW1lZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3Rp
ZmljYXRpb25DZW50ZXIsIHRoaXMsIGNhbGxEaWRFbmRSaW5naW5nLCBjYWxsRGlkRW5kUmluZ2lu
Z05vdGlmaWNhdGlvbiwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JE
ZWxpdmVySW1tZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIo
bm90aWZpY2F0aW9uQ2VudGVyLCB0aGlzLCBjYWxsRGlkQ29ubmVjdCwgY2FsbERpZENvbm5lY3RO
b3RpZmljYXRpb24sIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVs
aXZlckltbWVkaWF0ZWx5KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlck1hYzo6c3RvcExpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKQotewotICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyUmVtb3ZlRXZlcnlPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldERp
c3RyaWJ1dGVkQ2VudGVyKCksIHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUs
MTEgKzI4NSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oIgogI2VuZGlmCkBAIC00Mjg2LDU3ICs0MjgxLDggQEAgYm9vbCBJbnRlcm5hbHM6OmVsZW1l
bnRJc0Jsb2NraW5nRGlzcGxheQogewogICAgIHJldHVybiBlbGVtZW50LmlzRGlzYWJsaW5nU2xl
ZXAoKTsKIH0KLQogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotCi12b2lkIEludGVybmFsczo6c2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdv
cnkpCi17Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVN0
YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oY2F0ZWdvcnkpOwotfQotCi12b2lkIEludGVy
bmFsczo6c2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlh
U2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KQotewotICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNh
dGlvbihjYXRlZ29yeSk7Ci19Ci0KLVN0cmluZyBJbnRlcm5hbHM6Om1lZGlhU2Vzc2lvbkN1cnJl
bnRTdGF0ZShNZWRpYVNlc3Npb24qIHNlc3Npb24pIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChzZXNz
aW9uLT5jdXJyZW50U3RhdGUoKSkgewotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0
aXZlOgotICAgICAgICByZXR1cm4gImFjdGl2ZSI7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OlN0
YXRlOjpJbnRlcnJ1cHRlZDoKLSAgICAgICAgcmV0dXJuICJpbnRlcnJ1cHRlZCI7Ci0gICAgY2Fz
ZSBNZWRpYVNlc3Npb246OlN0YXRlOjpJZGxlOgotICAgICAgICByZXR1cm4gImlkbGUiOwotICAg
IH0KLX0KLQotZG91YmxlIEludGVybmFsczo6bWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKEhUTUxN
ZWRpYUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX0FSRyhlbGVtZW50LCBl
bGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVudC0+cGxheWVyVm9sdW1lKCk7Ci19Ci0KLXZvaWQg
SW50ZXJuYWxzOjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQp
Ci17Ci0gICAgLy8gRklYTUU6IE5vIGdvb2QgcmVhc29uIHRvIHVzZSBhIHNpbmdsZSBmdW5jdGlv
biB3aXRoIGFuIGFyZ3VtZW50IGluc3RlYWQgb2YgdGhyZWUgZnVuY3Rpb25zLgotICAgIHN3aXRj
aCAoZXZlbnQpIHsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6OlBsYXlQYXVzZToKLSAgICAg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9nZ2xlUGxheWJhY2soKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpQ29udHJvbEV2ZW50OjpOZXh0VHJhY2s6Ci0gICAg
ICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb05leHRUcmFjaygpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6OlByZXZpb3VzVHJhY2s6
Ci0gICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb1ByZXZpb3Vz
VHJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0KICNpZiBFTkFCTEUoV0VCX0FVRElPKQogdm9pZCBJbnRlcm5hbHM6OnNl
dEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9D
b250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwgU3Ry
aW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAi
TWVkaWFFbGVtZW50U2Vzc2lvbi5oIgogI2VuZGlmCkBAIC02NjYsMTUgKzY2Miw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1l
bnQmKSBjb25zdDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9p
ZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSk7Ci0gICAgdm9pZCBzZW5kTWVkaWFTZXNzaW9uRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnkpOwotICAgIFN0cmluZyBtZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoTWVkaWFTZXNzaW9uJikg
Y29uc3Q7Ci0gICAgZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVt
ZW50JikgY29uc3Q7Ci0gICAgZW51bSBjbGFzcyBNZWRpYUNvbnRyb2xFdmVudCB7IFBsYXlQYXVz
ZSwgTmV4dFRyYWNrLCBQcmV2aW91c1RyYWNrIH07Ci0gICAgdm9pZCBzZW5kTWVkaWFDb250cm9s
RXZlbnQoTWVkaWFDb250cm9sRXZlbnQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJFbmFibGVkKGJvb2wpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRldmljZVN0YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJ
KHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTggKzQ2LDYgQEAgZW51bSBSZXNvdXJjZUxvYWRQcmlv
cml0eSB7CiAgICAgIlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2giCiB9OwogCi1bQ29uZGl0
aW9uYWw9TUVESUFfU0VTU0lPTl0gZW51bSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29y
eSB7Ci0gICAgImNvbnRlbnQiLAotICAgICJ0cmFuc2llbnQiLAotICAgICJ0cmFuc2llbnQtc29s
byIKLX07Ci0KLVtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBlbnVtIE1lZGlhQ29udHJvbEV2
ZW50IHsKLSAgICAicGxheS1wYXVzZSIsCi0gICAgIm5leHQtdHJhY2siLAotICAgICJwcmV2aW91
cy10cmFjayIKLX07Ci0KIGVudW0gQXV0b0ZpbGxCdXR0b25UeXBlIHsKICAgICAiTm9uZSIsCiAg
ICAgIkNvbnRhY3RzIiwKQEAgLTY5NiwxMSArNjg0LDYgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVn
b3J5IHsKIAogICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJpbmcgaW50ZXJydXB0aW9u
VHlwZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgZW5kTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFncyk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NF
U1NJT05dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlm
aWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7Ci0gICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnkgY2F0ZWdvcnkpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBET01TdHJpbmcg
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKE1lZGlhU2Vzc2lvbiBzZXNzaW9uKTsKLSAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShI
VE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9O
XSB1bmRlZmluZWQgc2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50IGV2ZW50
KTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlvbldpbGxCZWNv
bWVJbmFjdGl2ZSgpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQg
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKG9wdGlvbmFsIGJvb2xlYW4gc3VzcGVuZGVk
VW5kZXJMb2NrID0gZmFsc2UpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIw
MjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBSZW1vdmVz
IGFsbCBjb2RlIGluIEVOQUJMRShNRURJQV9TRVNTSU9OKSBhbmQgYWxsIG1lZGlhIHNlc3Npb24K
KyAgICAgICAgcmVsYXRlZCBTUEkuIEl0IHdhcyBuZXZlciBlbmFibGVkIGFuZCBub3RoaW5nIGV2
ZXIgYWRvcHRlZCBpdC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgIFJlbW92ZSBtZWRpYSBzZXNzaW9uIHJlbGF0ZWQgZmlsZXMuCisKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2Uu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYk1l
ZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViTWVk
aWFTZXNzaW9uTWV0YWRhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJ
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBSZW1vdmUgYWxs
IGNvZGUgaW4gRU5BQkxFKE1FRElBX1NFU1NJT04pLgorCiAyMDIwLTA5LTMwICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVJlY29yZGVyIHNob3VsZCBz
dXBwb3J0IGlzVHlwZVN1cHBvcnRlZApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjc3OTAp
CisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyAr
MTk3LDYgQEAgU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAogU2hhcmVkL1dlYkltYWdl
LmNwcAogU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwIEBuby11bmlmeQogU2hhcmVkL1dlYktp
dDJJbml0aWFsaXplLmNwcCBAbm8tdW5pZnkKLVNoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0
YS5jcHAKIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAogU2hhcmVkL1dlYk1vdXNlRXZlbnQu
Y3BwIEBuby11bmlmeQogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0z
NzksNyArMzc4LDYgQEAgVUlQcm9jZXNzL0FQSS9DL1dLSGl0VGVzdFJlc3VsdC5jcHAKIFVJUHJv
Y2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rv
ci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCi1VSVBy
b2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S01lc3NhZ2VMaXN0ZW5lci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tEaXNwbGF5LmNwcAog
VUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNwcApJbmRleDogU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsMTUgKzIyNiwxMiBAQCBVSVByb2Nlc3MvSGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhCiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlci5jcHAKIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCiBVSVBy
b2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCi1VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmNwcAotVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVu
dC5jcHAKIFVJUHJvY2Vzcy9XZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCiBVSVByb2Nlc3Mv
V0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5tbQogCiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhUmVjb3JkLmNwcAogCiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0TWVudUxpc3RlbmVy
LmNwcAotVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAogVUlQ
cm9jZXNzL0FQSS9DL1dLVGVzdGluZ1N1cHBvcnQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
U2NyaXB0UmVmLmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMCAr
MTA5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICNpbmNsdWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhQ29uc3RyYWludHMuaD4KQEAgLTIxMDYsMzIgKzIxMDIsNiBAQCBib29sIEFyZ3VtZW50
Q29kZXI8VXNlclN0eWxlU2hlZXQ+OjpkZWNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLXZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVNlc3Npb25NZXRh
ZGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0
YSYgcmVzdWx0KQotewotICAgIGVuY29kZXIgPDwgcmVzdWx0LmFydGlzdCgpOwotICAgIGVuY29k
ZXIgPDwgcmVzdWx0LmFsYnVtKCk7Ci0gICAgZW5jb2RlciA8PCByZXN1bHQudGl0bGUoKTsKLSAg
ICBlbmNvZGVyIDw8IHJlc3VsdC5hcnR3b3JrVVJMKCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2Rl
cjxNZWRpYVNlc3Npb25NZXRhZGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVNl
c3Npb25NZXRhZGF0YSYgcmVzdWx0KQotewotICAgIFN0cmluZyBhcnRpc3QsIGFsYnVtLCB0aXRs
ZTsKLSAgICBVUkwgYXJ0d29ya1VSTDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydGlzdCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsYnVtKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGl0bGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrVVJM
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9IE1lZGlhU2Vzc2lvbk1ldGFk
YXRhKHRpdGxlLCBhcnRpc3QsIGFsYnVtLCBhcnR3b3JrVVJMKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLSNlbmRpZgotCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKICAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnMuaG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxMCArMTg3LDYg
QEAgY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotY2xh
c3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsKICNlbmRpZgpAQCAtNjM1LDEzICs2MzEsNiBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiB9OwogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGE+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJik7Ci0gICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsKLX07Ci0jZW5kaWYKLQogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKTsK
ICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGRlY29kZShE
ZWNvZGVyJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRh
ZGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNz
aW9uTWV0YWRhdGEuY3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYk1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVmPFdlYk1lZGlhU2Vz
c2lvbk1ldGFkYXRhPiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YTo6Y3JlYXRlKGNvbnN0IE1lZGlh
U2Vzc2lvbk1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YShtZXRhZGF0YSkpOwotfQotCi1XZWJNZWRpYVNlc3Npb25N
ZXRhZGF0YTo6V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEoY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRh
dGEmIG1ldGFkYXRhKQotICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkKLXsKLX0KLQotV2ViTWVk
aWFTZXNzaW9uTWV0YWRhdGE6On5XZWJNZWRpYVNlc3Npb25NZXRhZGF0YSgpCi17Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJ
KHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YV9oCi0jZGVmaW5lIFdlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhX2gKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NZXRhZGF0YS5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpNZWRpYVNlc3Npb25NZXRhZGF0YT4gewotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpNZWRp
YVNlc3Npb25NZXRhZGF0YSYpOwotICAgIH5XZWJNZWRpYVNlc3Npb25NZXRhZGF0YSgpOwotCi0g
ICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS50aXRsZSgpOyB9Ci0g
ICAgU3RyaW5nIGFydGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0aXN0KCk7IH0K
LSAgICBTdHJpbmcgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmFsYnVtKCk7IH0K
LSAgICBTdHJpbmcgYXJ0d29ya1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0d29y
a1VSTCgpLnN0cmluZygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWVkaWFTZXNz
aW9uTWV0YWRhdGEoY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsKLQotICAg
IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jZW5k
aWYgLy8gV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGFfaApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksMTEgKzE3OSw2IEBAIHB1Ymxp
YzoKICAgICAgICAgV2Vic2l0ZVBvbGljaWVzLAogICAgICAgICBXaW5kb3dGZWF0dXJlcywKIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgICAgICBNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIsCi0gICAgICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLAotI2VuZGlmCi0KICNpZiBFTkFCTEUo
V0VCX0FVVEhOKQogICAgICAgICBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLAog
ICAgICAgICBXZWJBdXRoZW50aWNhdGlvblBhbmVsLApAQCAtNDI4LDExICs0MjMsNiBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2JqZWN0CiAgICAgICAgIEFQSTo6T2JqZWN0
OjpUeXBlOjpXZWJzaXRlUG9saWNpZXMsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXaW5k
b3dGZWF0dXJlcywKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgICAgICBBUEk6Ok9i
amVjdDo6VHlwZTo6TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLAotICAgICAgICBBUEk6Ok9iamVj
dDo6VHlwZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEsCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6V2ViQXV0aGVudGljYXRp
b25QYW5lbCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiAy
Njc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA1LDggKzEwNSw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSGl0
VGVzdFJlc3UKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSWNvbkRhdGFiYXNlKiBXS0lj
b25EYXRhYmFzZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW5zcGVjdG9yKiBX
S0luc3BlY3RvclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlciogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmOwotdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqIFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYVNlc3Npb25N
ZXRhZGF0YSogV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLTWVzc2FnZUxpc3RlbmVyKiBXS01lc3NhZ2VMaXN0ZW5lclJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2aWdhdGlvbkFjdGlvbiogV0tOYXZpZ2F0aW9uQWN0aW9u
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0YSogV0tOYXZp
Z2F0aW9uRGF0YVJlZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgorI2luY2x1ZGUgIlByb2Nlc3NUaHJv
dHRsZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXNS
ZXBsaWVzLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLQotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNvbnN0IGNoYXIqIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6
c3VwcGxlbWVudE5hbWUoKQotewotICAgIHJldHVybiAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyIjsKLX0KLQotUmVmPFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4gV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyOjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihwcm9j
ZXNzUG9vbCkpOwotfQotCi1XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OldlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi0gICAgOiBXZWJD
b250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkgeyB9Ci0KLS8vIFdlYkNvbnRleHRTdXBwbGVt
ZW50Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCgpCi17Ci0gICAgQVBJOjpPYmplY3Q6OnJlZigpOwotfQotCi12b2lkIFdlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17Ci0gICAg
QVBJOjpPYmplY3Q6OmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xp
ZW50QmFzZSogY2xpZW50KQotewotICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKLX0K
LQotYm9vbCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnZhbHVlRm9yUGxheWJhY2tBdHRy
aWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSBhdHRyaWJ1
dGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2ZvY3VzZWRNZWRpYUVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3BsYXliYWNrQXR0cmlidXRlcyAmIGF0dHJpYnV0
ZTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnVwZGF0ZVBsYXliYWNr
QXR0cmlidXRlKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUgYXR0
cmlidXRlLCBib29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgbV9wbGF5YmFj
a0F0dHJpYnV0ZXMgfD0gYXR0cmlidXRlOwotICAgIGVsc2UKLSAgICAgICAgbV9wbGF5YmFja0F0
dHJpYnV0ZXMgJj0gfmF0dHJpYnV0ZTsKLQotICAgIG1fY2xpZW50LmRpZENoYW5nZVBsYXliYWNr
QXR0cmlidXRlKHRoaXMsIGF0dHJpYnV0ZSwgdmFsdWUpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcjo6c2V0Vm9sdW1lT2ZGb2N1c2VkTWVkaWFFbGVtZW50KGRvdWJsZSB2
b2x1bWUpCi17Ci0gICAgaWYgKCFtX2ZvY3VzZWRNZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChXZWJQYWdlUHJveHkqIHByb3h5ID0gbV9mb2N1c2VkTWVkaWFFbGVtZW50
LT5maXJzdCkKLSAgICAgICAgcHJveHktPnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwg
bV9mb2N1c2VkTWVkaWFFbGVtZW50LT5zZWNvbmQpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlhU3RhdGUoV2Vi
UGFnZVByb3h5KiBwcm94eSwgdWludDY0X3QgZWxlbWVudElELCBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgaWYgKG1fZm9jdXNlZE1lZGlhRWxl
bWVudCkgewotICAgICAgICBpZiAocHJveHkgPT0gbV9mb2N1c2VkTWVkaWFFbGVtZW50LT5maXJz
dCAmJiBlbGVtZW50SUQgPT0gbV9mb2N1c2VkTWVkaWFFbGVtZW50LT5zZWNvbmQpIHsKLSAgICAg
ICAgICAgIHVwZGF0ZVBsYXliYWNrQXR0cmlidXRlKElzUGxheWluZywgZmxhZ3MgJiBXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpJc1NvdXJjZUVsZW1lbnRQbGF5aW5nKTsKLSAgICAgICAgICAgIHVw
ZGF0ZVBsYXliYWNrQXR0cmlidXRlKElzTmV4dFRyYWNrQ29udHJvbEVuYWJsZWQsIGZsYWdzICYg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZCk7Ci0gICAg
ICAgICAgICB1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZShJc1ByZXZpb3VzVHJhY2tDb250cm9sRW5h
YmxlZCwgZmxhZ3MgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpJc1ByZXZpb3VzVHJhY2tDb250
cm9sRW5hYmxlZCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyOjpzZXRGb2N1c2VkTWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYgcHJveHks
IHVpbnQ2NF90IGVsZW1lbnRJRCkKLXsKLSAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBtYWtl
VW5pcXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKLX0KLQotdm9p
ZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNsZWFyRm9jdXNlZE1lZGlhRWxlbWVudCgp
Ci17Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDczICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
Ci0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQu
aCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCIKLSNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXR5cGVkZWYgc3Rk
OjpwYWlyPFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90PiBGb2N1c2VkTWVkaWFFbGVtZW50OwotCi1j
bGFzcyBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+LCBwdWJsaWMgV2Vi
Q29udGV4dFN1cHBsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBw
bGVtZW50TmFtZSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXI+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwotCi0gICAgdm9pZCBpbml0aWFsaXplQ2xpZW50
KGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSopOwotCi0gICAgYm9v
bCB2YWx1ZUZvclBsYXliYWNrQXR0cmlidXRlKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxh
eWJhY2tBdHRyaWJ1dGUpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVz
RnJvbU1lZGlhU3RhdGUoV2ViUGFnZVByb3h5KiwgdWludDY0X3QsIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7Ci0gICAgdm9pZCBzZXRWb2x1bWVPZkZvY3VzZWRNZWRp
YUVsZW1lbnQoZG91YmxlKTsKLQotICAgIHZvaWQgc2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQ
YWdlUHJveHkmLCB1aW50NjRfdCk7Ci0gICAgdm9pZCBjbGVhckZvY3VzZWRNZWRpYUVsZW1lbnQo
KTsKLQotICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7Ci0gICAgdXNpbmcgQVBJOjpPYmplY3Q6
OmRlcmVmOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcihXZWJQcm9jZXNzUG9vbCopOwotCi0gICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAg
ICB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHVwZGF0ZVBsYXli
YWNrQXR0cmlidXRlKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUs
IGJvb2wpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZvY3VzZWRNZWRpYUVsZW1lbnQ+IG1fZm9j
dXNlZE1lZGlhRWxlbWVudDsKLSAgICBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNr
QXR0cmlidXRlcyBtX3BsYXliYWNrQXR0cmlidXRlcyB7IDAgfTsKLSAgICBXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJDbGllbnQgbV9jbGllbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKQEAg
LTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCIKLQotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudDo6ZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUo
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKiBtYW5hZ2VyLCBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlclBsYXliYWNrQXR0cmlidXRlIHBsYXliYWNrQXR0cmlidXRlLCBib29sIHZhbHVlKQot
ewotICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fY2xpZW50LmRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlKHRvQVBJ
KG1hbmFnZXIpLCBwbGF5YmFja0F0dHJpYnV0ZSwgdmFsdWUsIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMjY3Nzkw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
Q2xpZW50LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRfaAotI2RlZmluZSBXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0KLSNpbmNsdWRlICJBUElDbGllbnQuaCIKLSNpbmNsdWRlICJXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewot
dGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
Q2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlckNsaWVudFYwPiBWZXJzaW9uczsKLX07Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI7Ci0KLWNsYXNzIFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlckNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2b2lkIGRpZENoYW5nZVBs
YXliYWNrQXR0cmlidXRlKFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciosIFdLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wpOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2VuZGlm
IC8vIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
NCwxMiArMjQ0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIu
aD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg+Ci0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmgiCiAjZW5kaWYKQEAgLTYwNTQsMjQgKzYwNDgsNiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVz
dW1lQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUgZXZlbnRU
eXBlKQotewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRU
eXBlKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRWb2x1bWVPZk1lZGlhRWxlbWVudChk
b3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCi17Ci0gICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRWb2x1bWVPZk1lZGlhRWxlbWVudCh2b2x1bWUsIGVsZW1lbnRJRCkpOwotfQotI2VuZGlm
Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wg
bWF5U3RhcnRNZWRpYSkKIHsKICAgICBpZiAobWF5U3RhcnRNZWRpYSA9PSBtX21heVN0YXJ0TWVk
aWFXaGVuSW5XaW5kb3cpCkBAIC04OTc2LDEyICs4OTUyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om5hdmlnYXRpb25HZXN0dXJlU25hcAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVk
aWFEaWRDaGFuZ2UoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5ld1N0YXRlLCB1aW50
NjRfdCBzb3VyY2VFbGVtZW50SUQpCiB7Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAg
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKiBmb2N1c01hbmFnZXIgPSBwcm9jZXNzKCkucHJv
Y2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4oKTsKLSAg
ICBBU1NFUlQoZm9jdXNNYW5hZ2VyKTsKLSAgICBmb2N1c01hbmFnZXItPnVwZGF0ZVBsYXliYWNr
QXR0cmlidXRlc0Zyb21NZWRpYVN0YXRlKHRoaXMsIHNvdXJjZUVsZW1lbnRJRCwgbmV3U3RhdGUp
OwotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5zaG91bGRCZVJ1bm5hYmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTkx
MzAsMjYgKzkxMDAsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bm93UGxheWluZ0luZm9DYWxsYmFj
CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdm9pZCBXZWJQYWdlUHJv
eHk6Omhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wg
c3RhdGUpCi17Ci0gICAgbV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50cyA9
IHN0YXRlOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6bWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKQotewot
ICAgIFJlZjxXZWJNZWRpYVNlc3Npb25NZXRhZGF0YT4gd2ViTWV0YWRhdGEgPSBXZWJNZWRpYVNl
c3Npb25NZXRhZGF0YTo6Y3JlYXRlKG1ldGFkYXRhKTsKLSAgICBtX3VpQ2xpZW50LT5tZWRpYVNl
c3Npb25NZXRhZGF0YURpZENoYW5nZSgqdGhpcywgd2ViTWV0YWRhdGEucHRyKCkpOwotfQotCi12
b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWlu
dDY0X3QgZWxlbWVudElEKQotewotICAgIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciogZm9j
dXNNYW5hZ2VyID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXI+KCk7Ci0gICAgQVNTRVJUKGZvY3VzTWFuYWdlcik7Ci0gICAgZm9j
dXNNYW5hZ2VyLT5zZXRGb2N1c2VkTWVkaWFFbGVtZW50KCp0aGlzLCBlbGVtZW50SUQpOwotfQot
I2VuZGlmCi0KIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9wdGlvblNldDxBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdz
KQogewogICAgIG1fdWlDbGllbnQtPmhhbmRsZUF1dG9wbGF5RXZlbnQoKnRoaXMsIGV2ZW50LCBm
bGFncyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2OSwxMiArMTY5LDYgQEAgT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmpl
Y3RSZWdpc3RyeTsKICNpbmNsdWRlIDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8uaD4K
ICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBNZWRpYVNlc3Npb25NZXRhZGF0YTsKLX0KLSNlbmRpZgotCiAjaWYgVVNFKERJUkVD
VDJEKQogaW50ZXJmYWNlIElEM0QxMURldmljZTE7CiAjZW5kaWYKQEAgLTEzNDQsMTIgKzEzMzgs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIHZv
aWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0gICAgYm9vbCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHM7IH0KLSAg
ICB2b2lkIGhhbmRsZU1lZGlhRXZlbnQoV2ViQ29yZTo6TWVkaWFFdmVudFR5cGUpOwotICAgIHZv
aWQgc2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlLCB1aW50NjRfdCk7Ci0jZW5kaWYKLSAg
ICAgICAgCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICB2b2lkIGRpZEFsbG93UG9pbnRl
ckxvY2soKTsKICAgICB2b2lkIGRpZERlbnlQb2ludGVyTG9jaygpOwpAQCAtMTQ3NSwxMiArMTQ2
Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCwgYm9v
bCwgY29uc3QgU3RyaW5nJiwgZG91YmxlLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFja0lEKTsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBoYXNNZWRpYVNl
c3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sKTsKLSAgICB2b2lkIG1l
ZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1l
dGFkYXRhJik7Ci0gICAgdm9pZCBmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1
aW50NjRfdCk7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBBUEk6OkhpdFRlc3RS
ZXN1bHQqIGxhc3RNb3VzZU1vdmVIaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
TW91c2VNb3ZlSGl0VGVzdFJlc3VsdC5nZXQoKTsgfQogICAgIHZvaWQgcGVyZm9ybUltbWVkaWF0
ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQpOwpAQCAtMjc3OCwx
MCArMjc2MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzTmV2ZXJSaWNobHlFZGl0YWJsZUZv
clRvdWNoQmFyIHsgZmFsc2UgfTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0gICAgYm9vbCBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzIHsgZmFs
c2UgfTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX3JlcXVpcmVzVGFyZ2V0TW9uaXRvcmlu
ZyB7IGZhbHNlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtNDc0LDEyICs0NzQsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIElzUGxh
eWluZ01lZGlhRGlkQ2hhbmdlKHVuc2lnbmVkIHN0YXRlLCB1aW50NjRfdCBzb3VyY2VFbGVtZW50
SUQpCiAgICAgSGFuZGxlQXV0b3BsYXlFdmVudChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudCBldmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4gZmxh
Z3MpCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBIYXNNZWRpYVNlc3Npb25XaXRo
QWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sIHN0YXRlKQotICAgIE1lZGlhU2Vzc2lv
bk1ldGFkYXRhRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1ldGFkYXRh
KTsKLSAgICBGb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVt
ZW50SUQpCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRQZXJmb3JtSW1tZWRp
YXRlQWN0aW9uSGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSByZXN1
bHQsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksOSArMjg5LDYgQEAgV2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogICAgIC8vIE5PVEU6IFRoZXNlIHN1Yi1v
YmplY3RzIG11c3QgYmUgaW5pdGlhbGl6ZWQgYWZ0ZXIgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuLgog
ICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRk
U3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCk7Ci0jaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0gICAgYWRkU3VwcGxlbWVudDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXI+KCk7Ci0jZW5kaWYKIAogICAgIHByb2Nlc3NQb29scygpLmFwcGVuZCh0aGlzKTsKIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjc3
OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSwxMCArNTksNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNNdXRhYmxlRGljdGlvbmFyeTsK
IE9CSkNfQ0xBU1MgTlNPYmplY3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEwICs2MCw2IEBAIGNs
YXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
OwogY2xhc3MgV2ViUGFnZVByb3h5Owogc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwotCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi1jbGFzcyBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YTsK
LSNlbmRpZgogfQogCiBuYW1lc3BhY2UgQVBJIHsKQEAgLTE2MSwxMCArMTU3LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVBdXRvcGxheUV2ZW50KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlF
dmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIHsgfQogCi0jaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJNZWRpYVNlc3Np
b25NZXRhZGF0YSopIHsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lm
IEhBVkUoQVBQX0xJTktTKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlQXBwTGlua0Fj
dGlvbnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopIHsgcmV0dXJuIHRydWU7
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsNiBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJJY29u
RGF0YWJhc2U7CiBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOwogY2xhc3MgV2Vi
Tm90aWZpY2F0aW9uOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OwogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI7CkBAIC0xMzYsOCArMTM0LDYgQEAgV0tfQUREX0FQSV9N
QVBQSU5HKFdLSFRUUENvb2tpZVN0b3JlUmVmLAogV0tfQUREX0FQSV9NQVBQSU5HKFdLSGl0VGVz
dFJlc3VsdFJlZiwgQVBJOjpIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLSWNv
bkRhdGFiYXNlUmVmLCBXZWJJY29uRGF0YWJhc2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNw
ZWN0b3JSZWYsIFdlYkluc3BlY3RvclByb3h5KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyUmVmLCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIpCi1XS19B
RERfQVBJX01BUFBJTkcoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiwgV2ViTWVkaWFTZXNzaW9u
TWV0YWRhdGEpCiBXS19BRERfQVBJX01BUFBJTkcoV0tNZXNzYWdlTGlzdGVuZXJSZWYsIEFQSTo6
TWVzc2FnZUxpc3RlbmVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkFjdGlvblJl
ZiwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlv
bkRhdGFSZWYsIEFQSTo6TmF2aWdhdGlvbkRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
NiwxNiArNDM2LDYgQEAgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIFdLQ29udGV4dEdldAog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZj4o
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpKTsKIH0KIAotV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJSZWYgV0tDb250ZXh0R2V0TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
KFdLQ29udGV4dFJlZiBjb250ZXh0KQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGNvbnRleHQpLT5zdXBwbGVtZW50
PFdlYktpdDo6V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19Ci0KIFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktp
dDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5PigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw2IEBAIFdLX0VY
UE9SVCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIFcKIFdLX0VYUE9SVCBXS0dlb2xvY2F0
aW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXRHZW9sb2NhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVm
IGNvbnRleHQpOwogV0tfRVhQT1JUIFdLSWNvbkRhdGFiYXNlUmVmIFdLQ29udGV4dEdldEljb25E
YXRhYmFzZShXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmIFdLQ29udGV4dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIoV0tDb250ZXh0
UmVmIGNvbnRleHQpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNp
dGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3JlKTsKLVdLX0VYUE9SVCBXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlclJlZiBXS0NvbnRleHRHZXRNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIoV0tD
b250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBX
S0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdL
X0VYUE9SVCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFJlc291cmNlQ2Fj
aGVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhf
UkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLQotI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlckdldFR5cGVJRCgpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0
dXJuIHRvQVBJKFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6QVBJVHlwZSk7Ci0jZWxzZQot
ICAgIHJldHVybiB0b0FQSShBUEk6Ok9iamVjdDo6VHlwZTo6TnVsbCk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldENsaWVudChXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNs
aWVudEJhc2UqIGNsaWVudCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB0b0lt
cGwobWFuYWdlciktPmluaXRpYWxpemVDbGllbnQoY2xpZW50KTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKG1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwotI2VuZGlmCi19Ci0K
LWJvb2wgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJWYWx1ZUZvclBsYXliYWNrQXR0cmlidXRl
KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUgYXR0cmlidXRlKQotewotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIHJldHVybiB0b0ltcGwobWFuYWdlciktPnZhbHVlRm9yUGxheWJhY2tB
dHRyaWJ1dGUoYXR0cmlidXRlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShhdHRyaWJ1dGUpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
fQotCi12b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Vm9sdW1lT2ZGb2N1c2VkTWVk
aWFFbGVtZW50KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIGRvdWJsZSB2
b2x1bWUpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdG9JbXBsKG1hbmFnZXIp
LT5zZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQodm9sdW1lKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKG1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTSh2b2x1bWUpOwotI2VuZGlmCi19
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcl9oCi0jZGVmaW5lIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2gK
LQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmbmRlZiBfX2NwbHVzcGx1cwotI2lu
Y2x1ZGUgPHN0ZGJvb2wuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi
QyIgewotI2VuZGlmCi0KLWVudW0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0
dHJpYnV0ZSB7Ci0gICAgSXNQbGF5aW5nICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCi0g
ICAgSXNQcmV2aW91c1RyYWNrQ29udHJvbEVuYWJsZWQgPSAxIDw8IDEsCi0gICAgSXNOZXh0VHJh
Y2tDb250cm9sRW5hYmxlZCAgICAgPSAxIDw8IDIsCi19OwotdHlwZWRlZiB1aW50MzJfdCBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlczsKLQotLy8gTWVkaWEgU2Vz
c2lvbiBGb2N1cyBNYW5hZ2VyIENsaWVudAotdHlwZWRlZiB2b2lkICgqV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJEaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSkoV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJSZWYgbWFuYWdlciwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0
dHJpYnV0ZSBwbGF5YmFja0F0dHJpYnV0ZSwgYm9vbCB2YWx1ZSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7Ci0KLXR5cGVkZWYgc3RydWN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
QmFzZSB7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ckNsaWVudFYwIHsKLSAgICBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2UgICAg
ICAgICAgICAgICAgIGJhc2U7Ci0KLSAgICAvLyBWZXJzaW9uIDAuCi0gICAgV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJEaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSBkaWRDaGFuZ2VQbGF5YmFj
a0F0dHJpYnV0ZTsKLX0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRWMDsKLQotV0tf
RVhQT1JUIFdLVHlwZUlEIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0K
LVdLX0VYUE9SVCB2b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Q2xpZW50KFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyQ2xpZW50QmFzZSogY2xpZW50KTsKLQotV0tfRVhQT1JUIGJvb2wgV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJWYWx1ZUZvclBsYXliYWNrQXR0cmlidXRlKFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyUmVmLCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmli
dXRlKTsKLVdLX0VYUE9SVCB2b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Vm9sdW1l
T2ZGb2N1c2VkTWVkaWFFbGVtZW50KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmLCBkb3Vi
bGUpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLyogV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJfaCAqLwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9u
TWV0YWRhdGEuY3BwCShub25leGlzdGVudCkKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgi
Ci0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NZXRh
ZGF0YS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhR2V0VHlwZUlEKCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAg
ICByZXR1cm4gdG9BUEkoV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE6OkFQSVR5cGUpOwotI2Vsc2UK
LSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmplY3Q6OlR5cGU6Ok51bGwpOwotI2VuZGlmCi19Ci0K
LVdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5VGl0bGUoV0tNZWRpYVNlc3Np
b25NZXRhZGF0YVJlZiBtZXRhZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAg
ICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKG1ldGFkYXRhKS0+dGl0bGUoKSk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYK
LX0KLQotV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBcnRpc3QoV0tNZWRp
YVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKG1ldGFkYXRhKS0+YXJ0aXN0KCkpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwotICAgIHJldHVybiBudWxscHRyOwot
I2VuZGlmCi19Ci0KLVdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5QWxidW0o
V0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKG1ldGFkYXRhKS0+YWxidW0o
KSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci0jZW5kaWYKLX0KLQotV0tVUkxSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBcnR3
b3JrVVJMKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpCi17Ci0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChtZXRhZGF0
YSktPmFydHdvcmtVUkwoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFfaAotI2RlZmluZSBXS01lZGlhU2Vzc2lvbk1l
dGFkYXRhX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmbmRlZiBfX2NwbHVz
cGx1cwotI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMK
LWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS01lZGlhU2Vzc2lv
bk1ldGFkYXRhR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhQ29weVRpdGxlKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEp
OwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5QXJ0aXN0
KFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpOwotV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5QWxidW0oV0tNZWRpYVNlc3Npb25NZXRhZGF0
YVJlZiBtZXRhZGF0YSk7Ci1XS19FWFBPUlQgV0tVUkxSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0
YUNvcHlBcnR3b3JrVVJMKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpOwotCi0j
aWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLyogV0tNZWRpYVNlc3Npb25N
ZXRhZGF0YV9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDExICs5NCw2IEBACiAjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVJdGVtLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
I2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVNlc3Npb25FdmVudHMuaD4KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5j
bHVkZSAiVmVyc2lvbkNoZWNrcy5oIgogI2VuZGlmCkBAIC0yMDMzLDE1ICsyMDI4LDYgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgbV9jbGll
bnQuZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlKHRvQVBJKCZw
YWdlKSwgdG9BUEkodXNlckluZm8pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAg
ICB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICAgICAgdm9pZCBtZWRpYVNlc3Np
b25NZXRhZGF0YURpZENoYW5nZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYk1lZGlhU2Vzc2lvbk1l
dGFkYXRhKiBtZXRhZGF0YSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5tZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50Lm1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdl
KHRvQVBJKCZwYWdlKSwgdG9BUEkobWV0YWRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0jZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICB2
b2lkIHJlcXVlc3RQb2ludGVyTG9jayhXZWJQYWdlUHJveHkqIHBhZ2UpIGZpbmFsCiAgICAgICAg
IHsKQEAgLTI3MzIsNDMgKzI3MTgsNiBAQCB2b2lkIFdLUGFnZURpZERlbnlQb2ludGVyTG9jayhX
S1BhZ2VSZWYgCiAjZW5kaWYKIH0KIAotYm9vbCBXS1BhZ2VIYXNNZWRpYVNlc3Npb25XaXRoQWN0
aXZlTWVkaWFFbGVtZW50cyhXS1BhZ2VSZWYgcGFnZSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICByZXR1cm4gdG9JbXBsKHBhZ2UpLT5oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZl
TWVkaWFFbGVtZW50cygpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tQYWdlSGFuZGxlTWVkaWFFdmVudChXS1Bh
Z2VSZWYgcGFnZSwgV0tNZWRpYUV2ZW50VHlwZSB3a0V2ZW50VHlwZSkKLXsKLSNpZiBFTkFCTEUo
TUVESUFfU0VTU0lPTikKLSAgICBNZWRpYUV2ZW50VHlwZSBldmVudFR5cGU7Ci0KLSAgICBzd2l0
Y2ggKHdrRXZlbnRUeXBlKSB7Ci0gICAgY2FzZSBrV0tNZWRpYUV2ZW50VHlwZVBsYXlQYXVzZToK
LSAgICAgICAgZXZlbnRUeXBlID0gTWVkaWFFdmVudFR5cGU6OlBsYXlQYXVzZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBrV0tNZWRpYUV2ZW50VHlwZVRyYWNrTmV4dDoKLSAgICAgICAgZXZl
bnRUeXBlID0gTWVkaWFFdmVudFR5cGU6OlRyYWNrTmV4dDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBrV0tNZWRpYUV2ZW50VHlwZVRyYWNrUHJldmlvdXM6Ci0gICAgICAgIGV2ZW50VHlwZSA9
IE1lZGlhRXZlbnRUeXBlOjpUcmFja1ByZXZpb3VzOwotICAgICAgICBicmVhazsKLSAgICBkZWZh
dWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHRvSW1wbChwYWdlKS0+aGFuZGxlTWVkaWFFdmVudChldmVudFR5cGUpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdrRXZlbnRUeXBl
KTsKLSNlbmRpZgotfQotCiB2b2lkIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBt
ZXNzYWdlQm9keVJlZikKIHsKICAgICB0b0ltcGwocGFnZVJlZiktPnBvc3RNZXNzYWdlVG9Jbmpl
Y3RlZEJ1bmRsZSh0b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgdG9JbXBsKG1lc3Nh
Z2VCb2R5UmVmKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxOSArMTUxLDgg
QEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS01lZGlhU3RhdGU7CiAKLQogV0tfRVhQ
T1JUIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKTsKIAot
ZW51bSB7Ci0gICAga1dLTWVkaWFFdmVudFR5cGVQbGF5UGF1c2UsCi0gICAga1dLTWVkaWFFdmVu
dFR5cGVUcmFja05leHQsCi0gICAga1dLTWVkaWFFdmVudFR5cGVUcmFja1ByZXZpb3VzCi19Owot
dHlwZWRlZiB1aW50MzJfdCBXS01lZGlhRXZlbnRUeXBlOwotCi1XS19FWFBPUlQgYm9vbCBXS1Bh
Z2VIYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50cyhXS1BhZ2VSZWYgcGFnZSk7
Ci1XS19FWFBPUlQgdm9pZCBXS1BhZ2VIYW5kbGVNZWRpYUV2ZW50KFdLUGFnZVJlZiBwYWdlLCBX
S01lZGlhRXZlbnRUeXBlIGV2ZW50KTsKLQogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTFdp
dGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1
cmwsIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsVVJMcyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFn
ZVBvc3RQcmVzZW50YXRpb25VcGRhdGVGdW5jdGlvbikoV0tFcnJvclJlZiwgdm9pZCopOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCShy
ZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VV
SUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDYgQEAgdHlwZWRlZiB2b2lk
ICgqV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaAogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRl
UG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgdXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4sIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9y
aWdpblJlZiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgV0tTZWN1cml0eU9yaWdpblJlZiB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiBkZXZpY2Vz
UmVxdWVzdCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VE
aWRDbGlja0F1dG9GaWxsQnV0dG9uQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYg
dXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tQYWdl
TWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tIYW5kbGVBdXRvcGxheUV2ZW50Q2FsbGJhY2spKFdLUGFnZVJl
ZiBwYWdlLCBXS0F1dG9wbGF5RXZlbnQgZXZlbnQsIFdLQXV0b3BsYXlFdmVudEZsYWdzIGZsYWdz
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLRnVsbHNjcmVlbk1h
eVJldHVyblRvSW5saW5lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUmVxdWVzdFBvaW50ZXJMb2NrQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTUwMyw3ICs1MDIsNyBA
QCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY1IHsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRBbGVydDsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtOwogICAg
IFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1
ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdDsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25N
ZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vz
c2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0
byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIH0gV0tQYWdlVUlDbGllbnRWNTsK
IAogdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWNiB7CkBAIC01NzYsNyArNTc1LDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWNiB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZh
U2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7
IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBW
ZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtNjU2LDcgKzY1NSw3
IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjcgewogICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFn
ZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVz
ZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogCiAgICAg
Ly8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTc0MCw3ICs3
MzksNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY4IHsKICAgICBXS1BhZ2VSdW5K
YXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAg
IHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAg
ICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBX
S1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KICAg
ICAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAt
ODI4LDcgKzgyNyw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjkgewogICAgIFdL
UGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAg
ICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1
ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1Owog
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0
aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1
OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9p
ZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hh
bmdlLgogCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsK
QEAgLTkxOSw3ICs5MTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxMCB7CiAg
ICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhW
NSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsK
ICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAg
ICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFE
aWRDaGFuZ2UuCiAgICAgCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1Bh
Z2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
TmV3UGFnZTsKQEAgLTEwMTQsNyArMTAxMyw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xp
ZW50VjExIHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5n
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlk
Q2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Np
b25NZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVh
dGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZU5ld1BhZ2U7CkBAIC0xMTEyLDcgKzExMTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1Bh
Z2VVSUNsaWVudFYxMiB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNr
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxi
YWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFE
aWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRh
ZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAgICAgCiAgICAgLy8gVmVyc2lvbiA2LgogICAg
IFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTEyMTMsNyArMTIxMiw3IEBAIHR5cGVkZWYg
c3RydWN0IFdLUGFnZVVJQ2xpZW50VjEzIHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRB
bGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25m
aXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlw
dENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Np
b25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlh
U2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNl
ZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24g
Ni4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC0xMzE3LDcgKzEzMTYsNyBAQCB0
eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxNCB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZh
U2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7
IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBW
ZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsNyArNjg2LDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKFdLQXJyYXlSZWYgb3JpZ2lu
VVJMc1JlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21h
aW5zRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKLSAgICBSZWZQdHI8QVBJOjpBcnJheT4gb3JpZ2luVVJMc0FycmF5
ID0gdG9JbXBsKG9yaWdpblVSTHNSZWYpOworICAgIFJlZlB0cjxBUEk6OkFycmF5PiBvcmlnaW5V
UkxzQXJyYXkgPSBXZWJLaXQ6OnRvSW1wbChvcmlnaW5VUkxzUmVmKTsKICAgICBzaXplX3QgbmV3
U2l6ZSA9IG9yaWdpblVSTHNBcnJheSA/IG9yaWdpblVSTHNBcnJheS0+c2l6ZSgpIDogMDsKICAg
ICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zOwogICAgIGRvbWFp
bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuZXdTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY3NzkwKQor
KysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTcwNiwxMSArMTcwNiw2IEBACiAJCUM1RkExRUQzMThFMTA2MjIwMEIzRjQw
MiAvKiBXS0FpclBsYXlSb3V0ZVBpY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzVGQTFFRDExOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJv
dXRlUGlja2VyLmggKi87IH07CiAJCUM2QTRDQTBCMjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRs
ZVBhZ2VNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM2QTRDQTA5MjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNkE0Q0EwQzIyNTI4OTk4
MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZBNENBMEEyMjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxl
UGFnZU1hYy5tbSAqLzsgfTsKLQkJQzk4QzQ4QTYxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5oICovOyB9OwotCQlDOThDNDhBQTFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCUM5QzE4MzNDMUI3NDAyNkQwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM5QzE4MzM4MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnQuaCAqLzsgfTsKLQkJQzlDRDQzOTgxQjRCMDAxRDAwMjM5RTMzIC8qIFdlYk1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDOUNENDM5NDFCNEIwMDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEuaCAqLzsgfTsKLQkJQzlDRDQzOUQxQjRCMDI0RjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM5Q0Q0MzlBMUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0EwNTM5Nzky
M0VFMzI0NDAwQTU1M0RDIC8qIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBMDUzOTc4MjNF
RTMyNDQwMEE1NTNEQyAvKiBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmggKi87
IH07CiAJCUNEMDAzQTUzMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDAw
M0E1MTE5RDQ5QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oICovOyB9
OwogCQlDRDBDNjgzMTIwMUZEMTAxMDBBNTk0MDkgLyogV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMEM2
ODJGMjAxRkQxMDEwMEE1OTQwOSAvKiBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5oICovOyB9
OwpAQCAtNTA1MiwxNiArNTA0Nyw2IEBACiAJCUM1RkExRUQyMThFMTA2MjIwMEIzRjQwMiAvKiBX
S0FpclBsYXlSb3V0ZVBpY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFdLQWlyUGxheVJvdXRlUGlja2VyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLQWlyUGxh
eVJvdXRlUGlja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkE0Q0EwOTIy
NTI4OTk4MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVu
ZGxlUGFnZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkE0Q0EwQTIyNTI4
OTk4MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V0tCdW5kbGVQYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOThDNDhB
MzFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5OEM0OEE0MUI2RkQ0QzMw
MDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5OEM0OEE3MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUMxODMzNzFC
NzNGRDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5QzE4MzM4
MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5Q0Q0MzkzMUI0QjAw
MEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5Q0Q0Mzk0MUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJN
ZWRpYVNlc3Npb25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OUNENDM5OTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS01lZGlhU2Vzc2lvbk1ldGFkYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlDRDQzOUExQjRCMDI0MjAwMjM5
RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQTA1Mzk3ODIzRUUzMjQ0MDBBNTUzREMgLyogQ29udGVudEFzU3RyaW5nSW5jbHVk
ZXNDaGlsZEZyYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0No
aWxkRnJhbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMDAzQTUwMTlENDlC
NUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOyBw
YXRoID0gTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwMDNBNTExOUQ0OUI1RDAwNUFCQ0UwIC8qIFdlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOyBwYXRoID0gTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTMyLDggKzYx
MTcsNiBAQAogCQkJCUMwMzM3REQyMTI3QTJBMEUwMDhGRjRGNCAvKiBXZWJLZXlib2FyZEV2ZW50
LmNwcCAqLywKIAkJCQlCQzlCQTUwMjE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxp
emUuY3BwICovLAogCQkJCUJDOUJBNTAzMTY5N0M0NTMwMEU0NDYxNiAvKiBXZWJLaXQySW5pdGlh
bGl6ZS5oICovLAotCQkJCUM5Q0Q0MzkzMUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Np
b25NZXRhZGF0YS5jcHAgKi8sCi0JCQkJQzlDRDQzOTQxQjRCMDAwRTAwMjM5RTMzIC8qIFdlYk1l
ZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8sCiAJCQkJOTA1NjIwRTgxMkJDMjQ4QjAwMDc5OUI2IC8q
IFdlYk1lbW9yeVNhbXBsZXIuY3BwICovLAogCQkJCTkwNTYyMEU5MTJCQzI0OEIwMDA3OTlCNiAv
KiBXZWJNZW1vcnlTYW1wbGVyLmggKi8sCiAJCQkJQzAzMzdEQUYxMjdBMjhEMDAwOEZGNEY0IC8q
IFdlYk1vdXNlRXZlbnQuY3BwICovLApAQCAtOTA1MSwxMCArOTAzNCw2IEBACiAJCQkJQkMxQkUx
RjExMkQ1NERCRDAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwICovLAogCQkJ
CUJDMUJFMUYwMTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8s
CiAJCQkJNTFDOEUxOUIxRjIxNjE3MjAwQkY3MzFCIC8qIFdlYkljb25EYXRhYmFzZS5oICovLAot
CQkJCUM5OEM0OEEzMUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIuY3BwICovLAotCQkJCUM5OEM0OEE0MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuaCAqLywKLQkJCQlDOUMxODMzNzFCNzNGRDZBMDA3MDM2QTcgLyogV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcCAqLywKLQkJCQlDOUMxODMzODFCNzNG
RDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmggKi8sCiAJ
CQkJMkQzRUY0NDAxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAgKi8sCiAJCQkJMkQzRUY0NDExOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJl
SGFuZGxlci5oICovLAogCQkJCTdDQ0NDOEY4MUE1RjUwRkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0
aW9uU3RhdGUuY3BwICovLApAQCAtOTI1NywxMCArOTIzNiw2IEBACiAJCQkJNTFBOUUxMDgxMzE1
Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJNTFB
OUUxMDkxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oICovLAog
CQkJCTJENzkwQTlFMUFENzE2NDkwMEFCOTBCMyAvKiBXS0xheW91dE1vZGUuaCAqLywKLQkJCQlD
OThDNDhBNzFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3Bw
ICovLAotCQkJCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5oICovLAotCQkJCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhLmNwcCAqLywKLQkJCQlDOUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tN
ZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAogCQkJCTVDQUJEQzg0MjJDNDBGQ0MwMDFFREU4RSAv
KiBXS01lc3NhZ2VMaXN0ZW5lci5jcHAgKi8sCiAJCQkJNUNBQkRDODUyMkM0MEZDQzAwMUVERThF
IC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggKi8sCiAJCQkJQzExRTE2OTMyMTJCODdDNTAwOTg1RkY2
IC8qIFdLTW9ja0Rpc3BsYXkuY3BwICovLApAQCAtMTEzMjAsOSArMTEyOTUsNiBAQAogCQkJCUJD
OUJBNTA1MTY5N0M0NTMwMEU0NDYxNiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE2MjgwQzcxOTE5OTUwQzAwNkFEOUY5IC8qIFdlYktpdFByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEMDAzQTUzMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOThDNDhBNjFCNkZENEMzMDAxNDUx
MDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlD
OUMxODMzQzFCNzQwMjZEMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUNENDM5ODFCNEIwMDFEMDAyMzlFMzMgLyogV2Vi
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNUJFQzI2MjQwMEY0
QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNF
RjQ0MzE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MDk4NTRFRDEyQkM0RTE4MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTYyMSw4ICsxMTU5Myw2IEBACiAJCQkJNTFBOUUxMEIx
MzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ3OTBBOUYxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNFOTEyMTQyMjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQzk4QzQ4QUExQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUNENDM5RDFCNEIwMjRGMDAyMzlF
MzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDBF
RTYxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDQUJEQzg2MjJDNDBGREUwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0
ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzExRTE2OTQyMTJCODdDNTAwOTg1RkY2IC8qIFdL
TW9ja0Rpc3BsYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJ
KHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc1LDI1ICsxMTc1
LDYgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbgogICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9wbGF5RXZlbnQoZXZlbnQs
IGZsYWdzKSk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotdm9pZCBXZWJDaHJv
bWVDbGllbnQ6Omhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdl
KGJvb2wgc3RhdGUpCi17Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2Uoc3RhdGUpKTsK
LX0KLQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdl
KGNvbnN0IE1lZGlhU2Vzc2lvbk1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSht
ZXRhZGF0YSkpOwotfQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZENvbnRlbnRNZWRp
YUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QgZWxlbWVudElEKQotewotICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hh
bmdlKGVsZW1lbnRJRCkpOwotfQotCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQog
CiBib29sIFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcs
MTIgKzMzNyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MsIHVpbnQ2NF90KSBmaW5hbDsK
ICAgICB2b2lkIGhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0
aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFF
bGVtZW50c0RpZENoYW5nZShib29sKSBmaW5hbDsKLSAgICB2b2lkIG1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJikgZmluYWw7
Ci0gICAgdm9pZCBmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCkg
ZmluYWw7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogICAgIGJvb2wgd3JhcENy
eXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBW
ZWN0b3I8dWludDhfdD4mKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTE5MCwxOCArNTE5MCw2IEBAIHZvaWQgV2ViUGFnZTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAjZW5k
aWYKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdm9pZCBXZWJQYWdlOjpoYW5kbGVN
ZWRpYUV2ZW50KHVpbnQzMl90IGV2ZW50VHlwZSkKLXsKLSAgICBtX3BhZ2UtPmhhbmRsZU1lZGlh
RXZlbnQoc3RhdGljX2Nhc3Q8TWVkaWFFdmVudFR5cGU+KGV2ZW50VHlwZSkpOwotfQotCi12b2lk
IFdlYlBhZ2U6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90
IGVsZW1lbnRJRCkKLXsKLSAgICBtX3BhZ2UtPnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVt
ZSwgZWxlbWVudElEKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2U6OnNldE1heVN0YXJ0TWVk
aWFXaGVuSW5XaW5kb3coYm9vbCBtYXlTdGFydE1lZGlhKQogewogICAgIGlmIChtYXlTdGFydE1l
ZGlhID09IG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
OTY3LDExICs5NjcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXlTdGFydE1lZGlhV2hlbklu
V2luZG93KGJvb2wpOwogICAgIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KHVpbnQzMl90IC8qIFdl
YkNvcmU6Ok1lZGlhRXZlbnRUeXBlICovKTsKLSAgICB2b2lkIHNldFZvbHVtZU9mTWVkaWFFbGVt
ZW50KGRvdWJsZSwgdWludDY0X3QpOwotI2VuZGlmCi0KICAgICB2b2lkIHVwZGF0ZU1haW5GcmFt
ZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIAogICAgIGJvb2wgbWFpbkZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2Nzc5MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTQxMSwxMSArNDExLDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbgogICAgIFNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCBt
YXlTdGFydE1lZGlhKQogICAgIFN0b3BNZWRpYUNhcHR1cmUoKQogCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0gICAgSGFuZGxlTWVkaWFFdmVudCh1aW50MzJfdCBldmVudFR5cGUpCi0gICAg
U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElE
KQotI2VuZGlmCi0KICAgICBTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoYm9vbCBj
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpCiAgICAgU2V0Q2FuUnVuTW9kYWwoYm9vbCBj
YW5SdW5Nb2RhbCkKIApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UJKHJldmlzaW9uIDI2Nzc5MCkK
KysrIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQs
NyArMTE0LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9BVURJTyBQUklWQVRFIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQ
VEVEX01FRElBIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX01FRElBX0NBUFRVUkUgUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU0VTU0lPTiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TT1VSQ0UgUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU1RBVElTVElDUyBQ
UklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJ
QV9TVFJFQU0gUFJJVkFURSBPRkYpCkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCShy
ZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNiBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lO
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NQVRITUwgIlRvZ2dsZSBNYXRoTUwg
c3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVE
SUFfQ0FQVFVSRSAiVG9nZ2xlIE1lZGlhIENhcHR1cmUgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAg
ICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCAiVG9n
Z2xlIGRlZmluaXRpb24gb2YgbWVkaWEgY29udHJvbHMgaW4gSmF2YXNjcmlwdCIgUFJJVkFURSBP
TikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU0VTU0lPTiAiVG9nZ2xl
IE1lZGlhIFNlc3Npb24gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX01FRElBX1NPVVJDRSAiVG9nZ2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiBQ
UklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RBVElT
VElDUyAiVG9nZ2xlIE1lZGlhIFN0YXRpc3RpY3Mgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NUUkVBTSAiVG9nZ2xlIE1lZGlhIFN0
cmVhbSBzdXBwb3J0IiBQUklWQVRFIE9GRikKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA5LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29kZSBiZWhpbmQgRU5B
QkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG06CisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIE1F
RElBX1NFU1NJT04gZW5hYmxlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQ
YWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0
aW9ucyk6CisgICAgICAgIFVwZGF0ZSBuYW1lcyB0byBuZXcgJ3VudXNlZCcgbmFtaW5nLgorCiAy
MDIwLTA5LTMwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1N0cmVhbWVyXSBJbnRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydApJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQkocmV2aXNpb24gMjY3NzkwKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTksNyArMTE5LDYgQEAgbXkgKAogICAgICRtYXRobWxTdXBwb3J0LAogICAgICRtZWRp
YUNhcHR1cmVTdXBwb3J0LAogICAgICRtZWRpYUNvbnRyb2xzU2NyaXB0U3VwcG9ydCwKLSAgICAk
bWVkaWFTZXNzaW9uU3VwcG9ydCwKICAgICAkbWVkaWFTb3VyY2VTdXBwb3J0LAogICAgICRtZWRp
YVN0YXRpc3RpY3NTdXBwb3J0LAogICAgICRtZWRpYVN0cmVhbVN1cHBvcnQsCkBAIC0zOTksOSAr
Mzk4LDYgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJtZWRpYS1jb250cm9s
cy1zY3JpcHQiLCBkZXNjID0+ICJUb2dnbGUgZGVmaW5pdGlvbiBvZiBtZWRpYSBjb250cm9scyBp
biBKYXZhc2NyaXB0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCIsIHZhbHVlID0+IFwkbWVkaWFDb250cm9sc1NjcmlwdFN1cHBvcnQgfSwKIAotICAgIHsg
b3B0aW9uID0+ICJtZWRpYS1zZXNzaW9uIiwgZGVzYyA9PiAiVG9nZ2xlIE1lZGlhIFNlc3Npb24g
c3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9NRURJQV9TRVNTSU9OIiwgdmFsdWUg
PT4gXCRtZWRpYVNlc3Npb25TdXBwb3J0IH0sCi0KICAgICB7IG9wdGlvbiA9PiAibWVkaWEtc291
cmNlIiwgZGVzYyA9PiAiVG9nZ2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiwKICAgICAgIGRlZmlu
ZSA9PiAiRU5BQkxFX01FRElBX1NPVVJDRSIsIHZhbHVlID0+IFwkbWVkaWFTb3VyY2VTdXBwb3J0
IH0sCiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNjc3OTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw3IEBAIFdLUGFnZVJlZiBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWcKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0
CiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCiAgICAgICAgIDAsIC8vIHJ1bkph
dmFTY3JpcHRQcm9tcHQKLSAgICAgICAgMCwgLy8gbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2UKKyAgICAgICAgMCwgLy8gdW51c2VkNQogICAgICAgICBjcmVhdGVPdGhlclBhZ2UsCiAgICAg
ICAgIHJ1bkphdmFTY3JpcHRBbGVydCwKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZp
cm0KQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3
V2l0aE9wCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAogICAgICAgICAwLCAvLyBy
dW5KYXZhU2NyaXB0Q29uZmlybQogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0Ci0g
ICAgICAgIDAsIC8vIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlCisgICAgICAgIDAsIC8v
IHVudXNlZDUKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAgICBydW5KYXZhU2NyaXB0
QWxlcnQsCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAyMC0wOS0zMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIGNvZGUgYmVoaW5kIEVOQUJMRShNRURJQV9TRVNTSU9OKSwgbm8g
cG9ydHMgZW5hYmxlIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTY4MzEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgor
CisgICAgICAgIFJlbW92ZSBhbHdheXMgc2tpcHBlZCBNZWRpYSBTZXNzaW9uIHRlc3RzLgorCisg
ICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIG1lZGlhL3Nlc3Npb246IFJlbW92ZWQuCisKIDIwMjAtMDkt
MzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVj
b3JkZXIgc2hvdWxkIHN1cHBvcnQgaXNUeXBlU3VwcG9ydGVkCkluZGV4OiBMYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHdv
cmtpbmcgY29weSkKQEAgLTE5MzEsOSArMTkzMSw2IEBAIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLXdl
YnAuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTQ2MTgyIGVkaXRpbmcvc2VsZWN0aW9u
L2xlYWstZG9jdW1lbnQtd2l0aC1zZWxlY3Rpb24taW5zaWRlLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCi0jIE1lZGlhIFNlc3Npb25zIGlzIG5vdCB5ZXQgZW5hYmxlZCBieSBkZWZhdWx0OiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLW1lZGlhL3Nlc3Npb24gWyBTa2lwIF0KLQogIyBFeHBlcmltZW50
YWwgSDI2NSBzdXBwb3J0Lgogd2VicnRjL2gyNjUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKSW5k
ZXg6IExheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjY3
NzkwKQorKysgTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwkod29ya2lu
ZyBjb3B5KQpAQCAtMjU4LDggKzI1OCw2IEBAIG1lZGlhL3ByZXNlbnRhdGlvbm1vZGVjaGFuZ2Vk
LWZpcmVkLW9uY2UKIG1lZGlhL3Byb2dyZXNzLWV2ZW50cy1nZW5lcmF0ZWQtY29ycmVjdGx5Lmh0
bWwgWyBTa2lwIF0KIG1lZGlhL3JlbW90ZXBsYXliYWNrLXByb21wdC5odG1sIFsgU2tpcCBdCiAK
LW1lZGlhL3Nlc3Npb24gWyBTa2lwIF0KLQogbWVkaWEvdHJhY2svYXVkaW8vYXVkaW8tdHJhY2st
bWt2LXZvcmJpcy1hZGR0cmFjay5odG1sIFsgU2tpcCBdCiBtZWRpYS90cmFjay9hdWRpby9hdWRp
by10cmFjay1ta3Ytdm9yYmlzLWVuYWJsZWQuaHRtbCBbIFNraXAgXQogbWVkaWEvdHJhY2svYXVk
aW8vYXVkaW8tdHJhY2stbWt2LXZvcmJpcy1sYW5ndWFnZS5odG1sIFsgU2tpcCBdCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVy
cnVwdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxMiArMCwwIEBACi0nQ29udGVudCcgc3RhcnQgb2YgaW50ZXJydXB0aW9uIGV2
ZW50cyBzaG91bGQgaW5kZWZpbml0ZWx5IHBhdXNlICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy4K
LQotCi1XYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuCi1NZWRpYSBi
ZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1TZW5kaW5nICdDb250ZW50JyBzdGFydC1vZi1p
bnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9u
U3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigiY29udGVudCIpKQotVGhlIG1lZGlhIGVs
ZW1lbnQgd2FzIHBhdXNlZC4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVu
dFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMuaHRt
bAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50
LWludGVycnVwdGlvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDU0ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVz
dC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNl
c3Npb247Ci0gICAgCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAg
ICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBN
ZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJXYWl0
aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuIikKLSAgICAgICAgICAgIHZp
ZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsK
LSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgdmlkZW8u
b25wbGF5aW5nID0gYmVnYW5QbGF5aW5nOwotICAgICAgICAgICAgdmlkZW8ub25jYW5wbGF5dGhy
b3VnaCA9IGNhbnBsYXl0aHJvdWdoOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2Fu
cGxheXRocm91Z2goKSAKLSAgICAgICAgewotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAg
ICAgICAgICB2aWRlby5vbnBhdXNlID0gcGF1c2VkOwotCi0gICAgICAgICAgICBpZiAod2luZG93
LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1l
ZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ0NvbnRlbnQnIHN0
YXJ0LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgcnVu
KCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRp
b24oImNvbnRlbnQiKScpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gcGF1c2VkKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUo
IlRoZSBtZWRpYSBlbGVtZW50IHdhcyBwYXVzZWQuIik7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
aW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpZGxlIik7Ci0K
LSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidDb250ZW50JyBzdGFydCBvZiBp
bnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBpbmRlZmluaXRlbHkgcGF1c2UgJ0NvbnRlbnQnIG1l
ZGlhIHNlc3Npb25zLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiBjb250cm9scz4gPC92aWRl
bz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29u
dGVudC1zZXNzaW9uLWZvY3VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1zZXNzaW9u
LWZvY3VzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDIyICswLDAgQEAKLVBsYXlp
bmcgYSBtZWRpYSBlbGVtZW50IGJlbG9uZ2luZyB0byBhIENvbnRlbnQgbWVkaWEgc2Vzc2lvbiBz
aG91bGQgcGF1c2Ugb3RoZXIgcGxheWluZyBDb250ZW50IG1lZGlhIGVsZW1lbnRzLgotCi0KLUVW
RU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvMS5wYXVzZWQgPT0gJ3RydWUnKSBP
SwotQmVnaW4gcGxheWluZyBmaXJzdCB2aWRlby4KLUVWRU5UKHBsYXlpbmcpCi1GaXJzdCB2aWRl
byBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvMS5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sK
LQotU2V0dGluZyB1cCBzZWNvbmQgdmlkZW8uCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVD
VEVEICh2aWRlbzEucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAodmlkZW8yLnBhdXNl
ZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5aW5nIHNlY29uZCB2aWRlby4KLUVWRU5UKHBsYXlp
bmcpCi1TZWNvbmQgdmlkZW8gYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlbzIucGF1c2Vk
ID09ICdmYWxzZScpIE9LCi1FVkVOVChwYXVzZSkKLUVYUEVDVEVEICh2aWRlbzEucGF1c2VkID09
ICd0cnVlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vY29udGVudC1zZXNzaW9uLWZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMuaHRtbAkocmV2aXNpb24gMjY3Nzkw
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMuaHRt
bAkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb24sIHZpZGVvMSwgdmlk
ZW8yOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAg
ICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAg
dmlkZW8xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvMSIpOwotICAgICAgICAgICAg
d2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZ1ZpZGVvMSwgZmFsc2Us
IHRydWUsIHZpZGVvMSk7Ci0gICAgICAgICAgICB2aWRlbzEuc3JjID0gZmluZE1lZGlhRmlsZSgi
dmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8xLnNlc3Np
b24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5Q
bGF5aW5nVmlkZW8xLCBmYWxzZSwgdHJ1ZSwgdmlkZW8xKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIGJlZ2luUGxheWluZ1ZpZGVvMShldmVudCkKLSAgICAgICAgewotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCd2aWRlbzEucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiQmVnaW4gcGxheWluZyBmaXJzdCB2aWRlby4iKTsKLSAgICAgICAgICAgIHZp
ZGVvMS5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmdW
aWRlbzEoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRmlyc3Qg
dmlkZW8gYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8x
LnBhdXNlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2V0dGluZyB1cCBzZWNvbmQgdmlkZW8u
Iik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ2aWRlbzIiKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91
Z2gnLCBiZWdpblBsYXlpbmdWaWRlbzIsIGZhbHNlLCB0cnVlLCB2aWRlbzIpOwotICAgICAgICAg
ICAgdmlkZW8yLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRp
bmciKTsKLSAgICAgICAgICAgIHZpZGVvMi5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAg
IHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZ1ZpZGVvMiwgZmFsc2UsIHRydWUs
IHZpZGVvMik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxh
eWluZ1ZpZGVvMihldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlbzEucGF1c2VkJywgZmFsc2UpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIu
cGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BhdXNlJywgcGF1c2Vk
VmlkZW8xLCBmYWxzZSwgdHJ1ZSwgdmlkZW8xKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJCZWdpbiBwbGF5aW5nIHNlY29uZCB2aWRlby4iKTsKLSAgICAgICAgICAgIHZpZGVvMi5wbGF5
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIHBhdXNlZFZpZGVvMShl
dmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzEucGF1c2Vk
JywgdHJ1ZSk7Ci0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBiZWdhblBsYXlpbmdWaWRlbzIoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiU2Vjb25kIHZpZGVvIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMi5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICA8
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5QbGF5
aW5nIGEgbWVkaWEgZWxlbWVudCBiZWxvbmdpbmcgdG8gYSBDb250ZW50IG1lZGlhIHNlc3Npb24g
c2hvdWxkIHBhdXNlIG90aGVyIHBsYXlpbmcgQ29udGVudCBtZWRpYSBlbGVtZW50cy48L3A+Ci0g
ICAgPHZpZGVvIGlkPSJ2aWRlbzEiIC8+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbzIiIC8+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4
aXN0ZW5jZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi9jb250cm9scy1leGlzdGVuY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0ZW5jZS1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMiArMCwwIEBACi1Pbmx5IENvbnRlbnQgTWVkaWEgU2Vz
c2lvbnMgc2hvdWxkIGhhdmUgbWVkaWEgcmVtb3RlIGNvbnRyb2xzIGFmdGVyIGNyZWF0aW9uLgot
Ci1SVU4oc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ2NvbnRlbnQnKSkKLUVYUEVDVEVEIChz
ZXNzaW9uLmNvbnRyb2xzICE9ICdudWxsJykgT0sKLVJVTihzZXNzaW9uID0gbmV3IE1lZGlhU2Vz
c2lvbigndHJhbnNpZW50JykpCi1FWFBFQ1RFRCAoc2Vzc2lvbi5jb250cm9scyA9PSAnbnVsbCcp
IE9LCi1SVU4oc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudC1zb2xvJykpCi1F
WFBFQ1RFRCAoc2Vzc2lvbi5jb250cm9scyA9PSAnbnVsbCcpIE9LCi1SVU4oc2Vzc2lvbiA9IG5l
dyBNZWRpYVNlc3Npb24oJ2FtYmllbnQnKSkKLUVYUEVDVEVEIChzZXNzaW9uLmNvbnRyb2xzID09
ICdudWxsJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vY29udHJvbHMtZXhpc3RlbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UuaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LSAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0gICAgCi0gICAg
ICAgIGZ1bmN0aW9uIGRvVGVzdCAoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9
IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLSAgICAgICAgICAgIHJ1bigic2Vzc2lvbiA9
IG5ldyBNZWRpYVNlc3Npb24oJ2NvbnRlbnQnKSIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJzZXNzaW9uLmNvbnRyb2xzIiwgbnVsbCwgJyE9Jyk7Ci0KLSAgICAgICAgICAgIHNlc3Npb24g
PSBuZXcgTWVkaWFTZXNzaW9uKCJ0cmFuc2llbnQiKTsKLSAgICAgICAgICAgIHJ1bigic2Vzc2lv
biA9IG5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudCcpIik7Ci0gICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInNlc3Npb24uY29udHJvbHMiLCBudWxsKTsKLQotICAgICAgICAgICAgc2Vzc2lvbiA9
IG5ldyBNZWRpYVNlc3Npb24oInRyYW5zaWVudC1zb2xvIik7Ci0gICAgICAgICAgICBydW4oInNl
c3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQtc29sbycpIik7Ci0gICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInNlc3Npb24uY29udHJvbHMiLCBudWxsKTsKLQotICAgICAgICAgICAg
c2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImFtYmllbnQiKTsKLSAgICAgICAgICAgIHJ1bigi
c2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ2FtYmllbnQnKSIpOwotICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJzZXNzaW9uLmNvbnRyb2xzIiwgbnVsbCk7Ci0KLSAgICAgICAgICAgIGVuZFRl
c3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJk
b1Rlc3QoKSI+Ci0gICAgPHA+T25seSBDb250ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBoYXZl
IG1lZGlhIHJlbW90ZSBjb250cm9scyBhZnRlciBjcmVhdGlvbi48L3A+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9kZWZhdWx0
LXNlc3Npb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpA
QCAtMSw2ICswLDAgQEAKLU5ldyBtZWRpYSBlbGVtZW50cyBhcmUgYXNzaWduZWQgdG8gdGhlIERl
ZmF1bHQgbWVkaWEgc2Vzc2lvbiwgd2hpY2ggaXMgbm90IGV4cG9zZWQgdGhyb3VnaCB0aGUgc2Vz
c2lvbiBhdHRyaWJ1dGUuCi0KLVJVTihhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdhdWRpbycpKQotRVhQRUNURUQgKGF1ZGlvRWxlbWVudC5zZXNzaW9uID09ICdudWxsJykg
T0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVmYXVs
dC1zZXNzaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9k
ZWZhdWx0LXNlc3Npb24uaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9kZWZhdWx0LXNlc3Npb24uaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0u
Li92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KLSAgICAgICAgZnVuY3Rpb24gZG9UZXN0ICgpIAotICAgICAgICB7Ci0gICAgICAgICAg
ICB2YXIgYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYXVkaW8iKTsKLSAg
ICAgICAgICAgIHJ1bigiYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVk
aW8nKSIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJhdWRpb0VsZW1lbnQuc2Vzc2lvbiIs
IG51bGwpOwotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgotICAgIDxwPk5ldyBtZWRpYSBl
bGVtZW50cyBhcmUgYXNzaWduZWQgdG8gdGhlIERlZmF1bHQgbWVkaWEgc2Vzc2lvbiwgd2hpY2gg
aXMgbm90IGV4cG9zZWQgdGhyb3VnaCB0aGUgc2Vzc2lvbiBhdHRyaWJ1dGUuPC9wPgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1l
ZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNv
bnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vz
c2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMjEgKzAsMCBAQAotJ0NvbnRl
bnQnIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0byBQbGF5L1BhdXNl
IG1lZGlhIGNvbnRyb2wgZXZlbnRzLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNU
RUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUn
KSBPSwotSWRsZSBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVz
ZSBldmVudHMuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLVNlbmRpbmcg
UGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2
ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sK
LQotUGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgot
RVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1TZW5k
aW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRy
b2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScp
IE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXkt
cGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNv
bnRlbnQtc2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0
bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotCi0gICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5l
dyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxh
eWluZyk7Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIu
Li9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lv
bjsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFs
c2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxh
eWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3Vy
cmVudFN0YXRlKHNlc3Npb24pJywgImlkbGUiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJJZGxlIE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQ
bGF5L1BhdXNlIGV2ZW50cy4iKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5w
YXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUGxheS9QYXVz
ZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVk
aWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlBsYXlpbmcgbWVk
aWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LiIpOwotICAgICAg
ICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVz
ZSIpJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVl
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0g
ICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+
J0NvbnRlbnQnIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0byBQbGF5
L1BhdXNlIG1lZGlhIGNvbnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAv
PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5
LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZhdWx0LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZl
bnRzLWluLWRlZmF1bHQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWRl
ZmF1bHQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTggKzAsMCBA
QAotJ0RlZmF1bHQnIG1lZGlhIHNlc3Npb25zIHNob3VsZCByZXNwb25kIHRvIHBsYXkvcGF1c2Ug
bWVkaWEgZXZlbnRzLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVv
LnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1S
VU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNU
RUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi0KLVBsYXlpbmcgbWVkaWEuCi1FVkVOVChw
bGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0g
J2ZhbHNlJykgT0sKLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5h
bHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8u
cGF1c2VkID09ICd0cnVlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNzaW9ucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1t
ZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNzaW9ucy5odG1sCShyZXZpc2lvbiAyNjc3OTApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWRl
ZmF1bHQtc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ5ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVz
dC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7
Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5n
KTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2Nv
bnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJl
Z2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUGxheS9Q
YXVzZSBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5k
TWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlBsYXlpbmcg
bWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykgewotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQbGF5L1Bh
dXNlIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRN
ZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J0RlZmF1bHQnIG1lZGlhIHNlc3Npb25zIHNob3Vs
ZCByZXNwb25kIHRvIHBsYXkvcGF1c2UgbWVkaWEgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9
InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBh
dXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1t
ZWRpYS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlz
dGVudCkKQEAgLTEsNDEgKzAsMCBAQAotJ1RyYW5zaWVudCcsICdUcmFuc2llbnQgU29sbycsIGFu
ZCAnQW1iaWVudCcgc2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2UgbWVk
aWEgY29udHJvbCBldmVudHMuCi0KLQotLS0tCi1UZXN0aW5nICJ0cmFuc2llbnQiIHNlc3Npb24g
a2luZAotLS0tCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBi
ZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQ
RUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2Fj
dGl2ZScpIE9LCi1Ob24tQ29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQg
dG8gUGxheS9QYXVzZSBldmVudHMuCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1S
VU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNU
RUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotLS0tCi1UZXN0aW5nICJ0cmFuc2llbnQt
c29sbyIgc2Vzc2lvbiBraW5kCi0tLS0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVZFTlQocGxh
eWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdm
YWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShz
ZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLU5vbi1Db250ZW50IE1lZGlhIFNlc3Npb25zIHNob3Vs
ZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4KLVNlbmRpbmcgUGxheS9QYXVzZSBt
ZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBh
dXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi0tLS0KLVRlc3Rp
bmcgImFtYmllbnQiIHNlc3Npb24ga2luZAotLS0tCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVW
RU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNl
ZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50
U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1Ob24tQ29udGVudCBNZWRpYSBTZXNzaW9u
cyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMuCi1TZW5kaW5nIFBsYXkv
UGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgi
cGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRU5E
IE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1l
ZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tbm9uLWNv
bnRlbnQtc2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9u
cy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsKLQotICAg
ICAgICBmdW5jdGlvbiBydW5BbGxUZXN0cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbmRN
ZWRpYUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gn
LCBiZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgcnVuVGVzdCgidHJhbnNpZW50Iik7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KHNlc3Npb25LaW5kKSAKLSAgICAgICAg
ewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCctLS0nKTsKLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgnVGVzdGluZyAiJyArIHNlc3Npb25LaW5kICsgJyIgc2Vzc2lvbiBraW5kJyk7Ci0gICAg
ICAgICAgICBjb25zb2xlV3JpdGUoJy0tLScpOwotCi0gICAgICAgICAgICBzZXNzaW9uID0gbmV3
IE1lZGlhU2Vzc2lvbihzZXNzaW9uS2luZCk7Ci0KLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAg
IHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5
aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlp
bmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVn
YW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywg
ZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShz
ZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTm9u
LUNvbnRlbnQgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2Ug
ZXZlbnRzLiIpOwotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQbGF5L1Bh
dXNlIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRN
ZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmICh2aWRlby5zZXNzaW9uLmtpbmQgPT0gInRyYW5zaWVudCIpCi0g
ICAgICAgICAgICAgICAgcnVuVGVzdCgidHJhbnNpZW50LXNvbG8iKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKHZpZGVvLnNlc3Npb24ua2luZCA9PSAidHJhbnNpZW50LXNvbG8iKQotICAgICAgICAg
ICAgICAgIHJ1blRlc3QoImFtYmllbnQiKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHZpZGVvLnNl
c3Npb24ua2luZCA9PSAiYW1iaWVudCIpCi0gICAgICAgICAgICAgICAgZW5kVGVzdCgpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJVbmV4cGVjdGVkIHNlc3Np
b24ga2luZCIpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxv
YWQ9InJ1bkFsbFRlc3RzKCkiPgotICAgIDxwPidUcmFuc2llbnQnLCAnVHJhbnNpZW50IFNvbG8n
LCBhbmQgJ0FtYmllbnQnIHNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNl
IG1lZGlhIGNvbnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9i
b2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmct
c2Vzc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NzkwKQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lvbnMtZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKQEAgLTEsMTUgKzAsMCBAQAotU2Vzc2lvbnMgdGhhdCBhcmUgZXhw
bGljaXRseSByZWxlYXNlZCBzaG91bGQgaGF2ZSB0aGVpciBtZWRpYSBlbGVtZW50cyBpbmRlZmlu
aXRlbHkgcGF1c2VkIGFuZCBnbyBpbnRvIGFuIElkbGUgc3RhdGUuCi0KLQotRVZFTlQoY2FucGxh
eXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBs
YXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVD
VEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVk
aWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotUlVOKHNlc3Np
b24uZGVhY3RpdmF0ZSgpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1F
WFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAn
aWRsZScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3JlbGVhc2luZy1zZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLmh0bWwJKG5vbmV4aXN0
ZW50KQpAQCAtMSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Np
b24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAg
ICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAg
ICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2Nv
dW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAg
ICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZp
ZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkK
LSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVl
KTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIpOwot
ICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
YmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ik1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVv
LnBhdXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0g
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVu
dFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotCi0gICAgICAgICAgICBydW4oJ3Nlc3Npb24u
ZGVhY3RpdmF0ZSgpJyk7Ci0KLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2Vk
JywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShz
ZXNzaW9uKScsICJpZGxlIik7Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQot
ICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxw
PlNlc3Npb25zIHRoYXQgYXJlIGV4cGxpY2l0bHkgcmVsZWFzZWQgc2hvdWxkIGhhdmUgdGhlaXIg
bWVkaWEgZWxlbWVudHMgaW5kZWZpbml0ZWx5IHBhdXNlZCBhbmQgZ28gaW50byBhbiBJZGxlIHN0
YXRlLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRp
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEs
MzAgKzAsMCBAQAotTmV3IG1lZGlhIHNlc3Npb25zIHNob3VsZCBiZSBpbiBhbiBJZGxlIHN0YXRl
IGFmdGVyIGNyZWF0aW9uLgotCi0KLS0tLQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbignY29u
dGVudCcpIgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLS0tLQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lv
bigndHJhbnNpZW50JykiCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi0tLS0KLQotLS0tCi1UZXN0aW5nICJuZXcgTWVk
aWFTZXNzaW9uKCd0cmFuc2llbnQtc29sbycpIgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNl
c3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLS0tLQotVGVz
dGluZyAibmV3IE1lZGlhU2Vzc2lvbignYW1iaWVudCcpIgotRVhQRUNURUQgKGludGVybmFscy5t
ZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLS0t
LQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbigpIgotRVhQRUNURUQgKGludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLUVORCBP
RiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlv
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1j
cmVhdGlvbi5odG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL3Nlc3Npb24tY3JlYXRpb24uaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0uLi92aWRl
by10ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
LSAgICAgICAgZnVuY3Rpb24gZG9UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RT
ZXNzaW9uS2luZCgiY29udGVudCIpOwotICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCJ0cmFu
c2llbnQiKTsKLSAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgidHJhbnNpZW50LXNvbG8iKTsK
LSAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgiYW1iaWVudCIpOwotICAgICAgICAgICAgdGVz
dFNlc3Npb25LaW5kKCk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAg
ICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0ZXN0U2Vzc2lv
bktpbmQoc2Vzc2lvbktpbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
PGJyPi0tLSIpOwotCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbktpbmQgIT0gdW5kZWZpbmVkKSB7
Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0aW5nIFwibmV3IE1lZGlhU2Vzc2lv
bignIiArIHNlc3Npb25LaW5kICsgIicpXCIiKTsKLSAgICAgICAgICAgICAgICBzZXNzaW9uID0g
bmV3IE1lZGlhU2Vzc2lvbihzZXNzaW9uS2luZCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdGluZyBcIm5ldyBNZWRpYVNlc3Npb24oKVwi
Iik7Ci0gICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNl
c3Npb24pJywgImlkbGUiKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLS0tIik7Ci0gICAg
ICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgot
ICAgIDxwPk5ldyBtZWRpYSBzZXNzaW9ucyBzaG91bGQgYmUgaW4gYW4gSWRsZSBzdGF0ZSBhZnRl
ciBjcmVhdGlvbi48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3N3aXRjaGluZy1zZXNzaW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3N3aXRjaGlu
Zy1zZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNCArMCwwIEBACi1X
aGVuIHN3aXRjaGluZyBtZWRpYSBzZXNzaW9ucywgbWVkaWEgZWxlbWVudHMgYmVsb25naW5nIHRv
IHRoZSBvbGQgc2Vzc2lvbiBzaG91bGQgYmUgcGF1c2VkLgotCi0KLVJVTihzZXNzaW9uID0gbmV3
IE1lZGlhU2Vzc2lvbigiY29udGVudCIpKQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RF
RCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBsYXlpbmcgbWVkaWEuCi1FVkVO
VChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ2ZhbHNlJykgT0sKLVJVTih2aWRlby5zZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigidHJh
bnNpZW50IikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUVORCBPRiBU
RVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNlc3Npb25z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmct
c2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAg
ICAgdmFyIHNlc3Npb247Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7
Ci0gICAgICAgICAgICBydW4oJ3Nlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iikn
KTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICB2aWRl
by5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0g
ICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIpOwotICAgICAgICAgICAg
dmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5n
KGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2Fu
IHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZh
bHNlKTsKLQotICAgICAgICAgICAgcnVuKCd2aWRlby5zZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lv
bigidHJhbnNpZW50IiknKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVz
ZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+V2hlbiBz
d2l0Y2hpbmcgbWVkaWEgc2Vzc2lvbnMsIG1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0byB0aGUg
b2xkIHNlc3Npb24gc2hvdWxkIGJlIHBhdXNlZC48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIg
Lz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJh
Y2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJh
Y2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0x
LDE2ICswLDAgQEAKLVByZXZpb3VzL05leHQgVHJhY2sgZXZlbnRzIHNob3VsZCBub3QgYmUgZmly
ZWQgaWYgcHJldmlvdXMvbmV4dFRyYWNrRW5hYmxlZCBhcmUgJ2ZhbHNlJy4KLQotCi1FVkVOVChj
YW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotQmVn
aW4gcGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgot
RVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1TZW5k
aW5nIE5leHQgVHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRy
b2xFdmVudCgibmV4dC10cmFjayIpKQotU2VuZGluZyBQcmV2aW91cyBUcmFjayBtZWRpYSBldmVu
dC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwcmV2aW91cy10cmFjayIp
KQotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1t
ZWRpYS1ldmVudHMtZGlzYWJsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAyNjc3
OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNh
YmxlZC5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbiwgY29u
dHJvbHM7Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAg
ICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotICAgICAgICAgICAg
Y29udHJvbHMgPSBzZXNzaW9uLmNvbnRyb2xzOwotICAgICAgICAgICAgY29udHJvbHMubmV4dFRy
YWNrRW5hYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgY29udHJvbHMucHJldmlvdXNUcmFja0Vu
YWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnbmV4dHRyYWNrJywgc2tp
cFRvTmV4dFRyYWNrLCBmYWxzZSwgdHJ1ZSwgY29udHJvbHMpOwotICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdwcmV2aW91c3RyYWNrJywgc2tpcFRvUHJldmlvdXNUcmFjaywgZmFsc2UsIHRydWUs
IGNvbnRyb2xzKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAg
ICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAg
ICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50
aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAg
IHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVv
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsK
LQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIpOwotICAg
ICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVn
YW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1l
ZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBh
dXNlZCcsIGZhbHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50
U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIlNlbmRpbmcgTmV4dCBUcmFjayBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBy
dW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoIm5leHQtdHJhY2siKScpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQcmV2
aW91cyBUcmFjayBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFs
cy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInByZXZpb3VzLXRyYWNrIiknKTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgiZW5kVGVzdCgpIiwgMjAw
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW5kVGVzdCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2tpcFRvTmV4dFRyYWNr
KGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsVGVzdCgibmV4dC10cmFjayBldmVu
dHMgc2hvdWxkIG5vdCBiZSBmaXJlZC4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IHNraXBUb1ByZXZpb3VzVHJhY2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZhaWxU
ZXN0KCJwcmV2aW91cy10cmFjayBldmVudHMgc2hvdWxkIG5vdCBiZSBmaXJlZC4iKTsKLSAgICAg
ICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgot
ICAgIDxwPlByZXZpb3VzL05leHQgVHJhY2sgZXZlbnRzIHNob3VsZCBub3QgYmUgZmlyZWQgaWYg
cHJldmlvdXMvbmV4dFRyYWNrRW5hYmxlZCBhcmUgJ2ZhbHNlJy48L3A+Ci0gICAgPHZpZGVvIGlk
PSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZl
bnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50
LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICswLDAgQEAKLSdD
b250ZW50JyBzZXNzaW9ucyB0aGF0IGFyZSBhY3RpdmUgc2hvdWxkIHJlc3BvbmQgdG8gUHJldmlv
dXMvTmV4dCBUcmFjayBtZWRpYSBjb250cm9sIGV2ZW50cy4KLQotCi1FVkVOVChjYW5wbGF5dGhy
b3VnaCkKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pID09ICdpZGxlJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwot
QmVnaW4gcGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5n
LgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVy
bmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1T
ZW5kaW5nIE5leHQgVHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNv
bnRyb2xFdmVudCgibmV4dC10cmFjayIpKQotRVZFTlQobmV4dHRyYWNrKQotU2VuZGluZyBQcmV2
aW91cyBUcmFjayBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2
ZW50KCJwcmV2aW91cy10cmFjayIpKQotRVZFTlQocHJldmlvdXN0cmFjaykKLUVORCBPRiBURVNU
Ci0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWlu
LWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwJKHJldmlz
aW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZl
bnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDY1ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAg
ICAgdmFyIHNlc3Npb24sIGNvbnRyb2xzOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAK
LSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRl
bnQiKTsKLSAgICAgICAgICAgIGNvbnRyb2xzID0gc2Vzc2lvbi5jb250cm9sczsKLSAgICAgICAg
ICAgIGNvbnRyb2xzLm5leHRUcmFja0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgY29udHJv
bHMucHJldmlvdXNUcmFja0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50
KCduZXh0dHJhY2snLCBza2lwVG9OZXh0VHJhY2ssIGZhbHNlLCB0cnVlLCBjb250cm9scyk7Ci0g
ICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3ByZXZpb3VzdHJhY2snLCBza2lwVG9QcmV2aW91c1Ry
YWNrLCBmYWxzZSwgdHJ1ZSwgY29udHJvbHMpOwotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVt
ZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5Q
bGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwg
Ii4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNz
aW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBm
YWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5Q
bGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25D
dXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaWRsZSIpOwotCi0gICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkJl
Z2luIHBsYXlpbmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50
ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQot
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBOZXh0IFRyYWNrIG1lZGlhIGV2
ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xF
dmVudCgibmV4dC10cmFjayIpJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiBza2lwVG9OZXh0VHJhY2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQcmV2aW91cyBUcmFjayBtZWRpYSBldmVudC4iKTsKLSAg
ICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicHJldmlvdXMt
dHJhY2siKScpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2tpcFRvUHJldmlvdXNU
cmFjayhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9
Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAg
PHA+J0NvbnRlbnQnIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0byBQ
cmV2aW91cy9OZXh0IFRyYWNrIG1lZGlhIGNvbnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8g
aWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEv
c2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24v
dHJhbnNpZW50LWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEs
MTggKzAsMCBAQAotJ1RyYW5zaWVudCcgaW50ZXJydXB0aW9uIGV2ZW50cyBzaG91bGQgZHVjayBh
dWRpbyBmb3IgJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLgotCi0KLVdhaXRpbmcgZm9yIENvbnRl
bnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotTWVkaWEg
YmVnYW4gcGxheWluZy4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0
YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYUVs
ZW1lbnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpID09ICcx
JykgT0sKLVNlbmRpbmcgJ1RyYW5zaWVudCcgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNh
dGlvbi4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25O
b3RpZmljYXRpb24oInRyYW5zaWVudCIpKQotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Np
b25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2ludGVycnVwdGVkJykgT0sKLUVYUEVDVEVEIChp
bnRlcm5hbHMubWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ2aWRlbyIpKSA9PSAnMC4yNScpIE9LCi1TZW5kaW5nICdUcmFuc2llbnQnIGVuZC1vZi1pbnRl
cnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uRW5k
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudCIpKQotRVhQRUNURUQgKGludGVy
bmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1F
WFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidmlkZW8iKSkgPT0gJzEnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LWludGVycnVwdGlv
bnMuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90
cmFuc2llbnQtaW50ZXJydXB0aW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92
aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAg
ICB2YXIgc2Vzc2lvbjsKLSAgICAKLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOwotCi0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lv
bigiY29udGVudCIpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIldhaXRpbmcgZm9yIENv
bnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4iKQotICAgICAgICAgICAgdmFyIHZpZGVvID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIik7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZl
bnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNy
YyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAg
ICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgdmlkZW8udm9sdW1l
ID0gMTsKLSAgICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9IGJlZ2FuUGxheWluZzsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKS5wbGF5
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4i
KTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lv
biknLCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMu
bWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIp
KScsIDEpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nICdUcmFuc2ll
bnQnIHN0YXJ0LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAg
ICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3Rp
ZmljYXRpb24oInRyYW5zaWVudCIpJyk7Ci0KLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
J2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaW50ZXJydXB0
ZWQiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYUVsZW1l
bnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpJywgMC4yNSk7
Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ1RyYW5zaWVudCcgZW5k
LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdp
bnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0
cmFuc2llbnQiKScpOwotCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMu
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSknLCAxKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J1RyYW5zaWVu
dCcgaW50ZXJydXB0aW9uIGV2ZW50cyBzaG91bGQgZHVjayBhdWRpbyBmb3IgJ0NvbnRlbnQnIG1l
ZGlhIHNlc3Npb25zLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtc29sby1pbnRl
cnJ1cHRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL3RyYW5zaWVudC1zb2xvLWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1zb2xvLWlu
dGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTggKzAsMCBAQAot
J1RyYW5zaWVudCBTb2xvJyBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBwYXVzZSBlbGVtZW50
cyBiZWxvbmdpbmcgdG8gJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLgotCi0KLVdhaXRpbmcgZm9y
IENvbnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQot
TWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3Vy
cmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQgKHZpZGVvLnBhdXNl
ZCA9PSAnZmFsc2UnKSBPSwotU2VuZGluZyAnVHJhbnNpZW50IFNvbG8nIHN0YXJ0LW9mLWludGVy
cnVwdGlvbiBub3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFy
dE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpKQotRVhQRUNURUQg
KGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2ludGVycnVw
dGVkJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotU2VuZGluZyAn
VHJhbnNpZW50IFNvbG8nIGVuZC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGlu
dGVybmFscy5zZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oInRy
YW5zaWVudC1zb2xvIikpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0g
J2ZhbHNlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy5odG1sCShy
ZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1z
b2xvLWludGVycnVwdGlvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDU4ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8t
dGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFy
IHNlc3Npb247Ci0gICAgCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewot
ICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJXYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2lu
IHBsYXlpbmcuIikKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAg
ICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAg
ICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50
aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAg
IHZpZGVvLm9ucGxheWluZyA9IGJlZ2FuUGxheWluZzsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlp
bmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9IG51bGw7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxh
eWluZy4iKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUo
c2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRl
by5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRp
bmcgJ1RyYW5zaWVudCBTb2xvJyBzdGFydC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLiIp
OwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFydE9m
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpJyk7Ci0KLSAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUo
c2Vzc2lvbiknLCAiaW50ZXJydXB0ZWQiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
J3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJT
ZW5kaW5nICdUcmFuc2llbnQgU29sbycgZW5kLW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24u
Iik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkVuZE9m
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpJyk7Ci0KLSAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUo
c2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRl
by5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidUcmFuc2llbnQgU29sbycgaW50ZXJydXB0aW9u
IGV2ZW50cyBzaG91bGQgcGF1c2UgZWxlbWVudHMgYmVsb25naW5nIHRvICdDb250ZW50JyBtZWRp
YSBzZXNzaW9ucy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410128</attachid>
            <date>2020-09-30 09:03:39 -0700</date>
            <delta_ts>2020-09-30 09:17:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216831-20200930090338.patch</filename>
            <type>text/plain</type>
            <size>294342</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzc5
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA5
LTMwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29k
ZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc0ZUVy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVy
ZXMuY21ha2U6CisgICAgICAgIFJlbW92ZSBvcHRpb24gdG8gYnVpbGQgd2l0aCBNRURJQV9TRVNT
SU9OLCBubyBvbmUgd2FzIGRvaW5nIGl0LgorCiAyMDIwLTA5LTMwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBJbnRlcm5hbCBh
dWRpbyByZW5kZXJpbmcgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY3NzkwKQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJs
ZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgUmVtb3ZlIG1lZGlhIHNlc3Np
b24gcmVsYXRlZCBmaWxlcy4KKworICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9QbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
YWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgICogTW9k
dWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb246IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzZXNzaW9uOiBSZW1vdmVkLgorICAgICAgICBEZWxldGUgTW9kdWxlcy9tZWRpYXNl
c3Npb24gYW5kIHBsYXRmb3JtL21lZGlhc2Vzc2lvbi4gTW92ZSBmaWxlcyB0aGF0CisgICAgICAg
IHdlcmUgYWN0dWFsbHkgdXNlZCBmb3IgdGhlIFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCBmZWF0
dXJlIHRvIAorICAgICAgICBNb2R1bGVzL2FpcnBsYXkgd2hlcmUgb3RoZXIgcGFydHMgb2YgdGhh
dCBmZWF0dXJlIGFyZSBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgIFJlbW92ZSBhbGwg
Y29kZSBpbnNpZGUgRU5BQkxFKE1FRElBX1NFU1NJT04pLgorCiAyMDIwLTA5LTMwICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBSZW5hbWUgTGlu
ZUJyZWFrZXIgdG8gSW5saW5lQ29udGVudEJyZWFrZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGll
cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xzIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIiCi0gICAgIiR7V0VCQ09SRV9ESVJ9L01v
ZHVsZXMvbWVkaWFzZXNzaW9uIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc291
cmNlIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0YyIKQEAgLTEzOSw3ICsxMzgs
NiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIiCi0gICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc2Vz
c2lvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0iCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0YyIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vbW9jayIKQEAgLTE5OCw3ICsxOTYsNiBAQCBzZXQoV2ViQ29yZV9J
RExfSU5DTFVERVMKICAgICBNb2R1bGVzL2luZGV4ZWRkYgogICAgIE1vZHVsZXMvbWVkaWFjYXBh
YmlsaXRpZXMKICAgICBNb2R1bGVzL21lZGlhcmVjb3JkZXIKLSAgICBNb2R1bGVzL21lZGlhc2Vz
c2lvbgogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0KICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMK
ICAgICBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0CkBAIC0zMjcsMTAgKzMyNCw2IEBAIHNldChXZWJD
b3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2
ZW50LmlkbAogCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudCtNZWRp
YVNlc3Npb24uaWRsCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9s
cy5pZGwKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCi0KICAgICBN
b2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2srTWVkaWFTb3VyY2UuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXNvdXJjZS9ET01VUkwrTWVkaWFTb3VyY2UuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTU2
LDkgKzE1Niw2IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWQKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVudC5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVk
aWFTZXNzaW9uLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFS
ZW1vdGVDb250cm9scy5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9U
cmFjaytNZWRpYVNvdXJjZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtOTc0
LDE4ICs5NzQsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWFwRWxl
bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxNYXJxdWVlRWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTE1hcnF1ZWVFbGVtZW50LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRp
YUVsZW1lbnQrTWVkaWFTZXNzaW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudCtSZW1vdGVQbGF5YmFjay5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVu
dCtSZW1vdGVQbGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50QXVkaW9PdXRw
dXQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxNZWRpYUVsZW1lbnRBdWRpb091dHB1dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1l
bnRNZWRpYVNlc3Npb24uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxheWJhY2suY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRSZW1vdGVQ
bGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNZW51RWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTE1lbnVFbGVtZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lbnVJdGVtRWxlbWVudC5jcHAKQEAgLTEyNDQsMTAg
KzEyMzgsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUmVjb3JkZXIu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJl
Y29yZGVyRXJyb3JFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNv
bnRyb2xzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTZXNzaW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBWUEFU
SCA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYWNvbnRyb2xzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFyZWNvcmRlciBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbiBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwK
QEAgLTI1Niw5ICsyNTUsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJh
Y2srTWVkaWFTb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2
Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw2IEBACiBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCisgICAg
TW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAor
CiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCiAg
ICAgTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLmgKQEAgLTg3LDEyICs4OSw2IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJvdmlkZXIuaAogCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uRXZlbnRzLmgKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0
YS5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudC5oCi0KICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NhbXBsZU1hcC5oCiAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lv
biAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDkgKzEzMCw2IEBAIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuY3BwCiBN
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKIE1vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCi1Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50TWVkaWFTZXNzaW9uLmNwcAotTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5jcHAKLU1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3BwCiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5
LmNwcApAQCAtMzEwOSw4ICszMTA2LDYgQEAgSlNNZWRpYVF1ZXJ5TGlzdC5jcHAKIEpTTWVkaWFR
dWVyeUxpc3RFdmVudC5jcHAKIEpTTWVkaWFSZWNvcmRlci5jcHAKIEpTTWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQuY3BwCi1KU01lZGlhUmVtb3RlQ29udHJvbHMuY3BwCi1KU01lZGlhU2Vzc2lvbi5j
cHAKIEpTTWVkaWFTb3VyY2UuY3BwCiBKU01lZGlhU3RyZWFtLmNwcAogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5jcHAKIEpT
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCiBKU0FwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAor
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiBNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q29u
dGFjdEZpZWxkLmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmNwcApAQCAtODgs
NyArODksNiBAQCBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlCiBNb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQotTW9k
dWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIE1vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJh
c2VNYW5hZ2VyQ29jb2EubW0KQEAgLTUyMSw3ICs1MjEsNiBAQCBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2CiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQotcGxhdGZvcm0vbWVkaWFzZXNz
aW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlP
Uy5tbSBAbm8tdW5pZnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAkobm9uZXhpc3RlbnQpCkBA
IC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0vLyBGSVhNRTogVGhlc2UgZG9uJ3Qgc2VlbSB0byBiZSBpbiBhbnkgY3VycmVudCBzcGVj
aWZpY2F0aW9ucy4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZW0uCi0vLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMjE2ODMxLgotWwotICAgIENvbmRpdGlvbmFsPVZJREVPJk1FRElB
X1NFU1NJT04sCi0gICAgSW1wbGVtZW50ZWRCeT1IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
Ci1dIHBhcnRpYWwgaW50ZXJmYWNlIEhUTUxNZWRpYUVsZW1lbnQgewotICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcga2luZDsKLQotICAgIGF0dHJpYnV0ZSBNZWRpYVNlc3Npb24/IHNlc3Npb247Ci19
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxl
bWVudE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgiCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6a2lu
ZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAg
ICByZXR1cm4gZWxlbWVudC0+a2luZCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb246OnNldEtpbmQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3RyaW5nJiBraW5kKQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxl
bWVudC0+c2V0S2luZChraW5kKTsKLX0KLQotTWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50
TWVkaWFTZXNzaW9uOjpzZXNzaW9uKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAg
QVNTRVJUKGVsZW1lbnQpOwotICAgIHJldHVybiBlbGVtZW50LT5zZXNzaW9uKCk7Ci19Ci0KLXZv
aWQgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6c2V0U2Vzc2lvbihIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKGVsZW1l
bnQpOwotICAgIGVsZW1lbnQtPnNldFNlc3Npb24oc2Vzc2lvbik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBFTkFCTEUo
VklERU8pICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oCShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi0jaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24gewotcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIGtpbmQoSFRNTE1lZGlhRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lkIHNldEtp
bmQoSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwotCi0gICAgc3RhdGljIE1lZGlh
U2Vzc2lvbiogc2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgc2V0
U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFTZXNzaW9uKik7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5B
QkxFKFZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFSZW1vdGVDb250cm9scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5jcHAJKHJldmlzaW9uIDI2Nzc5MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJv
bHMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJNZWRpYVJlbW90ZUNvbnRyb2xzLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVJlbW90ZUNvbnRyb2xzKTsKLQotTWVkaWFSZW1v
dGVDb250cm9sczo6TWVkaWFSZW1vdGVDb250cm9scyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoY29udGV4dCkKLSAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQotewotfQotCi12b2lkIE1l
ZGlhUmVtb3RlQ29udHJvbHM6OmNsZWFyU2Vzc2lvbigpCi17Ci0gICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKLX0KLQotTWVkaWFSZW1vdGVDb250cm9sczo6fk1lZGlhUmVtb3RlQ29udHJvbHMoKSA9
IGRlZmF1bHQ7Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250cm9sczo6c2V0UHJldmlvdXNUcmFja0Vu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpCi17Ci0gICAgaWYgKG1fcHJldmlvdXNUcmFja0VuYWJsZWQg
PT0gaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ByZXZpb3VzVHJhY2tFbmFi
bGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAgICAgbV9zZXNzaW9u
LT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250
cm9sczo6c2V0TmV4dFRyYWNrRW5hYmxlZChib29sIGlzRW5hYmxlZCkKLXsKLSAgICBpZiAobV9u
ZXh0VHJhY2tFbmFibGVkID09IGlzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9u
ZXh0VHJhY2tFbmFibGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAg
ICAgbV9zZXNzaW9uLT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuaAko
cmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFSZW1vdGVDb250cm9scy5oCShub25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVJlbW90ZUNvbnRyb2xzIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFSZW1vdGVDb250cm9scz4sIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhUmVtb3RlQ29u
dHJvbHMpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFSZW1vdGVDb250cm9scz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU2Vzc2lvbiogc2Vzc2lv
biA9IG51bGxwdHIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJl
bW90ZUNvbnRyb2xzKGNvbnRleHQsIHNlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBib29sIHByZXZp
b3VzVHJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1RyYWNrRW5hYmxlZDsg
fQotICAgIHZvaWQgc2V0UHJldmlvdXNUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICBib29sIG5l
eHRUcmFja0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX25leHRUcmFja0VuYWJsZWQ7IH0KLSAg
ICB2b2lkIHNldE5leHRUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVk
PE1lZGlhUmVtb3RlQ29udHJvbHM+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVJl
bW90ZUNvbnRyb2xzPjo6ZGVyZWY7Ci0KLSAgICB2b2lkIGNsZWFyU2Vzc2lvbigpOwotCi0gICAg
dmlydHVhbCB+TWVkaWFSZW1vdGVDb250cm9scygpOwotCi0gICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVJl
bW90ZUNvbnRyb2xzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KLQotcHJpdmF0ZToKLSAgICBNZWRpYVJl
bW90ZUNvbnRyb2xzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBNZWRpYVNlc3Npb24qKTsKLQot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQot
ICAgIGJvb2wgbV9wcmV2aW91c1RyYWNrRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX25l
eHRUcmFja0VuYWJsZWQgeyBmYWxzZSB9OwotCi0gICAgTWVkaWFTZXNzaW9uKiBtX3Nlc3Npb24g
eyBudWxscHRyIH07Ci0KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90ZUNv
bnRyb2xzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5pZGwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAotXSBp
bnRlcmZhY2UgTWVkaWFSZW1vdGVDb250cm9scyA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoKTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIHByZXZpb3VzVHJhY2tFbmFibGVkOwotICAgIGF0dHJpYnV0ZSBib29sZWFuIG5l
eHRUcmFja0VuYWJsZWQ7Ci0KLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucHJldmlvdXN0
cmFjazsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmV4dHRyYWNrOwotfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI4MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQu
aCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgot
I2luY2x1ZGUgIlBhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1NZWRpYVNlc3Npb246
Ok1lZGlhU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIEtpbmQga2luZCkKLSAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2tpbmQoa2luZCkKLXsKLSAgICAvLyA0LiBNZWRpYSBT
ZXNzaW9ucwotICAgIC8vIDMuIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Np
b24gdHlwZSBpcyAiY29udGVudCIsIHRoZW4gY3JlYXRlIGEgbmV3IG1lZGlhIHJlbW90ZSBjb250
cm9sbGVyIGZvciBtZWRpYQotICAgIC8vICAgIHNlc3Npb24uIChPdGhlcndpc2UgbWVkaWEgc2Vz
c2lvbiBoYXMgbm8gbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuKQotICAgIGlmIChtX2tpbmQgPT0g
S2luZDo6Q29udGVudCkKLSAgICAgICAgbV9jb250cm9scyA9IE1lZGlhUmVtb3RlQ29udHJvbHM6
OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5n
bGV0b24oKS5hZGRNZWRpYVNlc3Npb24oKnRoaXMpOwotfQotCi1NZWRpYVNlc3Npb246On5NZWRp
YVNlc3Npb24oKQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnJlbW92
ZU1lZGlhU2Vzc2lvbigqdGhpcyk7Ci0KLSAgICBpZiAobV9jb250cm9scykKLSAgICAgICAgbV9j
b250cm9scy0+Y2xlYXJTZXNzaW9uKCk7Ci19Ci0KLU1lZGlhUmVtb3RlQ29udHJvbHMqIE1lZGlh
U2Vzc2lvbjo6Y29udHJvbHMoKQotewotICAgIHJldHVybiBtX2NvbnRyb2xzLmdldCgpOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6YWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmIGVs
ZW1lbnQpCi17Ci0gICAgQVNTRVJUKCFtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5jb250YWlucygm
ZWxlbWVudCkpOwotICAgIG1fcGFydGljaXBhdGluZ0VsZW1lbnRzLmFkZCgmZWxlbWVudCk7Ci19
Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpyZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkKLXsKLSAgICBBU1NFUlQobV9wYXJ0aWNpcGF0aW5nRWxlbWVudHMuY29udGFp
bnMoJmVsZW1lbnQpKTsKLSAgICBtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5yZW1vdmUoJmVsZW1l
bnQpOwotCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIG1f
YWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgfSk7Ci0K
LSAgICBpZiAobV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cykKLSAgICAgICAg
bV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy0+cmVtb3ZlKCZlbGVtZW50KTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYgd29ya2VyKQotewotICAgIGlmIChQYWdlICpwYWdl
ID0gbV9kb2N1bWVudC5wYWdlKCkpIHsKLSAgICAgICAgYm9vbCBoYWRBY3RpdmVNZWRpYUVsZW1l
bnRzID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuaGFzQWN0aXZlTWVkaWFFbGVt
ZW50cygpOwotCi0gICAgICAgIHdvcmtlcigpOwotCi0gICAgICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKTsKLSAgICAgICAgaWYgKGhhZEFjdGl2ZU1lZGlhRWxlbWVudHMgIT0gaGFz
QWN0aXZlTWVkaWFFbGVtZW50cykKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
Lmhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGhhc0FjdGl2
ZU1lZGlhRWxlbWVudHMpOwotICAgIH0gZWxzZQotICAgICAgICB3b3JrZXIoKTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OmFkZEFjdGl2ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KQotewotICAgIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoWyZdKCkgewotICAgICAg
ICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5hZGQoJmVsZW1lbnQpOwotICAgIH0pOwot
fQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aXNNZWRpYUVsZW1lbnRBY3RpdmUoSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVu
dHMuY29udGFpbnMoJmVsZW1lbnQpOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aGFzQWN0aXZl
TWVkaWFFbGVtZW50cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FjdGl2ZVBhcnRpY2lwYXRp
bmdFbGVtZW50cy5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0
YShjb25zdCBPcHRpb25hbDxNZXRhZGF0YT4mIG9wdGlvbmFsTWV0YWRhdGEpCi17Ci0gICAgaWYg
KCFvcHRpb25hbE1ldGFkYXRhKQotICAgICAgICBtX21ldGFkYXRhID0geyB9OwotICAgIGVsc2Ug
ewotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IG9wdGlvbmFsTWV0YWRhdGEudmFsdWUoKTsKLSAg
ICAgICAgbV9tZXRhZGF0YSA9IHsgbWV0YWRhdGEudGl0bGUsIG1ldGFkYXRhLmFydGlzdCwgbWV0
YWRhdGEuYWxidW0sIG1fZG9jdW1lbnQuY29tcGxldGVVUkwobWV0YWRhdGEuYXJ0d29yaykgfTsK
LSAgICB9Ci0KLSAgICBpZiAoYXV0byogcGFnZSA9IG1fZG9jdW1lbnQucGFnZSgpKQotICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5tZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSht
X21ldGFkYXRhKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmRlYWN0aXZhdGUoKQotewotICAg
IC8vIDUuMS4yLiBPYmplY3QgbWVtYmVycwotICAgIC8vIFdoZW4gdGhlIGRlYWN0aXZhdGUoKSBt
ZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKLSAgICAvLyAxLiBMZXQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLgotICAgIC8vIDIuIEluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEgc2Vzc2lv
buKAmXMgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAvLyAzLiBTZXQgbWVkaWEg
c2Vzc2lvbidzIHJlc3VtZSBsaXN0IHRvIGFuIGVtcHR5IGxpc3QuCi0gICAgLy8gNC4gU2V0IG1l
ZGlhIHNlc3Npb24ncyBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIHRvIGFuIGVtcHR5IGxp
c3QuCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIHdoaWxl
ICghbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMudGFrZUFueSgpLT5wYXVzZSgpOwotICAgIH0p
OwotCi0gICAgLy8gNS4gUnVuIHRoZSBtZWRpYSBzZXNzaW9uIGRlYWN0aXZhdGlvbiBhbGdvcml0
aG0gZm9yIG1lZGlhIHNlc3Npb24uCi0gICAgcmVsZWFzZUludGVybmFsKCk7Ci19Ci0KLXZvaWQg
TWVkaWFTZXNzaW9uOjpyZWxlYXNlSW50ZXJuYWwoKQotewotICAgIC8vIDYuNS4gUmVsZWFzaW5n
IGEgbWVkaWEgc2Vzc2lvbgotICAgIC8vIDEuIElmIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGN1
cnJlbnQgc3RhdGUgaXMgaWRsZSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYg
KG1fY3VycmVudFN0YXRlID09IFN0YXRlOjpJZGxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyAyLiBJZiBjdXJyZW50IG1lZGlhIHNlc3Npb24gc3RpbGwgaGFzIG9uZSBvciBtb3JlIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLCB0aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVw
cy4KLSAgICBpZiAoIW1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gMy4gT3B0aW9uYWxseSwgYmFzZWQgb24gcGxhdGZvcm0g
Y29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcmVsZWFzZSBhbnkgY3VycmVudGx5IGhl
bGQgcGxhdGZvcm0gbWVkaWEgZm9jdXMKLSAgICAvLyAgICBmb3IgY3VycmVudCBtZWRpYSBzZXNz
aW9uLgotICAgIC8vIDQuIE9wdGlvbmFsbHksIGJhc2VkIG9uIHBsYXRmb3JtIGNvbnZlbnRpb25z
LCB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSBhbnkgcHJldmlvdXNseSBlc3RhYmxpc2hlZCBv
bmdvaW5nIG1lZGlhCi0gICAgLy8gICAgaW50ZXJmYWNlIGluIHRoZSB1bmRlcmx5aW5nIHBsYXRm
b3Jt4oCZcyBub3RpZmljYXRpb25zIGFyZWEgYW5kIGFueSBvbmdvaW5nIG1lZGlhIGludGVyZmFj
ZSBpbiB0aGUgdW5kZXJseWluZwotICAgIC8vICAgIHBsYXRmb3JtJ3MgbG9jayBzY3JlZW4gYXJl
YSBmb3IgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBhbnkuCi0gICAgLy8gNS4gT3B0aW9uYWxs
eSwgYmFzZWQgb24gcGxhdGZvcm0gY29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcHJl
dmVudCBhbnkgaGFyZHdhcmUgYW5kL29yIHNvZnR3YXJlIG1lZGlhIGtleXMKLSAgICAvLyAgICBm
cm9tIGNvbnRyb2xsaW5nIHBsYXliYWNrIG9mIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLgotICAgIC8vIDYuIFNldCBjdXJyZW50IG1l
ZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6SWRsZTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246Omludm9rZSgpCi17Ci0gICAg
Ly8gNC40IEFjdGl2YXRpbmcgYSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gMS4gSWYgd2UncmUgYWxy
ZWFkeSBBQ1RJVkUgdGhlbiByZXR1cm4gc3VjY2Vzcy4KLSAgICBpZiAobV9jdXJyZW50U3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyAyLiBPcHRp
b25hbGx5LCBiYXNlZCBvbiBwbGF0Zm9ybSBjb252ZW50aW9ucywgcmVxdWVzdCB0aGUgbW9zdCBh
cHByb3ByaWF0ZSBwbGF0Zm9ybS1sZXZlbCBtZWRpYSBmb2N1cyBmb3IgbWVkaWEKLSAgICAvLyAg
ICBzZXNzaW9uIGJhc2VkIG9uIGl0cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZS4KLQotICAg
IC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwcy4uLgotCi0gICAgLy8gNC4gU2V0IG91ciBjdXJyZW50
IHN0YXRlIHRvIEFDVElWRSBhbmQgcmV0dXJuIHN1Y2Nlc3MuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6QWN0aXZlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lv
bjo6aGFuZGxlRHVja0ludGVycnVwdGlvbigpCi17Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDog
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnNldFNob3Vs
ZER1Y2sodHJ1ZSk7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpJbnRlcnJ1cHRlZDsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmhhbmRsZVVuZHVja0ludGVycnVwdGlvbigpCi17Ci0g
ICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0g
ICAgICAgIGVsZW1lbnQtPnNldFNob3VsZER1Y2soZmFsc2UpOwotCi0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6QWN0aXZlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6aGFuZGxlSW5kZWZp
bml0ZVBhdXNlSW50ZXJydXB0aW9uKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci0KLSAgICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5j
bGVhcigpOwotICAgIG1fY3VycmVudFN0YXRlID0gU3RhdGU6OklkbGU7Ci19Ci0KLXZvaWQgTWVk
aWFTZXNzaW9uOjpoYW5kbGVQYXVzZUludGVycnVwdGlvbigpCi17Ci0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6SW50ZXJydXB0ZWQ7Ci0KLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpoYW5kbGVVbnBhdXNl
SW50ZXJydXB0aW9uKCkKLXsKLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpBY3RpdmU7Ci0K
LSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OnRvZ2dsZVBsYXliYWNrKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0
aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAg
IGlmIChlbGVtZW50LT5wYXVzZWQoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZWxlbWVudC0+cGF1c2UoKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb246OnNhZmVseUl0ZXJhdGVBY3RpdmVNZWRpYUVsZW1lbnRzKGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Kik+JiBoYW5kbGVyKQotewotICAg
IEFTU0VSVCghbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyk7Ci0KLSAgICBI
YXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5
ID0gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgbV9pdGVyYXRlZEFjdGl2ZVBh
cnRpY2lwYXRpbmdFbGVtZW50cyA9ICZhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5Owot
Ci0gICAgd2hpbGUgKCFhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LmlzRW1wdHkoKSkK
LSAgICAgICAgaGFuZGxlcihhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LnRha2VBbnko
KSk7Ci0KLSAgICBtX2l0ZXJhdGVkQWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzID0gbnVsbHB0
cjsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb05leHRUcmFjaygpCi17Ci0gICAgaWYg
KG1fY29udHJvbHMgJiYgbV9jb250cm9scy0+bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICBt
X2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm5leHR0
cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb1ByZXZpb3VzVHJhY2soKQotewotICAg
IGlmIChtX2NvbnRyb2xzICYmIG1fY29udHJvbHMtPnByZXZpb3VzVHJhY2tFbmFibGVkKCkpCi0g
ICAgICAgIG1fY29udHJvbHMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucHJldmlvdXN0cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNvbnRyb2xJc0VuYWJsZWRE
aWRDaGFuZ2UoKQotewotICAgIC8vIE1lZGlhIHJlbW90ZSBjb250cm9scyBhcmUgb25seSBhbGxv
d2VkIG9uIENvbnRlbnQgbWVkaWEgc2Vzc2lvbnMuCi0gICAgQVNTRVJUKG1fa2luZCA9PSBLaW5k
OjpDb250ZW50KTsKLQotICAgIC8vIE1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0byBDb250ZW50
IG1lZGlhIHNlc3Npb25zIGhhdmUgbXV0dWFsbHktZXhjbHVzaXZlIHBsYXliYWNrLgotICAgIEFT
U0VSVChtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5zaXplKCkgPD0gMSk7Ci0KLSAgICBp
ZiAobV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gKm1fYWN0aXZlUGFydGljaXBh
dGluZ0VsZW1lbnRzLmJlZ2luKCk7Ci0gICAgbV9kb2N1bWVudC51cGRhdGVJc1BsYXlpbmdNZWRp
YShlbGVtZW50LT5lbGVtZW50SUQoKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCShub25leGlzdGVudCkKQEAg
LTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSAiTWVkaWFSZW1vdGVDb250cm9scy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU2Vzc2lvbj4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgS2luZCB7IENvbnRlbnQs
IFRyYW5zaWVudCwgVHJhbnNpZW50U29sbywgQW1iaWVudCB9OwotICAgIGVudW0gY2xhc3MgU3Rh
dGUgeyBJZGxlLCBBY3RpdmUsIEludGVycnVwdGVkIH07Ci0KLSAgICBzdHJ1Y3QgTWV0YWRhdGEg
ewotICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgICAgIFN0cmluZyBhcnRpc3Q7Ci0gICAgICAg
IFN0cmluZyBhbGJ1bTsKLSAgICAgICAgU3RyaW5nIGFydHdvcms7Ci0gICAgfTsKLQotICAgIHN0
YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24oZG9j
dW1lbnQsIGtpbmQpKTsKLSAgICB9Ci0KLSAgICB+TWVkaWFTZXNzaW9uKCk7Ci0KLSAgICBLaW5k
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBNZWRpYVJlbW90ZUNvbnRyb2xz
KiBjb250cm9scygpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KLSAgICBib29sIGhhc0FjdGl2ZU1lZGlh
RWxlbWVudHMoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0TWV0YWRhdGEoY29uc3QgT3B0aW9uYWw8
TWV0YWRhdGE+Jik7Ci0KLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLQotICAgIC8vIFJ1bnMgdGhl
IG1lZGlhIHNlc3Npb24gaW52b2NhdGlvbiBhbGdvcml0aG0gYW5kIHJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzLgotICAgIGJvb2wgaW52b2tlKCk7Ci0KLSAgICB2b2lkIGhhbmRsZUR1Y2tJbnRlcnJ1
cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZUluZGVmaW5pdGVQYXVzZUludGVycnVwdGlvbigpOwot
ICAgIHZvaWQgaGFuZGxlUGF1c2VJbnRlcnJ1cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZVVuZHVj
a0ludGVycnVwdGlvbigpOwotICAgIHZvaWQgaGFuZGxlVW5wYXVzZUludGVycnVwdGlvbigpOwot
Ci0gICAgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7
Ci0gICAgdm9pZCBza2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICB2b2lkIGNvbnRyb2xJc0Vu
YWJsZWREaWRDaGFuZ2UoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKLQotICAgIE1lZGlhU2Vzc2lvbihEb2N1bWVudCYsIEtpbmQpOwotCi0gICAgdm9p
ZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIHZvaWQgcmVtb3ZlTWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKLQotICAgIHZvaWQgc2FmZWx5SXRlcmF0ZUFj
dGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1l
bnQqKT4mKTsKLSAgICB2b2lkIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKHZvaWQpPiYpOwotICAgIHZvaWQgYWRkQWN0aXZlTWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQmKTsKLSAgICBib29sIGlzTWVkaWFFbGVtZW50QWN0aXZlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKLQotICAgIHZvaWQgcmVsZWFzZUludGVybmFsKCk7Ci0KLSAgICBTdGF0ZSBt
X2N1cnJlbnRTdGF0ZSB7IFN0YXRlOjpJZGxlIH07Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9wYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVk
aWFFbGVtZW50Kj4qIG1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMgeyBudWxs
cHRyIH07Ci0KLSAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBjb25zdCBLaW5kIG1fa2lu
ZDsKLSAgICBSZWZQdHI8TWVkaWFSZW1vdGVDb250cm9scz4gbV9jb250cm9sczsKLSAgICBNZWRp
YVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NFU1NJT04pICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwJKHJl
dmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPU1F
RElBX1NFU1NJT04sCi0gICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKLV0gaW50ZXJmYWNlIE1lZGlhU2Vzc2lvbiB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlh
U2Vzc2lvbktpbmQga2luZCA9ICJjb250ZW50Iik7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVkaWFTZXNzaW9uS2luZCBraW5kOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVJlbW90
ZUNvbnRyb2xzPyBjb250cm9sczsKLQotICAgIHVuZGVmaW5lZCBzZXRNZXRhZGF0YShNZWRpYU1l
dGFkYXRhPyBtZXRhZGF0YSk7Ci0KLSAgICB1bmRlZmluZWQgZGVhY3RpdmF0ZSgpOwotfTsKLQot
ZW51bSBNZWRpYVNlc3Npb25LaW5kIHsKLSAgICAiY29udGVudCIsCi0gICAgInRyYW5zaWVudCIs
Ci0gICAgInRyYW5zaWVudC1zb2xvIiwKLSAgICAiYW1iaWVudCIKLX07Ci0KLWRpY3Rpb25hcnkg
TWVkaWFNZXRhZGF0YSB7Ci0gICAgRE9NU3RyaW5nIHRpdGxlOwotICAgIERPTVN0cmluZyBhcnRp
c3Q7Ci0gICAgRE9NU3RyaW5nIGFsYnVtOwotICAgIFVTVlN0cmluZyBhcnR3b3JrOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkV2ZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbkV2ZW50cy5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25FdmVudHMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gTWVkaWFFdmVudFR5cGUgewotICAgIFBsYXlQYXVzZSwKLSAg
ICBUcmFja05leHQsCi0gICAgVHJhY2tQcmV2aW91cwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnRlbnRTZXNzaW9uS2luZCA9ICJjb250ZW50IjsKLQotTWVkaWFTZXNz
aW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj4gbWFuYWdlcjsKLSAgICByZXR1
cm4gbWFuYWdlcjsKLX0KLQotTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdl
cigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIG1faW50ZXJydXB0aW9uUHJvdmlkZXIgPSBh
ZG9wdFJlZihuZXcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMoKnRoaXMpKTsK
LSAgICBtX2ludGVycnVwdGlvblByb3ZpZGVyLT5iZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlv
bnMoKTsKLSNlbmRpZgotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Omhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKSBjb25zdAotewotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lv
bnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPmhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQotewotICAgIG1fc2Vzc2lvbnMuYWRkKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KQotewotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5YmFjaygpCi17Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICBTdHJpbmcgc2Vzc2lvbktpbmQgPSBzZXNzaW9uLT5r
aW5kKCk7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUoKSA9PSBNZWRpYVNlc3Np
b246OlN0YXRlOjpBY3RpdmUgJiYgKHNlc3Npb25LaW5kID09IGNvbnRlbnRTZXNzaW9uS2luZCB8
fCBzZXNzaW9uS2luZCA9PSAiIikpCi0gICAgICAgICAgICBzZXNzaW9uLT50b2dnbGVQbGF5YmFj
aygpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9OZXh0VHJh
Y2soKQotewotICAgIC8vIDUuMi4yIFdoZW4gdGhlIHVzZXIgcHJlc3NlcyB0aGUgTWVkaWFUcmFj
a05leHQgbWVkaWEga2V5LCB0aGVuIGZvciBlYWNoIENvbnRlbnQtYmFzZWQgbWVkaWEgc2Vzc2lv
biB0aGF0IGlzCi0gICAgLy8gY3VycmVudGx5IEFDVElWRSBhbmQgaGFzIGEgbWVkaWEgcmVtb3Rl
IGNvbnRyb2xsZXIgd2l0aCBpdHMgbmV4dFRyYWNrRW5hYmxlZCBhdHRyaWJ1dGUgc2V0IHRvIHRy
dWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbmV4
dHRyYWNrIGF0IGl0cyBtZWRpYSByZW1vdGUgY29udHJvbGxlci4KLSAgICBmb3IgKGF1dG8qIHNl
c3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUo
KSA9PSBNZWRpYVNlc3Npb246OlN0YXRlOjpBY3RpdmUgJiYgc2Vzc2lvbi0+a2luZCgpID09IGNv
bnRlbnRTZXNzaW9uS2luZCkKLSAgICAgICAgICAgIHNlc3Npb24tPnNraXBUb05leHRUcmFjaygp
OwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9QcmV2aW91c1Ry
YWNrKCkKLXsKLSAgICAvLyA1LjIuMiBXaGVuIHRoZSB1c2VyIHByZXNzZXMgdGhlIE1lZGlhVHJh
Y2tQcmV2aW91cyBtZWRpYSBrZXksIHRoZW4gZm9yIGVhY2ggQ29udGVudC1iYXNlZCBtZWRpYSBz
ZXNzaW9uIHRoYXQgaXMKLSAgICAvLyBjdXJyZW50bHkgQUNUSVZFIGFuZCBoYXMgYSBtZWRpYSBy
ZW1vdGUgY29udHJvbGxlciB3aXRoIGl0cyBwcmV2aW91c1RyYWNrRW5hYmxlZCBhdHRyaWJ1dGUg
c2V0IHRvIHRydWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQg
bmFtZWQgcHJldmlvdXN0cmFjayBhdCBpdHMgbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuCi0gICAg
Zm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+
Y3VycmVudFN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlICYmIHNlc3Npb24t
PmtpbmQoKSA9PSBjb250ZW50U2Vzc2lvbktpbmQpCi0gICAgICAgICAgICBzZXNzaW9uLT5za2lw
VG9QcmV2aW91c1RyYWNrKCk7Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbklu
dGVycnVwdGluZ0NhdGVnb3J5IGludGVycnVwdGluZ0NhdGVnb3J5KQotewotICAgIC8vIDQuNS4y
IEludGVycnVwdGluZyBhIG1lZGlhIHNlc3Npb24KLSAgICAvLyBXaGVuIGEgc3RhcnQtb2YtaW50
ZXJydXB0aW9uIG5vdGlmaWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9y
bSwgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9u
IGludGVycnVwdGlvbiBhbGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMs
IHBhc3NpbmcgaW4gZWFjaCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9y
IChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBz
ZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSBpcyBub3QgYWN0aXZlLCB0aGVuIHRlcm1pbmF0ZSB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgKHNlc3Npb24tPmN1cnJlbnRTdGF0ZSgpICE9IE1lZGlhU2Vz
c2lvbjo6U3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8v
IDIuIExldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSB0aGUgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSB0aGF0IHRyaWdnZXJlZCB0aGlzIGludGVycnVwdGlvbi4KLSAgICAg
ICAgLy8gICAgSWYgdGhpcyBpbnRlcnJ1cHRpb24gaGFzIG5vIGtub3duIG1lZGlhIHNlc3Npb24g
Y2F0ZWdvcnksIGxldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSBEZWZh
dWx0LgotCi0gICAgICAgIC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwczoKLSAgICAgICAgaWYgKGlu
dGVycnVwdGluZ0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpD
b250ZW50KSB7Ci0gICAgICAgICAgICAvLyAtICBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBDb250ZW50OgotICAgICAgICAgICAgLy8gICAgSWYgbWVkaWEgc2Vzc2lv
bidzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiB0eXBlIGlzIERlZmF1bHQgb3IgQ29udGVudCB0aGVu
IGluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEKLSAgICAgICAgICAgIC8vICAgIHNlc3Np
b24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQgc2V0IG1lZGlhIHNl
c3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+
a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09
IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFu
ZGxlSW5kZWZpbml0ZVBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50
ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRy
YW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Np
b24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRlbnQgdGhl
biBkdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MgYWN0aXZlCi0gICAgICAgICAgICAvLyAgIGF1
ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAgICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkg
PT0gTWVkaWFTZXNzaW9uS2luZDo6RGVmYXVsdCB8fCBzZXNzaW9uLT5raW5kKCkgPT0gTWVkaWFT
ZXNzaW9uS2luZDo6Q29udGVudCkKLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVEdWNr
SW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkg
PT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8pIHsKLSAg
ICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMg
VHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJy
ZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2llbnQgb3Ig
VHJhbnNpZW50IFNvbG8gdGhlbiBwYXVzZQotICAgICAgICAgICAgLy8gICBhbGwgb2YgbWVkaWEg
c2Vzc2lvbidzIGFjdGl2ZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIGFuZCBzZXQgY3Vy
cmVudCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAg
ICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkK
LSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVQYXVzZUludGVycnVwdGlvbigpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSBpbnRlcnJ1cHRpbmdDYXRlZ29yeSkKLXsKLSAgICAvLyA0LjUuMiBJbnRlcnJ1cHRpbmcg
YSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gV2hlbiBhbiBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlm
aWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9ybSwgdGhlbiB0aGUgdXNl
ciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9uIGNvbnRpbnVhdGlvbiBh
bGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMsIHBhc3NpbmcgaW4gZWFj
aCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSBpcyBub3QgaW50ZXJydXB0ZWQsIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgot
ICAgICAgICBpZiAoc2Vzc2lvbi0+Y3VycmVudFN0YXRlKCkgIT0gTWVkaWFTZXNzaW9uOjpTdGF0
ZTo6SW50ZXJydXB0ZWQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAyLiBM
ZXQgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgYmUgdGhlIG1lZGlhIHNlc3Np
b24gY2F0ZWdvcnkgdGhhdCBpbml0aWFsbHkgdHJpZ2dlcmVkIHRoaXMgaW50ZXJydXB0aW9uLgot
ICAgICAgICAvLyAgICBJZiB0aGlzIGludGVycnVwdGlvbiBoYXMgbm8ga25vd24gbWVkaWEgc2Vz
c2lvbiBjYXRlZ29yeSwgbGV0IGludGVycnVwdGluZyBtZWRpYSBzZXNzaW9uIGNhdGVnb3J5IGJl
IERlZmF1bHQuCi0KLSAgICAgICAgLy8gMy4gUnVuIHRoZXNlIHN1YnN0ZXBzOgotICAgICAgICBp
ZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnk6OlRyYW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlh
IHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRl
bnQsIHRoZW4gdW5kdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MKLSAgICAgICAgICAgIC8vICAg
YWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9u
J3MgY3VycmVudCBzdGF0ZSB0byBhY3RpdmUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2lu
ZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09IE1l
ZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxl
VW5kdWNrSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0
ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8p
IHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdv
cnkgaXMgVHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24n
cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2ll
bnQsIG9yIFRyYW5zaWVudCBTb2xvLCB0aGVuCi0gICAgICAgICAgICAvLyAgIHVucGF1c2UgdGhl
IG1lZGlhIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQg
c2V0IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGFjdGl2ZS4KLSAgICAgICAgICAg
IGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkKLSAgICAg
ICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVVbnBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJM
RShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMjY3
NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
TWFuYWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyIDogcHVi
bGljIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50IHsKLSAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNpbmdsZXRvbigpOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
a2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGlu
Z0NhdGVnb3J5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lv
bjsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLQotICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cygpIGNvbnN0OwotCi0gICAgdm9pZCBhZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNz
aW9uJik7Ci0gICAgdm9pZCByZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7Ci0KLSAg
ICBSZWZQdHI8TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI+IG1faW50ZXJydXB0aW9u
UHJvdmlkZXI7Ci0gICAgSGFzaFNldDxNZWRpYVNlc3Npb24qPiBtX3Nlc3Npb25zOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
ZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBN
ZWRpYVNlc3Npb25NZXRhZGF0YSBmaW5hbCB7Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9uTWV0
YWRhdGEoKSA9IGRlZmF1bHQ7Ci0KLSAgICBNZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFydGlzdCwgY29uc3QgU3RyaW5nJiBhbGJ1bSwgY29u
c3QgVVJMJiBhcnR3b3JrVVJMKQotICAgICAgICA6IG1fdGl0bGUodGl0bGUpCi0gICAgICAgICwg
bV9hcnRpc3QoYXJ0aXN0KQotICAgICAgICAsIG1fYWxidW0oYWxidW0pCi0gICAgICAgICwgbV9h
cnR3b3JrVVJMKGFydHdvcmtVUkwpIHsgfQotCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aXRsZTsgfQotICAgIFN0cmluZyBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2Fy
dGlzdDsgfQotICAgIFN0cmluZyBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxidW07IH0KLSAg
ICBVUkwgYXJ0d29ya1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0d29ya1VSTDsgfQotCi1wcml2
YXRlOgotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2FydGlzdDsKLSAgICBTdHJp
bmcgbV9hbGJ1bTsKLSAgICBVUkwgbV9hcnR3b3JrVVJMOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCShyZXZpc2lvbiAy
Njc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjc3OTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5o
IgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKLSNpbmNsdWRlICJX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMu
aD4KLSNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBTZWNvbmRzIHRh
c2tEZWxheUludGVydmFsIHsgMTAwX21zIH07Ci0KLSNkZWZpbmUgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSIGxvZ2dlcigpLmxvZ0Fsd2F5cwotCi1zdHJ1Y3QgQ2xpZW50U3RhdGUgewot
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAgIGV4cGxpY2l0IENsaWVu
dFN0YXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCi0gICAgICAgIDogY2xpZW50KGNs
aWVudCkKLSAgICAgICAgLCBjb250ZXh0SWQoY29udGV4dElkKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yID09IChDbGllbnRTdGF0ZSBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gY29udGV4dElkID09IG90aGVyLmNvbnRleHRJZCAmJiAmY2xpZW50
ID09ICZvdGhlci5jbGllbnQ7Ci0gICAgfQotCi0gICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYgY2xpZW50OwotICAgIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkOwotICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBm
bGFncyB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9OwotICAgIGJvb2wg
cmVxdWVzdGVkUGlja2VyIHsgZmFsc2UgfTsKLSAgICBib29sIHByZXZpb3VzbHlSZXF1ZXN0ZWRQ
aWNrZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgY29uZmlndXJhdGlvblJlcXVpcmVkIHsgdHJ1ZSB9
OwotICAgIGJvb2wgcGxheWVkVG9FbmQgeyBmYWxzZSB9OwotfTsKLQotc3RhdGljIGJvb2wgZmxh
Z3NBcmVTZXQoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHZhbHVlLCB1bnNpZ25lZCBm
bGFncykKLXsKLSAgICByZXR1cm4gdmFsdWUgJiBmbGFnczsKLX0KLQotU3RyaW5nIG1lZGlhUHJv
ZHVjZXJTdGF0ZVN0cmluZyhNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpCi17
Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmc7Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nQXVkaW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIklzUGxheWluZ0F1ZGlv
KyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKQotICAg
ICAgICBzdHJpbmcuYXBwZW5kKCJJc1BsYXlpbmdWaWRlbysiKTsKLSAgICBpZiAoZmxhZ3MgJiBN
ZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKQotICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKyIpOwotICAgIGlmIChmbGFncyAmIE1l
ZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIpCi0gICAg
ICAgIHN0cmluZy5hcHBlbmQoIkhhc1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyKyIpOwotICAg
IGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJSZXF1aXJlc1RhcmdldE1vbml0b3JpbmcrIik7
Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkKLSAgICAgICAgc3RyaW5nLmFwcGVuZCgiRXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSsiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpEaWRQbGF5VG9FbmQp
Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoIkRpZFBsYXlUb0VuZCsiKTsKLSAgICBpZiAoZmxhZ3Mg
JiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQo
Ikhhc0F1ZGlvT3JWaWRlbysiKTsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RyaW5nLmFwcGVuZCgiSXNOb3RQbGF5aW5nIik7Ci0gICAgZWxzZQotICAgICAgICBzdHJpbmcu
cmVzaXplKHN0cmluZy5sZW5ndGgoKSAtIDEpOwotCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIiB7
ICIsIHN0cmluZy50b1N0cmluZygpLCAiIH0iKTsKLX0KLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9u
TG9nZ2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25Mb2dnZXIp
OwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+IGNyZWF0ZShXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyJiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
TWVkaWFTZXNzaW9uTG9nZ2VyPihtYW5hZ2VyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKGNvbnN0IGNoYXIq
IG1ldGhvZE5hbWUsIENsaWVudFN0YXRlKiBzdGF0ZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1
bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXN0YXRlLT5jbGllbnQuYWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbG9nZ2Vy
LT5sb2dBbHdheXMoTG9nTWVkaWEsIG1ha2VTdHJpbmcoIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OiIsIG1ldGhvZE5hbWUsICcgJyksIHN0YXRlLT5jb250ZXh0SWQudG9VSW50NjQoKSwgc3RhdGUt
PmZsYWdzLCBhcmd1bWVudHMuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoIW1fbWFuYWdlci5hbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgbV9sb2dnZXItPmxvZ0Fsd2F5cyhMb2dNZWRpYSwgbWFrZVN0cmlu
ZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0aG9kTmFtZSwgJyAnKSwgYXJndW1lbnRz
Li4uKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxXZWJN
ZWRpYVNlc3Npb25Mb2dnZXI+IHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFTZXNzaW9uTG9nZ2Vy
PihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJik7Ci0gICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIpCi0gICAgICAgIDogbV9tYW5hZ2VyKG1hbmFn
ZXIpCi0gICAgICAgICwgbV9sb2dnZXIoTG9nZ2VyOjpjcmVhdGUodGhpcykpCi0gICAgewotICAg
IH0KLQotICAgIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1fbWFuYWdlcjsKLSAgICBSZWY8TG9n
Z2VyPiBtX2xvZ2dlcjsKLX07Ci0KLVdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6bG9nZ2VyKCkKLXsKLSAgICBpZiAoIW1fbG9nZ2VyKQotICAgICAgICBtX2xv
Z2dlciA9IFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcjo6Y3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVy
biAqbV9sb2dnZXI7Ci19Ci0KLWJvb2wgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFsbE9mKG1fY2xpZW50U3RhdGUs
IFtdIChhdXRvJiBzdGF0ZSkgewotICAgICAgICByZXR1cm4gc3RhdGUtPmNsaWVudC5hbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKLXsKLSAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxlZCA9PSBlbmFibGVkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwot
ICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwotfQotCi12b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCi17
Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtb2Nr
UGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6Om1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKLXsK
LSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwotICAgIG1vY2tQ
aWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsKLX0KLQotTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQotewotICAgIGlmICghbV9w
aWNrZXJPdmVycmlkZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8TWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9waWNr
ZXJPdmVycmlkZS5nZXQoKTsKLX0KLQotV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFyZ2V0UGlja2VyKCkKLXsKLSAgICBpZiAobV9t
b2NrUGlja2VyRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIG1vY2tQaWNrZXIoKTsKLQotICAgIHJl
dHVybiBwbGF0Zm9ybVBpY2tlcigpOwotfQotCi1XZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyKCkKLSAgICA6IG1fdGFza1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnRhc2tUaW1lckZpcmVkKQotICAgICwg
bV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCkKLXsKLX0KLQotV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLVBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xp
ZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ID09IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybiB7IH07Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIGNvbnRleHRJZC50b1VJbnQ2NCgpKTsKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtl
VW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwotCi0gICAgaWYgKG1fZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAg
c2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotCi0gICAgcmV0dXJuIGNvbnRleHRJZDsKLX0KLQotdm9p
ZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIHNpemVfdCBpbmRleCA9IGZp
bmQoJmNsaWVudCwgY29udGV4dElkKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwot
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5n
ZXQoKSk7Ci0KLSAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVE
ZWxheWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZUFsbFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50cyhXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50JiBjbGllbnQpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9jbGllbnRTdGF0ZS5zaXpl
KCk7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgaWYgKCZtX2NsaWVudFN0YXRlW2kgLSAxXS0+Y2xp
ZW50ID09ICZjbGllbnQpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFO
QUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOwotICAgICAgICAgICAg
bV9jbGllbnRTdGF0ZS5yZW1vdmUoaSAtIDEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNjaGVk
dWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8mIGNsaWVudFJlcXVlc3RpbmdQaWNrZXIgPSBtX2NsaWVudFN0
YXRlW2luZGV4XTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAg
ICAgICBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyID0gc3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1Bp
Y2tlcjsKLSAgICAgICAgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9
PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwotICAgIH0KLQotICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwotCi0g
ICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5kZXhd
LT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSk7Ci0gICAg
dGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNsaWVudC5wbGF0Zm9ybVZp
ZXcoKSwgRmxvYXRSZWN0KHJlY3QpLCBoYXNBY3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFuY2Up
OwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlRGlkQ2hhbmdl
KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBuZXdGbGFncykKLXsKLSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRl
eHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGNoYW5nZWRDbGllbnRTdGF0
ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhdOwotICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBvbGRGbGFncyA9IGNoYW5nZWRDbGllbnRTdGF0ZS0+ZmxhZ3M7Ci0gICAgaWYgKG5ld0Zs
YWdzID09IG9sZEZsYWdzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3
IGZsYWdzID0gIiwgbmV3RmxhZ3MpOwotCi0gICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9
IG5ld0ZsYWdzOwotCi0gICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHVwZGF0ZUNv
bmZpZ3VyYXRpb25GbGFncyA9IE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRN
b25pdG9yaW5nIHwgTWVkaWFQcm9kdWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlM
aXN0ZW5lciB8IE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKLSAgICBpZiAoKG9sZEZs
YWdzICYgdXBkYXRlQ29uZmlndXJhdGlvbkZsYWdzKSAhPSAobmV3RmxhZ3MgJiB1cGRhdGVDb25m
aWd1cmF0aW9uRmxhZ3MpKQotICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0
b3JpbmdDb25maWd1cmF0aW9uVGFzayk7Ci0KLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgcGxheWluZ1RvVGFyZ2V0RmxhZ3MgPSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4
dGVybmFsRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW87Ci0gICAgaWYgKChv
bGRGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZsYWdzKSAhPSAobmV3RmxhZ3MgJiBwbGF5aW5nVG9U
YXJnZXRGbGFncykpIHsKLSAgICAgICAgaWYgKGZsYWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgIWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJv
ZHVjZXI6OkRpZFBsYXlUb0VuZCkpCi0gICAgICAgICAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPnBs
YXllZFRvRW5kID0gdHJ1ZTsKLSAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhXYXRjaGRvZ1Rp
bWVyQ29uZmlndXJhdGlvblRhc2spOwotICAgIH0KLQotICAgIGlmICghbV9wbGF5YmFja1Rhcmdl
dCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSB8fCAhZmxhZ3NBcmVTZXQo
bmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkV4dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRhdGUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEbyBub3QgaW50ZXJydXB0IGFub3RoZXIgZWxl
bWVudCBhbHJlYWR5IHBsYXlpbmcgdG8gYSBkZXZpY2UuCi0gICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7
Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0
YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG8gbm90IGJlZ2luIHBsYXlpbmcgdG8gdGhlIGRldmlj
ZSB1bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qgc3RhcnRlZC4KLSAgICBpZiAoIWZsYWdzQXJlU2V0
KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgfHwgZmxhZ3NBcmVTZXQo
b2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJyZXR1cm5pbmcgZWFybHksIHBs
YXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBpZiAoc3RhdGUg
PT0gY2hhbmdlZENsaWVudFN0YXRlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2Fs
bGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKLSAgICAgICAgc3Rh
dGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElk
LCBmYWxzZSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOwotICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+Y2xpZW50
LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+Y29udGV4
dElkLCB0cnVlKTsKLQotICAgIGlmIChpbmRleCAmJiBtX2NsaWVudFN0YXRlLnNpemUoKSA+IDEp
Ci0gICAgICAgIHN0ZDo6c3dhcChtX2NsaWVudFN0YXRlLmF0KGluZGV4KSwgbV9jbGllbnRTdGF0
ZS5hdCgwKSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQotewotICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgImhhcyBhY3RpdmUgcm91dGUgPSAiLCB0
YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOwotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3Zl
KHRhcmdldCk7Ci0gICAgbV90YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5
ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
Ym9vbCBhdmFpbGFibGUpCi17Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBhdmFpbGFibGUpOwotICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
PSBhdmFpbGFibGU7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpCi0gICAg
ICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
c3RhdGUtPmNvbnRleHRJZCwgYXZhaWxhYmxlKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCgpCi17Ci0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0
UGlja2VyRGlzbWlzc2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENs
aWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y29uZmlndXJlTmV3Q2xpZW50cygpCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xp
ZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc3RhdGUtPmNvbmZpZ3VyYXRpb25SZXF1
aXJlZCA9IGZhbHNlOwotICAgICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZSkKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7Ci0KLSAgICAgICAgaWYgKG1fcGxh
eWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Ci0gICAgfQot
fQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
Q2xpZW50cygpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBub3RG
b3VuZDsKLSAgICBib29sIGhhdmVBY3RpdmVSb3V0ZSA9IG1fcGxheWJhY2tUYXJnZXQgJiYgbV9w
bGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9
IG1fY2xpZW50U3RhdGVbaV07Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3RhdGUt
PnJlcXVlc3RlZFBpY2tlcik7Ci0KLSAgICAgICAgaWYgKChtX3RhcmdldENoYW5nZWQgfHwgbV9w
bGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkgJiYgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcikK
LSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gaTsKLQotICAg
ICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgZmxh
Z3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFs
RGV2aWNlKSkKLSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaTsK
LQotICAgICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQg
JiYgaGF2ZUFjdGl2ZVJvdXRlICYmIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyKQot
ICAgICAgICAgICAgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBpOwotICAgIH0K
LQotICAgIGlmIChpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciAhPSBub3RGb3VuZCkK
LSAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mQ2xpZW50VGhh
dFJlcXVlc3RlZFBpY2tlcjsKLSAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PT0gbm90Rm91bmQgJiYgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgIT0gbm90Rm91
bmQpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaW5kZXhPZkxhc3RD
bGllbnRUb1JlcXVlc3RQaWNrZXI7Ci0gICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFy
Z2V0ID09IG5vdEZvdW5kICYmIGhhdmVBY3RpdmVSb3V0ZSAmJiBmbGFnc0FyZVNldChtX2NsaWVu
dFN0YXRlWzBdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkgJiYgIWZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbMF0tPmZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRv
VGFyZ2V0ID0gMDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5z
aXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07Ci0K
LSAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50
LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNv
cHlSZWYoKSk7Ci0KLSAgICAgICAgaWYgKGkgIT0gaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJn
ZXQgfHwgIWhhdmVBY3RpdmVSb3V0ZSkgewotICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOwotICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoc3RhdGUtPnJlcXVlc3RlZFBpY2tlciAmJiBtX3BsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tU
YXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxh
eWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoc3RhdGUtPmNvbnRleHRJZCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChtX3RhcmdldENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3Nl
ZCkKLSAgICAgICAgICAgIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAoaGF2ZUFjdGl2ZVJvdXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRl
eE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldF07Ci0gICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3Rh
dGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewot
ICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7
Ci0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV90YXJn
ZXRDaGFuZ2VkID0gZmFsc2U7Ci0gICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOwotfQotCi12
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRv
cmluZygpCi17Ci0gICAgYm9vbCBtb25pdG9yaW5nUmVxdWlyZWQgPSBmYWxzZTsKLSAgICBib29s
IGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVyID0gZmFsc2U7Ci0gICAgYm9vbCBoYXZlQ2xpZW50V2l0
aE1lZGlhID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsK
LSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5n
ZXQoKSk7Ci0gICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpSZXF1aXJl
c1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewotICAgICAgICAgICAgbW9uaXRvcmluZ1JlcXVp
cmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChz
dGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVyKQotICAgICAgICAgICAgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSB0cnVlOwot
ICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVv
KQotICAgICAgICAgICAgaGF2ZUNsaWVudFdpdGhNZWRpYSA9IHRydWU7Ci0gICAgfQotCi0gICAg
aWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAoaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYgaGF2
ZUNsaWVudFdpdGhNZWRpYSkpIHsKLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwotICAgICAgICB0YXJnZXRQaWNr
ZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGlu
ZyBtb25pdG9yaW5nIik7Ci0gICAgICAgIHRhcmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKCk7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzIHRhc2tzKQotewotICAgIG1f
dGFza0ZsYWdzIHw9IHRhc2tzOwotICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCh0YXNrRGVs
YXlJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVy
RmlyZWQoKQotewotICAgIGlmIChtX3Rhc2tGbGFncyAmIEluaXRpYWxDb25maWd1cmF0aW9uVGFz
aykKLSAgICAgICAgY29uZmlndXJlTmV3Q2xpZW50cygpOwotICAgIGlmIChtX3Rhc2tGbGFncyAm
IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzaykKLSAgICAgICAgY29uZmlndXJlUGxheWJh
Y2tUYXJnZXRDbGllbnRzKCk7Ci0gICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0TW9uaXRvcmlu
Z0NvbmZpZ3VyYXRpb25UYXNrKQotICAgICAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0
b3JpbmcoKTsKLSAgICBpZiAobV90YXNrRmxhZ3MgJiBXYXRjaGRvZ1RpbWVyQ29uZmlndXJhdGlv
blRhc2spCi0gICAgICAgIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIG1fdGFza0Zs
YWdzID0gTm9UYXNrOwotfQotCi1zaXplX3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZmluZChX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9jbGllbnRTdGF0
ZVtpXS0+Y29udGV4dElkID09IGNvbnRleHRJZCAmJiAmbV9jbGllbnRTdGF0ZVtpXS0+Y2xpZW50
ID09IGNsaWVudCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLQotICAgIHJldHVybiBu
b3RGb3VuZDsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYXRj
aGRvZ1RpbWVyKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRjaGRvZ1RpbWVySW50
ZXJ2YWxBZnRlclBhdXNpbmcgeyAxX2ggfTsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRj
aGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCB7IDhfbWluIH07Ci0KLSAgICBpZiAo
IW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkp
IHsKLSAgICAgICAgaWYgKG1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1l
ciIpOwotICAgICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKLSAgICAg
ICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYm9vbCBzdG9wVGltZXIgPSBmYWxzZTsKLSAgICBib29sIGRpZFBs
YXlUb0VuZCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7
Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7Ci0KLSAgICAg
ICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgICAgICBzdG9wVGltZXIgPSB0cnVlOwotICAg
ICAgICBpZiAoc3RhdGUtPnBsYXllZFRvRW5kKQotICAgICAgICAgICAgZGlkUGxheVRvRW5kID0g
dHJ1ZTsKLSAgICAgICAgc3RhdGUtPnBsYXllZFRvRW5kID0gZmFsc2U7Ci0gICAgfQotCi0gICAg
aWYgKHN0b3BUaW1lcikgewotICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sICJzdG9wcGluZyB0aW1lciIpOwotICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0lu
dGVydmFsID0geyB9OwotICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFNlY29uZHMgaW50ZXJ2YWwgPSBkaWRQbGF5VG9FbmQgPyB3YXRjaGRvZ1Rp
bWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCA6IHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVy
UGF1c2luZzsKLSAgICAgICAgaWYgKGludGVydmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2
YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBtX3dhdGNo
ZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJ0aW1lciBzY2hlZHVsZWQgZm9y
ICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vjb25kcyIpOwotICAgICAgICBtX2N1cnJlbnRXYXRj
aGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFy
Z2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwotICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLQotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrLmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IENsaWVudFN0YXRlOwotY2xhc3MgSW50UmVjdDsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkxv
Z2dlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQ7Ci0KLWNsYXNzIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKTsK
LXB1YmxpYzoKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBzaGFyZWQoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UmVjdCYsIGJvb2ws
IGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50U3RhdGVEaWRDaGFuZ2UoV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7Ci0KLSAg
ICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAg
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLSAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyKCk7Ci0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXImIHBsYXRmb3JtUGlja2VyKCkgPSAwOwotICAgIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBwbGF0Zm9ybU1hbmFnZXIoKTsKLQotcHJpdmF0ZToKLQotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXImIHRhcmdldFBpY2tlcigpOwotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBtb2NrUGlja2VyKCk7Ci0KLSAgICAvLyBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKLSAgICB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJl
ZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoKSBvdmVycmlkZTsKLQotICAg
IHNpemVfdCBmaW5kKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQqLCBQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKLQotICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tU
YXJnZXRDbGllbnRzKCk7Ci0gICAgdm9pZCBjb25maWd1cmVOZXdDbGllbnRzKCk7Ci0gICAgdm9p
ZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKLSAgICB2b2lkIGNvbmZpZ3Vy
ZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIGVudW0gQ29uZmlndXJhdGlvblRhc2tGbGFncyB7Ci0g
ICAgICAgIE5vVGFzayA9IDAsCi0gICAgICAgIEluaXRpYWxDb25maWd1cmF0aW9uVGFzayA9IDEg
PDwgMCwKLSAgICAgICAgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAxLAot
ICAgICAgICBUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDIsCi0gICAg
ICAgIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMywKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgQ29uZmlndXJhdGlvblRhc2tzOwotICAgIFN0cmluZyB0b1N0cmlu
ZyhDb25maWd1cmF0aW9uVGFza3MpOwotCi0gICAgdm9pZCBzY2hlZHVsZURlbGF5ZWRUYXNrKENv
bmZpZ3VyYXRpb25UYXNrcyk7Ci0gICAgdm9pZCB0YXNrVGltZXJGaXJlZCgpOwotCi0gICAgdm9p
ZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKLQotICAgIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgbG9n
Z2VyKCk7Ci0KLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Rh
c2tUaW1lcjsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3dh
dGNoZG9nVGltZXI7Ci0KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENsaWVudFN0YXRlPj4g
bV9jbGllbnRTdGF0ZTsKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFj
a1RhcmdldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2s+IG1fcGlja2VyT3ZlcnJpZGU7Ci0gICAgQ29uZmlndXJhdGlvblRhc2tzIG1f
dGFza0ZsYWdzIHsgTm9UYXNrIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lv
bkxvZ2dlcj4gbV9sb2dnZXI7Ci0gICAgU2Vjb25kcyBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFs
OwotICAgIGJvb2wgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX3RhcmdldENoYW5nZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wbGF5YmFja1Rh
cmdldFBpY2tlckRpc21pc3NlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21vY2tQaWNrZXJFbmFi
bGVkIHsgZmFsc2UgfTsKLX07Ci0KLVN0cmluZyBtZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBM
b2dBcmd1bWVudDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJu
IFdlYkNvcmU6Om1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhmbGFncyk7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlckNsaWVudC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlICJNZWRpYVBsYXli
YWNrVGFyZ2V0LmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNE
aXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIFBsYXRmb3JtVmlldyogcGxhdGZvcm1WaWV3KCkgY29uc3QgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9QbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkv
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIgorI2luY2x1ZGUgIldlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IFNlY29uZHMgdGFza0RlbGF5
SW50ZXJ2YWwgeyAxMDBfbXMgfTsKKworI2RlZmluZSBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIgbG9nZ2VyKCkubG9nQWx3YXlzCisKK3N0cnVjdCBDbGllbnRTdGF0ZSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZXhwbGljaXQgQ2xpZW50U3RhdGUo
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICAgICAgOiBjbGllbnQoY2xpZW50KQor
ICAgICAgICAsIGNvbnRleHRJZChjb250ZXh0SWQpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IgPT0gKENsaWVudFN0YXRlIGNvbnN0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb250ZXh0SWQgPT0gb3RoZXIuY29udGV4dElkICYmICZjbGllbnQgPT0gJm90
aGVyLmNsaWVudDsKKyAgICB9CisKKyAgICBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBj
bGllbnQ7CisgICAgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQ7CisgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIGZsYWdzIHsg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CisgICAgYm9vbCByZXF1ZXN0
ZWRQaWNrZXIgeyBmYWxzZSB9OworICAgIGJvb2wgcHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciB7
IGZhbHNlIH07CisgICAgYm9vbCBjb25maWd1cmF0aW9uUmVxdWlyZWQgeyB0cnVlIH07CisgICAg
Ym9vbCBwbGF5ZWRUb0VuZCB7IGZhbHNlIH07Cit9OworCitzdGF0aWMgYm9vbCBmbGFnc0FyZVNl
dChNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdmFsdWUsIHVuc2lnbmVkIGZsYWdzKQor
eworICAgIHJldHVybiB2YWx1ZSAmIGZsYWdzOworfQorCitTdHJpbmcgbWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBmbGFncykKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZzsKKyAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpJc1Bs
YXlpbmdBdWRpbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSXNQbGF5aW5nQXVkaW8rIik7Cisg
ICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pCisgICAgICAgIHN0
cmluZy5hcHBlbmQoIklzUGxheWluZ1ZpZGVvKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJv
ZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpCisgICAgICAgIHN0cmluZy5hcHBlbmQo
IklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UrIik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9k
dWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcikKKyAgICAgICAgc3Ry
aW5nLmFwcGVuZCgiSGFzVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIrIik7CisgICAgaWYgKGZs
YWdzICYgTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpCisg
ICAgICAgIHN0cmluZy5hcHBlbmQoIlJlcXVpcmVzVGFyZ2V0TW9uaXRvcmluZysiKTsKKyAgICBp
ZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KQorICAgICAgICBzdHJpbmcuYXBwZW5kKCJFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OkRpZFBsYXlUb0VuZCkKKyAgICAg
ICAgc3RyaW5nLmFwcGVuZCgiRGlkUGxheVRvRW5kKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlh
UHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFzQXVk
aW9PclZpZGVvKyIpOworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc05vdFBsYXlpbmciKTsKKyAgICBlbHNlCisgICAgICAgIHN0cmluZy5yZXNpemUo
c3RyaW5nLmxlbmd0aCgpIC0gMSk7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZygiIHsgIiwgc3Ry
aW5nLnRvU3RyaW5nKCksICIgfSIpOworfQorCitjbGFzcyBXZWJNZWRpYVNlc3Npb25Mb2dnZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcik7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4gY3JlYXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXImIG1hbmFnZXIpCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVNl
c3Npb25Mb2dnZXI+KG1hbmFnZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgQ2xpZW50U3RhdGUqIHN0YXRlLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICghc3RhdGUtPmNsaWVudC5hbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9sb2dnZXItPmxvZ0Fs
d2F5cyhMb2dNZWRpYSwgbWFrZVN0cmluZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0
aG9kTmFtZSwgJyAnKSwgc3RhdGUtPmNvbnRleHRJZC50b1VJbnQ2NCgpLCBzdGF0ZS0+ZmxhZ3Ms
IGFyZ3VtZW50cy4uLik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIGlubGluZSB2b2lkIGxvZ0Fsd2F5cyhjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBj
b25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgh
bV9tYW5hZ2VyLmFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX2xvZ2dlci0+bG9nQWx3YXlzKExvZ01lZGlhLCBtYWtlU3RyaW5nKCJXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjoiLCBtZXRob2ROYW1lLCAnICcpLCBhcmd1bWVudHMuLi4pOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vz
c2lvbkxvZ2dlcj4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXImKTsKKyAgICBXZWJNZWRpYVNlc3Npb25Mb2dnZXIoV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAg
ICAgICAgLCBtX2xvZ2dlcihMb2dnZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICB7CisgICAgfQorCisg
ICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbV9tYW5hZ2VyOworICAgIFJlZjxMb2dnZXI+IG1f
bG9nZ2VyOworfTsKKworV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpsb2dnZXIoKQoreworICAgIGlmICghbV9sb2dnZXIpCisgICAgICAgIG1fbG9nZ2VyID0g
V2ViTWVkaWFTZXNzaW9uTG9nZ2VyOjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuICptX2xv
Z2dlcjsKK30KKworYm9vbCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWxsT2YobV9jbGllbnRTdGF0ZSwgW10gKGF1
dG8mIHN0YXRlKSB7CisgICAgICAgIHJldHVybiBzdGF0ZS0+Y2xpZW50LmFsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQorewor
ICAgIGlmIChtX21vY2tQaWNrZXJFbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbV9t
b2NrUGlja2VyRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1vY2tQaWNrZXIo
KS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQoreworICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbW9ja1BpY2tlcigp
LmRpc21pc3NQb3B1cCgpOworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tlcigpCit7CisgICAgaWYgKCFtX3BpY2tlck92
ZXJyaWRlKQorICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOworCisgICAgcmV0dXJuICptX3BpY2tlck92ZXJy
aWRlLmdldCgpOworfQorCitXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXJnZXRQaWNrZXIoKQoreworICAgIGlmIChtX21vY2tQaWNr
ZXJFbmFibGVkKQorICAgICAgICByZXR1cm4gbW9ja1BpY2tlcigpOworCisgICAgcmV0dXJuIHBs
YXRmb3JtUGlja2VyKCk7Cit9CisKK1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIoKQorICAgIDogbV90YXNrVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVyRmlyZWQpCisgICAgLCBtX3dhdGNo
ZG9nVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKQoreworfQorCitXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcigpID0gZGVmYXVsdDsKKworUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
PT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgY29u
dGV4dElkLnRvVUludDY0KCkpOworICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8
Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CisKKyAgICBpZiAobV9leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0KQorICAgICAgICBzY2hlZHVs
ZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7CisKKyAgICByZXR1cm4gY29udGV4dElkOworfQorCit2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xp
ZW50LCBjb250ZXh0SWQpOworICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsK
KworICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGluZGV4KTsKKyAgICBzY2hlZHVsZURlbGF5ZWRU
YXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
QWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGll
bnQmIGNsaWVudCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0YXRlLnNpemUoKTsgaSA+
IDA7IC0taSkgeworICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAtIDFdLT5jbGllbnQgPT0g
JmNsaWVudCkgeworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBtX2NsaWVu
dFN0YXRlLnJlbW92ZShpIC0gMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGll
bnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBib29sLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
IT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byYgY2xpZW50UmVxdWVzdGluZ1BpY2tlciA9IG1fY2xpZW50U3RhdGVbaW5k
ZXhdOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIHN0
YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwor
ICAgICAgICBzdGF0ZS0+cHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVu
dFJlcXVlc3RpbmdQaWNrZXI7CisgICAgfQorCisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisKKyAgICBib29s
IGhhc0FjdGl2ZVJvdXRlID0gZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVtpbmRleF0tPmZsYWdz
LCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKTsKKyAgICB0YXJnZXRQ
aWNrZXIoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY2xpZW50LnBsYXRmb3JtVmlldygpLCBG
bG9hdFJlY3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7Cit9CisK
K3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5l
d0ZsYWdzKQoreworICAgIHNpemVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsK
KyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY2hhbmdlZENsaWVudFN0YXRlID0gbV9j
bGllbnRTdGF0ZVtpbmRleF07CisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9s
ZEZsYWdzID0gY2hhbmdlZENsaWVudFN0YXRlLT5mbGFnczsKKyAgICBpZiAobmV3RmxhZ3MgPT0g
b2xkRmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCksICJuZXcgZmxhZ3Mg
PSAiLCBuZXdGbGFncyk7CisKKyAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPmZsYWdzID0gbmV3Rmxh
Z3M7CisKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdXBkYXRlQ29uZmlndXJh
dGlvbkZsYWdzID0gTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3Jp
bmcgfCBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
IHwgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVvOworICAgIGlmICgob2xkRmxhZ3MgJiB1
cGRhdGVDb25maWd1cmF0aW9uRmxhZ3MpICE9IChuZXdGbGFncyAmIHVwZGF0ZUNvbmZpZ3VyYXRp
b25GbGFncykpCisgICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0Nv
bmZpZ3VyYXRpb25UYXNrKTsKKworICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBw
bGF5aW5nVG9UYXJnZXRGbGFncyA9IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxE
ZXZpY2UgfCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbzsKKyAgICBpZiAoKG9sZEZsYWdz
ICYgcGxheWluZ1RvVGFyZ2V0RmxhZ3MpICE9IChuZXdGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZs
YWdzKSkgeworICAgICAgICBpZiAoZmxhZ3NBcmVTZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiAhZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiBmbGFnc0FyZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6
RGlkUGxheVRvRW5kKSkKKyAgICAgICAgICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+cGxheWVkVG9F
bmQgPSB0cnVlOworICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFdhdGNoZG9nVGltZXJDb25m
aWd1cmF0aW9uVGFzayk7CisgICAgfQorCisgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFt
X3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpIHx8ICFmbGFnc0FyZVNldChuZXdGbGFn
cywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIERvIG5vdCBpbnRlcnJ1cHQgYW5vdGhlciBlbGVtZW50IGFs
cmVhZHkgcGxheWluZyB0byBhIGRldmljZS4KKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGll
bnRTdGF0ZSkgeworICAgICAgICBpZiAoc3RhdGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVT
ZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKKyAgICAg
ICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0
KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0byB0aGUgZGV2aWNlIHVubGVz
cyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgorICAgIGlmICghZmxhZ3NBcmVTZXQobmV3Rmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBmbGFnc0FyZVNldChvbGRGbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInJldHVybmluZyBlYXJseSwgcGxheWJhY2sg
ZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAo
YXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIGlmIChzdGF0ZSA9PSBjaGFu
Z2VkQ2xpZW50U3RhdGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAgICAgICBzdGF0ZS0+Y2xp
ZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNl
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHRydWUpIik7CisgICAgY2hhbmdlZENsaWVudFN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY2hhbmdlZENsaWVudFN0YXRlLT5jb250ZXh0SWQsIHRy
dWUpOworCisgICAgaWYgKGluZGV4ICYmIG1fY2xpZW50U3RhdGUuc2l6ZSgpID4gMSkKKyAgICAg
ICAgc3RkOjpzd2FwKG1fY2xpZW50U3RhdGUuYXQoaW5kZXgpLCBtX2NsaWVudFN0YXRlLmF0KDAp
KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5YmFja1RhcmdldChS
ZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCit7CisgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+
aGFzQWN0aXZlUm91dGUoKSk7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0
KTsKKyAgICBtX3RhcmdldENoYW5nZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2so
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2
YWlsYWJsZSkKK3sKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGF2YWlsYWJsZSk7CisgICAgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGF2YWls
YWJsZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkKKyAgICAgICAgc3Rh
dGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShzdGF0ZS0+
Y29udGV4dElkLCBhdmFpbGFibGUpOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKCkKK3sKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJE
aXNtaXNzZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0Nv
bmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25m
aWd1cmVOZXdDbGllbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0
ZSkgeworICAgICAgICBpZiAoIXN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0g
ZmFsc2U7CisgICAgICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAg
ICAgICAgICAgc3RhdGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShzdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKKworICAgICAgICBpZiAobV9wbGF5YmFja1Rh
cmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRz
KCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IG5vdEZvdW5kOwor
ICAgIGJvb2wgaGF2ZUFjdGl2ZVJvdXRlID0gbV9wbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNr
VGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGll
bnRTdGF0ZVtpXTsKKworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sIHN0YXRlLmdldCgpLCAiLCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVz
dGVkUGlja2VyKTsKKworICAgICAgICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc2VkKSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQorICAgICAg
ICAgICAgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOworCisgICAgICAgIGlm
IChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBmbGFnc0FyZVNl
dChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2Up
KQorICAgICAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpOworCisgICAg
ICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBoYXZl
QWN0aXZlUm91dGUgJiYgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAg
ICAgICBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IGk7CisgICAgfQorCisgICAg
aWYgKGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyICE9IG5vdEZvdW5kKQorICAgICAg
ICBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IGluZGV4T2ZDbGllbnRUaGF0UmVxdWVz
dGVkUGlja2VyOworICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RG
b3VuZCAmJiBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciAhPSBub3RGb3VuZCkKKyAg
ICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mTGFzdENsaWVudFRv
UmVxdWVzdFBpY2tlcjsKKyAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0g
bm90Rm91bmQgJiYgaGF2ZUFjdGl2ZVJvdXRlICYmIGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVb
MF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KSAmJiAhZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVswXS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSkKKyAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PSAwOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpXTsKKworICAgICAg
ICBpZiAobV9wbGF5YmFja1RhcmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxh
eWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigp
KTsKKworICAgICAgICBpZiAoaSAhPSBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCB8fCAh
aGF2ZUFjdGl2ZVJvdXRlKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoZmFsc2UpIik7CisgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzdGF0ZS0+cmVxdWVzdGVkUGlja2VyICYmIG1fcGxheWJhY2tUYXJn
ZXRQaWNrZXJEaXNtaXNzZWQpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBp
Y2tlcldhc0Rpc21pc3NlZCIpOworICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5wbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChzdGF0ZS0+Y29udGV4dElkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQgPSBmYWxzZTsKKyAgICAgICAgaWYg
KG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKQorICAg
ICAgICAgICAgc3RhdGUtPnJlcXVlc3RlZFBpY2tlciA9IGZhbHNlOworICAgIH0KKworICAgIGlm
IChoYXZlQWN0aXZlUm91dGUgJiYgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0YXRlW2luZGV4T2ZDbGll
bnRXaWxsUGxheVRvVGFyZ2V0XTsKKyAgICAgICAgaWYgKCFmbGFnc0FyZVNldChzdGF0ZS0+Zmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpKSB7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKKyAgICAg
ICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3RhcmdldENoYW5n
ZWQgPSBmYWxzZTsKKyAgICBjb25maWd1cmVXYXRjaGRvZ1RpbWVyKCk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCkK
K3sKKyAgICBib29sIG1vbml0b3JpbmdSZXF1aXJlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQXZh
aWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsKKyAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEg
PSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpKTsK
KyAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJh
Y2tUYXJnZXRNb25pdG9yaW5nKSB7CisgICAgICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlLT5m
bGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVu
ZXIpCisgICAgICAgICAgICBoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciA9IHRydWU7CisgICAgICAg
IGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCisgICAg
ICAgICAgICBoYXZlQ2xpZW50V2l0aE1lZGlhID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobW9u
aXRvcmluZ1JlcXVpcmVkIHx8IChoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciAmJiBoYXZlQ2xpZW50
V2l0aE1lZGlhKSkgeworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sICJzdGFydGluZyBtb25pdG9yaW5nIik7CisgICAgICAgIHRhcmdldFBpY2tlcigpLnN0
YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIG1vbml0
b3JpbmciKTsKKyAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1
bGVEZWxheWVkVGFzayhDb25maWd1cmF0aW9uVGFza3MgdGFza3MpCit7CisgICAgbV90YXNrRmxh
Z3MgfD0gdGFza3M7CisgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90KHRhc2tEZWxheUludGVy
dmFsKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXNrVGltZXJGaXJlZCgp
Cit7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrKQorICAg
ICAgICBjb25maWd1cmVOZXdDbGllbnRzKCk7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKQorICAgICAgICBjb25maWd1cmVQbGF5YmFja1Rhcmdl
dENsaWVudHMoKTsKKyAgICBpZiAobV90YXNrRmxhZ3MgJiBUYXJnZXRNb25pdG9yaW5nQ29uZmln
dXJhdGlvblRhc2spCisgICAgICAgIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygp
OworICAgIGlmIChtX3Rhc2tGbGFncyAmIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzaykK
KyAgICAgICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAgbV90YXNrRmxhZ3MgPSBO
b1Rhc2s7Cit9CisKK3NpemVfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpmaW5kKFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Ns
aWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2NsaWVudFN0YXRlW2ldLT5j
b250ZXh0SWQgPT0gY29udGV4dElkICYmICZtX2NsaWVudFN0YXRlW2ldLT5jbGllbnQgPT0gY2xp
ZW50KQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcmV0dXJuIG5vdEZvdW5k
OworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhdGNoZG9nVGlt
ZXIoKQoreworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGltZXJJbnRlcnZhbEFm
dGVyUGF1c2luZyB7IDFfaCB9OworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGlt
ZXJJbnRlcnZhbEFmdGVyUGxheWluZ1RvRW5kIHsgOF9taW4gfTsKKworICAgIGlmICghbV9wbGF5
YmFja1RhcmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkgeworICAg
ICAgICBpZiAobV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIEFMV0FZ
U19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVyIik7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OworICAgICAgICAgICAg
bV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBib29sIHN0b3BUaW1lciA9IGZhbHNlOworICAgIGJvb2wgZGlkUGxheVRvRW5k
ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKKworICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIHBsYXllZFRvRW5kID0gIiwgc3RhdGUtPnBsYXllZFRvRW5kKTsKKworICAgICAgICBpZiAo
ZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVy
bmFsRGV2aWNlKSAmJiBmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ1ZpZGVvKSkKKyAgICAgICAgICAgIHN0b3BUaW1lciA9IHRydWU7CisgICAgICAgIGlm
IChzdGF0ZS0+cGxheWVkVG9FbmQpCisgICAgICAgICAgICBkaWRQbGF5VG9FbmQgPSB0cnVlOwor
ICAgICAgICBzdGF0ZS0+cGxheWVkVG9FbmQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3Rv
cFRpbWVyKSB7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
XywgInN0b3BwaW5nIHRpbWVyIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwg
PSB7IH07CisgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgU2Vjb25kcyBpbnRlcnZhbCA9IGRpZFBsYXlUb0VuZCA/IHdhdGNoZG9nVGltZXJJbnRl
cnZhbEFmdGVyUGxheWluZ1RvRW5kIDogd2F0Y2hkb2dUaW1lckludGVydmFsQWZ0ZXJQYXVzaW5n
OworICAgICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAh
bV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1l
ci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOworICAgICAgICB9CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50
ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50
ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXyk7CisgICAgdGFyZ2V0UGlja2VyKCkuaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKKyNpbmNs
dWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVk
ZSAiUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2xpZW50U3RhdGU7CitjbGFzcyBJ
bnRSZWN0OworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyOworY2xhc3MgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIpOworcHVibGljOgorCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZCgpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQo
Ym9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciBhZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVB
bGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBJbnRSZWN0JiwgYm9vbCwgYm9vbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGllbnRTdGF0ZURpZENoYW5nZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50
JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKworICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcigp
OworICAgIHZpcnR1YWwgfldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKKworICAgIHZpcnR1YWwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgcGxhdGZvcm1QaWNrZXIoKSA9IDA7
CisgICAgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHBsYXRmb3JtTWFuYWdlcigpOwor
Citwcml2YXRlOgorCisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgdGFy
Z2V0UGlja2VyKCk7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2sm
IG1vY2tQaWNrZXIoKTsKKworICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVu
dAorICAgIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCgpIG92ZXJyaWRlOworCisgICAgc2l6ZV90IGZpbmQoV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudCosIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIp
OworCisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldENsaWVudHMoKTsKKyAgICB2b2lk
IGNvbmZpZ3VyZU5ld0NsaWVudHMoKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
TW9uaXRvcmluZygpOworICAgIHZvaWQgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAg
ZW51bSBDb25maWd1cmF0aW9uVGFza0ZsYWdzIHsKKyAgICAgICAgTm9UYXNrID0gMCwKKyAgICAg
ICAgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAwLAorICAgICAgICBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDEsCisgICAgICAgIFRhcmdldE1vbml0b3JpbmdD
b25maWd1cmF0aW9uVGFzayA9IDEgPDwgMiwKKyAgICAgICAgV2F0Y2hkb2dUaW1lckNvbmZpZ3Vy
YXRpb25UYXNrID0gMSA8PCAzLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBDb25maWd1
cmF0aW9uVGFza3M7CisgICAgU3RyaW5nIHRvU3RyaW5nKENvbmZpZ3VyYXRpb25UYXNrcyk7CisK
KyAgICB2b2lkIHNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzKTsKKyAgICB2
b2lkIHRhc2tUaW1lckZpcmVkKCk7CisKKyAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwor
CisgICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBsb2dnZXIoKTsKKworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fdGFza1RpbWVyOworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fd2F0Y2hkb2dUaW1lcjsKKworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50U3RhdGU+PiBtX2NsaWVudFN0YXRlOworICAgIFJlZlB0
cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4gbV9waWNrZXJPdmVy
cmlkZTsKKyAgICBDb25maWd1cmF0aW9uVGFza3MgbV90YXNrRmxhZ3MgeyBOb1Rhc2sgfTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBT
ZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CisgICAgYm9vbCBtX2V4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGFyZ2V0Q2hhbmdlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fbW9ja1BpY2tlckVuYWJsZWQgeyBmYWxzZSB9OworfTsKKworU3Ry
aW5nIG1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3M+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBmbGFncykgeyByZXR1cm4gV2ViQ29yZTo6bWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKGZsYWdzKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJw
bGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1
ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVkZSAiUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1WaWV3KiBwbGF0Zm9ybVZpZXcoKSBj
b25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCShyZXZpc2lvbiAyNjc3
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKICNpbmNsdWRlICJBdWRpb1dvcmtsZXROb2RlLmgiCiAKKyNpbmNsdWRlICJBdWRpb0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIuCiAjaW5jbHVkZSAiQXVkaW9QYXJh
bU1hcC5oIgogI2luY2x1ZGUgIkF1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgiCiAjaW5jbHVkZSAi
QmFzZUF1ZGlvQ29udGV4dC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC00MTAwLDE4ICs0MTAwLDggQEAKIAkJQzZGMDkwMEExNDMyN0I2MTAwNjg1ODQ5IC8qIE11dGF0
aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM2RjA5MDAxMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbkNhbGxiYWNrLmggKi87IH07
CiAJCUM2RjA5MDBGMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbk9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOTAwNjE0MzI3QjYx
MDA2ODU4NDkgLyogTXV0YXRpb25PYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM2RjA5MDJEMTQzMjdENEYwMDY4NTg0OSAvKiBKU011
dGF0aW9uT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM2RjA5MDI1MTQzMjdENEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuaCAq
LzsgfTsKLQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwMjdGNDAxQjFEMEFE
MjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovOyB9OwotCQlDOTA4NDNEMDFCMThFNDdEMDBC
Njg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzkwODQzQ0UxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVt
b3RlQ29udHJvbHMuaCAqLzsgfTsKLQkJQzkwRjY1NTUxQjIyNTNCMTAwMjE2M0ExIC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzkwRjY1NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwICovOyB9OwotCQlDOTBGNjU1NjFCMjI1M0JFMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzkw
RjY1NTQxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLzsgfTsKLQkJ
QzkzN0ZFOEQxQjFGNjgyMTAwOEVDQzVEIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5NjhCMkU2
MUIxRTcyRjcwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmggKi87IH07
Ci0JCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzk2RjVFQzExQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyTWFjLmggKi87IH07Ci0JCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDOTZGNUVDMzFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwICovOyB9OwotCQlDOTZGNUVDODFCNTg3MjI2MDA5
MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5NkY1RUM0MUI1ODcyMjYwMDkxRUE5
RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oICovOyB9OwogCQlDOTkwNTgx
MzFFMzJDNzVGMDA3M0JEREEgLyogU3VjY2Vzc09yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vz
c09yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzlENDY3MDUxRTYwQzQ2NTAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5RDQ2NzA0MUU2MEMzRUIwMDgxOTVG
QiAvKiBBdXRvcGxheUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vzc2lvbk1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OUQ4NTFFRTFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDOUY4N0NGRTFCMjhG
NDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUY4N0NGRDFCMjhFNUY2MDA5NzlCODMgLyogTWVk
aWFTZXNzaW9uRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTNCRjY3RDEw
RDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQTZDMTUzMDIyMEI5OENDMDA1NUNCRkMgLyog
SlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTMxQUUzQjgxRkI4MEVBRTAwRjVFRkIyIC8qIEpTVmFsdWVJbldyYXBw
ZWRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDQTdFOUI0OTI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E3RTlCNDcy
NDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCAqLzsgfTsKQEAgLTE0
MjAyLDI5ICsxNDE5Miw4IEBACiAJCUM2RjA5MDI0MTQzMjdENEYwMDY4NTg0OSAvKiBKU011dGF0
aW9uT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
dXRhdGlvbk9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGMDkw
MjUxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU011dGF0aW9uT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzZGMDkxN0UxNDNBMkJCOTAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OTAyNkI2MzFCMUNGNUFCMDAxRDk5QTcgLyogSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFSZW1vdGVDb250cm9scy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI2QjY0MUIxQ0Y1QUIwMDFEOTlB
NyAvKiBKU01lZGlhUmVtb3RlQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1l
ZGlhU2Vzc2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDI3RjNGMUIx
RDBBRDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzkwODQzQ0QxQjE4RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29u
dHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFSZW1v
dGVDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MDg0M0NFMUIx
OEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzkwRjY1NTMxQjIyNTM5NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5MEY2NTU0MUIyMjUz
OTYwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzkzNDU4QkIxQjE4RDc3RTAwODhFRTEyIC8qIE1lZGlhUmVtb3RlQ29udHJvbHMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhUmVtb3RlQ29udHJvbHMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTY4QjJFNTFCMUU3MDQ1MDBFRjFGODEgLyogSFRN
TE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MTWVkaWFFbGVtZW50K01l
ZGlhU2Vzc2lvbi5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOTY4QjJFNjFC
MUU3MkY3MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUM5NjhCMkU3MUIxRTc3ODEwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50
TWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhU
TUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDOTZGNUVDMTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzk2RjVFQzIxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUM5NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUM5NkY1RUM0MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN1Y2Nlc3NPci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUQ0NjcwNDFFNjBD
M0VCMDA4MTk1RkIgLyogQXV0b3BsYXlFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvcGxheUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5RDg1MUVFMUIzOURDNzgwMDg1
MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNlc3Npb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOURBREJDQTFCMUQzQjI1MDAxRjE3RDggLyogSlNN
ZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVNl
c3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlGODdDRkQxQjI4RTVGNjAw
OTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lv
bkV2ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4NjIzQ0Y5MDc4
MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUlt
YWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4
ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVJbWFnZVNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTE2MzVEQzIwNzJFNzY5MDBFN0Qy
Q0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTY3NDAsMzAgKzE2NzA5LDYgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsK
IAkJfTsKLQkJMDcwOUQ3OEIxQUU1NTUyRTAwNEU0MkY4IC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsK
LQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzk2OEIyRTUxQjFFNzA0
NTAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbCAqLywKLQkJCQlD
OTY4QjJFNzFCMUU3NzgxMDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5j
cHAgKi8sCi0JCQkJQzk2OEIyRTYxQjFFNzJGNzAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRN
ZWRpYVNlc3Npb24uaCAqLywKLQkJCQlDOTA4NDNDRDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFS
ZW1vdGVDb250cm9scy5jcHAgKi8sCi0JCQkJQzkwODQzQ0UxQjE4RTQ3RDAwQjY4NTY0IC8qIE1l
ZGlhUmVtb3RlQ29udHJvbHMuaCAqLywKLQkJCQlDOTM0NThCQjFCMThENzdFMDA4OEVFMTIgLyog
TWVkaWFSZW1vdGVDb250cm9scy5pZGwgKi8sCi0JCQkJQzkwMjdGM0YxQjFEMEFEMjAwQkZCRkVG
IC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi8sCi0JCQkJQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8q
IE1lZGlhU2Vzc2lvbi5oICovLAotCQkJCUM5MDI3RjNFMUIxRDBBQjkwMEJGQkZFRiAvKiBNZWRp
YVNlc3Npb24uaWRsICovLAotCQkJCUM5Rjg3Q0ZEMUIyOEU1RjYwMDk3OUI4MyAvKiBNZWRpYVNl
c3Npb25FdmVudHMuaCAqLywKLQkJCQlDOTBGNjU1MzFCMjI1Mzk2MDAyMTYzQTEgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAgKi8sCi0JCQkJQzkwRjY1NTQxQjIyNTM5NjAwMjE2M0ExIC8qIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywKLQkJCQlDOUQ4NTFFRTFCMzlEQzc4MDA4NTA2MkUgLyog
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLywKLQkJCQk0NDZEQzY0NjI0QTI5RDlCMDA2MUYzOTAg
LyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAotCQkJCTA3MDlE
NzhDMUFFNTU1NTQwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKLQkJ
CQkwNzA5RDc4RDFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oICov
LAotCQkJCTA3MDlENzk0MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Q2xpZW50LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBtZWRp
YXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0y
MzMyOSw3ICsyMzI3NCw2IEBACiAJCQkJQ0RCRDNEMjcxRkU4NUM5MjAwMTJDNTQ1IC8qIG1lZGlh
Y2FwYWJpbGl0aWVzICovLAogCQkJCUNEOUEzN0Y1MTdDN0Q5MzYwMEM1RkE3QSAvKiBtZWRpYWNv
bnRyb2xzICovLAogCQkJCTREM0IwMEEwMjE1RDVDMEYwMDc2Qjk4MyAvKiBtZWRpYXJlY29yZGVy
ICovLAotCQkJCTA3MDlENzhCMUFFNTU1MkUwMDRFNDJGOCAvKiBtZWRpYXNlc3Npb24gKi8sCiAJ
CQkJQjFBOTQyREQxNUI1Q0UyMjAwRDUyNUQxIC8qIG1lZGlhc291cmNlICovLAogCQkJCTA3MjIx
QjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLywKIAkJCQk3MUQ2QUEzOTFEQTRF
QUY3MDBCMjM5NjkgLyogbW9kZXJuLW1lZGlhLWNvbnRyb2xzICovLApAQCAtMjQ0MTYsMTAgKzI0
MzYwLDYgQEAKIAkJCQkyRDlCRjcxMTFEQkZEOTE0MDA3QTdEOTkgLyogSlNNZWRpYUVuY3J5cHRl
ZEV2ZW50LmggKi8sCiAJCQkJRTQ0NjE0MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJv
ci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5o
ICovLAotCQkJCUM5MDI2QjYzMUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3RlQ29udHJv
bHMuY3BwICovLAotCQkJCUM5MDI2QjY0MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3Rl
Q29udHJvbHMuaCAqLywKLQkJCQlDOURBREJDOTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNl
c3Npb24uY3BwICovLAotCQkJCUM5REFEQkNBMUIxRDNCMjUwMDFGMTdEOCAvKiBKU01lZGlhU2Vz
c2lvbi5oICovLAogCQkJCTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJ
bmRleFVpbnQuY3BwICovLAogCQkJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0Vs
ZW1lbnRJbmRleFVpbnQuaCAqLywKIAkJCQk5MDAxNzg3RTEyRTAzNzA3MDA2NDg0NjIgLyogSlNP
RVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCAqLywKQEAgLTI2OTQ3LDcgKzI2ODg3LDYgQEAKIAkJ
CQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICovLAogCQkJCTlBQzZGMDIwMjExNDhG
MUUwMENCREEwNiAvKiBtZWRpYWNhcGFiaWxpdGllcyAqLywKIAkJCQk0RDNCNTAxMjIxN0U1OEEz
MDA2NjVEQjEgLyogbWVkaWFyZWNvcmRlciAqLywKLQkJCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVB
OUQgLyogbWVkaWFzZXNzaW9uICovLAogCQkJCTA3MjIxQjkyMTdDRjBBRDQwMDg0OEU1MSAvKiBt
ZWRpYXN0cmVhbSAqLywKIAkJCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyogbW9jayAqLywK
IAkJCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0d29yayAqLywKQEAgLTI3MjUwLDI1
ICsyNzE4OSw2IEBACiAJCQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OwotCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9uICovID0g
ewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDOTZGNUVDMDFCNTg3
MjI2MDA5MUVBOUQgLyogbWFjICovLAotCQkJCUM5NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi8sCi0JCQkJQzk2RjVFQzQxQjU4
NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggKi8sCi0J
CQkpOwotCQkJcGF0aCA9IG1lZGlhc2Vzc2lvbjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
Ci0JCX07Ci0JCUM5NkY1RUMwMUI1ODcyMjYwMDkxRUE5RCAvKiBtYWMgKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUM5NkY1RUMxMUI1ODcyMjYwMDkxRUE5
RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oICovLAotCQkJCUM5NkY1
RUMyMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1h
Yy5tbSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gbWFjOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI3NjQ5LDkgKzI3NTY5LDEzIEBA
CiAJCUNFMjYxNjlEMTg3RTY1NTQwMDc5NTVGMyAvKiBhaXJwbGF5ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NDZEQzY0NjI0QTI5RDlCMDA2MUYzOTAg
LyogUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovLAogCQkJCUE1REVC
RDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50LmNwcCAqLywKIAkJCQlBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovLAogCQkJCUE1REVCREExMTZGQjkwODcwMDgz
NkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbCAqLywKKwkJ
CQkwNzA5RDc4QzFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAg
Ki8sCisJCQkJMDcwOUQ3OEQxQUU1NTU1NDAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaCAqLywKKwkJCQkwNzA5RDc5NDFBRTU1QTI5MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9u
TWFuYWdlckNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhaXJwbGF5OwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxNjU0LDcgKzMxNTc4LDYgQEAKIAkJCQlBOEVBN0NBQjBB
MTkyQjlDMDBBOEVGNUYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDQ2MTNBNTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0Q1MjA5RTYxQjBCRDlFMTAwNzcxODRFIC8qIEhUTUxNZWRpYUVsZW1lbnRF
bnVtcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzkzN0ZFOEQxQjFGNjgyMTAwOEVDQzVEIC8qIEhU
TUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzMxMkVB
MjJGQ0Q3QzYwMDEyMDRFQyAvKiBIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxheWJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RUE3OUY0MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MTWVudUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJGMzFFMDc1MUZBM0I2MkIwMEUwNTlCQSAvKiBIVE1M
TWVudUl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzMDAwLDIzICszMjkyMywxNiBA
QAogCQkJCTQxNEI3RkFEMjREODFDQzEwMDMzRDQ0MiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRENzNGOTRFMjE4QzRBODcwMDNBM0VENiAvKiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTc2
RTg5NjIzQzM1MzdCMDAzRTgzRkUgLyogTWVkaWFSZWNvcmRlclByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9s
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlFIC8qIE1lZGlh
UmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRUZDRDdBMTlEQjMxRjcwMDM4
NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQkY5REIz
QzFEMzk3M0FEMDAyNkFFQjcgLyogTWVkaWFTYW1wbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFC
MTI0RDhEMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8q
IE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTAyN0Y0MjFCMUQw
QUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUY4N0NG
RTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNz
aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzk2RjVFQzgxQjU4NzIyNjAwOTFF
QTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5MEY2NTU2MUIyMjUzQkUwMDIxNjNB
MSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTdGN0FFRjIx
MzlCRjZGMDBGQkE3RUMgLyogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3QTlEMDFCMDAy
NzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQxRUIzMTgxOEY1
RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
QzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggaW4g
SGVhZGVycyAqLywKQEAgLTM1MjQyLDggKzM1MTU4LDYgQEAKIAkJCQkxQjEyNEQ4RjFEMzgwQkI2
MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RC
RUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lv
bkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5
RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2
RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24g
MjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjk4LDEwICsyOTgsNiBAQAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjZW5kaWYK
IAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgot
I2VuZGlmCi0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNl
bmRpZgpAQCAtNDE4NSwyMiArNDE4MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWlu
Z01lZGlhKHVpbnQKICAgICBzdGF0ZSB8PSBNZWRpYVN0cmVhbVRyYWNrOjpjYXB0dXJlU3RhdGUo
KnRoaXMpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBpZiAoSFRN
TE1lZGlhRWxlbWVudCogc291cmNlRWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6OmVsZW1lbnRX
aXRoSUQoc291cmNlRWxlbWVudElEKSkgewotICAgICAgICBpZiAoc291cmNlRWxlbWVudC0+aXNQ
bGF5aW5nKCkpCi0gICAgICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpJc1NvdXJjZUVs
ZW1lbnRQbGF5aW5nOwotCi0gICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc291cmNlRWxlbWVu
dC0+c2Vzc2lvbigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogY29udHJvbHMgPSBzZXNzaW9u
LT5jb250cm9scygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzLT5wcmV2aW91c1Ry
YWNrRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2Vy
OjpJc1ByZXZpb3VzVHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAgICAgICAgICAgICBpZiAoY29u
dHJvbHMtPm5leHRUcmFja0VuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgfD0g
TWVkaWFQcm9kdWNlcjo6SXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKG1fdXNlckhhc0ludGVyYWN0ZWRX
aXRoTWVkaWFFbGVtZW50KQogICAgICAgICBzdGF0ZSB8PSBNZWRpYVByb2R1Y2VyOjpIYXNVc2Vy
SW50ZXJhY3RlZFdpdGhNZWRpYUVsZW1lbnQ7CiAKQEAgLTc0NjksMTcgKzc0NDksNiBAQCB2b2lk
IERvY3VtZW50OjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0RpCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0K
LU1lZGlhU2Vzc2lvbiYgRG9jdW1lbnQ6OmRlZmF1bHRNZWRpYVNlc3Npb24oKQotewotICAgIGlm
ICghbV9kZWZhdWx0TWVkaWFTZXNzaW9uKQotICAgICAgICBtX2RlZmF1bHRNZWRpYVNlc3Npb24g
PSBNZWRpYVNlc3Npb246OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBy
ZXR1cm4gKm1fZGVmYXVsdE1lZGlhU2Vzc2lvbjsKLX0KLQotI2VuZGlmCi0KIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnQ6OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IGxvYWRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI2Nzc5
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzcsNyArMTc3LDYgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhUGxh
eWJhY2tUYXJnZXRDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNzIE1lZGlhUXVl
cnlNYXRjaGVyOwotY2xhc3MgTWVkaWFTZXNzaW9uOwogY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3MgTm9k
ZUZpbHRlcjsKQEAgLTEwOTcsMTAgKzEwOTYsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCB2aWRlb1Bs
YXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpIGNvbnN0OwogICAgIGJvb2wgbWVkaWFEYXRhTG9h
ZHNBdXRvbWF0aWNhbGx5KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAg
ICBNZWRpYVNlc3Npb24mIGRlZmF1bHRNZWRpYVNlc3Npb24oKTsKLSNlbmRpZgotCiAgICAgdm9p
ZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZShQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2
b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CkBAIC0xOTUyLDEwICsxOTQ3LDYg
QEAgcHJpdmF0ZToKICAgICBUYXJnZXRDbGllbnRUb0lkTWFwIG1fY2xpZW50VG9JRE1hcDsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgUmVmUHRyPE1lZGlhU2Vzc2lv
bj4gbV9kZWZhdWx0TWVkaWFTZXNzaW9uOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk+IG1faWRi
Q29ubmVjdGlvblByb3h5OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXRGYWN0b3J5LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAgTWVk
aWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYURldmljZXMgY29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNCiBNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElB
CiBNZWRpYVF1ZXJ5TGlzdAotTWVkaWFSZW1vdGVDb250cm9scyBjb25kaXRpb25hbD1NRURJQV9T
RVNTSU9OCiBNZWRpYVJlY29yZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFTb3Vy
Y2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJ
QV9TVFJFQU0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
cmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDEwICsxMzcsNiBAQAogI2luY2x1ZGUgIldlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCi0jZW5kaWYKLQogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
TWVkaWFTb3VyY2UuaCIKQEAgLTMxOCwzMCArMzE0LDYgQEAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4mIEhUTUxNZWRpYUVsZQogICAgIHJldHVybiBlbGVtZW50czsKIH0KIAotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBIVE1MTWVkaWFFbGVt
ZW50Kj4gSURUb0VsZW1lbnRNYXA7Ci0KLXN0YXRpYyBJRFRvRWxlbWVudE1hcCYgZWxlbWVudElE
c1RvRWxlbWVudHMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJRFRvRWxlbWVudE1h
cD4gbWFwOwotICAgIHJldHVybiBtYXA7Ci19Ci0KLUhUTUxNZWRpYUVsZW1lbnQqIEhUTUxNZWRp
YUVsZW1lbnQ6OmVsZW1lbnRXaXRoSUQodWludDY0X3QgaWQpCi17Ci0gICAgaWYgKGlkID09IEhU
TUxNZWRpYUVsZW1lbnRJbnZhbGlkSUQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIGVsZW1lbnRJRHNUb0VsZW1lbnRzKCkuZ2V0KGlkKTsKLX0KLQotc3RhdGljIHVpbnQ2
NF90IG5leHRFbGVtZW50SUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBlbGVtZW50SUQgPSAw
OwotICAgIHJldHVybiArK2VsZW1lbnRJRDsKLX0KLSNlbmRpZgotCiBzdHJ1Y3QgTWVkaWFFbGVt
ZW50U2Vzc2lvbkluZm8gewogICAgIGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24qIHNlc3Npb247
CiAgICAgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9z
ZTsKQEAgLTUxNywxMyArNDg5LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0
aWFsaXphdAogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAg
bV9lbGVtZW50SUQgPSBuZXh0RWxlbWVudElEKCk7Ci0gICAgZWxlbWVudElEc1RvRWxlbWVudHMo
KS5hZGQobV9lbGVtZW50SUQsIHRoaXMpOwotCi0gICAgc2V0U2Vzc2lvbkludGVybmFsKGRvY3Vt
ZW50LmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7Ci0jZW5kaWYKLQogICAgIHJlZ2lzdGVyV2l0aERv
Y3VtZW50KGRvY3VtZW50KTsKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShN
QUMpCkBAIC01ODgsMTUgKzU1Myw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVt
ZW50KCkKICAgICBpZiAobV9pc29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xhdGVkV29ybGQt
PmNsZWFyV3JhcHBlcnMoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGlmICht
X3Nlc3Npb24pIHsKLSAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVNZWRpYUVsZW1lbnQoKnRoaXMp
OwotICAgICAgICBtX3Nlc3Npb24gPSBudWxscHRyOwotICAgIH0KLQotICAgIGVsZW1lbnRJRHNU
b0VsZW1lbnRzKCkucmVtb3ZlKG1fZWxlbWVudElEKTsKLSNlbmRpZgotCiAgICAgbV9zZWVrVGFz
a1F1ZXVlLmNsb3NlKCk7CiAgICAgbV9yZXN1bWVUYXNrUXVldWUuY2xvc2UoKTsKICAgICBtX3By
b21pc2VUYXNrUXVldWUuY2xvc2UoKTsKQEAgLTM0OTUsMzEgKzM0NTEsNiBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVu
dE5hbWVzKCkucGxheUV2ZW50KTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgICAg
ICAvLyA2LjMgQWN0aXZhdGluZyBhIG1lZGlhIHNlc3Npb24gZnJvbSBhIG1lZGlhIGVsZW1lbnQK
LSAgICAgICAgLy8gV2hlbiB0aGUgcGxheSgpIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgcGF1c2Vk
IGF0dHJpYnV0ZSBpcyB0cnVlLCBhbmQgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRlIGhhcyB0aGUg
dmFsdWUKLSAgICAgICAgLy8gSEFWRV9GVVRVUkVfREFUQSBvciBIQVZFX0VOT1VHSF9EQVRBLCB0
aGVuCi0gICAgICAgIC8vIDEuIExldCBtZWRpYSBzZXNzaW9uIGJlIHRoZSB2YWx1ZSBvZiB0aGUg
Y3VycmVudCBtZWRpYSBzZXNzaW9uLgotICAgICAgICAvLyAyLiBJZiB3ZSBhcmUgbm90IGN1cnJl
bnRseSBpbiBtZWRpYSBzZXNzaW9uJ3MgbGlzdCBvZiBhY3RpdmUgcGFydGljaXBhdGluZyBtZWRp
YSBlbGVtZW50cyB0aGVuIGFwcGVuZAotICAgICAgICAvLyAgICBvdXJzZWx2ZXMgdG8gdGhpcyBs
aXN0LgotICAgICAgICAvLyAzLiBMZXQgYWN0aXZhdGVkIGJlIHRoZSByZXN1bHQgb2YgcnVubmlu
ZyB0aGUgbWVkaWEgc2Vzc2lvbiBpbnZvY2F0aW9uIGFsZ29yaXRobSBmb3IgbWVkaWEgc2Vzc2lv
bi4KLSAgICAgICAgLy8gNC4gSWYgYWN0aXZhdGVkIGlzIGZhaWx1cmUsIHBhdXNlIG91cnNlbHZl
cy4KLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VHSF9EQVRBIHx8IG1fcmVh
ZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBKSB7Ci0gICAgICAgICAgICBpZiAobV9zZXNzaW9u
KSB7Ci0gICAgICAgICAgICAgICAgbV9zZXNzaW9uLT5hZGRBY3RpdmVNZWRpYUVsZW1lbnQoKnRo
aXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+a2luZCgpID09IE1lZGlhU2Vz
c2lvbktpbmQ6OkNvbnRlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLmZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKG1fZWxlbWVu
dElEKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIW1fc2Vzc2lv
bi0+aW52b2tlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF1c2UoKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotI2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RB
VEEpCiAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQp
OwogICAgIH0gZWxzZSBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpCkBAIC0z
NzIyLDExICszNjUzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRlZChib29sIG11
dAogCiAgICAgICAgIHVwZGF0ZVNob3VsZFBsYXkoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQotICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1fZWxlbWVudElE
KTsKLSNlbHNlCiAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKLSNl
bmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAgICAgc2No
ZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CkBAIC01MTE1LDExICs1MDQyLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhYwogICAgICAgICBzZXRBdXRvcGxheUV2ZW50
UGxheWJhY2tTdGF0ZShBdXRvcGxheUV2ZW50UGxheWJhY2tTdGF0ZTo6UHJldmVudGVkQXV0b3Bs
YXkpOwogICAgIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGRvY3VtZW50KCku
dXBkYXRlSXNQbGF5aW5nTWVkaWEobV9lbGVtZW50SUQpOwotI2Vsc2UKICAgICBkb2N1bWVudCgp
LnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7Ci0jZW5kaWYKIAogICAgIGNoZWNrRm9yQXVkaW9BbmRW
aWRlbygpOwogICAgIHVwZGF0ZVNsZWVwRGlzYWJsaW5nKCk7CkBAIC01MjkyLDEyICs1MjE1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAgICAgICBtX3BsYXll
ci0+c2V0Vm9sdW1lKGVmZmVjdGl2ZVZvbHVtZSgpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1fZWxlbWVu
dElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwotI2Vu
ZGlmCi0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC01NDE0LDExICs1
MzMyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5aW5nKGJvb2wgcAogICAgIGlm
IChtX3BsYXlpbmcpCiAgICAgICAgIHNjaGVkdWxlTm90aWZ5QWJvdXRQbGF5aW5nKCk7CiAKLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01l
ZGlhKG1fZWxlbWVudElEKTsKLSNlbHNlCiAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdN
ZWRpYSgpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQog
ICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwpAQCAtNzY0MCwxMSArNzU1NCw4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVkaWFTdGF0ZSgKIAogICAgIG1fbWVkaWFTdGF0
ZSA9IHN0YXRlOwogICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYVN0YXRlRGlkQ2hhbmdlKG1fbWVk
aWFTdGF0ZSk7Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgZG9jdW1lbnQoKS51cGRh
dGVJc1BsYXlpbmdNZWRpYShtX2VsZW1lbnRJRCk7Ci0jZWxzZQorCiAgICAgZG9jdW1lbnQoKS51
cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwotI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAtNzc0OSwxMSAr
NzY2MCw2IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVWb2x1bWUKICAgICBk
b3VibGUgdm9sdW1lTXVsdGlwbGllciA9IHBhZ2UgPyBwYWdlLT5tZWRpYVZvbHVtZSgpIDogMTsK
ICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCiAgICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0g
bV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpOwotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
ICAgIGlmIChtX3Nob3VsZER1Y2spCi0gICAgICAgIHZvbHVtZU11bHRpcGxpZXIgKj0gMC4yNTsK
LSNlbmRpZgotCiAgICAgcmV0dXJuIG1fdm9sdW1lICogdm9sdW1lTXVsdGlwbGllcjsKIH0KIApA
QCAtNzgxNCw3MCArNzcyMCw2IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y2FuU2F2ZU1lZGlh
RGF0YSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllclZvbHVtZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnZvbHVtZSgpIDogMDsKLX0KLQotTWVkaWFTZXNz
aW9uKiBIVE1MTWVkaWFFbGVtZW50OjpzZXNzaW9uKCkgY29uc3QKLXsKLSAgICBSZWZQdHI8TWVk
aWFTZXNzaW9uPiBzZXNzaW9uID0gbV9zZXNzaW9uLmdldCgpOwotICAgIGlmIChzZXNzaW9uICYm
IHNlc3Npb24gPT0gJmRvY3VtZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBzZXNzaW9uLmdldCgpOwotfQotCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFNlc3Npb24oTWVkaWFTZXNzaW9uKiBzZXNzaW9uKQotewotICAg
IC8vIDYuMS4gRXh0ZW5zaW9ucyB0byB0aGUgSFRNTE1lZGlhRWxlbWVudCBpbnRlcmZhY2UKLSAg
ICAvLyAxLiBMZXQgbSBiZSB0aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVzdGlvbi4KLSAgICAvLyAy
LiBMZXQgb2xkIG1lZGlhIHNlc3Npb24gYmUgbeKAmXMgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBp
ZiBpdCBoYXMgb25lLCBhbmQgbnVsbCBvdGhlcndpc2UuCi0gICAgLy8gMy4gTGV0IG3igJlzIGN1
cnJlbnQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgbmV3IHZhbHVlIG9yIHRoZSB0b3AtbGV2ZWwgYnJv
d3NpbmcgY29udGV4dOKAmXMgbWVkaWEgc2Vzc2lvbiBpZiB0aGUgbmV3IHZhbHVlIGlzIG51bGwu
Ci0gICAgLy8gNC4gTGV0IG5ldyBtZWRpYSBzZXNzaW9uIGJlIG3igJlzIGN1cnJlbnQgbWVkaWEg
c2Vzc2lvbi4KLQotICAgIC8vIDUuIFVwZGF0ZSBtZWRpYSBzZXNzaW9uczogSWYgb2xkIG1lZGlh
IHNlc3Npb24gYW5kIG5ldyBtZWRpYSBzZXNzaW9uIGFyZSB0aGUgc2FtZSAod2hldGhlciBib3Ro
IG51bGwgb3IgYm90aCB0aGUgc2FtZSBtZWRpYSBzZXNzaW9uKSwgdGhlbiB0ZXJtaW5hdGUgdGhl
c2Ugc3RlcHMuCi0gICAgaWYgKG1fc2Vzc2lvbi5nZXQoKSA9PSBzZXNzaW9uKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIC8vIDYuIElmIG0gaXMgYW4g
YXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50IG9mIG9sZCBtZWRpYSBzZXNzaW9uLCB0aGVuIHBh
dXNlIG0gYW5kIHJlbW92ZSBtIGZyb20gb2xkIG1lZGlhIHNlc3Npb27igJlzIGxpc3Qgb2YgYXVk
aW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAgICAgaWYgKG1fc2Vzc2lvbi0+aXNNZWRp
YUVsZW1lbnRBY3RpdmUoKnRoaXMpKQotICAgICAgICAgICAgcGF1c2UoKTsKLQotICAgICAgICBt
X3Nlc3Npb24tPnJlbW92ZU1lZGlhRWxlbWVudCgqdGhpcyk7Ci0KLSAgICAgICAgLy8gNy4gSWYg
b2xkIG1lZGlhIHNlc3Npb24gaXMgbm90IG51bGwgYW5kIG5vIGxvbmdlciBoYXMgb25lIG9yIG1v
cmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cywgdGhlbiBydW4gdGhlIG1lZGlhIHNlc3Np
b24gZGVhY3RpdmF0aW9uIGFsZ29yaXRobSBmb3Igb2xkIG1lZGlhIHNlc3Npb24uCi0gICAgICAg
IGlmICghbV9zZXNzaW9uLT5oYXNBY3RpdmVNZWRpYUVsZW1lbnRzKCkpCi0gICAgICAgICAgICBt
X3Nlc3Npb24tPmRlYWN0aXZhdGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoc2Vzc2lvbikKLSAgICAg
ICAgc2V0U2Vzc2lvbkludGVybmFsKCpzZXNzaW9uKTsKLSAgICBlbHNlCi0gICAgICAgIHNldFNl
c3Npb25JbnRlcm5hbChkb2N1bWVudCgpLmRlZmF1bHRNZWRpYVNlc3Npb24oKSk7Ci19Ci0KLXZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2Vzc2lvbkludGVybmFsKE1lZGlhU2Vzc2lvbiYgc2Vz
c2lvbikKLXsKLSAgICBtX3Nlc3Npb24gPSAmc2Vzc2lvbjsKLSAgICBzZXNzaW9uLmFkZE1lZGlh
RWxlbWVudCgqdGhpcyk7Ci0gICAgbV9raW5kID0gc2Vzc2lvbi5raW5kKCk7Ci19Ci0KLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRHVjayhib29sIGR1Y2spCi17Ci0gICAgaWYgKG1f
c2hvdWxkRHVjayA9PSBkdWNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Nob3VsZER1Y2sg
PSBkdWNrOwotICAgIHVwZGF0ZVZvbHVtZSgpOwotfQotCi0jZW5kaWYKLQogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjphbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkKCkKIHsK
ICAgICBpZiAocG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9tZWRpYVNlc3Npb24tPnJlcXVpcmVz
RnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSAmJiAhaXNGdWxsc2NyZWVuKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMjY3NzkwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4NSwyMSArNDg1LDYgQEAgcHVibGljOgogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVkRmF0
YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBwbGF5ZXJWb2x1bWUoKSBjb25zdDsKLQot
ICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIHZv
aWQgc2V0S2luZChjb25zdCBTdHJpbmcmIGtpbmQpIHsgbV9raW5kID0ga2luZDsgfQotCi0gICAg
TWVkaWFTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZXNzaW9uKE1lZGlh
U2Vzc2lvbiopOwotCi0gICAgdm9pZCBzZXRTaG91bGREdWNrKGJvb2wpOwotCi0gICAgc3RhdGlj
IEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnRXaXRoSUQodWludDY0X3QpOwotICAgIHVpbnQ2NF90
IGVsZW1lbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudElEOyB9Ci0jZW5kaWYKLQogICAg
IFJlZlB0cjxWaWRlb1BsYXliYWNrUXVhbGl0eT4gZ2V0VmlkZW9QbGF5YmFja1F1YWxpdHkoKTsK
IAogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlbG9hZDsgfQpAQCAtNzEwLDEwICs2OTUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlz
cGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKLSAgICB2b2lkIHNldFNlc3Npb25JbnRlcm5hbChNZWRpYVNlc3Npb24mKTsKLSNl
bmRpZgotCiAgICAgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBvdmVycmlkZTsKIApAQCAt
MTA0NSwxMyArMTAyNiw2IEBAIHByaXZhdGU6CiAgICAgLy8gY2FsbGluZyB0aGUgbWVkaWEgZW5n
aW5lIHJlY3Vyc2l2ZWx5LgogICAgIGludCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNr
IHsgMCB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgU3RyaW5nIG1fa2luZDsK
LSAgICBSZWZQdHI8TWVkaWFTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgYm9vbCBtX3Nob3VsZER1
Y2sgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fZWxlbWVudElEOwotI2VuZGlmCi0KICNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbV9tZWRpYVNvdXJj
ZTsKICAgICB1bnNpZ25lZCBtX2Ryb3BwZWRWaWRlb0ZyYW1lcyB7IDAgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDY0LDEyICs0NjQsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKE1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncywgdWludDY0X3QpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVBdXRvcGxheUV2ZW50KEF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxBdXRvcGxheUV2
ZW50RmxhZ3M+KSB7IH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZpcnR1YWwg
dm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29s
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoY29u
c3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZENv
bnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QpIHsgfQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoV0VCX0NSWVBUTykKICAgICB2aXJ0dWFsIGJvb2wgd3JhcENyeXB0b0tleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiwgVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsNiBAQAogI2luY2x1ZGUgIlNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCi0KICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIK
ICNlbmRpZgpAQCAtMjA5NywzMSArMjA5Myw2IEBAIHZvaWQgUGFnZTo6cmVzdW1lQWxsTWVkaWFC
dWZmZXJpbmcoKQogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotdm9p
ZCBQYWdlOjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZSkKLXsKLSAg
ICBzd2l0Y2ggKGV2ZW50VHlwZSkgewotICAgIGNhc2UgTWVkaWFFdmVudFR5cGU6OlBsYXlQYXVz
ZToKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9nZ2xlUGxheWJh
Y2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6VHJhY2tOZXh0
OgotICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5za2lwVG9OZXh0VHJh
Y2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6VHJhY2tQcmV2
aW91czoKLSAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuc2tpcFRvUHJl
dmlvdXNUcmFjaygpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgUGFnZTo6c2V0
Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQot
ewotICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gSFRNTE1lZGlhRWxlbWVudDo6
ZWxlbWVudFdpdGhJRChlbGVtZW50SUQpKQotICAgICAgICBlbGVtZW50LT5zZXRWb2x1bWUodm9s
dW1lLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLX0KLQotI2VuZGlmCi0KIHVuc2lnbmVkIFBhZ2U6
OnN1YmZyYW1lQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBtYWluRnJhbWUoKS50cmVlKCku
ZGVzY2VuZGFudENvdW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjY3NzkwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2
Miw2IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVzdC5oIgogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25FdmVudHMuaCIKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbmNsdWRlICJN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2VuZGlmCkBAIC02NjAsMTEgKzY1Niw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wgY2FuVXNl
KSB7IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSBjYW5Vc2U7IH0KICAgICBib29sIGNhblVz
ZUNyZWRlbnRpYWxTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZTsgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3QpOwotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgYWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
Zmllcik7CiAgICAgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXIuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLU1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOjpNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlcihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlckNsaWVu
dCYgY2xpZW50KQotICAgIDogbV9jbGllbnQoJmNsaWVudCkKLXsKLX0KLQotTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uUHJvdmlkZXI6On5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcigp
ID0gZGVmYXVsdDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXIuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlcl9oCi0jZGVmaW5lIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyX2gKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIE1lZGlhU2Vz
c2lvbkludGVycnVwdGluZ0NhdGVnb3J5IHsKLSAgICBDb250ZW50LAotICAgIFRyYW5zaWVudCwK
LSAgICBUcmFuc2llbnRTb2xvCi19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdGFy
dE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVn
b3J5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5v
dGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSkgPSAwOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGll
bnQoKSA9IGRlZmF1bHQ7Ci19OwotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
PiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXIoTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmKTsKLSAgICB2aXJ0dWFs
IH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcigpOwotCi0gICAgLy8gVG8gYmUgb3Zl
cnJpZGRlbiBieSBzdWJjbGFzc2VzLgotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxpc3RlbmluZ0Zv
ckludGVycnVwdGlvbnMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJ
bnRlcnJ1cHRpb25zKCkgPSAwOwotCi0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2NsaWVudDsgfQotCi1wcml2YXRl
OgotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50KiBtX2NsaWVudDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotCi0jZW5kaWYgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJfaCAq
LwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJNYWMuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oCShu
b25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWNfaAotI2RlZmluZSBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlck1hY19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgUExB
VEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hYyA6IHB1YmxpYyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlciB7
Ci1wdWJsaWM6Ci0gICAgdXNpbmcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI6Ok1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyOwotCi0gICAgdm9pZCBiZWdpbkxpc3Rlbmlu
Z0ZvckludGVycnVwdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJ
bnRlcnJ1cHRpb25zKCkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYygpID0gZGVmYXVsdDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBQ
TEFURk9STShNQUMpCi0KLSNlbmRpZiAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hY19oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vbWFj
L01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uUHJvdmlkZXJNYWMubW0JKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXJNYWMubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykKLQot
I2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgY2FsbERpZEJlZ2luUmluZ2luZ05v
dGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlkQmVnaW5SaW5naW5nIik7Ci1zdGF0aWMgY29uc3Qg
Q0ZTdHJpbmdSZWYgY2FsbERpZEVuZFJpbmdpbmdOb3RpZmljYXRpb24gPSBDRlNUUigiQ2FsbERp
ZEVuZFJpbmdpbmciKTsKLXN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBjYWxsRGlkQ29ubmVjdE5v
dGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlkQ29ubmVjdCIpOwotCi1zdGF0aWMgdm9pZCBjYWxs
RGlkQmVnaW5SaW5naW5nKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwg
Q0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgQVNTRVJU
X0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyKiBwcm92aWRlciA9IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlciopb2Jz
ZXJ2ZXI7Ci0gICAgcHJvdmlkZXItPmNsaWVudCgpLmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0
aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpUcmFuc2ll
bnQpOwotfQotCi1zdGF0aWMgdm9pZCBjYWxsRGlkRW5kUmluZ2luZyhDRk5vdGlmaWNhdGlvbkNl
bnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkKiwgQ0ZEaWN0
aW9uYXJ5UmVmKQotewotICAgIEFTU0VSVF9BUkcob2JzZXJ2ZXIsIG9ic2VydmVyKTsKLSAgICBN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyogcHJvdmlkZXIgPSAoTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMqKW9ic2VydmVyOwotICAgIHByb3ZpZGVyLT5jbGll
bnQoKS5kaWRSZWNlaXZlRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhbGxE
aWRDb25uZWN0KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJp
bmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgQVNTRVJUX0FSRyhv
YnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
TWFjKiBwcm92aWRlciA9IChNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyopb2Jz
ZXJ2ZXI7Ci0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQmIGNsaWVu
dCA9IHByb3ZpZGVyLT5jbGllbnQoKTsKLSAgICBjbGllbnQuZGlkUmVjZWl2ZUVuZE9mSW50ZXJy
dXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpUcmFu
c2llbnQpOwotICAgIGNsaWVudC5kaWRSZWNlaXZlU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNh
dGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeTo6Q29udGVudCk7Ci19Ci0KLXZv
aWQgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWM6OmJlZ2luTGlzdGVuaW5nRm9y
SW50ZXJydXB0aW9ucygpCi17Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgbm90aWZpY2F0
aW9uQ2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXREaXN0cmlidXRlZENlbnRlcigpOwot
ICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCB0
aGlzLCBjYWxsRGlkQmVnaW5SaW5naW5nLCBjYWxsRGlkQmVnaW5SaW5naW5nTm90aWZpY2F0aW9u
LCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlh
dGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3RpZmljYXRpb25D
ZW50ZXIsIHRoaXMsIGNhbGxEaWRFbmRSaW5naW5nLCBjYWxsRGlkRW5kUmluZ2luZ05vdGlmaWNh
dGlvbiwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1t
ZWRpYXRlbHkpOwotICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0
aW9uQ2VudGVyLCB0aGlzLCBjYWxsRGlkQ29ubmVjdCwgY2FsbERpZENvbm5lY3ROb3RpZmljYXRp
b24sIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVk
aWF0ZWx5KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYzo6
c3RvcExpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKQotewotICAgIENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVtb3ZlRXZlcnlPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldERpc3RyaWJ1dGVk
Q2VudGVyKCksIHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsMTEgKzI4NSw2
IEBACiAjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIgogI2Vu
ZGlmCkBAIC00Mjg2LDU3ICs0MjgxLDggQEAgYm9vbCBJbnRlcm5hbHM6OmVsZW1lbnRJc0Jsb2Nr
aW5nRGlzcGxheQogewogICAgIHJldHVybiBlbGVtZW50LmlzRGlzYWJsaW5nU2xlZXAoKTsKIH0K
LQogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
Ci12b2lkIEludGVybmFsczo6c2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3Rp
ZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdvcnkpCi17Ci0g
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVN0YXJ0T2ZJbnRl
cnJ1cHRpb25Ob3RpZmljYXRpb24oY2F0ZWdvcnkpOwotfQotCi12b2lkIEludGVybmFsczo6c2Vu
ZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbklu
dGVycnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihjYXRl
Z29yeSk7Ci19Ci0KLVN0cmluZyBJbnRlcm5hbHM6Om1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShN
ZWRpYVNlc3Npb24qIHNlc3Npb24pIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChzZXNzaW9uLT5jdXJy
ZW50U3RhdGUoKSkgewotICAgIGNhc2UgTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlOgotICAg
ICAgICByZXR1cm4gImFjdGl2ZSI7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OlN0YXRlOjpJbnRl
cnJ1cHRlZDoKLSAgICAgICAgcmV0dXJuICJpbnRlcnJ1cHRlZCI7Ci0gICAgY2FzZSBNZWRpYVNl
c3Npb246OlN0YXRlOjpJZGxlOgotICAgICAgICByZXR1cm4gImlkbGUiOwotICAgIH0KLX0KLQot
ZG91YmxlIEludGVybmFsczo6bWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKEhUTUxNZWRpYUVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX0FSRyhlbGVtZW50LCBlbGVtZW50KTsK
LSAgICByZXR1cm4gZWxlbWVudC0+cGxheWVyVm9sdW1lKCk7Ci19Ci0KLXZvaWQgSW50ZXJuYWxz
OjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQpCi17Ci0gICAg
Ly8gRklYTUU6IE5vIGdvb2QgcmVhc29uIHRvIHVzZSBhIHNpbmdsZSBmdW5jdGlvbiB3aXRoIGFu
IGFyZ3VtZW50IGluc3RlYWQgb2YgdGhyZWUgZnVuY3Rpb25zLgotICAgIHN3aXRjaCAoZXZlbnQp
IHsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6OlBsYXlQYXVzZToKLSAgICAgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkudG9nZ2xlUGxheWJhY2soKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNZWRpQ29udHJvbEV2ZW50OjpOZXh0VHJhY2s6Ci0gICAgICAgIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb05leHRUcmFjaygpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6OlByZXZpb3VzVHJhY2s6Ci0gICAgICAg
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb1ByZXZpb3VzVHJhY2soKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0KICNpZiBFTkFCTEUoV0VCX0FVRElPKQogdm9pZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29u
dGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxCYXNlQXVkaW9Db250ZXh0Piwg
UmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwgU3RyaW5nVmlldyBy
ZXN0cmljdGlvbnNTdHJpbmcpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJ
KHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiTWVkaWFFbGVt
ZW50U2Vzc2lvbi5oIgogI2VuZGlmCkBAIC02NjYsMTUgKzY2Miw2IEBAIHB1YmxpYzoKICAgICBi
b29sIGVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQmKSBjb25z
dDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBzZW5kTWVk
aWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpbmdDYXRlZ29yeSk7Ci0gICAgdm9pZCBzZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkpOwotICAg
IFN0cmluZyBtZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoTWVkaWFTZXNzaW9uJikgY29uc3Q7Ci0g
ICAgZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVtZW50JikgY29u
c3Q7Ci0gICAgZW51bSBjbGFzcyBNZWRpYUNvbnRyb2xFdmVudCB7IFBsYXlQYXVzZSwgTmV4dFRy
YWNrLCBQcmV2aW91c1RyYWNrIH07Ci0gICAgdm9pZCBzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVk
aWFDb250cm9sRXZlbnQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVk
KGJvb2wpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VOYW1lLCBjb25zdCBTdHJpbmcmIGRldmlj
ZVN0YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsMTggKzQ2LDYgQEAgZW51bSBSZXNvdXJjZUxvYWRQcmlvcml0eSB7CiAg
ICAgIlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2giCiB9OwogCi1bQ29uZGl0aW9uYWw9TUVE
SUFfU0VTU0lPTl0gZW51bSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSB7Ci0gICAg
ImNvbnRlbnQiLAotICAgICJ0cmFuc2llbnQiLAotICAgICJ0cmFuc2llbnQtc29sbyIKLX07Ci0K
LVtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBlbnVtIE1lZGlhQ29udHJvbEV2ZW50IHsKLSAg
ICAicGxheS1wYXVzZSIsCi0gICAgIm5leHQtdHJhY2siLAotICAgICJwcmV2aW91cy10cmFjayIK
LX07Ci0KIGVudW0gQXV0b0ZpbGxCdXR0b25UeXBlIHsKICAgICAiTm9uZSIsCiAgICAgIkNvbnRh
Y3RzIiwKQEAgLTY5NiwxMSArNjg0LDYgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKIAog
ICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBiZWdp
bk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJpbmcgaW50ZXJydXB0aW9uVHlwZSk7CiAg
ICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uKERPTVN0cmluZyBmbGFncyk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIHVu
ZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSk7Ci0gICAgW0NvbmRpdGlv
bmFsPU1FRElBX1NFU1NJT05dIHVuZGVmaW5lZCBzZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdv
cnkpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBET01TdHJpbmcgbWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKE1lZGlhU2Vzc2lvbiBzZXNzaW9uKTsKLSAgICBbQ29uZGl0aW9uYWw9
TUVESUFfU0VTU0lPTl0gZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFF
bGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSB1bmRlZmlu
ZWQgc2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50IGV2ZW50KTsKICAgICBb
Q29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2
ZSgpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgYXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKG9wdGlvbmFsIGJvb2xlYW4gc3VzcGVuZGVkVW5kZXJMb2Nr
ID0gZmFsc2UpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAtMDktMzAg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBjb2RlIGJl
aGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBSZW1vdmVzIGFsbCBjb2Rl
IGluIEVOQUJMRShNRURJQV9TRVNTSU9OKSBhbmQgYWxsIG1lZGlhIHNlc3Npb24KKyAgICAgICAg
cmVsYXRlZCBTUEkuIEl0IHdhcyBuZXZlciBlbmFibGVkIGFuZCBub3RoaW5nIGV2ZXIgYWRvcHRl
ZCBpdC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IFJlbW92ZSBtZWRpYSBzZXNzaW9uIHJlbGF0ZWQgZmlsZXMuCisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS01lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBSZW1vdmUgYWxsIGNvZGUgaW4g
RU5BQkxFKE1FRElBX1NFU1NJT04pLgorCiAyMDIwLTA5LTMwICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVJlY29yZGVyIHNob3VsZCBzdXBwb3J0IGlz
VHlwZVN1cHBvcnRlZApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDYgQEAg
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAogU2hhcmVkL1dlYkltYWdlLmNwcAogU2hh
cmVkL1dlYktleWJvYXJkRXZlbnQuY3BwIEBuby11bmlmeQogU2hhcmVkL1dlYktpdDJJbml0aWFs
aXplLmNwcCBAbm8tdW5pZnkKLVNoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKIFNo
YXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAogU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwIEBuby11
bmlmeQogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zNzksNyArMzc4
LDYgQEAgVUlQcm9jZXNzL0FQSS9DL1dLSGl0VGVzdFJlc3VsdC5jcHAKIFVJUHJvY2Vzcy9BUEkv
Qy9XS0ljb25EYXRhYmFzZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKIFVJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCi1VSVByb2Nlc3MvQVBJ
L0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01lc3NhZ2VM
aXN0ZW5lci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tEaXNwbGF5LmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAko
cmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjYsMTUgKzIyNiwxMiBAQCBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNl
R3JhcGhpY3NVc2FnZVNhCiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5jcHAKIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCiBVSVByb2Nlc3MvVmll
d1NuYXBzaG90U3RvcmUuY3BwCi1VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
LmNwcAotVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAKIFVJ
UHJvY2Vzcy9XZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvV0tJbWFnZVBy
ZXZpZXdWaWV3Q29udHJvbGxlci5tbQogCiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhUmVj
b3JkLmNwcAogCiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0TWVudUxpc3RlbmVyLmNwcAotVUlQ
cm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQ
SS9DL1dLVGVzdGluZ1N1cHBvcnQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVm
LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMCArMTA5LDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNz
aW9uTWV0YWRhdGEuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNs
dWRlIDxXZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29u
c3RyYWludHMuaD4KQEAgLTIxMDYsMzIgKzIxMDIsNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8VXNl
clN0eWxlU2hlZXQ+OjpkZWNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKLXZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVNlc3Npb25NZXRhZGF0YT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgcmVzdWx0
KQotewotICAgIGVuY29kZXIgPDwgcmVzdWx0LmFydGlzdCgpOwotICAgIGVuY29kZXIgPDwgcmVz
dWx0LmFsYnVtKCk7Ci0gICAgZW5jb2RlciA8PCByZXN1bHQudGl0bGUoKTsKLSAgICBlbmNvZGVy
IDw8IHJlc3VsdC5hcnR3b3JrVVJMKCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVNl
c3Npb25NZXRhZGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVNlc3Npb25NZXRh
ZGF0YSYgcmVzdWx0KQotewotICAgIFN0cmluZyBhcnRpc3QsIGFsYnVtLCB0aXRsZTsKLSAgICBV
UkwgYXJ0d29ya1VSTDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydGlzdCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsYnVtKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGl0bGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrVVJMKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9IE1lZGlhU2Vzc2lvbk1ldGFkYXRhKHRpdGxl
LCBhcnRpc3QsIGFsYnVtLCBhcnR3b3JrVVJMKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRp
ZgotCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKICAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxMCArMTg3LDYgQEAgY2xhc3Mg
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotY2xhc3MgTWVkaWFT
ZXNzaW9uTWV0YWRhdGE7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBzdHJ1
Y3QgTWVkaWFDb25zdHJhaW50czsKICNlbmRpZgpAQCAtNjM1LDEzICs2MzEsNiBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiB9OwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGE+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJik7Ci0gICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWV0YWRhdGEmKTsKLX07Ci0jZW5kaWYKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKTsKICAgICBzdGF0
aWMgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGRlY29kZShEZWNvZGVyJik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEuY3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRp
YVNlc3Npb25NZXRhZGF0YS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1l
dGFkYXRhLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVmPFdlYk1lZGlhU2Vzc2lvbk1ldGFk
YXRhPiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YTo6Y3JlYXRlKGNvbnN0IE1lZGlhU2Vzc2lvbk1l
dGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJNZWRpYVNl
c3Npb25NZXRhZGF0YShtZXRhZGF0YSkpOwotfQotCi1XZWJNZWRpYVNlc3Npb25NZXRhZGF0YTo6
V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEoY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFk
YXRhKQotICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkKLXsKLX0KLQotV2ViTWVkaWFTZXNzaW9u
TWV0YWRhdGE6On5XZWJNZWRpYVNlc3Npb25NZXRhZGF0YSgpCi17Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YV9oCi0jZGVmaW5lIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRh
X2gKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NZXRhZGF0YS5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViTWVk
aWFTZXNzaW9uTWV0YWRhdGEgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpNZWRpYVNlc3Npb25NZXRhZGF0YT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
TWVkaWFTZXNzaW9uTWV0YWRhdGE+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpNZWRpYVNlc3Npb25N
ZXRhZGF0YSYpOwotICAgIH5XZWJNZWRpYVNlc3Npb25NZXRhZGF0YSgpOwotCi0gICAgU3RyaW5n
IHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS50aXRsZSgpOyB9Ci0gICAgU3RyaW5n
IGFydGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0aXN0KCk7IH0KLSAgICBTdHJp
bmcgYWxidW0oKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmFsYnVtKCk7IH0KLSAgICBTdHJp
bmcgYXJ0d29ya1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0d29ya1VSTCgpLnN0
cmluZygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEoY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsKLQotICAgIFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLy8gV2Vi
TWVkaWFTZXNzaW9uTWV0YWRhdGFfaApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksMTEgKzE3OSw2IEBAIHB1YmxpYzoKICAgICAg
ICAgV2Vic2l0ZVBvbGljaWVzLAogICAgICAgICBXaW5kb3dGZWF0dXJlcywKIAotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotICAgICAgICBNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIsCi0gICAg
ICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLAotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogICAgICAgICBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLAogICAgICAgICBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLApAQCAtNDI4LDExICs0MjMsNiBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2JqZWN0CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpX
ZWJzaXRlUG9saWNpZXMsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXaW5kb3dGZWF0dXJl
cywKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgICAgICBBUEk6Ok9iamVjdDo6VHlw
ZTo6TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLAotICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6
TWVkaWFTZXNzaW9uTWV0YWRhdGEsCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAg
ICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3Bv
bnNlLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCwK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiAyNjc3OTApCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDggKzEwNSw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSGl0VGVzdFJlc3UK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSWNvbkRhdGFiYXNlKiBXS0ljb25EYXRhYmFz
ZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW5zcGVjdG9yKiBXS0luc3BlY3Rv
clJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ciogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
UmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYVNlc3Npb25NZXRhZGF0YSog
V0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
TWVzc2FnZUxpc3RlbmVyKiBXS01lc3NhZ2VMaXN0ZW5lclJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLTmF2aWdhdGlvbkFjdGlvbiogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9uRGF0
YVJlZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNp
bmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgorI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgi
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNvbnN0IGNoYXIqIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c3VwcGxlbWVu
dE5hbWUoKQotewotICAgIHJldHVybiAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyIjsKLX0K
LQotUmVmPFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4gV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyOjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihwcm9jZXNzUG9vbCkp
OwotfQotCi1XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OldlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi0gICAgOiBXZWJDb250ZXh0U3Vw
cGxlbWVudChwcm9jZXNzUG9vbCkgeyB9Ci0KLS8vIFdlYkNvbnRleHRTdXBwbGVtZW50Ci0KLXZv
aWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgp
Ci17Ci0gICAgQVBJOjpPYmplY3Q6OnJlZigpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17Ci0gICAgQVBJOjpPYmpl
Y3Q6OmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjppbml0
aWFsaXplQ2xpZW50KGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSog
Y2xpZW50KQotewotICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKLX0KLQotYm9vbCBX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnZhbHVlRm9yUGxheWJhY2tBdHRyaWJ1dGUoV0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSBhdHRyaWJ1dGUpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX2ZvY3VzZWRNZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBtX3BsYXliYWNrQXR0cmlidXRlcyAmIGF0dHJpYnV0ZTsKLX0KLQot
dm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnVwZGF0ZVBsYXliYWNrQXR0cmlidXRl
KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUgYXR0cmlidXRlLCBi
b29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgbV9wbGF5YmFja0F0dHJpYnV0
ZXMgfD0gYXR0cmlidXRlOwotICAgIGVsc2UKLSAgICAgICAgbV9wbGF5YmFja0F0dHJpYnV0ZXMg
Jj0gfmF0dHJpYnV0ZTsKLQotICAgIG1fY2xpZW50LmRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRl
KHRoaXMsIGF0dHJpYnV0ZSwgdmFsdWUpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcjo6c2V0Vm9sdW1lT2ZGb2N1c2VkTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUpCi17
Ci0gICAgaWYgKCFtX2ZvY3VzZWRNZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChXZWJQYWdlUHJveHkqIHByb3h5ID0gbV9mb2N1c2VkTWVkaWFFbGVtZW50LT5maXJzdCkK
LSAgICAgICAgcHJveHktPnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwgbV9mb2N1c2Vk
TWVkaWFFbGVtZW50LT5zZWNvbmQpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlhU3RhdGUoV2ViUGFnZVByb3h5
KiBwcm94eSwgdWludDY0X3QgZWxlbWVudElELCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgaWYgKG1fZm9jdXNlZE1lZGlhRWxlbWVudCkgewot
ICAgICAgICBpZiAocHJveHkgPT0gbV9mb2N1c2VkTWVkaWFFbGVtZW50LT5maXJzdCAmJiBlbGVt
ZW50SUQgPT0gbV9mb2N1c2VkTWVkaWFFbGVtZW50LT5zZWNvbmQpIHsKLSAgICAgICAgICAgIHVw
ZGF0ZVBsYXliYWNrQXR0cmlidXRlKElzUGxheWluZywgZmxhZ3MgJiBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpJc1NvdXJjZUVsZW1lbnRQbGF5aW5nKTsKLSAgICAgICAgICAgIHVwZGF0ZVBsYXli
YWNrQXR0cmlidXRlKElzTmV4dFRyYWNrQ29udHJvbEVuYWJsZWQsIGZsYWdzICYgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6SXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZCk7Ci0gICAgICAgICAgICB1
cGRhdGVQbGF5YmFja0F0dHJpYnV0ZShJc1ByZXZpb3VzVHJhY2tDb250cm9sRW5hYmxlZCwgZmxh
Z3MgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpJc1ByZXZpb3VzVHJhY2tDb250cm9sRW5hYmxl
ZCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyOjpzZXRGb2N1c2VkTWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYgcHJveHksIHVpbnQ2NF90
IGVsZW1lbnRJRCkKLXsKLSAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBtYWtlVW5pcXVlPEZv
Y3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKLX0KLQotdm9pZCBXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXI6OmNsZWFyRm9jdXNlZE1lZGlhRWxlbWVudCgpCi17Ci0gICAg
bV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCShy
ZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKLSNpbmNs
dWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXR5cGVkZWYgc3RkOjpwYWlyPFdl
YlBhZ2VQcm94eSosIHVpbnQ2NF90PiBGb2N1c2VkTWVkaWFFbGVtZW50OwotCi1jbGFzcyBXZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1
cHBsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFt
ZSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+IGNyZWF0
ZShXZWJQcm9jZXNzUG9vbCopOwotCi0gICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdL
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSopOwotCi0gICAgYm9vbCB2YWx1ZUZv
clBsYXliYWNrQXR0cmlidXRlKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRy
aWJ1dGUpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlh
U3RhdGUoV2ViUGFnZVByb3h5KiwgdWludDY0X3QsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGVGbGFncyk7Ci0gICAgdm9pZCBzZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQo
ZG91YmxlKTsKLQotICAgIHZvaWQgc2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJveHkm
LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBjbGVhckZvY3VzZWRNZWRpYUVsZW1lbnQoKTsKLQotICAg
IHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7Ci0gICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwot
Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihXZWJQ
cm9jZXNzUG9vbCopOwotCi0gICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2b2lkIHJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXJlZldlYkNvbnRl
eHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHVwZGF0ZVBsYXliYWNrQXR0cmli
dXRlKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wpOwot
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEZvY3VzZWRNZWRpYUVsZW1lbnQ+IG1fZm9jdXNlZE1lZGlh
RWxlbWVudDsKLSAgICBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRl
cyBtX3BsYXliYWNrQXR0cmlidXRlcyB7IDAgfTsKLSAgICBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnQgbV9jbGllbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlckNsaWVudDo6ZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUoV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyKiBtYW5hZ2VyLCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBs
YXliYWNrQXR0cmlidXRlIHBsYXliYWNrQXR0cmlidXRlLCBib29sIHZhbHVlKQotewotICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fY2xpZW50LmRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlKHRvQVBJKG1hbmFnZXIp
LCBwbGF5YmFja0F0dHJpYnV0ZSwgdmFsdWUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJ
T04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRfaAotI2RlZmluZSBXZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJDbGllbnRfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNs
dWRlICJBUElDbGllbnQuaCIKLSNpbmNsdWRlICJXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
IgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotdGVtcGxhdGU8
PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFz
ZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNs
aWVudFYwPiBWZXJzaW9uczsKLX07Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI7Ci0KLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlckNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2b2lkIGRpZENoYW5nZVBsYXliYWNrQXR0
cmlidXRlKFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciosIFdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2VuZGlmIC8vIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCwxMiArMjQ0
LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg+Ci0jZW5kaWYKLQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmgi
CiAjZW5kaWYKQEAgLTYwNTQsMjQgKzYwNDgsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1l
QWxsTWVkaWFQbGF5YmFjCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVk
aWFQbGF5YmFjaygpKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUgZXZlbnRUeXBlKQotewot
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBlKSk7Ci19
Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRWb2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUgdm9s
dW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCi17Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWb2x1
bWVPZk1lZGlhRWxlbWVudCh2b2x1bWUsIGVsZW1lbnRJRCkpOwotfQotI2VuZGlmCi0KIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3RhcnRN
ZWRpYSkKIHsKICAgICBpZiAobWF5U3RhcnRNZWRpYSA9PSBtX21heVN0YXJ0TWVkaWFXaGVuSW5X
aW5kb3cpCkBAIC04OTc2LDEyICs4OTUyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRp
b25HZXN0dXJlU25hcAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFu
Z2UoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5ld1N0YXRlLCB1aW50NjRfdCBzb3Vy
Y2VFbGVtZW50SUQpCiB7Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyKiBmb2N1c01hbmFnZXIgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS5zdXBwbGVtZW50PFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4oKTsKLSAgICBBU1NFUlQo
Zm9jdXNNYW5hZ2VyKTsKLSAgICBmb2N1c01hbmFnZXItPnVwZGF0ZVBsYXliYWNrQXR0cmlidXRl
c0Zyb21NZWRpYVN0YXRlKHRoaXMsIHNvdXJjZUVsZW1lbnRJRCwgbmV3U3RhdGUpOwotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5zaG91bGRCZVJ1bm5hYmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTkxMzAsMjYgKzkx
MDAsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bm93UGxheWluZ0luZm9DYWxsYmFjCiB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdm9pZCBXZWJQYWdlUHJveHk6Omhhc01l
ZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCi17
Ci0gICAgbV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50cyA9IHN0YXRlOwot
fQotCi12b2lkIFdlYlBhZ2VQcm94eTo6bWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKQotewotICAgIFJlZjxX
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YT4gd2ViTWV0YWRhdGEgPSBXZWJNZWRpYVNlc3Npb25NZXRh
ZGF0YTo6Y3JlYXRlKG1ldGFkYXRhKTsKLSAgICBtX3VpQ2xpZW50LT5tZWRpYVNlc3Npb25NZXRh
ZGF0YURpZENoYW5nZSgqdGhpcywgd2ViTWV0YWRhdGEucHRyKCkpOwotfQotCi12b2lkIFdlYlBh
Z2VQcm94eTo6Zm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QgZWxl
bWVudElEKQotewotICAgIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciogZm9jdXNNYW5hZ2Vy
ID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXI+KCk7Ci0gICAgQVNTRVJUKGZvY3VzTWFuYWdlcik7Ci0gICAgZm9jdXNNYW5hZ2Vy
LT5zZXRGb2N1c2VkTWVkaWFFbGVtZW50KCp0aGlzLCBlbGVtZW50SUQpOwotfQotI2VuZGlmCi0K
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnQgZXZlbnQsIE9wdGlvblNldDxBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdzKQogewogICAg
IG1fdWlDbGllbnQtPmhhbmRsZUF1dG9wbGF5RXZlbnQoKnRoaXMsIGV2ZW50LCBmbGFncyk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjY3Nzkw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2OSwxMiArMTY5LDYgQEAgT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eTsKICNpbmNsdWRlIDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8uaD4KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBN
ZWRpYVNlc3Npb25NZXRhZGF0YTsKLX0KLSNlbmRpZgotCiAjaWYgVVNFKERJUkVDVDJEKQogaW50
ZXJmYWNlIElEM0QxMURldmljZTE7CiAjZW5kaWYKQEAgLTEzNDQsMTIgKzEzMzgsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIHZvaWQgcmVzdW1l
QWxsTWVkaWFQbGF5YmFjaygpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgYm9v
bCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHM7IH0KLSAgICB2b2lkIGhh
bmRsZU1lZGlhRXZlbnQoV2ViQ29yZTo6TWVkaWFFdmVudFR5cGUpOwotICAgIHZvaWQgc2V0Vm9s
dW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlLCB1aW50NjRfdCk7Ci0jZW5kaWYKLSAgICAgICAgCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICB2b2lkIGRpZEFsbG93UG9pbnRlckxvY2soKTsK
ICAgICB2b2lkIGRpZERlbnlQb2ludGVyTG9jaygpOwpAQCAtMTQ3NSwxMiArMTQ2Myw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIG5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCwgYm9vbCwgY29uc3Qg
U3RyaW5nJiwgZG91YmxlLCBkb3VibGUsIHVpbnQ2NF90LCBDYWxsYmFja0lEKTsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRo
QWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sKTsKLSAgICB2b2lkIG1lZGlhU2Vzc2lv
bk1ldGFkYXRhRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJik7
Ci0gICAgdm9pZCBmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCk7
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBBUEk6OkhpdFRlc3RSZXN1bHQqIGxh
c3RNb3VzZU1vdmVIaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TW91c2VNb3Zl
SGl0VGVzdFJlc3VsdC5nZXQoKTsgfQogICAgIHZvaWQgcGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhp
dFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQpOwpAQCAtMjc3OCwxMCArMjc2MCw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzTmV2ZXJSaWNobHlFZGl0YWJsZUZvclRvdWNoQmFy
IHsgZmFsc2UgfTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgYm9v
bCBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzIHsgZmFsc2UgfTsKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgYm9vbCBtX3JlcXVpcmVzVGFyZ2V0TW9uaXRvcmluZyB7IGZhbHNl
IH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDc0LDEy
ICs0NzQsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIElzUGxheWluZ01lZGlh
RGlkQ2hhbmdlKHVuc2lnbmVkIHN0YXRlLCB1aW50NjRfdCBzb3VyY2VFbGVtZW50SUQpCiAgICAg
SGFuZGxlQXV0b3BsYXlFdmVudChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBl
dmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4gZmxhZ3MpCiAKLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBIYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVk
aWFFbGVtZW50c0RpZENoYW5nZShib29sIHN0YXRlKQotICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRh
RGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1ldGFkYXRhKTsKLSAgICBG
b2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVtZW50SUQpCi0j
ZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9u
SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSByZXN1bHQsIGJvb2wg
Y29udGVudFByZXZlbnRzRGVmYXVsdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2
aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksOSArMjg5LDYgQEAgV2ViUHJvY2Vzc1Bvb2w6Oldl
YlByb2Nlc3NQb29sKEFQSTo6UHJvYwogICAgIC8vIE5PVEU6IFRoZXNlIHN1Yi1vYmplY3RzIG11
c3QgYmUgaW5pdGlhbGl6ZWQgYWZ0ZXIgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuLgogICAgIGFkZFN1
cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCk7Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0gICAgYWRkU3VwcGxlbWVudDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCk7Ci0j
ZW5kaWYKIAogICAgIHByb2Nlc3NQb29scygpLmFwcGVuZCh0aGlzKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSwxMCArNTksNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
I2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNNdXRhYmxlRGljdGlvbmFyeTsKIE9CSkNfQ0xB
U1MgTlNPYmplY3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEwICs2MCw2IEBAIGNsYXNzIFdlYkZy
YW1lUHJveHk7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3Mg
V2ViUGFnZVByb3h5Owogc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwotCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi1jbGFzcyBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YTsKLSNlbmRpZgog
fQogCiBuYW1lc3BhY2UgQVBJIHsKQEAgLTE2MSwxMCArMTU3LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBtZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRvcGxh
eUV2ZW50KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0
aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIHsgfQogCi0jaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hh
bmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJNZWRpYVNlc3Npb25NZXRhZGF0
YSopIHsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEhBVkUoQVBQ
X0xJTktTKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JF
bGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNjc3
OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsOCArOTQsNiBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7
CiBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOwogY2xhc3MgV2ViTm90aWZpY2F0
aW9uOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI7CkBAIC0xMzYsOCArMTM0LDYgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdL
SFRUUENvb2tpZVN0b3JlUmVmLAogV0tfQUREX0FQSV9NQVBQSU5HKFdLSGl0VGVzdFJlc3VsdFJl
ZiwgQVBJOjpIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLSWNvbkRhdGFiYXNl
UmVmLCBXZWJJY29uRGF0YWJhc2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYs
IFdlYkluc3BlY3RvclByb3h5KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyUmVmLCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIpCi1XS19BRERfQVBJX01B
UFBJTkcoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiwgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEp
CiBXS19BRERfQVBJX01BUFBJTkcoV0tNZXNzYWdlTGlzdGVuZXJSZWYsIEFQSTo6TWVzc2FnZUxp
c3RlbmVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgQVBJOjpO
YXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkRhdGFSZWYs
IEFQSTo6TmF2aWdhdGlvbkRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNiwxNiArNDM2
LDYgQEAgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIFdLQ29udGV4dEdldAogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZj4oV0tXZWJzaXRl
RGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpKTsKIH0KIAotV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJSZWYgV0tDb250ZXh0R2V0TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKFdLQ29udGV4
dFJlZiBjb250ZXh0KQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGNvbnRleHQpLT5zdXBwbGVtZW50PFdlYktpdDo6
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGNvbnRleHQpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19Ci0KIFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmKQogewogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBs
KGNvbnRleHRSZWYpLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw2IEBAIFdLX0VYUE9SVCBXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIFcKIFdLX0VYUE9SVCBXS0dlb2xvY2F0aW9uTWFuYWdl
clJlZiBXS0NvbnRleHRHZXRHZW9sb2NhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQp
OwogV0tfRVhQT1JUIFdLSWNvbkRhdGFiYXNlUmVmIFdLQ29udGV4dEdldEljb25EYXRhYmFzZShX
S0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
UmVmIFdLQ29udGV4dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRl
eHQpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3Rv
cmVHZXREZWZhdWx0RGF0YVN0b3JlKTsKLVdLX0VYUE9SVCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlclJlZiBXS0NvbnRleHRHZXRNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIoV0tDb250ZXh0UmVm
IGNvbnRleHQpOwogV0tfRVhQT1JUIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBXS0NvbnRleHRH
ZXROb3RpZmljYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFJlc291cmNlQ2FjaGVNYW5hZ2Vy
KFdLQ29udGV4dFJlZiBjb250ZXh0KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1F
TlQoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotCi11c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckdl
dFR5cGVJRCgpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIHRvQVBJ
KFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6QVBJVHlwZSk7Ci0jZWxzZQotICAgIHJldHVy
biB0b0FQSShBUEk6Ok9iamVjdDo6VHlwZTo6TnVsbCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldENsaWVudChXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
clJlZiBtYW5hZ2VyLCBjb25zdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2Uq
IGNsaWVudCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB0b0ltcGwobWFuYWdl
ciktPmluaXRpYWxpemVDbGllbnQoY2xpZW50KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1h
bmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwotI2VuZGlmCi19Ci0KLWJvb2wgV0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJWYWx1ZUZvclBsYXliYWNrQXR0cmlidXRlKFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
UGxheWJhY2tBdHRyaWJ1dGUgYXR0cmlidXRlKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQotICAgIHJldHVybiB0b0ltcGwobWFuYWdlciktPnZhbHVlRm9yUGxheWJhY2tBdHRyaWJ1dGUo
YXR0cmlidXRlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOwotICAgIFVOVVNF
RF9QQVJBTShhdHRyaWJ1dGUpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi12b2lk
IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Vm9sdW1lT2ZGb2N1c2VkTWVkaWFFbGVtZW50
KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIGRvdWJsZSB2b2x1bWUpCi17
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdG9JbXBsKG1hbmFnZXIpLT5zZXRWb2x1
bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQodm9sdW1lKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KG1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTSh2b2x1bWUpOwotI2VuZGlmCi19CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcl9oCi0jZGVmaW5lIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2gKLQotI2luY2x1
ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmbmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUgPHN0
ZGJvb2wuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2Vu
ZGlmCi0KLWVudW0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSB7
Ci0gICAgSXNQbGF5aW5nICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCi0gICAgSXNQcmV2
aW91c1RyYWNrQ29udHJvbEVuYWJsZWQgPSAxIDw8IDEsCi0gICAgSXNOZXh0VHJhY2tDb250cm9s
RW5hYmxlZCAgICAgPSAxIDw8IDIsCi19OwotdHlwZWRlZiB1aW50MzJfdCBXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlczsKLQotLy8gTWVkaWEgU2Vzc2lvbiBGb2N1
cyBNYW5hZ2VyIENsaWVudAotdHlwZWRlZiB2b2lkICgqV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJEaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSkoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJS
ZWYgbWFuYWdlciwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSBw
bGF5YmFja0F0dHJpYnV0ZSwgYm9vbCB2YWx1ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci0K
LXR5cGVkZWYgc3RydWN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSB7Ci0g
ICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRC
YXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudFYw
IHsKLSAgICBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2UgICAgICAgICAgICAg
ICAgIGJhc2U7Ci0KLSAgICAvLyBWZXJzaW9uIDAuCi0gICAgV0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJEaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSBkaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0
ZTsKLX0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRWMDsKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9S
VCB2b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Q2xpZW50KFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
Q2xpZW50QmFzZSogY2xpZW50KTsKLQotV0tfRVhQT1JUIGJvb2wgV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJWYWx1ZUZvclBsYXliYWNrQXR0cmlidXRlKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyUmVmLCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlKTsKLVdL
X0VYUE9SVCB2b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Vm9sdW1lT2ZGb2N1c2Vk
TWVkaWFFbGVtZW50KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmLCBkb3VibGUpOwotCi0j
aWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLyogV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJfaCAqLwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tN
ZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAJKHJldmlzaW9uIDI2Nzc5MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEu
Y3BwCShub25leGlzdGVudCkKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgiCi0KLSNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oIgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhR2V0VHlwZUlEKCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4g
dG9BUEkoV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE6OkFQSVR5cGUpOwotI2Vsc2UKLSAgICByZXR1
cm4gdG9BUEkoQVBJOjpPYmplY3Q6OlR5cGU6Ok51bGwpOwotI2VuZGlmCi19Ci0KLVdLU3RyaW5n
UmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5VGl0bGUoV0tNZWRpYVNlc3Npb25NZXRhZGF0
YVJlZiBtZXRhZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKG1ldGFkYXRhKS0+dGl0bGUoKSk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0KLQotV0tT
dHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBcnRpc3QoV0tNZWRpYVNlc3Npb25N
ZXRhZGF0YVJlZiBtZXRhZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKG1ldGFkYXRhKS0+YXJ0aXN0KCkpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19
Ci0KLVdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5QWxidW0oV0tNZWRpYVNl
c3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKG1ldGFkYXRhKS0+YWxidW0oKSk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5k
aWYKLX0KLQotV0tVUkxSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBcnR3b3JrVVJMKFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChtZXRhZGF0YSktPmFydHdv
cmtVUkwoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci0jZW5kaWYKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9uIDI2Nzc5MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGFfaAotI2RlZmluZSBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhX2gK
LQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmbmRlZiBfX2NwbHVzcGx1cwotI2lu
Y2x1ZGUgPHN0ZGJvb2wuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi
QyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS01lZGlhU2Vzc2lvbk1ldGFkYXRh
R2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhQ29weVRpdGxlKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpOwotV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFDb3B5QXJ0aXN0KFdLTWVkaWFT
ZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpOwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTWVk
aWFTZXNzaW9uTWV0YWRhdGFDb3B5QWxidW0oV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRh
ZGF0YSk7Ci1XS19FWFBPUlQgV0tVUkxSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBcnR3
b3JrVVJMKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEpOwotCi0jaWZkZWYgX19j
cGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YV9o
ICovCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlz
aW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk0LDExICs5NCw2IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1l
bnVJdGVtLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUg
IldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Np
b25FdmVudHMuaD4KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiVmVy
c2lvbkNoZWNrcy5oIgogI2VuZGlmCkBAIC0yMDMzLDE1ICsyMDI4LDYgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVz
aWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlKHRvQVBJKCZwYWdlKSwgdG9B
UEkodXNlckluZm8pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICAgICAgdm9pZCBtZWRpYVNlc3Npb25NZXRhZGF0
YURpZENoYW5nZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKiBt
ZXRhZGF0YSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5tZWRp
YVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIG1fY2xpZW50Lm1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKHRvQVBJKCZw
YWdlKSwgdG9BUEkobWV0YWRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9Ci0jZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICB2b2lkIHJlcXVl
c3RQb2ludGVyTG9jayhXZWJQYWdlUHJveHkqIHBhZ2UpIGZpbmFsCiAgICAgICAgIHsKQEAgLTI3
MzIsNDMgKzI3MTgsNiBAQCB2b2lkIFdLUGFnZURpZERlbnlQb2ludGVyTG9jayhXS1BhZ2VSZWYg
CiAjZW5kaWYKIH0KIAotYm9vbCBXS1BhZ2VIYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFF
bGVtZW50cyhXS1BhZ2VSZWYgcGFnZSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAg
ICByZXR1cm4gdG9JbXBsKHBhZ2UpLT5oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVt
ZW50cygpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCi19Ci0KLXZvaWQgV0tQYWdlSGFuZGxlTWVkaWFFdmVudChXS1BhZ2VSZWYgcGFn
ZSwgV0tNZWRpYUV2ZW50VHlwZSB3a0V2ZW50VHlwZSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICBNZWRpYUV2ZW50VHlwZSBldmVudFR5cGU7Ci0KLSAgICBzd2l0Y2ggKHdrRXZl
bnRUeXBlKSB7Ci0gICAgY2FzZSBrV0tNZWRpYUV2ZW50VHlwZVBsYXlQYXVzZToKLSAgICAgICAg
ZXZlbnRUeXBlID0gTWVkaWFFdmVudFR5cGU6OlBsYXlQYXVzZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBrV0tNZWRpYUV2ZW50VHlwZVRyYWNrTmV4dDoKLSAgICAgICAgZXZlbnRUeXBlID0g
TWVkaWFFdmVudFR5cGU6OlRyYWNrTmV4dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrV0tN
ZWRpYUV2ZW50VHlwZVRyYWNrUHJldmlvdXM6Ci0gICAgICAgIGV2ZW50VHlwZSA9IE1lZGlhRXZl
bnRUeXBlOjpUcmFja1ByZXZpb3VzOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHRvSW1wbChwYWdlKS0+aGFuZGxlTWVkaWFFdmVudChldmVudFR5cGUpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0ocGFnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdrRXZlbnRUeXBlKTsKLSNlbmRp
ZgotfQotCiB2b2lkIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNzYWdlQm9k
eVJlZikKIHsKICAgICB0b0ltcGwocGFnZVJlZiktPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRs
ZSh0b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgdG9JbXBsKG1lc3NhZ2VCb2R5UmVm
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0
ZS5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxOSArMTUxLDggQEAgZW51bSB7
CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS01lZGlhU3RhdGU7CiAKLQogV0tfRVhQT1JUIFdLTWVk
aWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKTsKIAotZW51bSB7Ci0g
ICAga1dLTWVkaWFFdmVudFR5cGVQbGF5UGF1c2UsCi0gICAga1dLTWVkaWFFdmVudFR5cGVUcmFj
a05leHQsCi0gICAga1dLTWVkaWFFdmVudFR5cGVUcmFja1ByZXZpb3VzCi19OwotdHlwZWRlZiB1
aW50MzJfdCBXS01lZGlhRXZlbnRUeXBlOwotCi1XS19FWFBPUlQgYm9vbCBXS1BhZ2VIYXNNZWRp
YVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50cyhXS1BhZ2VSZWYgcGFnZSk7Ci1XS19FWFBP
UlQgdm9pZCBXS1BhZ2VIYW5kbGVNZWRpYUV2ZW50KFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhRXZl
bnRUeXBlIGV2ZW50KTsKLQogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTFdpdGhTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmwsIGJvb2wg
c2hvdWxkT3BlbkV4dGVybmFsVVJMcyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVBvc3RQcmVz
ZW50YXRpb25VcGRhdGVGdW5jdGlvbikoV0tFcnJvclJlZiwgdm9pZCopOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCShyZXZpc2lvbiAy
Njc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDYgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdl
SXNQbGF5aW5nQXVkaW9EaWRDaAogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9y
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4s
IFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiB1
c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgV0tTZWN1cml0eU9yaWdpblJlZiB0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiBkZXZpY2VzUmVxdWVzdCwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRDbGlja0F1
dG9GaWxsQnV0dG9uQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tQYWdlTWVkaWFTZXNz
aW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFTZXNz
aW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRl
ZiB2b2lkICgqV0tIYW5kbGVBdXRvcGxheUV2ZW50Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S0F1dG9wbGF5RXZlbnQgZXZlbnQsIFdLQXV0b3BsYXlFdmVudEZsYWdzIGZsYWdzLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLRnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
IHR5cGVkZWYgdm9pZCAoKldLUmVxdWVzdFBvaW50ZXJMb2NrQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTUwMyw3ICs1MDIsNyBAQCB0eXBlZGVm
IHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY1IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRB
bGVydDsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtOwogICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdDsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRp
YVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIH0gV0tQYWdlVUlDbGllbnRWNTsKIAogdHlwZWRl
ZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWNiB7CkBAIC01NzYsNyArNTc1LDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgV0tQYWdlVUlDbGllbnRWNiB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2Fs
bGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxl
cnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmly
bUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRD
b25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFBy
b21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9u
TWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNl
c3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQg
dG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBWZXJzaW9uIDYu
CiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtNjU2LDcgKzY1NSw3IEBAIHR5cGVk
ZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjcgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVy
dENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlw
dEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENv
bmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2Ny
aXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2
YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vz
c2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBV
c2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogCiAgICAgLy8gVmVyc2lv
biA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTc0MCw3ICs3MzksNyBAQCB0
eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY4IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2
YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZh
U2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1
bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRp
YVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
IG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsg
Ly8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KICAgICAKICAgICAv
LyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtODI4LDcgKzgy
Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjkgewogICAgIFdLUGFnZVJ1bkph
dmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAg
cnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVu
SmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAg
ICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFn
ZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAg
ICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdL
UGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogCiAg
ICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTkxOSw3
ICs5MTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxMCB7CiAgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAg
ICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0g
ICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2Uu
CiAgICAgCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsK
QEAgLTEwMTQsNyArMTAxMyw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjExIHsK
ICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0
aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1
OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdp
dGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOwor
ICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0
YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdl
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5l
d1BhZ2U7CkBAIC0xMTEyLDcgKzExMTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVu
dFYxMiB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENo
YW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9u
TWV0YWRhdGFEaWRDaGFuZ2UuCiAgICAgCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNy
ZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlTmV3UGFnZTsKQEAgLTEyMTMsNyArMTIxMiw3IEBAIHR5cGVkZWYgc3RydWN0IFdL
UGFnZVVJQ2xpZW50VjEzIHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJh
Y2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2Fs
bGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9t
cHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0
YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1l
dGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBt
ZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4KICAgICBX
S1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC0xMzE3LDcgKzEzMTYsNyBAQCB0eXBlZGVmIHN0
cnVjdCBXS1BhZ2VVSUNsaWVudFYxNCB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2Fs
bGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxl
cnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmly
bUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRD
b25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFBy
b21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNzaW9u
TWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVNl
c3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQg
dG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBWZXJzaW9uIDYu
CiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKFdLQXJyYXlSZWYgb3JpZ2luVVJMc1JlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVz
dGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKLSAgICBSZWZQdHI8QVBJOjpBcnJheT4gb3JpZ2luVVJMc0FycmF5ID0gdG9JbXBs
KG9yaWdpblVSTHNSZWYpOworICAgIFJlZlB0cjxBUEk6OkFycmF5PiBvcmlnaW5VUkxzQXJyYXkg
PSBXZWJLaXQ6OnRvSW1wbChvcmlnaW5VUkxzUmVmKTsKICAgICBzaXplX3QgbmV3U2l6ZSA9IG9y
aWdpblVSTHNBcnJheSA/IG9yaWdpblVSTHNBcnJheS0+c2l6ZSgpIDogMDsKICAgICBIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zOwogICAgIGRvbWFpbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShuZXdTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTcwNiwxMSArMTcwNiw2IEBACiAJCUM1RkExRUQzMThFMTA2MjIwMEIzRjQwMiAvKiBXS0Fp
clBsYXlSb3V0ZVBpY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzVGQTFFRDExOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJvdXRlUGlja2Vy
LmggKi87IH07CiAJCUM2QTRDQTBCMjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2QTRDQTA5
MjI1Mjg5OTgwMDE2OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNkE0Q0EwQzIyNTI4OTk4MDAxNjkyODkg
LyogV0tCdW5kbGVQYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzZBNENBMEEyMjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5t
bSAqLzsgfTsKLQkJQzk4QzQ4QTYxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5oICovOyB9OwotCQlDOThDNDhBQTFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUM5
QzE4MzNDMUI3NDAyNkQwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5QzE4
MzM4MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQu
aCAqLzsgfTsKLQkJQzlDRDQzOTgxQjRCMDAxRDAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lvbk1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OUNENDM5NDFCNEIwMDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLzsg
fTsKLQkJQzlDRDQzOUQxQjRCMDI0RjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5Q0Q0MzlB
MUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0EwNTM5NzkyM0VFMzI0NDAw
QTU1M0RDIC8qIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBMDUzOTc4MjNFRTMyNDQwMEE1
NTNEQyAvKiBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmggKi87IH07CiAJCUNE
MDAzQTUzMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDAwM0E1MTE5RDQ5
QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oICovOyB9OwogCQlDRDBD
NjgzMTIwMUZEMTAxMDBBNTk0MDkgLyogV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMEM2ODJGMjAxRkQx
MDEwMEE1OTQwOSAvKiBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5oICovOyB9OwpAQCAtNTA1
MiwxNiArNTA0Nyw2IEBACiAJCUM1RkExRUQyMThFMTA2MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlS
b3V0ZVBpY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
QWlyUGxheVJvdXRlUGlja2VyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlj
a2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkE0Q0EwOTIyNTI4OTk4MDAx
NjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZU1h
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkE0Q0EwQTIyNTI4OTk4MDAxNjky
ODkgLyogV0tCdW5kbGVQYWdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tCdW5kbGVQ
YWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOThDNDhBMzFCNkZENEMz
MDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5OEM0OEE0MUI2RkQ0QzMwMDE0NTEwMyAv
KiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUM5OEM0OEE3MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUMxODMzNzFCNzNGRDZBMDA3
MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNs
aWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5QzE4MzM4MUI3M0ZENkEw
MDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5Q0Q0MzkzMUI0QjAwMEUwMDIzOUUz
MyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUM5Q0Q0Mzk0MUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Np
b25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVNl
c3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUNENDM5OTFC
NEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlDRDQzOUExQjRCMDI0MjAwMjM5RTMzIC8qIFdL
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
QTA1Mzk3ODIzRUUzMjQ0MDBBNTUzREMgLyogQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZy
YW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMDAzQTUwMTlENDlCNUQwMDVBQkNF
MCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOyBwYXRoID0gTWVk
aWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0QwMDNBNTExOUQ0OUI1RDAwNUFCQ0UwIC8qIFdlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5oOyBwYXRoID0gTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTMyLDggKzYxMTcsNiBAQAog
CQkJCUMwMzM3REQyMTI3QTJBMEUwMDhGRjRGNCAvKiBXZWJLZXlib2FyZEV2ZW50LmNwcCAqLywK
IAkJCQlCQzlCQTUwMjE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxpemUuY3BwICov
LAogCQkJCUJDOUJBNTAzMTY5N0M0NTMwMEU0NDYxNiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5oICov
LAotCQkJCUM5Q0Q0MzkzMUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0
YS5jcHAgKi8sCi0JCQkJQzlDRDQzOTQxQjRCMDAwRTAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmggKi8sCiAJCQkJOTA1NjIwRTgxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1lbW9y
eVNhbXBsZXIuY3BwICovLAogCQkJCTkwNTYyMEU5MTJCQzI0OEIwMDA3OTlCNiAvKiBXZWJNZW1v
cnlTYW1wbGVyLmggKi8sCiAJCQkJQzAzMzdEQUYxMjdBMjhEMDAwOEZGNEY0IC8qIFdlYk1vdXNl
RXZlbnQuY3BwICovLApAQCAtOTA1MSwxMCArOTAzNCw2IEBACiAJCQkJQkMxQkUxRjExMkQ1NERC
RDAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwICovLAogCQkJCUJDMUJFMUYw
MTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJNTFD
OEUxOUIxRjIxNjE3MjAwQkY3MzFCIC8qIFdlYkljb25EYXRhYmFzZS5oICovLAotCQkJCUM5OEM0
OEEzMUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwICov
LAotCQkJCUM5OEM0OEE0MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuaCAqLywKLQkJCQlDOUMxODMzNzFCNzNGRDZBMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcCAqLywKLQkJCQlDOUMxODMzODFCNzNGRDZBMDA3MDM2
QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmggKi8sCiAJCQkJMkQzRUY0
NDAxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgKi8sCiAJ
CQkJMkQzRUY0NDExOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5o
ICovLAogCQkJCTdDQ0NDOEY4MUE1RjUwRkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0aW9uU3RhdGUu
Y3BwICovLApAQCAtOTI1NywxMCArOTIzNiw2IEBACiAJCQkJNTFBOUUxMDgxMzE1Q0QxODAwOUU3
MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJNTFBOUUxMDkxMzE1
Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oICovLAogCQkJCTJENzkw
QTlFMUFENzE2NDkwMEFCOTBCMyAvKiBXS0xheW91dE1vZGUuaCAqLywKLQkJCQlDOThDNDhBNzFC
NkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwICovLAotCQkJ
CUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
ICovLAotCQkJCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhLmNwcCAqLywKLQkJCQlDOUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Np
b25NZXRhZGF0YS5oICovLAogCQkJCTVDQUJEQzg0MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3Nh
Z2VMaXN0ZW5lci5jcHAgKi8sCiAJCQkJNUNBQkRDODUyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVz
c2FnZUxpc3RlbmVyLmggKi8sCiAJCQkJQzExRTE2OTMyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9j
a0Rpc3BsYXkuY3BwICovLApAQCAtMTEzMjAsOSArMTEyOTUsNiBAQAogCQkJCUJDOUJBNTA1MTY5
N0M0NTMwMEU0NDYxNiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE2MjgwQzcxOTE5OTUwQzAwNkFEOUY5IC8qIFdlYktpdFByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEMDAzQTUzMTlENDlCNUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOThDNDhBNjFCNkZENEMzMDAxNDUxMDMgLyogV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUMxODMzQzFC
NzQwMjZEMDA3MDM2QTcgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKLQkJCQlDOUNENDM5ODFCNEIwMDFEMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNz
aW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZF
RiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNFRjQ0MzE5MTc2
NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MDk4NTRFRDEyQkM0RTE4MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMTYyMSw4ICsxMTU5Myw2IEBACiAJCQkJNTFBOUUxMEIxMzE1Q0QxODAw
OUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ3OTBBOUYxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNFOTEyMTQyMjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQzk4QzQ4QUExQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUNENDM5RDFCNEIwMjRGMDAyMzlFMzMgLyogV0tN
ZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDBFRTYxQkY2NzdF
MzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQUJEQzg2MjJDNDBGREUwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzExRTE2OTQyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3Bs
YXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc1LDI1ICsxMTc1LDYgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbgogICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9wbGF5RXZlbnQoZXZlbnQsIGZsYWdzKSk7
CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6
Omhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wgc3Rh
dGUpCi17Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFzTWVkaWFT
ZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2Uoc3RhdGUpKTsKLX0KLQotdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6Om1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKGNvbnN0IE1l
ZGlhU2Vzc2lvbk1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShtZXRhZGF0YSkp
OwotfQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnRE
aWRDaGFuZ2UodWludDY0X3QgZWxlbWVudElEKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKGVsZW1l
bnRJRCkpOwotfQotCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogCiBib29sIFdl
YkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsMTIgKzMzNyw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpc1BsYXlpbmdNZWRpYURpZENoYW5nZShXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MsIHVpbnQ2NF90KSBmaW5hbDsKICAgICB2b2lk
IGhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PFdl
YkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogCi0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0gICAgdm9pZCBoYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0Rp
ZENoYW5nZShib29sKSBmaW5hbDsKLSAgICB2b2lkIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhJikgZmluYWw7Ci0gICAgdm9p
ZCBmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCkgZmluYWw7Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogICAgIGJvb2wgd3JhcENyeXB0b0tleShj
b25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWlu
dDhfdD4mKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5MCwxOCAr
NTE5MCw2IEBAIHZvaWQgV2ViUGFnZTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAjZW5kaWYKIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotdm9pZCBXZWJQYWdlOjpoYW5kbGVNZWRpYUV2ZW50
KHVpbnQzMl90IGV2ZW50VHlwZSkKLXsKLSAgICBtX3BhZ2UtPmhhbmRsZU1lZGlhRXZlbnQoc3Rh
dGljX2Nhc3Q8TWVkaWFFdmVudFR5cGU+KGV2ZW50VHlwZSkpOwotfQotCi12b2lkIFdlYlBhZ2U6
OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJ
RCkKLXsKLSAgICBtX3BhZ2UtPnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwgZWxlbWVu
dElEKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2U6OnNldE1heVN0YXJ0TWVkaWFXaGVuSW5X
aW5kb3coYm9vbCBtYXlTdGFydE1lZGlhKQogewogICAgIGlmIChtYXlTdGFydE1lZGlhID09IG1f
bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTY3LDExICs5
NjcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJv
b2wpOwogICAgIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0gICAgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KHVpbnQzMl90IC8qIFdlYkNvcmU6Ok1l
ZGlhRXZlbnRUeXBlICovKTsKLSAgICB2b2lkIHNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJs
ZSwgdWludDY0X3QpOwotI2VuZGlmCi0KICAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9m
ZnNldFBpbm5pbmcoKTsKIAogICAgIGJvb2wgbWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTQxMSwxMSArNDExLDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbgogICAgIFNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCBtYXlTdGFydE1l
ZGlhKQogICAgIFN0b3BNZWRpYUNhcHR1cmUoKQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0gICAgSGFuZGxlTWVkaWFFdmVudCh1aW50MzJfdCBldmVudFR5cGUpCi0gICAgU2V0Vm9sdW1l
T2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQotI2VuZGlm
Ci0KICAgICBTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoYm9vbCBjYW5SdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwpCiAgICAgU2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5Nb2Rh
bCkKIApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJj
ZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDYg
QEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9BVURJTyBQUklWQVRFIE9GRikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElB
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01F
RElBX0NBUFRVUkUgUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTUVESUFfU0VTU0lPTiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TT1VSQ0UgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU1RBVElTVElDUyBQUklWQVRFIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TVFJFQU0g
UFJJVkFURSBPRkYpCkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCShyZXZpc2lvbiAy
Njc3OTApCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Niw3ICsxNjYsNiBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdF
QktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NQVRITUwgIlRvZ2dsZSBNYXRoTUwgc3VwcG9ydCIg
UFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfQ0FQVFVS
RSAiVG9nZ2xlIE1lZGlhIENhcHR1cmUgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCAiVG9nZ2xlIGRlZmlu
aXRpb24gb2YgbWVkaWEgY29udHJvbHMgaW4gSmF2YXNjcmlwdCIgUFJJVkFURSBPTikKLSAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU0VTU0lPTiAiVG9nZ2xlIE1lZGlhIFNl
c3Npb24gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX01FRElBX1NPVVJDRSAiVG9nZ2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiBQUklWQVRFIE9G
RikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RBVElTVElDUyAiVG9n
Z2xlIE1lZGlhIFN0YXRpc3RpY3Mgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX01FRElBX1NUUkVBTSAiVG9nZ2xlIE1lZGlhIFN0cmVhbSBzdXBw
b3J0IiBQUklWQVRFIE9GRikKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA5LTMwICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29kZSBiZWhpbmQgRU5BQkxFKE1FRElB
X1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG06CisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIE1FRElBX1NFU1NJ
T04gZW5hYmxlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6Cisg
ICAgICAgIFVwZGF0ZSBuYW1lcyB0byBuZXcgJ3VudXNlZCcgbmFtaW5nLgorCiAyMDIwLTA5LTMw
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0
cmVhbWVyXSBJbnRlcm5hbCBhdWRpbyByZW5kZXJpbmcgc3VwcG9ydApJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQkocmV2aXNpb24gMjY3NzkwKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
NyArMTE5LDYgQEAgbXkgKAogICAgICRtYXRobWxTdXBwb3J0LAogICAgICRtZWRpYUNhcHR1cmVT
dXBwb3J0LAogICAgICRtZWRpYUNvbnRyb2xzU2NyaXB0U3VwcG9ydCwKLSAgICAkbWVkaWFTZXNz
aW9uU3VwcG9ydCwKICAgICAkbWVkaWFTb3VyY2VTdXBwb3J0LAogICAgICRtZWRpYVN0YXRpc3Rp
Y3NTdXBwb3J0LAogICAgICRtZWRpYVN0cmVhbVN1cHBvcnQsCkBAIC0zOTksOSArMzk4LDYgQEAg
bXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJtZWRpYS1jb250cm9scy1zY3JpcHQi
LCBkZXNjID0+ICJUb2dnbGUgZGVmaW5pdGlvbiBvZiBtZWRpYSBjb250cm9scyBpbiBKYXZhc2Ny
aXB0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCIsIHZh
bHVlID0+IFwkbWVkaWFDb250cm9sc1NjcmlwdFN1cHBvcnQgfSwKIAotICAgIHsgb3B0aW9uID0+
ICJtZWRpYS1zZXNzaW9uIiwgZGVzYyA9PiAiVG9nZ2xlIE1lZGlhIFNlc3Npb24gc3VwcG9ydCIs
Ci0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9NRURJQV9TRVNTSU9OIiwgdmFsdWUgPT4gXCRtZWRp
YVNlc3Npb25TdXBwb3J0IH0sCi0KICAgICB7IG9wdGlvbiA9PiAibWVkaWEtc291cmNlIiwgZGVz
YyA9PiAiVG9nZ2xlIE1lZGlhIFNvdXJjZSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX01FRElBX1NPVVJDRSIsIHZhbHVlID0+IFwkbWVkaWFTb3VyY2VTdXBwb3J0IH0sCiAKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
Njc3OTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw3IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlT3RoZXJQYWcKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAgICAg
IDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQ
cm9tcHQKLSAgICAgICAgMCwgLy8gbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UKKyAgICAg
ICAgMCwgLy8gdW51c2VkNQogICAgICAgICBjcmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIHJ1bkph
dmFTY3JpcHRBbGVydCwKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KQEAgLTcx
NCw3ICs3MTQsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wCiAg
ICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAogICAgICAgICAwLCAvLyBydW5KYXZhU2Ny
aXB0Q29uZmlybQogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0Ci0gICAgICAgIDAs
IC8vIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlCisgICAgICAgIDAsIC8vIHVudXNlZDUK
ICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQsCiAg
ICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjc3
OTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wOS0zMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIGNvZGUgYmVoaW5kIEVOQUJMRShNRURJQV9TRVNTSU9OKSwgbm8gcG9ydHMgZW5h
YmxlIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTY4MzEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
IFJlbW92ZSBhbHdheXMgc2tpcHBlZCBNZWRpYSBTZXNzaW9uIHRlc3RzLgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIG1lZGlhL3Nlc3Npb246IFJlbW92ZWQuCisKIDIwMjAtMDktMzAgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hv
dWxkIHN1cHBvcnQgaXNUeXBlU3VwcG9ydGVkCkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlz
aW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MzEsOSArMTkzMSw2IEBAIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLXdlYnAuaHRtbCBb
IFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTQ2MTgyIGVkaXRpbmcvc2VsZWN0aW9uL2xlYWstZG9j
dW1lbnQtd2l0aC1zZWxlY3Rpb24taW5zaWRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi0jIE1l
ZGlhIFNlc3Npb25zIGlzIG5vdCB5ZXQgZW5hYmxlZCBieSBkZWZhdWx0OiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKLW1lZGlhL3Nlc3Npb24gWyBTa2lwIF0KLQogIyBFeHBlcmltZW50YWwgSDI2NSBz
dXBwb3J0Lgogd2VicnRjL2gyNjUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKSW5kZXg6IExheW91
dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjY3NzkwKQorKysg
TGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpA
QCAtMjU4LDggKzI1OCw2IEBAIG1lZGlhL3ByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkLWZpcmVkLW9u
Y2UKIG1lZGlhL3Byb2dyZXNzLWV2ZW50cy1nZW5lcmF0ZWQtY29ycmVjdGx5Lmh0bWwgWyBTa2lw
IF0KIG1lZGlhL3JlbW90ZXBsYXliYWNrLXByb21wdC5odG1sIFsgU2tpcCBdCiAKLW1lZGlhL3Nl
c3Npb24gWyBTa2lwIF0KLQogbWVkaWEvdHJhY2svYXVkaW8vYXVkaW8tdHJhY2stbWt2LXZvcmJp
cy1hZGR0cmFjay5odG1sIFsgU2tpcCBdCiBtZWRpYS90cmFjay9hdWRpby9hdWRpby10cmFjay1t
a3Ytdm9yYmlzLWVuYWJsZWQuaHRtbCBbIFNraXAgXQogbWVkaWEvdHJhY2svYXVkaW8vYXVkaW8t
dHJhY2stbWt2LXZvcmJpcy1sYW5ndWFnZS5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAt
MSwxMiArMCwwIEBACi0nQ29udGVudCcgc3RhcnQgb2YgaW50ZXJydXB0aW9uIGV2ZW50cyBzaG91
bGQgaW5kZWZpbml0ZWx5IHBhdXNlICdDb250ZW50JyBtZWRpYSBzZXNzaW9ucy4KLQotCi1XYWl0
aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuCi1NZWRpYSBiZWdhbiBwbGF5
aW5nLgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lv
bikgPT0gJ2FjdGl2ZScpIE9LCi1TZW5kaW5nICdDb250ZW50JyBzdGFydC1vZi1pbnRlcnJ1cHRp
b24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRPZklu
dGVycnVwdGlvbk5vdGlmaWNhdGlvbigiY29udGVudCIpKQotVGhlIG1lZGlhIGVsZW1lbnQgd2Fz
IHBhdXNlZC4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNl
c3Npb24pID09ICdpZGxlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMuaHRtbAkocmV2aXNp
b24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVw
dGlvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDU0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0g
ICAgCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAg
ZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Np
b24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJXYWl0aW5nIGZvciBD
b250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcuIikKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9
IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAg
ICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgdmlkZW8ub25wbGF5aW5n
ID0gYmVnYW5QbGF5aW5nOwotICAgICAgICAgICAgdmlkZW8ub25jYW5wbGF5dGhyb3VnaCA9IGNh
bnBsYXl0aHJvdWdoOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91
Z2goKSAKLSAgICAgICAgewotICAgICAgICAgICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB2
aWRlby5vbnBhdXNlID0gcGF1c2VkOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lv
bkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ0NvbnRlbnQnIHN0YXJ0LW9mLWlu
dGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5h
bHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oImNvbnRl
bnQiKScpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcGF1
c2VkKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRoZSBtZWRp
YSBlbGVtZW50IHdhcyBwYXVzZWQuIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxz
Lm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpZGxlIik7Ci0KLSAgICAgICAg
ICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPidDb250ZW50JyBzdGFydCBvZiBpbnRlcnJ1cHRp
b24gZXZlbnRzIHNob3VsZCBpbmRlZmluaXRlbHkgcGF1c2UgJ0NvbnRlbnQnIG1lZGlhIHNlc3Np
b25zLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiBjb250cm9scz4gPC92aWRlbz4KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1zZXNz
aW9uLWZvY3VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9z
ZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5
MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVudC1zZXNzaW9uLWZvY3VzLWV4
cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDIyICswLDAgQEAKLVBsYXlpbmcgYSBtZWRp
YSBlbGVtZW50IGJlbG9uZ2luZyB0byBhIENvbnRlbnQgbWVkaWEgc2Vzc2lvbiBzaG91bGQgcGF1
c2Ugb3RoZXIgcGxheWluZyBDb250ZW50IG1lZGlhIGVsZW1lbnRzLgotCi0KLUVWRU5UKGNhbnBs
YXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvMS5wYXVzZWQgPT0gJ3RydWUnKSBPSwotQmVnaW4g
cGxheWluZyBmaXJzdCB2aWRlby4KLUVWRU5UKHBsYXlpbmcpCi1GaXJzdCB2aWRlbyBiZWdhbiBw
bGF5aW5nLgotRVhQRUNURUQgKHZpZGVvMS5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLQotU2V0dGlu
ZyB1cCBzZWNvbmQgdmlkZW8uCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRl
bzEucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAodmlkZW8yLnBhdXNlZCA9PSAndHJ1
ZScpIE9LCi1CZWdpbiBwbGF5aW5nIHNlY29uZCB2aWRlby4KLUVWRU5UKHBsYXlpbmcpCi1TZWNv
bmQgdmlkZW8gYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlbzIucGF1c2VkID09ICdmYWxz
ZScpIE9LCi1FVkVOVChwYXVzZSkKLUVYUEVDVEVEICh2aWRlbzEucGF1c2VkID09ICd0cnVlJykg
T0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udGVu
dC1zZXNzaW9uLWZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vz
c2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5
b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMuaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb24sIHZpZGVvMSwgdmlkZW8yOwotCi0g
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lv
biA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgdmlkZW8xID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvMSIpOwotICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZ1ZpZGVvMSwgZmFsc2UsIHRydWUsIHZp
ZGVvMSk7Ci0gICAgICAgICAgICB2aWRlbzEuc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAi
Li4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8xLnNlc3Npb24gPSBzZXNz
aW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nVmlk
ZW8xLCBmYWxzZSwgdHJ1ZSwgdmlkZW8xKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IGJlZ2luUGxheWluZ1ZpZGVvMShldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCd2aWRlbzEucGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiQmVnaW4gcGxheWluZyBmaXJzdCB2aWRlby4iKTsKLSAgICAgICAgICAgIHZpZGVvMS5wbGF5
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmdWaWRlbzEoZXZl
bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRmlyc3QgdmlkZW8gYmVn
YW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8xLnBhdXNlZCcs
IGZhbHNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2V0dGluZyB1cCBzZWNvbmQgdmlkZW8uIik7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIHZpZGVvMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2
aWRlbzIiKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdp
blBsYXlpbmdWaWRlbzIsIGZhbHNlLCB0cnVlLCB2aWRlbzIpOwotICAgICAgICAgICAgdmlkZW8y
LnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAg
ICAgICAgICAgIHZpZGVvMi5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZ1ZpZGVvMiwgZmFsc2UsIHRydWUsIHZpZGVvMik7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZ1ZpZGVv
MihldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzEucGF1
c2VkJywgZmFsc2UpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzIucGF1c2VkJywg
dHJ1ZSk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BhdXNlJywgcGF1c2VkVmlkZW8xLCBm
YWxzZSwgdHJ1ZSwgdmlkZW8xKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBw
bGF5aW5nIHNlY29uZCB2aWRlby4iKTsKLSAgICAgICAgICAgIHZpZGVvMi5wbGF5KCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIHBhdXNlZFZpZGVvMShldmVudCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzEucGF1c2VkJywgdHJ1ZSk7
Ci0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBi
ZWdhblBsYXlpbmdWaWRlbzIoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiU2Vjb25kIHZpZGVvIGJlZ2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3ZpZGVvMi5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5QbGF5aW5nIGEgbWVk
aWEgZWxlbWVudCBiZWxvbmdpbmcgdG8gYSBDb250ZW50IG1lZGlhIHNlc3Npb24gc2hvdWxkIHBh
dXNlIG90aGVyIHBsYXlpbmcgQ29udGVudCBtZWRpYSBlbGVtZW50cy48L3A+Ci0gICAgPHZpZGVv
IGlkPSJ2aWRlbzEiIC8+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbzIiIC8+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0ZW5jZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250
cm9scy1leGlzdGVuY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0ZW5jZS1leHBlY3RlZC50eHQJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxMiArMCwwIEBACi1Pbmx5IENvbnRlbnQgTWVkaWEgU2Vzc2lvbnMgc2hv
dWxkIGhhdmUgbWVkaWEgcmVtb3RlIGNvbnRyb2xzIGFmdGVyIGNyZWF0aW9uLgotCi1SVU4oc2Vz
c2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ2NvbnRlbnQnKSkKLUVYUEVDVEVEIChzZXNzaW9uLmNv
bnRyb2xzICE9ICdudWxsJykgT0sKLVJVTihzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigndHJh
bnNpZW50JykpCi1FWFBFQ1RFRCAoc2Vzc2lvbi5jb250cm9scyA9PSAnbnVsbCcpIE9LCi1SVU4o
c2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudC1zb2xvJykpCi1FWFBFQ1RFRCAo
c2Vzc2lvbi5jb250cm9scyA9PSAnbnVsbCcpIE9LCi1SVU4oc2Vzc2lvbiA9IG5ldyBNZWRpYVNl
c3Npb24oJ2FtYmllbnQnKSkKLUVYUEVDVEVEIChzZXNzaW9uLmNvbnRyb2xzID09ICdudWxsJykg
T0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udHJv
bHMtZXhpc3RlbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9jb250cm9scy1leGlzdGVuY2UuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi9jb250cm9scy1leGlzdGVuY2UuaHRtbAkobm9uZXhpc3RlbnQpCkBA
IC0xLDMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2Ny
aXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0gICAgCi0gICAgICAgIGZ1bmN0
aW9uIGRvVGVzdCAoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRp
YVNlc3Npb24oImNvbnRlbnQiKTsKLSAgICAgICAgICAgIHJ1bigic2Vzc2lvbiA9IG5ldyBNZWRp
YVNlc3Npb24oJ2NvbnRlbnQnKSIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJzZXNzaW9u
LmNvbnRyb2xzIiwgbnVsbCwgJyE9Jyk7Ci0KLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVk
aWFTZXNzaW9uKCJ0cmFuc2llbnQiKTsKLSAgICAgICAgICAgIHJ1bigic2Vzc2lvbiA9IG5ldyBN
ZWRpYVNlc3Npb24oJ3RyYW5zaWVudCcpIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInNl
c3Npb24uY29udHJvbHMiLCBudWxsKTsKLQotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRp
YVNlc3Npb24oInRyYW5zaWVudC1zb2xvIik7Ci0gICAgICAgICAgICBydW4oInNlc3Npb24gPSBu
ZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2llbnQtc29sbycpIik7Ci0gICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInNlc3Npb24uY29udHJvbHMiLCBudWxsKTsKLQotICAgICAgICAgICAgc2Vzc2lvbiA9
IG5ldyBNZWRpYVNlc3Npb24oImFtYmllbnQiKTsKLSAgICAgICAgICAgIHJ1bigic2Vzc2lvbiA9
IG5ldyBNZWRpYVNlc3Npb24oJ2FtYmllbnQnKSIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJzZXNzaW9uLmNvbnRyb2xzIiwgbnVsbCk7Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAg
ICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+
Ci0gICAgPHA+T25seSBDb250ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBoYXZlIG1lZGlhIHJl
bW90ZSBjb250cm9scyBhZnRlciBjcmVhdGlvbi48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9kZWZhdWx0LXNlc3Npb24t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL2RlZmF1bHQtc2Vzc2lvbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw2ICsw
LDAgQEAKLU5ldyBtZWRpYSBlbGVtZW50cyBhcmUgYXNzaWduZWQgdG8gdGhlIERlZmF1bHQgbWVk
aWEgc2Vzc2lvbiwgd2hpY2ggaXMgbm90IGV4cG9zZWQgdGhyb3VnaCB0aGUgc2Vzc2lvbiBhdHRy
aWJ1dGUuCi0KLVJVTihhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhdWRp
bycpKQotRVhQRUNURUQgKGF1ZGlvRWxlbWVudC5zZXNzaW9uID09ICdudWxsJykgT0sKLUVORCBP
RiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVmYXVsdC1zZXNzaW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9kZWZhdWx0LXNl
c3Npb24uaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9kZWZhdWx0LXNlc3Npb24uaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAg
ICAgICAgZnVuY3Rpb24gZG9UZXN0ICgpIAotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYXVk
aW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYXVkaW8iKTsKLSAgICAgICAgICAg
IHJ1bigiYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKSIpOwot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJhdWRpb0VsZW1lbnQuc2Vzc2lvbiIsIG51bGwpOwot
Ci0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgotICAgIDxwPk5ldyBtZWRpYSBlbGVtZW50cyBh
cmUgYXNzaWduZWQgdG8gdGhlIERlZmF1bHQgbWVkaWEgc2Vzc2lvbiwgd2hpY2ggaXMgbm90IGV4
cG9zZWQgdGhyb3VnaCB0aGUgc2Vzc2lvbiBhdHRyaWJ1dGUuPC9wPgotPC9ib2R5PgotPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50
cy1pbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vz
c2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMjEgKzAsMCBAQAotJ0NvbnRlbnQnIHNlc3Np
b25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0byBQbGF5L1BhdXNlIG1lZGlhIGNv
bnRyb2wgZXZlbnRzLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKGludGVy
bmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotSWRs
ZSBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMu
Ci1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLVNlbmRpbmcgUGxheS9QYXVz
ZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5
LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLQotUGxheWlu
ZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQg
KHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNl
c3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1TZW5kaW5nIFBsYXkv
UGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgi
cGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1FTkQg
T0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVk
aWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vz
c2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotCi0gICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNl
c3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAg
ICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0g
ICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50
L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAg
ICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUs
IHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVu
dCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRl
KHNlc3Npb24pJywgImlkbGUiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJJZGxlIE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNl
IGV2ZW50cy4iKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0
cnVlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
LSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBl
dmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250cm9s
RXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlk
ZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlBsYXlpbmcgbWVkaWEuIik7Ci0g
ICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBi
ZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
TWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8u
cGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewot
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJl
bnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAg
IHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0g
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J0NvbnRlbnQn
IHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0byBQbGF5L1BhdXNlIG1l
ZGlhIGNvbnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1l
ZGlhLWV2ZW50cy1pbi1kZWZhdWx0LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWRl
ZmF1bHQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWRlZmF1bHQtc2Vz
c2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTggKzAsMCBAQAotJ0RlZmF1
bHQnIG1lZGlhIHNlc3Npb25zIHNob3VsZCByZXNwb25kIHRvIHBsYXkvcGF1c2UgbWVkaWEgZXZl
bnRzLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAndHJ1ZScpIE9LCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJu
YWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVv
LnBhdXNlZCA9PSAndHJ1ZScpIE9LCi0KLVBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5nKQot
TWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykg
T0sKLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1l
ZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICd0cnVlJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNzaW9ucy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVu
dHMtaW4tZGVmYXVsdC1zZXNzaW9ucy5odG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWRlZmF1bHQtc2Vz
c2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAg
ICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291
bnRpbmciKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWlu
ZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJl
Z2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgUGxheS9QYXVzZSBtZWRp
YSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFDb250
cm9sRXZlbnQoInBsYXktcGF1c2UiKScpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
dmlkZW8ucGF1c2VkJywgdHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlBsYXlpbmcgbWVkaWEuIik7
Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlk
ZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykg
ewotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlh
IGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRy
b2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlby5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZW5kVGVz
dCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Ci0gICAgPHA+J0RlZmF1bHQnIG1lZGlhIHNlc3Npb25zIHNob3VsZCByZXNwb25k
IHRvIHBsYXkvcGF1c2UgbWVkaWEgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAv
PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5
LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlh
LWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2
Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVu
dHMtaW4tbm9uLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAg
LTEsNDEgKzAsMCBAQAotJ1RyYW5zaWVudCcsICdUcmFuc2llbnQgU29sbycsIGFuZCAnQW1iaWVu
dCcgc2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2UgbWVkaWEgY29udHJv
bCBldmVudHMuCi0KLQotLS0tCi1UZXN0aW5nICJ0cmFuc2llbnQiIHNlc3Npb24ga2luZAotLS0t
Ci1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5
aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGlu
dGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9L
Ci1Ob24tQ29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9Q
YXVzZSBldmVudHMuCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJu
YWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVzZSIpKQotRVhQRUNURUQgKHZpZGVv
LnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotLS0tCi1UZXN0aW5nICJ0cmFuc2llbnQtc29sbyIgc2Vz
c2lvbiBraW5kCi0tLS0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVZFTlQocGxheWluZykKLU1l
ZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9L
Ci1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9
PSAnYWN0aXZlJykgT0sKLU5vbi1Db250ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVz
cG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4KLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVu
dC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1F
WFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi0tLS0KLVRlc3RpbmcgImFtYmll
bnQiIHNlc3Npb24ga2luZAotLS0tCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVWRU5UKHBsYXlp
bmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFs
c2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1Ob24tQ29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91bGQg
bm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMuCi1TZW5kaW5nIFBsYXkvUGF1c2UgbWVk
aWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicGxheS1wYXVz
ZSIpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRU5EIE9GIFRFU1QK
LQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50
cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tbm9uLWNvbnRlbnQtc2Vz
c2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy5odG1sCShu
b25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsKLQotICAgICAgICBmdW5j
dGlvbiBydW5BbGxUZXN0cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1l
bnQoKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBs
YXlpbmcpOwotICAgICAgICAgICAgcnVuVGVzdCgidHJhbnNpZW50Iik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBydW5UZXN0KHNlc3Npb25LaW5kKSAKLSAgICAgICAgewotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCctLS0nKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVGVz
dGluZyAiJyArIHNlc3Npb25LaW5kICsgJyIgc2Vzc2lvbiBraW5kJyk7Ci0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoJy0tLScpOwotCi0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vz
c2lvbihzZXNzaW9uS2luZCk7Ci0KLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZp
bGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNl
c3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVn
YW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB2aWRlby5w
bGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWlu
Zy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwot
Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScs
ICJhY3RpdmUiKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTm9uLUNvbnRlbnQg
TWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2UgZXZlbnRzLiIp
OwotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlh
IGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRy
b2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICh2aWRlby5zZXNzaW9uLmtpbmQgPT0gInRyYW5zaWVudCIpCi0gICAgICAgICAg
ICAgICAgcnVuVGVzdCgidHJhbnNpZW50LXNvbG8iKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHZp
ZGVvLnNlc3Npb24ua2luZCA9PSAidHJhbnNpZW50LXNvbG8iKQotICAgICAgICAgICAgICAgIHJ1
blRlc3QoImFtYmllbnQiKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHZpZGVvLnNlc3Npb24ua2lu
ZCA9PSAiYW1iaWVudCIpCi0gICAgICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJVbmV4cGVjdGVkIHNlc3Npb24ga2luZCIp
OwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1bkFs
bFRlc3RzKCkiPgotICAgIDxwPidUcmFuc2llbnQnLCAnVHJhbnNpZW50IFNvbG8nLCBhbmQgJ0Ft
YmllbnQnIHNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIG1lZGlhIGNv
bnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lvbnMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcmVs
ZWFzaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKQEAgLTEsMTUgKzAsMCBAQAotU2Vzc2lvbnMgdGhhdCBhcmUgZXhwbGljaXRseSBy
ZWxlYXNlZCBzaG91bGQgaGF2ZSB0aGVpciBtZWRpYSBlbGVtZW50cyBpbmRlZmluaXRlbHkgcGF1
c2VkIGFuZCBnbyBpbnRvIGFuIElkbGUgc3RhdGUuCi0KLQotRVZFTlQoY2FucGxheXRocm91Z2gp
Ci1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBsYXlpbmcgbWVk
aWEuCi1FVkVOVChwbGF5aW5nKQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRl
by5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9u
Q3VycmVudFN0YXRlKHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotUlVOKHNlc3Npb24uZGVhY3Rp
dmF0ZSgpKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1FWFBFQ1RFRCAo
aW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9L
Ci1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3JlbGVhc2lu
Zy1zZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24v
cmVsZWFzaW5nLXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3Nlc3Npb24vcmVsZWFzaW5nLXNlc3Npb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAt
MSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9t
ZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAK
LSAgICAgICAgewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRl
bnQiKTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgd2Fp
dEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICB2
aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7
Ci0gICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRG
b3JFdmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAg
ewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIpOwotICAgICAgICAg
ICAgdmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5
aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJl
Z2FuIHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcs
IGZhbHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNl
c3Npb24pJywgImFjdGl2ZSIpOwotCi0gICAgICAgICAgICBydW4oJ3Nlc3Npb24uZGVhY3RpdmF0
ZSgpJyk7Ci0KLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgdHJ1ZSk7
Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScs
ICJpZGxlIik7Ci0KLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlNlc3Npb25z
IHRoYXQgYXJlIGV4cGxpY2l0bHkgcmVsZWFzZWQgc2hvdWxkIGhhdmUgdGhlaXIgbWVkaWEgZWxl
bWVudHMgaW5kZWZpbml0ZWx5IHBhdXNlZCBhbmQgZ28gaW50byBhbiBJZGxlIHN0YXRlLjwvcD4K
LSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nl
c3Npb24tY3JlYXRpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMzAgKzAsMCBA
QAotTmV3IG1lZGlhIHNlc3Npb25zIHNob3VsZCBiZSBpbiBhbiBJZGxlIHN0YXRlIGFmdGVyIGNy
ZWF0aW9uLgotCi0KLS0tLQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbignY29udGVudCcpIgot
RVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0g
J2lkbGUnKSBPSwotLS0tCi0KLS0tLQotVGVzdGluZyAibmV3IE1lZGlhU2Vzc2lvbigndHJhbnNp
ZW50JykiCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKSA9PSAnaWRsZScpIE9LCi0tLS0KLQotLS0tCi1UZXN0aW5nICJuZXcgTWVkaWFTZXNzaW9u
KCd0cmFuc2llbnQtc29sbycpIgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJy
ZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLS0tLQotVGVzdGluZyAibmV3
IE1lZGlhU2Vzc2lvbignYW1iaWVudCcpIgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Np
b25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLS0tLQotVGVzdGlu
ZyAibmV3IE1lZGlhU2Vzc2lvbigpIgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25D
dXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lkbGUnKSBPSwotLS0tCi0KLUVORCBPRiBURVNUCi0K
SW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi5o
dG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Np
b24tY3JlYXRpb24uaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0Lmpz
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAg
ZnVuY3Rpb24gZG9UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RTZXNzaW9uS2lu
ZCgiY29udGVudCIpOwotICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCJ0cmFuc2llbnQiKTsK
LSAgICAgICAgICAgIHRlc3RTZXNzaW9uS2luZCgidHJhbnNpZW50LXNvbG8iKTsKLSAgICAgICAg
ICAgIHRlc3RTZXNzaW9uS2luZCgiYW1iaWVudCIpOwotICAgICAgICAgICAgdGVzdFNlc3Npb25L
aW5kKCk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICBlbmRU
ZXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0ZXN0U2Vzc2lvbktpbmQoc2Vz
c2lvbktpbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPi0tLSIp
OwotCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbktpbmQgIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0aW5nIFwibmV3IE1lZGlhU2Vzc2lvbignIiArIHNl
c3Npb25LaW5kICsgIicpXCIiKTsKLSAgICAgICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlh
U2Vzc2lvbihzZXNzaW9uS2luZCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiVGVzdGluZyBcIm5ldyBNZWRpYVNlc3Npb24oKVwiIik7Ci0gICAg
ICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywg
ImlkbGUiKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLS0tIik7Ci0gICAgICAgIH0KLSAg
ICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgotICAgIDxwPk5l
dyBtZWRpYSBzZXNzaW9ucyBzaG91bGQgYmUgaW4gYW4gSWRsZSBzdGF0ZSBhZnRlciBjcmVhdGlv
bi48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3N3aXRjaGluZy1zZXNzaW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3N3aXRjaGluZy1zZXNzaW9u
cy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNCArMCwwIEBACi1XaGVuIHN3aXRj
aGluZyBtZWRpYSBzZXNzaW9ucywgbWVkaWEgZWxlbWVudHMgYmVsb25naW5nIHRvIHRoZSBvbGQg
c2Vzc2lvbiBzaG91bGQgYmUgcGF1c2VkLgotCi0KLVJVTihzZXNzaW9uID0gbmV3IE1lZGlhU2Vz
c2lvbigiY29udGVudCIpKQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8u
cGF1c2VkID09ICd0cnVlJykgT0sKLUJlZ2luIHBsYXlpbmcgbWVkaWEuCi1FVkVOVChwbGF5aW5n
KQotTWVkaWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNl
JykgT0sKLVJVTih2aWRlby5zZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigidHJhbnNpZW50Iikp
Ci1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUVORCBPRiBURVNUCi0KSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNlc3Npb25zLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMu
aHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0
Y2hpbmctc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVz
dC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNl
c3Npb247Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAg
ICAgICBydW4oJ3Nlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50IiknKTsKLQotICAg
ICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdj
YW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICB2aWRlby5zcmMgPSBm
aW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAg
ICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxh
eWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgY29u
c29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIpOwotICAgICAgICAgICAgdmlkZW8ucGxh
eSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5nKGV2ZW50KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2FuIHBsYXlpbmcu
Iik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZhbHNlKTsKLQot
ICAgICAgICAgICAgcnVuKCd2aWRlby5zZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigidHJhbnNp
ZW50IiknKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVl
KTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+V2hlbiBzd2l0Y2hpbmcg
bWVkaWEgc2Vzc2lvbnMsIG1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0byB0aGUgb2xkIHNlc3Np
b24gc2hvdWxkIGJlIHBhdXNlZC48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEt
ZXZlbnRzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEt
ZXZlbnRzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2ICswLDAg
QEAKLVByZXZpb3VzL05leHQgVHJhY2sgZXZlbnRzIHNob3VsZCBub3QgYmUgZmlyZWQgaWYgcHJl
dmlvdXMvbmV4dFRyYWNrRW5hYmxlZCBhcmUgJ2ZhbHNlJy4KLQotCi1FVkVOVChjYW5wbGF5dGhy
b3VnaCkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotQmVnaW4gcGxheWlu
ZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQg
KHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNl
c3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1TZW5kaW5nIE5leHQg
VHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgi
bmV4dC10cmFjayIpKQotU2VuZGluZyBQcmV2aW91cyBUcmFjayBtZWRpYSBldmVudC4KLVJVTihp
bnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwcmV2aW91cy10cmFjayIpKQotRU5EIE9G
IFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVu
dHMtZGlzYWJsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1kaXNhYmxlZC5odG1s
CShub25leGlzdGVudCkKQEAgLTEsNjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbiwgY29udHJvbHM7Ci0K
LSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBzZXNz
aW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotICAgICAgICAgICAgY29udHJvbHMg
PSBzZXNzaW9uLmNvbnRyb2xzOwotICAgICAgICAgICAgY29udHJvbHMubmV4dFRyYWNrRW5hYmxl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgY29udHJvbHMucHJldmlvdXNUcmFja0VuYWJsZWQgPSBm
YWxzZTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnbmV4dHRyYWNrJywgc2tpcFRvTmV4dFRy
YWNrLCBmYWxzZSwgdHJ1ZSwgY29udHJvbHMpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdw
cmV2aW91c3RyYWNrJywgc2tpcFRvUHJldmlvdXNUcmFjaywgZmFsc2UsIHRydWUsIGNvbnRyb2xz
KTsKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICB2aWRl
by5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0g
ICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHdhaXRGb3JF
dmVudCgncGxheWluZycsIGJlZ2FuUGxheWluZywgZmFsc2UsIHRydWUsIHZpZGVvKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2luUGxheWluZyhldmVudCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJCZWdpbiBwbGF5aW5nIG1lZGlhLiIpOwotICAgICAgICAgICAg
dmlkZW8ucGxheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnYW5QbGF5aW5n
KGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIk1lZGlhIGJlZ2Fu
IHBsYXlpbmcuIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIGZh
bHNlKTsKLQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRp
bmcgTmV4dCBUcmFjayBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVy
bmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoIm5leHQtdHJhY2siKScpOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQcmV2aW91cyBUcmFj
ayBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVk
aWFDb250cm9sRXZlbnQoInByZXZpb3VzLXRyYWNrIiknKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgiZW5kVGVzdCgpIiwgMjAwKTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2tpcFRvTmV4dFRyYWNrKGV2ZW50KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsVGVzdCgibmV4dC10cmFjayBldmVudHMgc2hvdWxk
IG5vdCBiZSBmaXJlZC4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNraXBUb1By
ZXZpb3VzVHJhY2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZhaWxUZXN0KCJwcmV2
aW91cy10cmFjayBldmVudHMgc2hvdWxkIG5vdCBiZSBmaXJlZC4iKTsKLSAgICAgICAgfQotICAg
IDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlBy
ZXZpb3VzL05leHQgVHJhY2sgZXZlbnRzIHNob3VsZCBub3QgYmUgZmlyZWQgaWYgcHJldmlvdXMv
bmV4dFRyYWNrRW5hYmxlZCBhcmUgJ2ZhbHNlJy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIg
Lz4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJh
Y2stbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWluLWNv
bnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25z
LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICswLDAgQEAKLSdDb250ZW50JyBz
ZXNzaW9ucyB0aGF0IGFyZSBhY3RpdmUgc2hvdWxkIHJlc3BvbmQgdG8gUHJldmlvdXMvTmV4dCBU
cmFjayBtZWRpYSBjb250cm9sIGV2ZW50cy4KLQotCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVY
UEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdp
ZGxlJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotQmVnaW4gcGxh
eWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNU
RUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1TZW5kaW5nIE5l
eHQgVHJhY2sgbWVkaWEgZXZlbnQuCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVu
dCgibmV4dC10cmFjayIpKQotRVZFTlQobmV4dHRyYWNrKQotU2VuZGluZyBQcmV2aW91cyBUcmFj
ayBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwcmV2
aW91cy10cmFjayIpKQotRVZFTlQocHJldmlvdXN0cmFjaykKLUVORCBPRiBURVNUCi0KSW5kZXg6
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQt
c2Vzc2lvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Ry
YWNrLW1lZGlhLWV2ZW50cy1pbi1jb250ZW50LXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2Nzc5
MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWluLWNv
bnRlbnQtc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDY1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVz
dC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNl
c3Npb24sIGNvbnRyb2xzOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAg
ewotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLSAg
ICAgICAgICAgIGNvbnRyb2xzID0gc2Vzc2lvbi5jb250cm9sczsKLSAgICAgICAgICAgIGNvbnRy
b2xzLm5leHRUcmFja0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgY29udHJvbHMucHJldmlv
dXNUcmFja0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCduZXh0dHJh
Y2snLCBza2lwVG9OZXh0VHJhY2ssIGZhbHNlLCB0cnVlLCBjb250cm9scyk7Ci0gICAgICAgICAg
ICB3YWl0Rm9yRXZlbnQoJ3ByZXZpb3VzdHJhY2snLCBza2lwVG9QcmV2aW91c1RyYWNrLCBmYWxz
ZSwgdHJ1ZSwgY29udHJvbHMpOwotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0g
ICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsK
LSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRl
bnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAg
ICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1
ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2
ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3Rh
dGUoc2Vzc2lvbiknLCAiaWRsZSIpOwotCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVv
LnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBsYXlp
bmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93
LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1l
ZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBOZXh0IFRyYWNrIG1lZGlhIGV2ZW50LiIpOwot
ICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgibmV4
dC10cmFjayIpJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBza2lwVG9OZXh0VHJhY2soZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiU2VuZGluZyBQcmV2aW91cyBUcmFjayBtZWRpYSBldmVudC4iKTsKLSAgICAgICAgICAg
IHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgicHJldmlvdXMtdHJhY2siKScp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2tpcFRvUHJldmlvdXNUcmFjayhldmVu
dCkKLSAgICAgICAgewotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J0NvbnRl
bnQnIHNlc3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0byBQcmV2aW91cy9O
ZXh0IFRyYWNrIG1lZGlhIGNvbnRyb2wgZXZlbnRzLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVv
IiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90
cmFuc2llbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50
LWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTggKzAsMCBA
QAotJ1RyYW5zaWVudCcgaW50ZXJydXB0aW9uIGV2ZW50cyBzaG91bGQgZHVjayBhdWRpbyBmb3Ig
J0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLgotCi0KLVdhaXRpbmcgZm9yIENvbnRlbnQgbWVkaWEg
dG8gYmVnaW4gcGxheWluZy4KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotTWVkaWEgYmVnYW4gcGxh
eWluZy4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYUVsZW1lbnRQbGF5
ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpID09ICcxJykgT0sKLVNl
bmRpbmcgJ1RyYW5zaWVudCcgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4KLVJV
TihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRp
b24oInRyYW5zaWVudCIpKQotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50
U3RhdGUoc2Vzc2lvbikgPT0gJ2ludGVycnVwdGVkJykgT0sKLUVYUEVDVEVEIChpbnRlcm5hbHMu
bWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIp
KSA9PSAnMC4yNScpIE9LCi1TZW5kaW5nICdUcmFuc2llbnQnIGVuZC1vZi1pbnRlcnJ1cHRpb24g
bm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudCIpKQotRVhQRUNURUQgKGludGVybmFscy5tZWRp
YVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1FWFBFQ1RFRCAo
aW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidmlkZW8iKSkgPT0gJzEnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LWludGVycnVwdGlvbnMuaHRtbAko
cmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQt
aW50ZXJydXB0aW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjMgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vz
c2lvbjsKLSAgICAKLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotCi0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVu
dCIpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIldhaXRpbmcgZm9yIENvbnRlbnQgbWVk
aWEgdG8gYmVnaW4gcGxheWluZy4iKQotICAgICAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInZpZGVvIik7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBs
YXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRN
ZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAgIHZp
ZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgdmlkZW8udm9sdW1lID0gMTsKLSAg
ICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9IGJlZ2FuUGxheWluZzsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKS5wbGF5KCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLQotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0
aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFFbGVt
ZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpKScsIDEpOwot
Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nICdUcmFuc2llbnQnIHN0YXJ0
LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdp
bnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24o
InRyYW5zaWVudCIpJyk7Ci0KLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiaW50ZXJydXB0ZWQiKTsKLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYUVsZW1lbnRQbGF5ZXJW
b2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpJywgMC4yNSk7Ci0KLSAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ1RyYW5zaWVudCcgZW5kLW9mLWludGVy
cnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMu
c2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQi
KScpOwotCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZvbHVtZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmlkZW8iKSknLCAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J1RyYW5zaWVudCcgaW50ZXJy
dXB0aW9uIGV2ZW50cyBzaG91bGQgZHVjayBhdWRpbyBmb3IgJ0NvbnRlbnQnIG1lZGlhIHNlc3Np
b25zLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtc29sby1pbnRlcnJ1cHRpb25z
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Ry
YW5zaWVudC1zb2xvLWludGVycnVwdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTAp
CisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1zb2xvLWludGVycnVwdGlv
bnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTggKzAsMCBAQAotJ1RyYW5zaWVu
dCBTb2xvJyBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBwYXVzZSBlbGVtZW50cyBiZWxvbmdp
bmcgdG8gJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLgotCi0KLVdhaXRpbmcgZm9yIENvbnRlbnQg
bWVkaWEgdG8gYmVnaW4gcGxheWluZy4KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotTWVkaWEgYmVn
YW4gcGxheWluZy4KLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRl
KHNlc3Npb24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFs
c2UnKSBPSwotU2VuZGluZyAnVHJhbnNpZW50IFNvbG8nIHN0YXJ0LW9mLWludGVycnVwdGlvbiBu
b3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFydE9mSW50ZXJy
dXB0aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpKQotRVhQRUNURUQgKGludGVybmFs
cy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2ludGVycnVwdGVkJykgT0sK
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotU2VuZGluZyAnVHJhbnNpZW50
IFNvbG8nIGVuZC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVOKGludGVybmFscy5z
ZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudC1z
b2xvIikpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKSA9PSAnYWN0aXZlJykgT0sKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykg
T0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNp
ZW50LXNvbG8taW50ZXJydXB0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy5odG1sCShyZXZpc2lvbiAy
Njc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1zb2xvLWludGVy
cnVwdGlvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDU4ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247
Ci0gICAgCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKLSAgICAgICAgewotICAgICAgICAg
ICAgc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKTsKLQotICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJXYWl0aW5nIGZvciBDb250ZW50IG1lZGlhIHRvIGJlZ2luIHBsYXlpbmcu
IikKLQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxheWluZyk7Ci0gICAgICAgICAgICB2aWRl
by5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L2NvdW50aW5nIik7Ci0g
ICAgICAgICAgICB2aWRlby5zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICAgICAgICAgIHZpZGVvLm9u
cGxheWluZyA9IGJlZ2FuUGxheWluZzsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVu
Y3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB2aWRlby5w
bGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHZpZGVvLm9ucGxheWluZyA9IG51bGw7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsK
LQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikn
LCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQn
LCBmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ1RyYW5z
aWVudCBTb2xvJyBzdGFydC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLiIpOwotICAgICAg
ICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFydE9mSW50ZXJydXB0
aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpJyk7Ci0KLSAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikn
LCAiaW50ZXJydXB0ZWQiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBh
dXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nICdU
cmFuc2llbnQgU29sbycgZW5kLW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAg
ICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0
aW9uTm90aWZpY2F0aW9uKCJ0cmFuc2llbnQtc29sbyIpJyk7Ci0KLSAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikn
LCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQn
LCBmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGVuZFRl
c3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgotICAgIDxwPidUcmFuc2llbnQgU29sbycgaW50ZXJydXB0aW9uIGV2ZW50cyBz
aG91bGQgcGF1c2UgZWxlbWVudHMgYmVsb25naW5nIHRvICdDb250ZW50JyBtZWRpYSBzZXNzaW9u
cy48L3A+Ci0gICAgPHZpZGVvIGlkPSJ2aWRlbyIgLz4KLTwvYm9keT4KLTwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="425982"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410129</attachid>
            <date>2020-09-30 09:11:03 -0700</date>
            <delta_ts>2020-10-02 09:39:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216831-20200930091102.patch</filename>
            <type>text/plain</type>
            <size>294341</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzc5
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA5
LTMwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29k
ZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFibGUgaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc0ZUVy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVy
ZXMuY21ha2U6CisgICAgICAgIFJlbW92ZSBvcHRpb24gdG8gYnVpbGQgd2l0aCBNRURJQV9TRVNT
SU9OLCBubyBvbmUgd2FzIGRvaW5nIGl0LgorCiAyMDIwLTA5LTMwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBJbnRlcm5hbCBh
dWRpbyByZW5kZXJpbmcgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY3NzkwKQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJs
ZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgUmVtb3ZlIG1lZGlhIHNlc3Np
b24gcmVsYXRlZCBmaWxlcy4KKworICAgICAgICAqIE1vZHVsZXMvYWlycGxheS9QbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
YWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgICogTW9k
dWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb246IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzZXNzaW9uOiBSZW1vdmVkLgorICAgICAgICBEZWxldGUgTW9kdWxlcy9tZWRpYXNl
c3Npb24gYW5kIHBsYXRmb3JtL21lZGlhc2Vzc2lvbi4gTW92ZSBmaWxlcyB0aGF0CisgICAgICAg
IHdlcmUgYWN0dWFsbHkgdXNlZCBmb3IgdGhlIFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCBmZWF0
dXJlIHRvIAorICAgICAgICBNb2R1bGVzL2FpcnBsYXkgd2hlcmUgb3RoZXIgcGFydHMgb2YgdGhh
dCBmZWF0dXJlIGFyZSBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgIFJlbW92ZSBhbGwg
Y29kZSBpbnNpZGUgRU5BQkxFKE1FRElBX1NFU1NJT04pLgorCiAyMDIwLTA5LTMwICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBSZW5hbWUgTGlu
ZUJyZWFrZXIgdG8gSW5saW5lQ29udGVudEJyZWFrZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGll
cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xzIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIiCi0gICAgIiR7V0VCQ09SRV9ESVJ9L01v
ZHVsZXMvbWVkaWFzZXNzaW9uIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc291
cmNlIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0YyIKQEAgLTEzOSw3ICsxMzgs
NiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIiCi0gICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc2Vz
c2lvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0iCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0YyIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vbW9jayIKQEAgLTE5OCw3ICsxOTYsNiBAQCBzZXQoV2ViQ29yZV9J
RExfSU5DTFVERVMKICAgICBNb2R1bGVzL2luZGV4ZWRkYgogICAgIE1vZHVsZXMvbWVkaWFjYXBh
YmlsaXRpZXMKICAgICBNb2R1bGVzL21lZGlhcmVjb3JkZXIKLSAgICBNb2R1bGVzL21lZGlhc2Vz
c2lvbgogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0KICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMK
ICAgICBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0CkBAIC0zMjcsMTAgKzMyNCw2IEBAIHNldChXZWJD
b3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2
ZW50LmlkbAogCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudCtNZWRp
YVNlc3Npb24uaWRsCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9s
cy5pZGwKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCi0KICAgICBN
b2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2srTWVkaWFTb3VyY2UuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXNvdXJjZS9ET01VUkwrTWVkaWFTb3VyY2UuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTU2
LDkgKzE1Niw2IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWQKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVudC5pZGwK
LSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVk
aWFTZXNzaW9uLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFS
ZW1vdGVDb250cm9scy5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzb3VyY2UvQXVkaW9U
cmFjaytNZWRpYVNvdXJjZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtOTc0
LDE4ICs5NzQsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWFwRWxl
bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxNYXJxdWVlRWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTE1hcnF1ZWVFbGVtZW50LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRp
YUVsZW1lbnQrTWVkaWFTZXNzaW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVudCtSZW1vdGVQbGF5YmFjay5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lZGlhRWxlbWVu
dCtSZW1vdGVQbGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50QXVkaW9PdXRw
dXQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxNZWRpYUVsZW1lbnRBdWRpb091dHB1dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1l
bnRNZWRpYVNlc3Npb24uaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNIVE1MTWVkaWFFbGVtZW50UmVtb3RlUGxheWJhY2suY3BwCi0kKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxNZWRpYUVsZW1lbnRSZW1vdGVQ
bGF5YmFjay5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxNZW51RWxlbWVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTE1lbnVFbGVtZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTE1lbnVJdGVtRWxlbWVudC5jcHAKQEAgLTEyNDQsMTAg
KzEyMzgsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUmVjb3JkZXIu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJl
Y29yZGVyRXJyb3JFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcAotJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVJlbW90ZUNv
bnRyb2xzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTZXNzaW9uLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVNlc3Npb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBWUEFU
SCA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYWNvbnRyb2xzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFyZWNvcmRlciBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbiBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwK
QEAgLTI1Niw5ICsyNTUsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2ZW50LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJh
Y2srTWVkaWFTb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2Uv
RE9NVVJMK01lZGlhU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2
Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw2IEBACiBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCisgICAg
TW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAor
CiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCiAg
ICAgTW9kdWxlcy9hcHBsZXBheS9QYXltZW50LmgKICAgICBNb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLmgKQEAgLTg3LDEyICs4OSw2IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJvdmlkZXIuaAogCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uRXZlbnRzLmgKLSAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0
YS5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlci5oCi0gICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudC5oCi0KICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NhbXBsZU1hcC5oCiAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lv
biAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTMwLDkgKzEzMCw2IEBAIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuY3BwCiBN
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKIE1vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCi1Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFF
bGVtZW50TWVkaWFTZXNzaW9uLmNwcAotTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVD
b250cm9scy5jcHAKLU1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuY3BwCiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5
LmNwcApAQCAtMzEwOSw4ICszMTA2LDYgQEAgSlNNZWRpYVF1ZXJ5TGlzdC5jcHAKIEpTTWVkaWFR
dWVyeUxpc3RFdmVudC5jcHAKIEpTTWVkaWFSZWNvcmRlci5jcHAKIEpTTWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQuY3BwCi1KU01lZGlhUmVtb3RlQ29udHJvbHMuY3BwCi1KU01lZGlhU2Vzc2lvbi5j
cHAKIEpTTWVkaWFTb3VyY2UuY3BwCiBKU01lZGlhU3RyZWFtLmNwcAogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5jcHAKIEpT
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCiBKU0FwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAor
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiBNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5Q29u
dGFjdEZpZWxkLmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmNwcApAQCAtODgs
NyArODksNiBAQCBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlCiBNb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQotTW9k
dWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIE1vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJh
c2VNYW5hZ2VyQ29jb2EubW0KQEAgLTUyMSw3ICs1MjEsNiBAQCBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2CiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQotcGxhdGZvcm0vbWVkaWFzZXNz
aW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlP
Uy5tbSBAbm8tdW5pZnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1MTWVkaWFFbGVtZW50K01lZGlhU2Vzc2lv
bi5pZGwJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL0hUTUxNZWRpYUVsZW1lbnQrTWVkaWFTZXNzaW9uLmlkbAkobm9uZXhpc3RlbnQpCkBA
IC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0vLyBGSVhNRTogVGhlc2UgZG9uJ3Qgc2VlbSB0byBiZSBpbiBhbnkgY3VycmVudCBzcGVj
aWZpY2F0aW9ucy4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZW0uCi0vLyBTZWUgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMjE2ODMxLgotWwotICAgIENvbmRpdGlvbmFsPVZJREVPJk1FRElB
X1NFU1NJT04sCi0gICAgSW1wbGVtZW50ZWRCeT1IVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9u
Ci1dIHBhcnRpYWwgaW50ZXJmYWNlIEhUTUxNZWRpYUVsZW1lbnQgewotICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcga2luZDsKLQotICAgIGF0dHJpYnV0ZSBNZWRpYVNlc3Npb24/IHNlc3Npb247Ci19
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxl
bWVudE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL0hUTUxNZWRp
YUVsZW1lbnRNZWRpYVNlc3Npb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgiCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6a2lu
ZChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAg
ICByZXR1cm4gZWxlbWVudC0+a2luZCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnRNZWRp
YVNlc3Npb246OnNldEtpbmQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3RyaW5nJiBraW5kKQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxl
bWVudC0+c2V0S2luZChraW5kKTsKLX0KLQotTWVkaWFTZXNzaW9uKiBIVE1MTWVkaWFFbGVtZW50
TWVkaWFTZXNzaW9uOjpzZXNzaW9uKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAg
QVNTRVJUKGVsZW1lbnQpOwotICAgIHJldHVybiBlbGVtZW50LT5zZXNzaW9uKCk7Ci19Ci0KLXZv
aWQgSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbjo6c2V0U2Vzc2lvbihIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgQVNTRVJUKGVsZW1l
bnQpOwotICAgIGVsZW1lbnQtPnNldFNlc3Npb24oc2Vzc2lvbik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBFTkFCTEUo
VklERU8pICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oCShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9IVE1M
TWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5BQkxFKFZJREVPKQotCi0jaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24gewotcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIGtpbmQoSFRNTE1lZGlhRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lkIHNldEtp
bmQoSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwotCi0gICAgc3RhdGljIE1lZGlh
U2Vzc2lvbiogc2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgc2V0
U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFTZXNzaW9uKik7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgRU5B
QkxFKFZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFSZW1vdGVDb250cm9scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5jcHAJKHJldmlzaW9uIDI2Nzc5MCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJv
bHMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJNZWRpYVJlbW90ZUNvbnRyb2xzLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVJlbW90ZUNvbnRyb2xzKTsKLQotTWVkaWFSZW1v
dGVDb250cm9sczo6TWVkaWFSZW1vdGVDb250cm9scyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBNZWRpYVNlc3Npb24qIHNlc3Npb24pCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoY29udGV4dCkKLSAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQotewotfQotCi12b2lkIE1l
ZGlhUmVtb3RlQ29udHJvbHM6OmNsZWFyU2Vzc2lvbigpCi17Ci0gICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKLX0KLQotTWVkaWFSZW1vdGVDb250cm9sczo6fk1lZGlhUmVtb3RlQ29udHJvbHMoKSA9
IGRlZmF1bHQ7Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250cm9sczo6c2V0UHJldmlvdXNUcmFja0Vu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpCi17Ci0gICAgaWYgKG1fcHJldmlvdXNUcmFja0VuYWJsZWQg
PT0gaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ByZXZpb3VzVHJhY2tFbmFi
bGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAgICAgbV9zZXNzaW9u
LT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgTWVkaWFSZW1vdGVDb250
cm9sczo6c2V0TmV4dFRyYWNrRW5hYmxlZChib29sIGlzRW5hYmxlZCkKLXsKLSAgICBpZiAobV9u
ZXh0VHJhY2tFbmFibGVkID09IGlzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9u
ZXh0VHJhY2tFbmFibGVkID0gaXNFbmFibGVkOwotCi0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAg
ICAgbV9zZXNzaW9uLT5jb250cm9sSXNFbmFibGVkRGlkQ2hhbmdlKCk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8qIEVOQUJMRShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3RlQ29udHJvbHMuaAko
cmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFSZW1vdGVDb250cm9scy5oCShub25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVJlbW90ZUNvbnRyb2xzIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFSZW1vdGVDb250cm9scz4sIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhUmVtb3RlQ29u
dHJvbHMpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFSZW1vdGVDb250cm9scz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU2Vzc2lvbiogc2Vzc2lv
biA9IG51bGxwdHIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJl
bW90ZUNvbnRyb2xzKGNvbnRleHQsIHNlc3Npb24pKTsKLSAgICB9Ci0KLSAgICBib29sIHByZXZp
b3VzVHJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1RyYWNrRW5hYmxlZDsg
fQotICAgIHZvaWQgc2V0UHJldmlvdXNUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICBib29sIG5l
eHRUcmFja0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX25leHRUcmFja0VuYWJsZWQ7IH0KLSAg
ICB2b2lkIHNldE5leHRUcmFja0VuYWJsZWQoYm9vbCk7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVk
PE1lZGlhUmVtb3RlQ29udHJvbHM+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVJl
bW90ZUNvbnRyb2xzPjo6ZGVyZWY7Ci0KLSAgICB2b2lkIGNsZWFyU2Vzc2lvbigpOwotCi0gICAg
dmlydHVhbCB+TWVkaWFSZW1vdGVDb250cm9scygpOwotCi0gICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVJl
bW90ZUNvbnRyb2xzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KLQotcHJpdmF0ZToKLSAgICBNZWRpYVJl
bW90ZUNvbnRyb2xzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBNZWRpYVNlc3Npb24qKTsKLQot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQot
ICAgIGJvb2wgbV9wcmV2aW91c1RyYWNrRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX25l
eHRUcmFja0VuYWJsZWQgeyBmYWxzZSB9OwotCi0gICAgTWVkaWFTZXNzaW9uKiBtX3Nlc3Npb24g
eyBudWxscHRyIH07Ci0KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90ZUNv
bnRyb2xzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVJlbW90ZUNvbnRyb2xzLmlkbAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5pZGwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLAotXSBp
bnRlcmZhY2UgTWVkaWFSZW1vdGVDb250cm9scyA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoKTsKLQotICAgIGF0dHJpYnV0
ZSBib29sZWFuIHByZXZpb3VzVHJhY2tFbmFibGVkOwotICAgIGF0dHJpYnV0ZSBib29sZWFuIG5l
eHRUcmFja0VuYWJsZWQ7Ci0KLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucHJldmlvdXN0
cmFjazsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubmV4dHRyYWNrOwotfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI4MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgotCi0jaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQu
aCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgot
I2luY2x1ZGUgIlBhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1NZWRpYVNlc3Npb246
Ok1lZGlhU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIEtpbmQga2luZCkKLSAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2tpbmQoa2luZCkKLXsKLSAgICAvLyA0LiBNZWRpYSBT
ZXNzaW9ucwotICAgIC8vIDMuIElmIG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Np
b24gdHlwZSBpcyAiY29udGVudCIsIHRoZW4gY3JlYXRlIGEgbmV3IG1lZGlhIHJlbW90ZSBjb250
cm9sbGVyIGZvciBtZWRpYQotICAgIC8vICAgIHNlc3Npb24uIChPdGhlcndpc2UgbWVkaWEgc2Vz
c2lvbiBoYXMgbm8gbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuKQotICAgIGlmIChtX2tpbmQgPT0g
S2luZDo6Q29udGVudCkKLSAgICAgICAgbV9jb250cm9scyA9IE1lZGlhUmVtb3RlQ29udHJvbHM6
OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7Ci0KLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5n
bGV0b24oKS5hZGRNZWRpYVNlc3Npb24oKnRoaXMpOwotfQotCi1NZWRpYVNlc3Npb246On5NZWRp
YVNlc3Npb24oKQotewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnJlbW92
ZU1lZGlhU2Vzc2lvbigqdGhpcyk7Ci0KLSAgICBpZiAobV9jb250cm9scykKLSAgICAgICAgbV9j
b250cm9scy0+Y2xlYXJTZXNzaW9uKCk7Ci19Ci0KLU1lZGlhUmVtb3RlQ29udHJvbHMqIE1lZGlh
U2Vzc2lvbjo6Y29udHJvbHMoKQotewotICAgIHJldHVybiBtX2NvbnRyb2xzLmdldCgpOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbjo6YWRkTWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmIGVs
ZW1lbnQpCi17Ci0gICAgQVNTRVJUKCFtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5jb250YWlucygm
ZWxlbWVudCkpOwotICAgIG1fcGFydGljaXBhdGluZ0VsZW1lbnRzLmFkZCgmZWxlbWVudCk7Ci19
Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpyZW1vdmVNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkKLXsKLSAgICBBU1NFUlQobV9wYXJ0aWNpcGF0aW5nRWxlbWVudHMuY29udGFp
bnMoJmVsZW1lbnQpKTsKLSAgICBtX3BhcnRpY2lwYXRpbmdFbGVtZW50cy5yZW1vdmUoJmVsZW1l
bnQpOwotCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIG1f
YWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgfSk7Ci0K
LSAgICBpZiAobV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cykKLSAgICAgICAg
bV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy0+cmVtb3ZlKCZlbGVtZW50KTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYgd29ya2VyKQotewotICAgIGlmIChQYWdlICpwYWdl
ID0gbV9kb2N1bWVudC5wYWdlKCkpIHsKLSAgICAgICAgYm9vbCBoYWRBY3RpdmVNZWRpYUVsZW1l
bnRzID0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuaGFzQWN0aXZlTWVkaWFFbGVt
ZW50cygpOwotCi0gICAgICAgIHdvcmtlcigpOwotCi0gICAgICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLmhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKTsKLSAgICAgICAgaWYgKGhhZEFjdGl2ZU1lZGlhRWxlbWVudHMgIT0gaGFz
QWN0aXZlTWVkaWFFbGVtZW50cykKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
Lmhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGhhc0FjdGl2
ZU1lZGlhRWxlbWVudHMpOwotICAgIH0gZWxzZQotICAgICAgICB3b3JrZXIoKTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OmFkZEFjdGl2ZU1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KQotewotICAgIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoWyZdKCkgewotICAgICAg
ICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5hZGQoJmVsZW1lbnQpOwotICAgIH0pOwot
fQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aXNNZWRpYUVsZW1lbnRBY3RpdmUoSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVu
dHMuY29udGFpbnMoJmVsZW1lbnQpOwotfQotCi1ib29sIE1lZGlhU2Vzc2lvbjo6aGFzQWN0aXZl
TWVkaWFFbGVtZW50cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FjdGl2ZVBhcnRpY2lwYXRp
bmdFbGVtZW50cy5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpzZXRNZXRhZGF0
YShjb25zdCBPcHRpb25hbDxNZXRhZGF0YT4mIG9wdGlvbmFsTWV0YWRhdGEpCi17Ci0gICAgaWYg
KCFvcHRpb25hbE1ldGFkYXRhKQotICAgICAgICBtX21ldGFkYXRhID0geyB9OwotICAgIGVsc2Ug
ewotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IG9wdGlvbmFsTWV0YWRhdGEudmFsdWUoKTsKLSAg
ICAgICAgbV9tZXRhZGF0YSA9IHsgbWV0YWRhdGEudGl0bGUsIG1ldGFkYXRhLmFydGlzdCwgbWV0
YWRhdGEuYWxidW0sIG1fZG9jdW1lbnQuY29tcGxldGVVUkwobWV0YWRhdGEuYXJ0d29yaykgfTsK
LSAgICB9Ci0KLSAgICBpZiAoYXV0byogcGFnZSA9IG1fZG9jdW1lbnQucGFnZSgpKQotICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5tZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZSht
X21ldGFkYXRhKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmRlYWN0aXZhdGUoKQotewotICAg
IC8vIDUuMS4yLiBPYmplY3QgbWVtYmVycwotICAgIC8vIFdoZW4gdGhlIGRlYWN0aXZhdGUoKSBt
ZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKLSAgICAvLyAxLiBMZXQgbWVkaWEgc2Vzc2lvbiBiZSB0aGUgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLgotICAgIC8vIDIuIEluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEgc2Vzc2lv
buKAmXMgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cy4KLSAgICAvLyAzLiBTZXQgbWVkaWEg
c2Vzc2lvbidzIHJlc3VtZSBsaXN0IHRvIGFuIGVtcHR5IGxpc3QuCi0gICAgLy8gNC4gU2V0IG1l
ZGlhIHNlc3Npb24ncyBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIHRvIGFuIGVtcHR5IGxp
c3QuCi0gICAgY2hhbmdlQWN0aXZlTWVkaWFFbGVtZW50cyhbJl0oKSB7Ci0gICAgICAgIHdoaWxl
ICghbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMudGFrZUFueSgpLT5wYXVzZSgpOwotICAgIH0p
OwotCi0gICAgLy8gNS4gUnVuIHRoZSBtZWRpYSBzZXNzaW9uIGRlYWN0aXZhdGlvbiBhbGdvcml0
aG0gZm9yIG1lZGlhIHNlc3Npb24uCi0gICAgcmVsZWFzZUludGVybmFsKCk7Ci19Ci0KLXZvaWQg
TWVkaWFTZXNzaW9uOjpyZWxlYXNlSW50ZXJuYWwoKQotewotICAgIC8vIDYuNS4gUmVsZWFzaW5n
IGEgbWVkaWEgc2Vzc2lvbgotICAgIC8vIDEuIElmIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGN1
cnJlbnQgc3RhdGUgaXMgaWRsZSwgdGhlbiB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCi0gICAgaWYg
KG1fY3VycmVudFN0YXRlID09IFN0YXRlOjpJZGxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyAyLiBJZiBjdXJyZW50IG1lZGlhIHNlc3Npb24gc3RpbGwgaGFzIG9uZSBvciBtb3JlIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLCB0aGVuIHRlcm1pbmF0ZSB0aGVzZSBzdGVw
cy4KLSAgICBpZiAoIW1fYWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gMy4gT3B0aW9uYWxseSwgYmFzZWQgb24gcGxhdGZvcm0g
Y29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcmVsZWFzZSBhbnkgY3VycmVudGx5IGhl
bGQgcGxhdGZvcm0gbWVkaWEgZm9jdXMKLSAgICAvLyAgICBmb3IgY3VycmVudCBtZWRpYSBzZXNz
aW9uLgotICAgIC8vIDQuIE9wdGlvbmFsbHksIGJhc2VkIG9uIHBsYXRmb3JtIGNvbnZlbnRpb25z
LCB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSBhbnkgcHJldmlvdXNseSBlc3RhYmxpc2hlZCBv
bmdvaW5nIG1lZGlhCi0gICAgLy8gICAgaW50ZXJmYWNlIGluIHRoZSB1bmRlcmx5aW5nIHBsYXRm
b3Jt4oCZcyBub3RpZmljYXRpb25zIGFyZWEgYW5kIGFueSBvbmdvaW5nIG1lZGlhIGludGVyZmFj
ZSBpbiB0aGUgdW5kZXJseWluZwotICAgIC8vICAgIHBsYXRmb3JtJ3MgbG9jayBzY3JlZW4gYXJl
YSBmb3IgY3VycmVudCBtZWRpYSBzZXNzaW9uLCBpZiBhbnkuCi0gICAgLy8gNS4gT3B0aW9uYWxs
eSwgYmFzZWQgb24gcGxhdGZvcm0gY29udmVudGlvbnMsIHRoZSB1c2VyIGFnZW50IG11c3QgcHJl
dmVudCBhbnkgaGFyZHdhcmUgYW5kL29yIHNvZnR3YXJlIG1lZGlhIGtleXMKLSAgICAvLyAgICBm
cm9tIGNvbnRyb2xsaW5nIHBsYXliYWNrIG9mIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbidzIGFjdGl2
ZSBwYXJ0aWNpcGF0aW5nIG1lZGlhIGVsZW1lbnRzLgotICAgIC8vIDYuIFNldCBjdXJyZW50IG1l
ZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6SWRsZTsKLX0KLQotYm9vbCBNZWRpYVNlc3Npb246Omludm9rZSgpCi17Ci0gICAg
Ly8gNC40IEFjdGl2YXRpbmcgYSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gMS4gSWYgd2UncmUgYWxy
ZWFkeSBBQ1RJVkUgdGhlbiByZXR1cm4gc3VjY2Vzcy4KLSAgICBpZiAobV9jdXJyZW50U3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyAyLiBPcHRp
b25hbGx5LCBiYXNlZCBvbiBwbGF0Zm9ybSBjb252ZW50aW9ucywgcmVxdWVzdCB0aGUgbW9zdCBh
cHByb3ByaWF0ZSBwbGF0Zm9ybS1sZXZlbCBtZWRpYSBmb2N1cyBmb3IgbWVkaWEKLSAgICAvLyAg
ICBzZXNzaW9uIGJhc2VkIG9uIGl0cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZS4KLQotICAg
IC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwcy4uLgotCi0gICAgLy8gNC4gU2V0IG91ciBjdXJyZW50
IHN0YXRlIHRvIEFDVElWRSBhbmQgcmV0dXJuIHN1Y2Nlc3MuCi0gICAgbV9jdXJyZW50U3RhdGUg
PSBTdGF0ZTo6QWN0aXZlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lv
bjo6aGFuZGxlRHVja0ludGVycnVwdGlvbigpCi17Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50IDog
bV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnNldFNob3Vs
ZER1Y2sodHJ1ZSk7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpJbnRlcnJ1cHRlZDsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmhhbmRsZVVuZHVja0ludGVycnVwdGlvbigpCi17Ci0g
ICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMpCi0g
ICAgICAgIGVsZW1lbnQtPnNldFNob3VsZER1Y2soZmFsc2UpOwotCi0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6QWN0aXZlOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbjo6aGFuZGxlSW5kZWZp
bml0ZVBhdXNlSW50ZXJydXB0aW9uKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci0KLSAgICBtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5j
bGVhcigpOwotICAgIG1fY3VycmVudFN0YXRlID0gU3RhdGU6OklkbGU7Ci19Ci0KLXZvaWQgTWVk
aWFTZXNzaW9uOjpoYW5kbGVQYXVzZUludGVycnVwdGlvbigpCi17Ci0gICAgbV9jdXJyZW50U3Rh
dGUgPSBTdGF0ZTo6SW50ZXJydXB0ZWQ7Ci0KLSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFF
bGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQt
PnBhdXNlKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uOjpoYW5kbGVVbnBhdXNl
SW50ZXJydXB0aW9uKCkKLXsKLSAgICBtX2N1cnJlbnRTdGF0ZSA9IFN0YXRlOjpBY3RpdmU7Ci0K
LSAgICBzYWZlbHlJdGVyYXRlQWN0aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb246OnRvZ2dsZVBsYXliYWNrKCkKLXsKLSAgICBzYWZlbHlJdGVyYXRlQWN0
aXZlTWVkaWFFbGVtZW50cyhbXShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7Ci0gICAgICAg
IGlmIChlbGVtZW50LT5wYXVzZWQoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZWxlbWVudC0+cGF1c2UoKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb246OnNhZmVseUl0ZXJhdGVBY3RpdmVNZWRpYUVsZW1lbnRzKGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Kik+JiBoYW5kbGVyKQotewotICAg
IEFTU0VSVCghbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyk7Ci0KLSAgICBI
YXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiBhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5
ID0gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgbV9pdGVyYXRlZEFjdGl2ZVBh
cnRpY2lwYXRpbmdFbGVtZW50cyA9ICZhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5Owot
Ci0gICAgd2hpbGUgKCFhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LmlzRW1wdHkoKSkK
LSAgICAgICAgaGFuZGxlcihhY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHNDb3B5LnRha2VBbnko
KSk7Ci0KLSAgICBtX2l0ZXJhdGVkQWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzID0gbnVsbHB0
cjsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb05leHRUcmFjaygpCi17Ci0gICAgaWYg
KG1fY29udHJvbHMgJiYgbV9jb250cm9scy0+bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICBt
X2NvbnRyb2xzLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm5leHR0
cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OnNraXBUb1ByZXZpb3VzVHJhY2soKQotewotICAg
IGlmIChtX2NvbnRyb2xzICYmIG1fY29udHJvbHMtPnByZXZpb3VzVHJhY2tFbmFibGVkKCkpCi0g
ICAgICAgIG1fY29udHJvbHMtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucHJldmlvdXN0cmFja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNvbnRyb2xJc0VuYWJsZWRE
aWRDaGFuZ2UoKQotewotICAgIC8vIE1lZGlhIHJlbW90ZSBjb250cm9scyBhcmUgb25seSBhbGxv
d2VkIG9uIENvbnRlbnQgbWVkaWEgc2Vzc2lvbnMuCi0gICAgQVNTRVJUKG1fa2luZCA9PSBLaW5k
OjpDb250ZW50KTsKLQotICAgIC8vIE1lZGlhIGVsZW1lbnRzIGJlbG9uZ2luZyB0byBDb250ZW50
IG1lZGlhIHNlc3Npb25zIGhhdmUgbXV0dWFsbHktZXhjbHVzaXZlIHBsYXliYWNrLgotICAgIEFT
U0VSVChtX2FjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cy5zaXplKCkgPD0gMSk7Ci0KLSAgICBp
ZiAobV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gKm1fYWN0aXZlUGFydGljaXBh
dGluZ0VsZW1lbnRzLmJlZ2luKCk7Ci0gICAgbV9kb2N1bWVudC51cGRhdGVJc1BsYXlpbmdNZWRp
YShlbGVtZW50LT5lbGVtZW50SUQoKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCShub25leGlzdGVudCkKQEAg
LTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jaW5jbHVk
ZSAiTWVkaWFSZW1vdGVDb250cm9scy5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU2Vzc2lvbj4gewotcHVibGljOgotICAgIGVudW0gY2xhc3MgS2luZCB7IENvbnRlbnQs
IFRyYW5zaWVudCwgVHJhbnNpZW50U29sbywgQW1iaWVudCB9OwotICAgIGVudW0gY2xhc3MgU3Rh
dGUgeyBJZGxlLCBBY3RpdmUsIEludGVycnVwdGVkIH07Ci0KLSAgICBzdHJ1Y3QgTWV0YWRhdGEg
ewotICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgICAgIFN0cmluZyBhcnRpc3Q7Ci0gICAgICAg
IFN0cmluZyBhbGJ1bTsKLSAgICAgICAgU3RyaW5nIGFydHdvcms7Ci0gICAgfTsKLQotICAgIHN0
YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24oZG9j
dW1lbnQsIGtpbmQpKTsKLSAgICB9Ci0KLSAgICB+TWVkaWFTZXNzaW9uKCk7Ci0KLSAgICBLaW5k
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBNZWRpYVJlbW90ZUNvbnRyb2xz
KiBjb250cm9scygpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KLSAgICBib29sIGhhc0FjdGl2ZU1lZGlh
RWxlbWVudHMoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0TWV0YWRhdGEoY29uc3QgT3B0aW9uYWw8
TWV0YWRhdGE+Jik7Ci0KLSAgICB2b2lkIGRlYWN0aXZhdGUoKTsKLQotICAgIC8vIFJ1bnMgdGhl
IG1lZGlhIHNlc3Npb24gaW52b2NhdGlvbiBhbGdvcml0aG0gYW5kIHJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzLgotICAgIGJvb2wgaW52b2tlKCk7Ci0KLSAgICB2b2lkIGhhbmRsZUR1Y2tJbnRlcnJ1
cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZUluZGVmaW5pdGVQYXVzZUludGVycnVwdGlvbigpOwot
ICAgIHZvaWQgaGFuZGxlUGF1c2VJbnRlcnJ1cHRpb24oKTsKLSAgICB2b2lkIGhhbmRsZVVuZHVj
a0ludGVycnVwdGlvbigpOwotICAgIHZvaWQgaGFuZGxlVW5wYXVzZUludGVycnVwdGlvbigpOwot
Ci0gICAgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7
Ci0gICAgdm9pZCBza2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICB2b2lkIGNvbnRyb2xJc0Vu
YWJsZWREaWRDaGFuZ2UoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKLQotICAgIE1lZGlhU2Vzc2lvbihEb2N1bWVudCYsIEtpbmQpOwotCi0gICAgdm9p
ZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIHZvaWQgcmVtb3ZlTWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKLQotICAgIHZvaWQgc2FmZWx5SXRlcmF0ZUFj
dGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1l
bnQqKT4mKTsKLSAgICB2b2lkIGNoYW5nZUFjdGl2ZU1lZGlhRWxlbWVudHMoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKHZvaWQpPiYpOwotICAgIHZvaWQgYWRkQWN0aXZlTWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQmKTsKLSAgICBib29sIGlzTWVkaWFFbGVtZW50QWN0aXZlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKLQotICAgIHZvaWQgcmVsZWFzZUludGVybmFsKCk7Ci0KLSAgICBTdGF0ZSBt
X2N1cnJlbnRTdGF0ZSB7IFN0YXRlOjpJZGxlIH07Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9wYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9hY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHM7Ci0gICAgSGFzaFNldDxIVE1MTWVk
aWFFbGVtZW50Kj4qIG1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMgeyBudWxs
cHRyIH07Ci0KLSAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBjb25zdCBLaW5kIG1fa2lu
ZDsKLSAgICBSZWZQdHI8TWVkaWFSZW1vdGVDb250cm9scz4gbV9jb250cm9sczsKLSAgICBNZWRp
YVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLyogRU5BQkxFKE1FRElBX1NFU1NJT04pICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5pZGwJKHJl
dmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPU1F
RElBX1NFU1NJT04sCi0gICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKLV0gaW50ZXJmYWNlIE1lZGlhU2Vzc2lvbiB7Ci0gICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKG9wdGlvbmFsIE1lZGlh
U2Vzc2lvbktpbmQga2luZCA9ICJjb250ZW50Iik7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVkaWFTZXNzaW9uS2luZCBraW5kOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVJlbW90
ZUNvbnRyb2xzPyBjb250cm9sczsKLQotICAgIHVuZGVmaW5lZCBzZXRNZXRhZGF0YShNZWRpYU1l
dGFkYXRhPyBtZXRhZGF0YSk7Ci0KLSAgICB1bmRlZmluZWQgZGVhY3RpdmF0ZSgpOwotfTsKLQot
ZW51bSBNZWRpYVNlc3Npb25LaW5kIHsKLSAgICAiY29udGVudCIsCi0gICAgInRyYW5zaWVudCIs
Ci0gICAgInRyYW5zaWVudC1zb2xvIiwKLSAgICAiYW1iaWVudCIKLX07Ci0KLWRpY3Rpb25hcnkg
TWVkaWFNZXRhZGF0YSB7Ci0gICAgRE9NU3RyaW5nIHRpdGxlOwotICAgIERPTVN0cmluZyBhcnRp
c3Q7Ci0gICAgRE9NU3RyaW5nIGFsYnVtOwotICAgIFVTVlN0cmluZyBhcnR3b3JrOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkV2ZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbkV2ZW50cy5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25FdmVudHMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gTWVkaWFFdmVudFR5cGUgewotICAgIFBsYXlQYXVzZSwKLSAg
ICBUcmFja05leHQsCi0gICAgVHJhY2tQcmV2aW91cwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgot
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnRlbnRTZXNzaW9uS2luZCA9ICJjb250ZW50IjsKLQotTWVkaWFTZXNz
aW9uTWFuYWdlciYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj4gbWFuYWdlcjsKLSAgICByZXR1
cm4gbWFuYWdlcjsKLX0KLQotTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWVkaWFTZXNzaW9uTWFuYWdl
cigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIG1faW50ZXJydXB0aW9uUHJvdmlkZXIgPSBh
ZG9wdFJlZihuZXcgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMoKnRoaXMpKTsK
LSAgICBtX2ludGVycnVwdGlvblByb3ZpZGVyLT5iZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlv
bnMoKTsKLSNlbmRpZgotfQotCi1ib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6Omhhc0FjdGl2ZU1l
ZGlhRWxlbWVudHMoKSBjb25zdAotewotICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IG1fc2Vzc2lv
bnMpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPmhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQotewotICAgIG1fc2Vzc2lvbnMuYWRkKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KQotewotICAgIG1fc2Vzc2lvbnMucmVtb3ZlKCZzZXNzaW9uKTsKLX0KLQotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5YmFjaygpCi17Ci0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICBTdHJpbmcgc2Vzc2lvbktpbmQgPSBzZXNzaW9uLT5r
aW5kKCk7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUoKSA9PSBNZWRpYVNlc3Np
b246OlN0YXRlOjpBY3RpdmUgJiYgKHNlc3Npb25LaW5kID09IGNvbnRlbnRTZXNzaW9uS2luZCB8
fCBzZXNzaW9uS2luZCA9PSAiIikpCi0gICAgICAgICAgICBzZXNzaW9uLT50b2dnbGVQbGF5YmFj
aygpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9OZXh0VHJh
Y2soKQotewotICAgIC8vIDUuMi4yIFdoZW4gdGhlIHVzZXIgcHJlc3NlcyB0aGUgTWVkaWFUcmFj
a05leHQgbWVkaWEga2V5LCB0aGVuIGZvciBlYWNoIENvbnRlbnQtYmFzZWQgbWVkaWEgc2Vzc2lv
biB0aGF0IGlzCi0gICAgLy8gY3VycmVudGx5IEFDVElWRSBhbmQgaGFzIGEgbWVkaWEgcmVtb3Rl
IGNvbnRyb2xsZXIgd2l0aCBpdHMgbmV4dFRyYWNrRW5hYmxlZCBhdHRyaWJ1dGUgc2V0IHRvIHRy
dWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgbmV4
dHRyYWNrIGF0IGl0cyBtZWRpYSByZW1vdGUgY29udHJvbGxlci4KLSAgICBmb3IgKGF1dG8qIHNl
c3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5jdXJyZW50U3RhdGUo
KSA9PSBNZWRpYVNlc3Npb246OlN0YXRlOjpBY3RpdmUgJiYgc2Vzc2lvbi0+a2luZCgpID09IGNv
bnRlbnRTZXNzaW9uS2luZCkKLSAgICAgICAgICAgIHNlc3Npb24tPnNraXBUb05leHRUcmFjaygp
OwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpza2lwVG9QcmV2aW91c1Ry
YWNrKCkKLXsKLSAgICAvLyA1LjIuMiBXaGVuIHRoZSB1c2VyIHByZXNzZXMgdGhlIE1lZGlhVHJh
Y2tQcmV2aW91cyBtZWRpYSBrZXksIHRoZW4gZm9yIGVhY2ggQ29udGVudC1iYXNlZCBtZWRpYSBz
ZXNzaW9uIHRoYXQgaXMKLSAgICAvLyBjdXJyZW50bHkgQUNUSVZFIGFuZCBoYXMgYSBtZWRpYSBy
ZW1vdGUgY29udHJvbGxlciB3aXRoIGl0cyBwcmV2aW91c1RyYWNrRW5hYmxlZCBhdHRyaWJ1dGUg
c2V0IHRvIHRydWUsIHF1ZXVlIGEgdGFzawotICAgIC8vIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQg
bmFtZWQgcHJldmlvdXN0cmFjayBhdCBpdHMgbWVkaWEgcmVtb3RlIGNvbnRyb2xsZXIuCi0gICAg
Zm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+
Y3VycmVudFN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpTdGF0ZTo6QWN0aXZlICYmIHNlc3Npb24t
PmtpbmQoKSA9PSBjb250ZW50U2Vzc2lvbktpbmQpCi0gICAgICAgICAgICBzZXNzaW9uLT5za2lw
VG9QcmV2aW91c1RyYWNrKCk7Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbklu
dGVycnVwdGluZ0NhdGVnb3J5IGludGVycnVwdGluZ0NhdGVnb3J5KQotewotICAgIC8vIDQuNS4y
IEludGVycnVwdGluZyBhIG1lZGlhIHNlc3Npb24KLSAgICAvLyBXaGVuIGEgc3RhcnQtb2YtaW50
ZXJydXB0aW9uIG5vdGlmaWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9y
bSwgdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9u
IGludGVycnVwdGlvbiBhbGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMs
IHBhc3NpbmcgaW4gZWFjaCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9y
IChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBz
ZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSBpcyBub3QgYWN0aXZlLCB0aGVuIHRlcm1pbmF0ZSB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgKHNlc3Npb24tPmN1cnJlbnRTdGF0ZSgpICE9IE1lZGlhU2Vz
c2lvbjo6U3RhdGU6OkFjdGl2ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8v
IDIuIExldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSB0aGUgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSB0aGF0IHRyaWdnZXJlZCB0aGlzIGludGVycnVwdGlvbi4KLSAgICAg
ICAgLy8gICAgSWYgdGhpcyBpbnRlcnJ1cHRpb24gaGFzIG5vIGtub3duIG1lZGlhIHNlc3Npb24g
Y2F0ZWdvcnksIGxldCBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lvbiBjYXRlZ29yeSBiZSBEZWZh
dWx0LgotCi0gICAgICAgIC8vIDMuIFJ1biB0aGVzZSBzdWJzdGVwczoKLSAgICAgICAgaWYgKGlu
dGVycnVwdGluZ0NhdGVnb3J5ID09IE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpD
b250ZW50KSB7Ci0gICAgICAgICAgICAvLyAtICBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBDb250ZW50OgotICAgICAgICAgICAgLy8gICAgSWYgbWVkaWEgc2Vzc2lv
bidzIGN1cnJlbnQgbWVkaWEgc2Vzc2lvbiB0eXBlIGlzIERlZmF1bHQgb3IgQ29udGVudCB0aGVu
IGluZGVmaW5pdGVseSBwYXVzZSBhbGwgb2YgbWVkaWEKLSAgICAgICAgICAgIC8vICAgIHNlc3Np
b24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQgc2V0IG1lZGlhIHNl
c3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGlkbGUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+
a2luZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09
IE1lZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFu
ZGxlSW5kZWZpbml0ZVBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50
ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRy
YW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEgc2Vzc2lv
biBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Np
b24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRlbnQgdGhl
biBkdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MgYWN0aXZlCi0gICAgICAgICAgICAvLyAgIGF1
ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAgICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkg
PT0gTWVkaWFTZXNzaW9uS2luZDo6RGVmYXVsdCB8fCBzZXNzaW9uLT5raW5kKCkgPT0gTWVkaWFT
ZXNzaW9uS2luZDo6Q29udGVudCkKLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVEdWNr
SW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkg
PT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8pIHsKLSAg
ICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgaXMg
VHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24ncyBjdXJy
ZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2llbnQgb3Ig
VHJhbnNpZW50IFNvbG8gdGhlbiBwYXVzZQotICAgICAgICAgICAgLy8gICBhbGwgb2YgbWVkaWEg
c2Vzc2lvbidzIGFjdGl2ZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzIGFuZCBzZXQgY3Vy
cmVudCBtZWRpYSBzZXNzaW9uJ3MgY3VycmVudCBzdGF0ZSB0byBpbnRlcnJ1cHRlZC4KLSAgICAg
ICAgICAgIGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkK
LSAgICAgICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVQYXVzZUludGVycnVwdGlvbigpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSBpbnRlcnJ1cHRpbmdDYXRlZ29yeSkKLXsKLSAgICAvLyA0LjUuMiBJbnRlcnJ1cHRpbmcg
YSBtZWRpYSBzZXNzaW9uCi0gICAgLy8gV2hlbiBhbiBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlm
aWNhdGlvbiBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBwbGF0Zm9ybSwgdGhlbiB0aGUgdXNl
ciBhZ2VudCBtdXN0IHJ1biB0aGUKLSAgICAvLyBtZWRpYSBzZXNzaW9uIGNvbnRpbnVhdGlvbiBh
bGdvcml0aG0gYWdhaW5zdCBhbGwga25vd24gbWVkaWEgc2Vzc2lvbnMsIHBhc3NpbmcgaW4gZWFj
aCBtZWRpYSBzZXNzaW9uIGFzIG1lZGlhIHNlc3Npb24uCi0gICAgZm9yIChhdXRvKiBzZXNzaW9u
IDogbV9zZXNzaW9ucykgewotICAgICAgICAvLyAxLiBJZiBtZWRpYSBzZXNzaW9uJ3MgY3VycmVu
dCBzdGF0ZSBpcyBub3QgaW50ZXJydXB0ZWQsIHRoZW4gdGVybWluYXRlIHRoZXNlIHN0ZXBzLgot
ICAgICAgICBpZiAoc2Vzc2lvbi0+Y3VycmVudFN0YXRlKCkgIT0gTWVkaWFTZXNzaW9uOjpTdGF0
ZTo6SW50ZXJydXB0ZWQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAyLiBM
ZXQgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdvcnkgYmUgdGhlIG1lZGlhIHNlc3Np
b24gY2F0ZWdvcnkgdGhhdCBpbml0aWFsbHkgdHJpZ2dlcmVkIHRoaXMgaW50ZXJydXB0aW9uLgot
ICAgICAgICAvLyAgICBJZiB0aGlzIGludGVycnVwdGlvbiBoYXMgbm8ga25vd24gbWVkaWEgc2Vz
c2lvbiBjYXRlZ29yeSwgbGV0IGludGVycnVwdGluZyBtZWRpYSBzZXNzaW9uIGNhdGVnb3J5IGJl
IERlZmF1bHQuCi0KLSAgICAgICAgLy8gMy4gUnVuIHRoZXNlIHN1YnN0ZXBzOgotICAgICAgICBp
ZiAoaW50ZXJydXB0aW5nQ2F0ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnk6OlRyYW5zaWVudCkgewotICAgICAgICAgICAgLy8gLSBJZiBpbnRlcnJ1cHRpbmcgbWVkaWEg
c2Vzc2lvbiBjYXRlZ29yeSBpcyBUcmFuc2llbnQ6Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlh
IHNlc3Npb24ncyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0IG9yIENvbnRl
bnQsIHRoZW4gdW5kdWNrIGFsbCBvZiBtZWRpYSBzZXNzaW9uJ3MKLSAgICAgICAgICAgIC8vICAg
YWN0aXZlIGF1ZGlvLXByb2R1Y2luZyBwYXJ0aWNpcGFudHMgYW5kIHNldCBtZWRpYSBzZXNzaW9u
J3MgY3VycmVudCBzdGF0ZSB0byBhY3RpdmUuCi0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+a2lu
ZCgpID09IE1lZGlhU2Vzc2lvbktpbmQ6OkRlZmF1bHQgfHwgc2Vzc2lvbi0+a2luZCgpID09IE1l
ZGlhU2Vzc2lvbktpbmQ6OkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGFuZGxl
VW5kdWNrSW50ZXJydXB0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0aW5nQ2F0
ZWdvcnkgPT0gTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVudFNvbG8p
IHsKLSAgICAgICAgICAgIC8vIC0gSWYgaW50ZXJydXB0aW5nIG1lZGlhIHNlc3Npb24gY2F0ZWdv
cnkgaXMgVHJhbnNpZW50IFNvbG86Ci0gICAgICAgICAgICAvLyAgIElmIG1lZGlhIHNlc3Npb24n
cyBjdXJyZW50IG1lZGlhIHNlc3Npb24gdHlwZSBpcyBEZWZhdWx0LCBDb250ZW50LCBUcmFuc2ll
bnQsIG9yIFRyYW5zaWVudCBTb2xvLCB0aGVuCi0gICAgICAgICAgICAvLyAgIHVucGF1c2UgdGhl
IG1lZGlhIHNlc3Npb24ncyBhY3RpdmUgYXVkaW8tcHJvZHVjaW5nIHBhcnRpY2lwYW50cyBhbmQg
c2V0IG1lZGlhIHNlc3Npb24ncyBjdXJyZW50IHN0YXRlIHRvIGFjdGl2ZS4KLSAgICAgICAgICAg
IGlmIChzZXNzaW9uLT5raW5kKCkgIT0gTWVkaWFTZXNzaW9uS2luZDo6QW1iaWVudCkKLSAgICAg
ICAgICAgICAgICBzZXNzaW9uLT5oYW5kbGVVbnBhdXNlSW50ZXJydXB0aW9uKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8qIEVOQUJM
RShNRURJQV9TRVNTSU9OKSAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkocmV2aXNpb24gMjY3
NzkwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
TWFuYWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTWVkaWFTZXNzaW9uOwotCi1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyIDogcHVi
bGljIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50IHsKLSAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TWVkaWFTZXNzaW9uTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNpbmdsZXRvbigpOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQbGF5YmFjaygpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2tpcFRvTmV4dFRyYWNrKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
a2lwVG9QcmV2aW91c1RyYWNrKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGlu
Z0NhdGVnb3J5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVF
bmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRl
Z29yeSkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE1lZGlhU2Vzc2lv
bjsKLQotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLQotICAgIGJvb2wgaGFzQWN0aXZlTWVk
aWFFbGVtZW50cygpIGNvbnN0OwotCi0gICAgdm9pZCBhZGRNZWRpYVNlc3Npb24oTWVkaWFTZXNz
aW9uJik7Ci0gICAgdm9pZCByZW1vdmVNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7Ci0KLSAg
ICBSZWZQdHI8TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI+IG1faW50ZXJydXB0aW9u
UHJvdmlkZXI7Ci0gICAgSGFzaFNldDxNZWRpYVNlc3Npb24qPiBtX3Nlc3Npb25zOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
ZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LQotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBN
ZWRpYVNlc3Npb25NZXRhZGF0YSBmaW5hbCB7Ci1wdWJsaWM6Ci0gICAgTWVkaWFTZXNzaW9uTWV0
YWRhdGEoKSA9IGRlZmF1bHQ7Ci0KLSAgICBNZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFydGlzdCwgY29uc3QgU3RyaW5nJiBhbGJ1bSwgY29u
c3QgVVJMJiBhcnR3b3JrVVJMKQotICAgICAgICA6IG1fdGl0bGUodGl0bGUpCi0gICAgICAgICwg
bV9hcnRpc3QoYXJ0aXN0KQotICAgICAgICAsIG1fYWxidW0oYWxidW0pCi0gICAgICAgICwgbV9h
cnR3b3JrVVJMKGFydHdvcmtVUkwpIHsgfQotCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aXRsZTsgfQotICAgIFN0cmluZyBhcnRpc3QoKSBjb25zdCB7IHJldHVybiBtX2Fy
dGlzdDsgfQotICAgIFN0cmluZyBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxidW07IH0KLSAg
ICBVUkwgYXJ0d29ya1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0d29ya1VSTDsgfQotCi1wcml2
YXRlOgotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2FydGlzdDsKLSAgICBTdHJp
bmcgbV9hbGJ1bTsKLSAgICBVUkwgbV9hcnR3b3JrVVJMOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCShyZXZpc2lvbiAy
Njc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9QbGF5YmFja1Rh
cmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjc3OTApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5o
IgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKLSNpbmNsdWRlICJX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMu
aD4KLSNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBTZWNvbmRzIHRh
c2tEZWxheUludGVydmFsIHsgMTAwX21zIH07Ci0KLSNkZWZpbmUgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSIGxvZ2dlcigpLmxvZ0Fsd2F5cwotCi1zdHJ1Y3QgQ2xpZW50U3RhdGUgewot
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAgIGV4cGxpY2l0IENsaWVu
dFN0YXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCi0gICAgICAgIDogY2xpZW50KGNs
aWVudCkKLSAgICAgICAgLCBjb250ZXh0SWQoY29udGV4dElkKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yID09IChDbGllbnRTdGF0ZSBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gY29udGV4dElkID09IG90aGVyLmNvbnRleHRJZCAmJiAmY2xpZW50
ID09ICZvdGhlci5jbGllbnQ7Ci0gICAgfQotCi0gICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNs
aWVudCYgY2xpZW50OwotICAgIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkOwotICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBm
bGFncyB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9OwotICAgIGJvb2wg
cmVxdWVzdGVkUGlja2VyIHsgZmFsc2UgfTsKLSAgICBib29sIHByZXZpb3VzbHlSZXF1ZXN0ZWRQ
aWNrZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgY29uZmlndXJhdGlvblJlcXVpcmVkIHsgdHJ1ZSB9
OwotICAgIGJvb2wgcGxheWVkVG9FbmQgeyBmYWxzZSB9OwotfTsKLQotc3RhdGljIGJvb2wgZmxh
Z3NBcmVTZXQoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHZhbHVlLCB1bnNpZ25lZCBm
bGFncykKLXsKLSAgICByZXR1cm4gdmFsdWUgJiBmbGFnczsKLX0KLQotU3RyaW5nIG1lZGlhUHJv
ZHVjZXJTdGF0ZVN0cmluZyhNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpCi17
Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmc7Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nQXVkaW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQoIklzUGxheWluZ0F1ZGlv
KyIpOwotICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKQotICAg
ICAgICBzdHJpbmcuYXBwZW5kKCJJc1BsYXlpbmdWaWRlbysiKTsKLSAgICBpZiAoZmxhZ3MgJiBN
ZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKQotICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKyIpOwotICAgIGlmIChmbGFncyAmIE1l
ZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIpCi0gICAg
ICAgIHN0cmluZy5hcHBlbmQoIkhhc1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyKyIpOwotICAg
IGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRNb25pdG9y
aW5nKQotICAgICAgICBzdHJpbmcuYXBwZW5kKCJSZXF1aXJlc1RhcmdldE1vbml0b3JpbmcrIik7
Ci0gICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkKLSAgICAgICAgc3RyaW5nLmFwcGVuZCgiRXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSsiKTsKLSAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpEaWRQbGF5VG9FbmQp
Ci0gICAgICAgIHN0cmluZy5hcHBlbmQoIkRpZFBsYXlUb0VuZCsiKTsKLSAgICBpZiAoZmxhZ3Mg
JiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCi0gICAgICAgIHN0cmluZy5hcHBlbmQo
Ikhhc0F1ZGlvT3JWaWRlbysiKTsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RyaW5nLmFwcGVuZCgiSXNOb3RQbGF5aW5nIik7Ci0gICAgZWxzZQotICAgICAgICBzdHJpbmcu
cmVzaXplKHN0cmluZy5sZW5ndGgoKSAtIDEpOwotCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIiB7
ICIsIHN0cmluZy50b1N0cmluZygpLCAiIH0iKTsKLX0KLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9u
TG9nZ2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25Mb2dnZXIp
OwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+IGNyZWF0ZShXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyJiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
TWVkaWFTZXNzaW9uTG9nZ2VyPihtYW5hZ2VyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKGNvbnN0IGNoYXIq
IG1ldGhvZE5hbWUsIENsaWVudFN0YXRlKiBzdGF0ZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1
bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXN0YXRlLT5jbGllbnQuYWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbG9nZ2Vy
LT5sb2dBbHdheXMoTG9nTWVkaWEsIG1ha2VTdHJpbmcoIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OiIsIG1ldGhvZE5hbWUsICcgJyksIHN0YXRlLT5jb250ZXh0SWQudG9VSW50NjQoKSwgc3RhdGUt
PmZsYWdzLCBhcmd1bWVudHMuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoIW1fbWFuYWdlci5hbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgbV9sb2dnZXItPmxvZ0Fsd2F5cyhMb2dNZWRpYSwgbWFrZVN0cmlu
ZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0aG9kTmFtZSwgJyAnKSwgYXJndW1lbnRz
Li4uKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxXZWJN
ZWRpYVNlc3Npb25Mb2dnZXI+IHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFTZXNzaW9uTG9nZ2Vy
PihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJik7Ci0gICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIpCi0gICAgICAgIDogbV9tYW5hZ2VyKG1hbmFn
ZXIpCi0gICAgICAgICwgbV9sb2dnZXIoTG9nZ2VyOjpjcmVhdGUodGhpcykpCi0gICAgewotICAg
IH0KLQotICAgIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1fbWFuYWdlcjsKLSAgICBSZWY8TG9n
Z2VyPiBtX2xvZ2dlcjsKLX07Ci0KLVdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6bG9nZ2VyKCkKLXsKLSAgICBpZiAoIW1fbG9nZ2VyKQotICAgICAgICBtX2xv
Z2dlciA9IFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcjo6Y3JlYXRlKCp0aGlzKTsKLQotICAgIHJldHVy
biAqbV9sb2dnZXI7Ci19Ci0KLWJvb2wgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFsbE9mKG1fY2xpZW50U3RhdGUs
IFtdIChhdXRvJiBzdGF0ZSkgewotICAgICAgICByZXR1cm4gc3RhdGUtPmNsaWVudC5hbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKLXsKLSAgICBpZiAobV9tb2NrUGlja2VyRW5hYmxlZCA9PSBlbmFibGVkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwot
ICAgIG1fbW9ja1BpY2tlckVuYWJsZWQgPSBlbmFibGVkOwotfQotCi12b2lkIFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUgc3RhdGUpCi17
Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtb2Nr
UGlja2VyKCkuc2V0U3RhdGUobmFtZSwgc3RhdGUpOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6Om1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCkKLXsK
LSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOwotICAgIG1vY2tQ
aWNrZXIoKS5kaXNtaXNzUG9wdXAoKTsKLX0KLQotTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQotewotICAgIGlmICghbV9w
aWNrZXJPdmVycmlkZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8TWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9waWNr
ZXJPdmVycmlkZS5nZXQoKTsKLX0KLQotV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFyZ2V0UGlja2VyKCkKLXsKLSAgICBpZiAobV9t
b2NrUGlja2VyRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIG1vY2tQaWNrZXIoKTsKLQotICAgIHJl
dHVybiBwbGF0Zm9ybVBpY2tlcigpOwotfQotCi1XZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyKCkKLSAgICA6IG1fdGFza1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnRhc2tUaW1lckZpcmVkKQotICAgICwg
bV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCkKLXsKLX0KLQotV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7Ci0KLVBsYXliYWNrVGFy
Z2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xp
ZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ID09IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybiB7IH07Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5j
X18sIGNvbnRleHRJZC50b1VJbnQ2NCgpKTsKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtl
VW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwotCi0gICAgaWYgKG1fZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKLSAgICAgICAg
c2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotCi0gICAgcmV0dXJuIGNvbnRleHRJZDsKLX0KLQotdm9p
ZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xp
ZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIHNpemVfdCBpbmRleCA9IGZp
bmQoJmNsaWVudCwgY29udGV4dElkKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwot
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5n
ZXQoKSk7Ci0KLSAgICBtX2NsaWVudFN0YXRlLnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVE
ZWxheWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2spOwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZUFsbFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50cyhXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyQ2xpZW50JiBjbGllbnQpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9jbGllbnRTdGF0ZS5zaXpl
KCk7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgaWYgKCZtX2NsaWVudFN0YXRlW2kgLSAxXS0+Y2xp
ZW50ID09ICZjbGllbnQpIHsKLSAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFO
QUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpIC0gMV0uZ2V0KCkpOwotICAgICAgICAgICAg
bV9jbGllbnRTdGF0ZS5yZW1vdmUoaSAtIDEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNjaGVk
dWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0NvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKLXsK
LSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRleHRJZCk7Ci0gICAgQVNTRVJU
KGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8mIGNsaWVudFJlcXVlc3RpbmdQaWNrZXIgPSBtX2NsaWVudFN0
YXRlW2luZGV4XTsKLSAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAg
ICAgICBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyID0gc3RhdGUgPT0gY2xpZW50UmVxdWVzdGluZ1Bp
Y2tlcjsKLSAgICAgICAgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9
PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwotICAgIH0KLQotICAgIEFMV0FZU19MT0dfTUVESUFT
RVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCkpOwotCi0g
ICAgYm9vbCBoYXNBY3RpdmVSb3V0ZSA9IGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbaW5kZXhd
LT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSk7Ci0gICAg
dGFyZ2V0UGlja2VyKCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNsaWVudC5wbGF0Zm9ybVZp
ZXcoKSwgRmxvYXRSZWN0KHJlY3QpLCBoYXNBY3RpdmVSb3V0ZSwgdXNlRGFya0FwcGVhcmFuY2Up
OwotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNsaWVudFN0YXRlRGlkQ2hhbmdl
KFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBuZXdGbGFncykKLXsKLSAgICBzaXplX3QgaW5kZXggPSBmaW5kKCZjbGllbnQsIGNvbnRl
eHRJZCk7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGNoYW5nZWRDbGllbnRTdGF0
ZSA9IG1fY2xpZW50U3RhdGVbaW5kZXhdOwotICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBvbGRGbGFncyA9IGNoYW5nZWRDbGllbnRTdGF0ZS0+ZmxhZ3M7Ci0gICAgaWYgKG5ld0Zs
YWdzID09IG9sZEZsYWdzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpLCAibmV3
IGZsYWdzID0gIiwgbmV3RmxhZ3MpOwotCi0gICAgY2hhbmdlZENsaWVudFN0YXRlLT5mbGFncyA9
IG5ld0ZsYWdzOwotCi0gICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHVwZGF0ZUNv
bmZpZ3VyYXRpb25GbGFncyA9IE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJhY2tUYXJnZXRN
b25pdG9yaW5nIHwgTWVkaWFQcm9kdWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlM
aXN0ZW5lciB8IE1lZGlhUHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbzsKLSAgICBpZiAoKG9sZEZs
YWdzICYgdXBkYXRlQ29uZmlndXJhdGlvbkZsYWdzKSAhPSAobmV3RmxhZ3MgJiB1cGRhdGVDb25m
aWd1cmF0aW9uRmxhZ3MpKQotICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldE1vbml0
b3JpbmdDb25maWd1cmF0aW9uVGFzayk7Ci0KLSAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgcGxheWluZ1RvVGFyZ2V0RmxhZ3MgPSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4
dGVybmFsRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW87Ci0gICAgaWYgKChv
bGRGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZsYWdzKSAhPSAobmV3RmxhZ3MgJiBwbGF5aW5nVG9U
YXJnZXRGbGFncykpIHsKLSAgICAgICAgaWYgKGZsYWdzQXJlU2V0KG9sZEZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgIWZsYWdzQXJlU2V0KG5ld0ZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgJiYgZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJv
ZHVjZXI6OkRpZFBsYXlUb0VuZCkpCi0gICAgICAgICAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPnBs
YXllZFRvRW5kID0gdHJ1ZTsKLSAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhXYXRjaGRvZ1Rp
bWVyQ29uZmlndXJhdGlvblRhc2spOwotICAgIH0KLQotICAgIGlmICghbV9wbGF5YmFja1Rhcmdl
dCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSB8fCAhZmxhZ3NBcmVTZXQo
bmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6OkV4dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRhdGUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEbyBub3QgaW50ZXJydXB0IGFub3RoZXIgZWxl
bWVudCBhbHJlYWR5IHBsYXlpbmcgdG8gYSBkZXZpY2UuCi0gICAgZm9yIChhdXRvJiBzdGF0ZSA6
IG1fY2xpZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKHN0YXRlID09IGNoYW5nZWRDbGllbnRTdGF0
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmbGFnc0FyZVNldChzdGF0
ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpICYmIGZs
YWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7
Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0
YXRlLmdldCgpLCAiIHJldHVybmluZyBlYXJseSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG8gbm90IGJlZ2luIHBsYXlpbmcgdG8gdGhlIGRldmlj
ZSB1bmxlc3MgcGxheWJhY2sgaGFzIGp1c3Qgc3RhcnRlZC4KLSAgICBpZiAoIWZsYWdzQXJlU2V0
KG5ld0ZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykgfHwgZmxhZ3NBcmVTZXQo
b2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSkgewotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJyZXR1cm5pbmcgZWFybHksIHBs
YXliYWNrIGRpZG4ndCBqdXN0IHN0YXJ0Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgewotICAgICAgICBpZiAoc3RhdGUg
PT0gY2hhbmdlZENsaWVudFN0YXRlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2Fs
bGluZyBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKLSAgICAgICAgc3Rh
dGUtPmNsaWVudC5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElk
LCBmYWxzZSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBjaGFuZ2VkQ2xpZW50U3RhdGUuZ2V0KCksICIgY2FsbGluZyBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldCh0cnVlKSIpOwotICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+Y2xpZW50
LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNoYW5nZWRDbGllbnRTdGF0ZS0+Y29udGV4
dElkLCB0cnVlKTsKLQotICAgIGlmIChpbmRleCAmJiBtX2NsaWVudFN0YXRlLnNpemUoKSA+IDEp
Ci0gICAgICAgIHN0ZDo6c3dhcChtX2NsaWVudFN0YXRlLmF0KGluZGV4KSwgbV9jbGllbnRTdGF0
ZS5hdCgwKSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2tU
YXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQotewotICAgIEFMV0FZU19M
T0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgImhhcyBhY3RpdmUgcm91dGUgPSAiLCB0
YXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpOwotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3Zl
KHRhcmdldCk7Ci0gICAgbV90YXJnZXRDaGFuZ2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5
ZWRUYXNrKFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
Ym9vbCBhdmFpbGFibGUpCi17Ci0gICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBhdmFpbGFibGUpOwotICAgIG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
PSBhdmFpbGFibGU7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpCi0gICAg
ICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
c3RhdGUtPmNvbnRleHRJZCwgYXZhaWxhYmxlKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCgpCi17Ci0gICAgQUxXQVlT
X0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fKTsKLSAgICBtX3BsYXliYWNrVGFyZ2V0
UGlja2VyRGlzbWlzc2VkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFRhcmdldENs
aWVudHNDb25maWd1cmF0aW9uVGFzayk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y29uZmlndXJlTmV3Q2xpZW50cygpCi17Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xp
ZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgc3RhdGUtPmNvbmZpZ3VyYXRpb25SZXF1
aXJlZCA9IGZhbHNlOwotICAgICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZSkKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2Uoc3RhdGUtPmNvbnRleHRJZCwgdHJ1ZSk7Ci0KLSAgICAgICAgaWYgKG1fcGxh
eWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFBsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Ci0gICAgfQot
fQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
Q2xpZW50cygpCi17Ci0gICAgaWYgKG1fY2xpZW50U3RhdGUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBu
b3RGb3VuZDsKLSAgICBzaXplX3QgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBub3RG
b3VuZDsKLSAgICBib29sIGhhdmVBY3RpdmVSb3V0ZSA9IG1fcGxheWJhY2tUYXJnZXQgJiYgbV9w
bGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9
IG1fY2xpZW50U3RhdGVbaV07Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiwgcmVxdWVzdGVkUGlja2VyID0gIiwgc3RhdGUt
PnJlcXVlc3RlZFBpY2tlcik7Ci0KLSAgICAgICAgaWYgKChtX3RhcmdldENoYW5nZWQgfHwgbV9w
bGF5YmFja1RhcmdldFBpY2tlckRpc21pc3NlZCkgJiYgc3RhdGUtPnJlcXVlc3RlZFBpY2tlcikK
LSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyID0gaTsKLQotICAg
ICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQgJiYgZmxh
Z3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFs
RGV2aWNlKSkKLSAgICAgICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaTsK
LQotICAgICAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0gbm90Rm91bmQg
JiYgaGF2ZUFjdGl2ZVJvdXRlICYmIHN0YXRlLT5wcmV2aW91c2x5UmVxdWVzdGVkUGlja2VyKQot
ICAgICAgICAgICAgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgPSBpOwotICAgIH0K
LQotICAgIGlmIChpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciAhPSBub3RGb3VuZCkK
LSAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mQ2xpZW50VGhh
dFJlcXVlc3RlZFBpY2tlcjsKLSAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PT0gbm90Rm91bmQgJiYgaW5kZXhPZkxhc3RDbGllbnRUb1JlcXVlc3RQaWNrZXIgIT0gbm90Rm91
bmQpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0ID0gaW5kZXhPZkxhc3RD
bGllbnRUb1JlcXVlc3RQaWNrZXI7Ci0gICAgaWYgKGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFy
Z2V0ID09IG5vdEZvdW5kICYmIGhhdmVBY3RpdmVSb3V0ZSAmJiBmbGFnc0FyZVNldChtX2NsaWVu
dFN0YXRlWzBdLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNh
bmRpZGF0ZSkgJiYgIWZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVbMF0tPmZsYWdzLCBNZWRpYVBy
b2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgIGluZGV4T2ZDbGllbnRXaWxsUGxheVRv
VGFyZ2V0ID0gMDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGllbnRTdGF0ZS5z
aXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBzdGF0ZSA9IG1fY2xpZW50U3RhdGVbaV07Ci0K
LSAgICAgICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50
LnNldFBsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsICptX3BsYXliYWNrVGFyZ2V0LmNv
cHlSZWYoKSk7Ci0KLSAgICAgICAgaWYgKGkgIT0gaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJn
ZXQgfHwgIWhhdmVBY3RpdmVSb3V0ZSkgewotICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNF
U1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOwotICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5z
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdGF0ZS0+Y29udGV4dElkLCBmYWxzZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoc3RhdGUtPnJlcXVlc3RlZFBpY2tlciAmJiBtX3BsYXli
YWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX01FRElB
U0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgcGxheWJhY2tU
YXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQiKTsKLSAgICAgICAgICAgIHN0YXRlLT5jbGllbnQucGxh
eWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoc3RhdGUtPmNvbnRleHRJZCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChtX3RhcmdldENoYW5nZWQgfHwgbV9wbGF5YmFja1RhcmdldFBpY2tlckRpc21pc3Nl
ZCkKLSAgICAgICAgICAgIHN0YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAoaGF2ZUFjdGl2ZVJvdXRlICYmIGluZGV4T2ZDbGllbnRXaWxsUGxheVRvVGFyZ2V0
ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpbmRl
eE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldF07Ci0gICAgICAgIGlmICghZmxhZ3NBcmVTZXQoc3Rh
dGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKSkgewot
ICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpIik7
Ci0gICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0
KHN0YXRlLT5jb250ZXh0SWQsIHRydWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV90YXJn
ZXRDaGFuZ2VkID0gZmFsc2U7Ci0gICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOwotfQotCi12
b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRv
cmluZygpCi17Ci0gICAgYm9vbCBtb25pdG9yaW5nUmVxdWlyZWQgPSBmYWxzZTsKLSAgICBib29s
IGhhc0F2YWlsYWJpbGl0eUxpc3RlbmVyID0gZmFsc2U7Ci0gICAgYm9vbCBoYXZlQ2xpZW50V2l0
aE1lZGlhID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsK
LSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5n
ZXQoKSk7Ci0gICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpSZXF1aXJl
c1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZykgewotICAgICAgICAgICAgbW9uaXRvcmluZ1JlcXVp
cmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChz
dGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVyKQotICAgICAgICAgICAgaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgPSB0cnVlOwot
ICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVv
KQotICAgICAgICAgICAgaGF2ZUNsaWVudFdpdGhNZWRpYSA9IHRydWU7Ci0gICAgfQotCi0gICAg
aWYgKG1vbml0b3JpbmdSZXF1aXJlZCB8fCAoaGFzQXZhaWxhYmlsaXR5TGlzdGVuZXIgJiYgaGF2
ZUNsaWVudFdpdGhNZWRpYSkpIHsKLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5B
R0VSKF9fZnVuY19fLCAic3RhcnRpbmcgbW9uaXRvcmluZyIpOwotICAgICAgICB0YXJnZXRQaWNr
ZXIoKS5zdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGlu
ZyBtb25pdG9yaW5nIik7Ci0gICAgICAgIHRhcmdldFBpY2tlcigpLnN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKCk7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzIHRhc2tzKQotewotICAgIG1f
dGFza0ZsYWdzIHw9IHRhc2tzOwotICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCh0YXNrRGVs
YXlJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVy
RmlyZWQoKQotewotICAgIGlmIChtX3Rhc2tGbGFncyAmIEluaXRpYWxDb25maWd1cmF0aW9uVGFz
aykKLSAgICAgICAgY29uZmlndXJlTmV3Q2xpZW50cygpOwotICAgIGlmIChtX3Rhc2tGbGFncyAm
IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzaykKLSAgICAgICAgY29uZmlndXJlUGxheWJh
Y2tUYXJnZXRDbGllbnRzKCk7Ci0gICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0TW9uaXRvcmlu
Z0NvbmZpZ3VyYXRpb25UYXNrKQotICAgICAgICBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0
b3JpbmcoKTsKLSAgICBpZiAobV90YXNrRmxhZ3MgJiBXYXRjaGRvZ1RpbWVyQ29uZmlndXJhdGlv
blRhc2spCi0gICAgICAgIGNvbmZpZ3VyZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIG1fdGFza0Zs
YWdzID0gTm9UYXNrOwotfQotCi1zaXplX3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6ZmluZChX
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jbGllbnRTdGF0ZS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9jbGllbnRTdGF0
ZVtpXS0+Y29udGV4dElkID09IGNvbnRleHRJZCAmJiAmbV9jbGllbnRTdGF0ZVtpXS0+Y2xpZW50
ID09IGNsaWVudCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLQotICAgIHJldHVybiBu
b3RGb3VuZDsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25maWd1cmVXYXRj
aGRvZ1RpbWVyKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRjaGRvZ1RpbWVySW50
ZXJ2YWxBZnRlclBhdXNpbmcgeyAxX2ggfTsKLSAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyB3YXRj
aGRvZ1RpbWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCB7IDhfbWluIH07Ci0KLSAgICBpZiAo
IW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkp
IHsKLSAgICAgICAgaWYgKG1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJzdG9wcGluZyB0aW1l
ciIpOwotICAgICAgICAgICAgbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCA9IHsgfTsKLSAgICAg
ICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYm9vbCBzdG9wVGltZXIgPSBmYWxzZTsKLSAgICBib29sIGRpZFBs
YXlUb0VuZCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7
Ci0KLSAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0
ZS5nZXQoKSwgIiBwbGF5ZWRUb0VuZCA9ICIsIHN0YXRlLT5wbGF5ZWRUb0VuZCk7Ci0KLSAgICAg
ICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFncywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5n
VG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdWaWRlbykpCi0gICAgICAgICAgICBzdG9wVGltZXIgPSB0cnVlOwotICAg
ICAgICBpZiAoc3RhdGUtPnBsYXllZFRvRW5kKQotICAgICAgICAgICAgZGlkUGxheVRvRW5kID0g
dHJ1ZTsKLSAgICAgICAgc3RhdGUtPnBsYXllZFRvRW5kID0gZmFsc2U7Ci0gICAgfQotCi0gICAg
aWYgKHN0b3BUaW1lcikgewotICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIo
X19mdW5jX18sICJzdG9wcGluZyB0aW1lciIpOwotICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0lu
dGVydmFsID0geyB9OwotICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFNlY29uZHMgaW50ZXJ2YWwgPSBkaWRQbGF5VG9FbmQgPyB3YXRjaGRvZ1Rp
bWVySW50ZXJ2YWxBZnRlclBsYXlpbmdUb0VuZCA6IHdhdGNoZG9nVGltZXJJbnRlcnZhbEFmdGVy
UGF1c2luZzsKLSAgICAgICAgaWYgKGludGVydmFsICE9IG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2
YWwgfHwgIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBtX3dhdGNo
ZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICBBTFdB
WVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sICJ0aW1lciBzY2hlZHVsZWQgZm9y
ICIsIGludGVydmFsLnZhbHVlKCksICIgc2Vjb25kcyIpOwotICAgICAgICBtX2N1cnJlbnRXYXRj
aGRvZ0ludGVydmFsID0gaW50ZXJ2YWw7Ci0gICAgfQotfQotCi12b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OndhdGNoZG9nVGltZXJGaXJlZCgpCi17Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFy
Z2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFH
RVIoX19mdW5jX18pOwotICAgIHRhcmdldFBpY2tlcigpLmludmFsaWRhdGVQbGF5YmFja1Rhcmdl
dHMoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLQotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrLmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IENsaWVudFN0YXRlOwotY2xhc3MgSW50UmVjdDsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkxv
Z2dlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQ7Ci0KLWNsYXNzIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyKTsK
LXB1YmxpYzoKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBzaGFyZWQoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TW9ja01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgYWRkUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgY29uc3QgSW50UmVjdCYsIGJvb2ws
IGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50U3RhdGVEaWRDaGFuZ2UoV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7Ci0KLSAg
ICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAg
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLSAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyKCk7Ci0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXImIHBsYXRmb3JtUGlja2VyKCkgPSAwOwotICAgIHN0YXRpYyBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyJiBwbGF0Zm9ybU1hbmFnZXIoKTsKLQotcHJpdmF0ZToKLQotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXImIHRhcmdldFBpY2tlcigpOwotICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBtb2NrUGlja2VyKCk7Ci0KLSAgICAvLyBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQKLSAgICB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJl
ZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQoKSBvdmVycmlkZTsKLQotICAg
IHNpemVfdCBmaW5kKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQqLCBQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyKTsKLQotICAgIHZvaWQgY29uZmlndXJlUGxheWJhY2tU
YXJnZXRDbGllbnRzKCk7Ci0gICAgdm9pZCBjb25maWd1cmVOZXdDbGllbnRzKCk7Ci0gICAgdm9p
ZCBjb25maWd1cmVQbGF5YmFja1RhcmdldE1vbml0b3JpbmcoKTsKLSAgICB2b2lkIGNvbmZpZ3Vy
ZVdhdGNoZG9nVGltZXIoKTsKLQotICAgIGVudW0gQ29uZmlndXJhdGlvblRhc2tGbGFncyB7Ci0g
ICAgICAgIE5vVGFzayA9IDAsCi0gICAgICAgIEluaXRpYWxDb25maWd1cmF0aW9uVGFzayA9IDEg
PDwgMCwKLSAgICAgICAgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAxLAot
ICAgICAgICBUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDIsCi0gICAg
ICAgIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzayA9IDEgPDwgMywKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgQ29uZmlndXJhdGlvblRhc2tzOwotICAgIFN0cmluZyB0b1N0cmlu
ZyhDb25maWd1cmF0aW9uVGFza3MpOwotCi0gICAgdm9pZCBzY2hlZHVsZURlbGF5ZWRUYXNrKENv
bmZpZ3VyYXRpb25UYXNrcyk7Ci0gICAgdm9pZCB0YXNrVGltZXJGaXJlZCgpOwotCi0gICAgdm9p
ZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKLQotICAgIFdlYk1lZGlhU2Vzc2lvbkxvZ2dlciYgbG9n
Z2VyKCk7Ci0KLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Rh
c2tUaW1lcjsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3dh
dGNoZG9nVGltZXI7Ci0KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENsaWVudFN0YXRlPj4g
bV9jbGllbnRTdGF0ZTsKLSAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFj
a1RhcmdldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2s+IG1fcGlja2VyT3ZlcnJpZGU7Ci0gICAgQ29uZmlndXJhdGlvblRhc2tzIG1f
dGFza0ZsYWdzIHsgTm9UYXNrIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vzc2lv
bkxvZ2dlcj4gbV9sb2dnZXI7Ci0gICAgU2Vjb25kcyBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFs
OwotICAgIGJvb2wgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX3RhcmdldENoYW5nZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wbGF5YmFja1Rh
cmdldFBpY2tlckRpc21pc3NlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21vY2tQaWNrZXJFbmFi
bGVkIHsgZmFsc2UgfTsKLX07Ci0KLVN0cmluZyBtZWRpYVByb2R1Y2VyU3RhdGVTdHJpbmcoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBM
b2dBcmd1bWVudDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJu
IFdlYkNvcmU6Om1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhmbGFncyk7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlckNsaWVudC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0KLSNpbmNsdWRlICJNZWRpYVBsYXli
YWNrVGFyZ2V0LmgiCi0jaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtVmlldy5oIgotI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCgpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRQbGF5YmFja1RhcmdldChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLCBib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIsIGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tUYXJnZXRQaWNrZXJXYXNE
aXNtaXNzZWQoUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIFBsYXRmb3JtVmlldyogcGxhdGZvcm1WaWV3KCkgY29uc3QgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9QbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkv
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisKKyNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIgorI2luY2x1ZGUgIldlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IFNlY29uZHMgdGFza0RlbGF5
SW50ZXJ2YWwgeyAxMDBfbXMgfTsKKworI2RlZmluZSBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIgbG9nZ2VyKCkubG9nQWx3YXlzCisKK3N0cnVjdCBDbGllbnRTdGF0ZSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZXhwbGljaXQgQ2xpZW50U3RhdGUo
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICAgICAgOiBjbGllbnQoY2xpZW50KQor
ICAgICAgICAsIGNvbnRleHRJZChjb250ZXh0SWQpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IgPT0gKENsaWVudFN0YXRlIGNvbnN0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb250ZXh0SWQgPT0gb3RoZXIuY29udGV4dElkICYmICZjbGllbnQgPT0gJm90
aGVyLmNsaWVudDsKKyAgICB9CisKKyAgICBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBj
bGllbnQ7CisgICAgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQ7CisgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIGZsYWdzIHsg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CisgICAgYm9vbCByZXF1ZXN0
ZWRQaWNrZXIgeyBmYWxzZSB9OworICAgIGJvb2wgcHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciB7
IGZhbHNlIH07CisgICAgYm9vbCBjb25maWd1cmF0aW9uUmVxdWlyZWQgeyB0cnVlIH07CisgICAg
Ym9vbCBwbGF5ZWRUb0VuZCB7IGZhbHNlIH07Cit9OworCitzdGF0aWMgYm9vbCBmbGFnc0FyZVNl
dChNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdmFsdWUsIHVuc2lnbmVkIGZsYWdzKQor
eworICAgIHJldHVybiB2YWx1ZSAmIGZsYWdzOworfQorCitTdHJpbmcgbWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBmbGFncykKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZzsKKyAgICBpZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpJc1Bs
YXlpbmdBdWRpbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSXNQbGF5aW5nQXVkaW8rIik7Cisg
ICAgaWYgKGZsYWdzICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pCisgICAgICAgIHN0
cmluZy5hcHBlbmQoIklzUGxheWluZ1ZpZGVvKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJv
ZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpCisgICAgICAgIHN0cmluZy5hcHBlbmQo
IklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UrIik7CisgICAgaWYgKGZsYWdzICYgTWVkaWFQcm9k
dWNlcjo6SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcikKKyAgICAgICAgc3Ry
aW5nLmFwcGVuZCgiSGFzVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXIrIik7CisgICAgaWYgKGZs
YWdzICYgTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3JpbmcpCisg
ICAgICAgIHN0cmluZy5hcHBlbmQoIlJlcXVpcmVzVGFyZ2V0TW9uaXRvcmluZysiKTsKKyAgICBp
ZiAoZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KQorICAgICAgICBzdHJpbmcuYXBwZW5kKCJFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KyIpOworICAgIGlmIChmbGFncyAmIE1lZGlhUHJvZHVjZXI6OkRpZFBsYXlUb0VuZCkKKyAgICAg
ICAgc3RyaW5nLmFwcGVuZCgiRGlkUGxheVRvRW5kKyIpOworICAgIGlmIChmbGFncyAmIE1lZGlh
UHJvZHVjZXI6Okhhc0F1ZGlvT3JWaWRlbykKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFzQXVk
aW9PclZpZGVvKyIpOworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBzdHJpbmcu
YXBwZW5kKCJJc05vdFBsYXlpbmciKTsKKyAgICBlbHNlCisgICAgICAgIHN0cmluZy5yZXNpemUo
c3RyaW5nLmxlbmd0aCgpIC0gMSk7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZygiIHsgIiwgc3Ry
aW5nLnRvU3RyaW5nKCksICIgfSIpOworfQorCitjbGFzcyBXZWJNZWRpYVNlc3Npb25Mb2dnZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcik7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFdlYk1lZGlhU2Vzc2lvbkxvZ2dlcj4gY3JlYXRlKFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXImIG1hbmFnZXIpCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVNl
c3Npb25Mb2dnZXI+KG1hbmFnZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMoY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgQ2xpZW50U3RhdGUqIHN0YXRlLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICghc3RhdGUtPmNsaWVudC5hbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9sb2dnZXItPmxvZ0Fs
d2F5cyhMb2dNZWRpYSwgbWFrZVN0cmluZygiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6IiwgbWV0
aG9kTmFtZSwgJyAnKSwgc3RhdGUtPmNvbnRleHRJZC50b1VJbnQ2NCgpLCBzdGF0ZS0+ZmxhZ3Ms
IGFyZ3VtZW50cy4uLik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIGlubGluZSB2b2lkIGxvZ0Fsd2F5cyhjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBj
b25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgh
bV9tYW5hZ2VyLmFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX2xvZ2dlci0+bG9nQWx3YXlzKExvZ01lZGlhLCBtYWtlU3RyaW5nKCJXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjoiLCBtZXRob2ROYW1lLCAnICcpLCBhcmd1bWVudHMuLi4pOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhU2Vz
c2lvbkxvZ2dlcj4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVNlc3Npb25Mb2dnZXI+KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXImKTsKKyAgICBXZWJNZWRpYVNlc3Npb25Mb2dnZXIoV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAg
ICAgICAgLCBtX2xvZ2dlcihMb2dnZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICB7CisgICAgfQorCisg
ICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciYgbV9tYW5hZ2VyOworICAgIFJlZjxMb2dnZXI+IG1f
bG9nZ2VyOworfTsKKworV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjpsb2dnZXIoKQoreworICAgIGlmICghbV9sb2dnZXIpCisgICAgICAgIG1fbG9nZ2VyID0g
V2ViTWVkaWFTZXNzaW9uTG9nZ2VyOjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuICptX2xv
Z2dlcjsKK30KKworYm9vbCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWxsT2YobV9jbGllbnRTdGF0ZSwgW10gKGF1
dG8mIHN0YXRlKSB7CisgICAgICAgIHJldHVybiBzdGF0ZS0+Y2xpZW50LmFsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQoYm9vbCBlbmFibGVkKQorewor
ICAgIGlmIChtX21vY2tQaWNrZXJFbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbV9t
b2NrUGlja2VyRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBB
TFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1vY2tQaWNrZXIo
KS5zZXRTdGF0ZShuYW1lLCBzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6bW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKQoreworICAgIEFM
V0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXyk7CisgICAgbW9ja1BpY2tlcigp
LmRpc21pc3NQb3B1cCgpOworfQorCitNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tlcigpCit7CisgICAgaWYgKCFtX3BpY2tlck92
ZXJyaWRlKQorICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOworCisgICAgcmV0dXJuICptX3BpY2tlck92ZXJy
aWRlLmdldCgpOworfQorCitXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXJnZXRQaWNrZXIoKQoreworICAgIGlmIChtX21vY2tQaWNr
ZXJFbmFibGVkKQorICAgICAgICByZXR1cm4gbW9ja1BpY2tlcigpOworCisgICAgcmV0dXJuIHBs
YXRmb3JtUGlja2VyKCk7Cit9CisKK1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIoKQorICAgIDogbV90YXNrVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6dGFza1RpbWVyRmlyZWQpCisgICAgLCBtX3dhdGNo
ZG9nVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKQoreworfQorCitXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp+
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcigpID0gZGVmYXVsdDsKKworUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllciBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGllbnQsIFBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
PT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgY29u
dGV4dElkLnRvVUludDY0KCkpOworICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8
Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CisKKyAgICBpZiAobV9leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0KQorICAgICAgICBzY2hlZHVs
ZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7CisKKyAgICByZXR1cm4gY29udGV4dElkOworfQorCit2b2lkIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgc2l6ZV90IGluZGV4ID0gZmluZCgmY2xp
ZW50LCBjb250ZXh0SWQpOworICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIG1fY2xpZW50U3RhdGVbaW5kZXhdLmdldCgpKTsK
KworICAgIG1fY2xpZW50U3RhdGUucmVtb3ZlKGluZGV4KTsKKyAgICBzY2hlZHVsZURlbGF5ZWRU
YXNrKFRhcmdldE1vbml0b3JpbmdDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25m
aWd1cmF0aW9uVGFzayk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
QWxsUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRzKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGll
bnQmIGNsaWVudCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSBtX2NsaWVudFN0YXRlLnNpemUoKTsgaSA+
IDA7IC0taSkgeworICAgICAgICBpZiAoJm1fY2xpZW50U3RhdGVbaSAtIDFdLT5jbGllbnQgPT0g
JmNsaWVudCkgeworICAgICAgICAgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05NQU5BR0VSKF9f
ZnVuY19fLCBtX2NsaWVudFN0YXRlW2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBtX2NsaWVu
dFN0YXRlLnJlbW92ZShpIC0gMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhUYXJnZXRNb25pdG9yaW5nQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRz
Q29uZmlndXJhdGlvblRhc2spOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiBjbGll
bnQsIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBib29sLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKQoreworICAgIHNp
emVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsKKyAgICBBU1NFUlQoaW5kZXgg
IT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byYgY2xpZW50UmVxdWVzdGluZ1BpY2tlciA9IG1fY2xpZW50U3RhdGVbaW5k
ZXhdOworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIHN0
YXRlLT5yZXF1ZXN0ZWRQaWNrZXIgPSBzdGF0ZSA9PSBjbGllbnRSZXF1ZXN0aW5nUGlja2VyOwor
ICAgICAgICBzdGF0ZS0+cHJldmlvdXNseVJlcXVlc3RlZFBpY2tlciA9IHN0YXRlID09IGNsaWVu
dFJlcXVlc3RpbmdQaWNrZXI7CisgICAgfQorCisgICAgQUxXQVlTX0xPR19NRURJQVNFU1NJT05N
QU5BR0VSKF9fZnVuY19fLCBtX2NsaWVudFN0YXRlW2luZGV4XS5nZXQoKSk7CisKKyAgICBib29s
IGhhc0FjdGl2ZVJvdXRlID0gZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVtpbmRleF0tPmZsYWdz
LCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVybmFsRGV2aWNlKTsKKyAgICB0YXJnZXRQ
aWNrZXIoKS5zaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY2xpZW50LnBsYXRmb3JtVmlldygpLCBG
bG9hdFJlY3QocmVjdCksIGhhc0FjdGl2ZVJvdXRlLCB1c2VEYXJrQXBwZWFyYW5jZSk7Cit9CisK
K3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y2xpZW50U3RhdGVEaWRDaGFuZ2UoV2ViTWVk
aWFTZXNzaW9uTWFuYWdlckNsaWVudCYgY2xpZW50LCBQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5l
d0ZsYWdzKQoreworICAgIHNpemVfdCBpbmRleCA9IGZpbmQoJmNsaWVudCwgY29udGV4dElkKTsK
KyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY2hhbmdlZENsaWVudFN0YXRlID0gbV9j
bGllbnRTdGF0ZVtpbmRleF07CisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9s
ZEZsYWdzID0gY2hhbmdlZENsaWVudFN0YXRlLT5mbGFnczsKKyAgICBpZiAobmV3RmxhZ3MgPT0g
b2xkRmxhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgbV9jbGllbnRTdGF0ZVtpbmRleF0uZ2V0KCksICJuZXcgZmxhZ3Mg
PSAiLCBuZXdGbGFncyk7CisKKyAgICBjaGFuZ2VkQ2xpZW50U3RhdGUtPmZsYWdzID0gbmV3Rmxh
Z3M7CisKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgdXBkYXRlQ29uZmlndXJh
dGlvbkZsYWdzID0gTWVkaWFQcm9kdWNlcjo6UmVxdWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3Jp
bmcgfCBNZWRpYVByb2R1Y2VyOjpIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
IHwgTWVkaWFQcm9kdWNlcjo6SGFzQXVkaW9PclZpZGVvOworICAgIGlmICgob2xkRmxhZ3MgJiB1
cGRhdGVDb25maWd1cmF0aW9uRmxhZ3MpICE9IChuZXdGbGFncyAmIHVwZGF0ZUNvbmZpZ3VyYXRp
b25GbGFncykpCisgICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0TW9uaXRvcmluZ0Nv
bmZpZ3VyYXRpb25UYXNrKTsKKworICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBw
bGF5aW5nVG9UYXJnZXRGbGFncyA9IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxE
ZXZpY2UgfCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbzsKKyAgICBpZiAoKG9sZEZsYWdz
ICYgcGxheWluZ1RvVGFyZ2V0RmxhZ3MpICE9IChuZXdGbGFncyAmIHBsYXlpbmdUb1RhcmdldEZs
YWdzKSkgeworICAgICAgICBpZiAoZmxhZ3NBcmVTZXQob2xkRmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiAhZmxhZ3NBcmVTZXQobmV3RmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSAmJiBmbGFnc0FyZVNldChuZXdGbGFncywgTWVkaWFQcm9kdWNlcjo6
RGlkUGxheVRvRW5kKSkKKyAgICAgICAgICAgIGNoYW5nZWRDbGllbnRTdGF0ZS0+cGxheWVkVG9F
bmQgPSB0cnVlOworICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKFdhdGNoZG9nVGltZXJDb25m
aWd1cmF0aW9uVGFzayk7CisgICAgfQorCisgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFt
X3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpIHx8ICFmbGFnc0FyZVNldChuZXdGbGFn
cywgTWVkaWFQcm9kdWNlcjo6RXh0ZXJuYWxEZXZpY2VBdXRvUGxheUNhbmRpZGF0ZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIERvIG5vdCBpbnRlcnJ1cHQgYW5vdGhlciBlbGVtZW50IGFs
cmVhZHkgcGxheWluZyB0byBhIGRldmljZS4KKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGll
bnRTdGF0ZSkgeworICAgICAgICBpZiAoc3RhdGUgPT0gY2hhbmdlZENsaWVudFN0YXRlKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGZsYWdzQXJlU2V0KHN0YXRlLT5mbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVG9FeHRlcm5hbERldmljZSkgJiYgZmxhZ3NBcmVT
ZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRlbykpIHsKKyAgICAg
ICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0
KCksICIgcmV0dXJuaW5nIGVhcmx5Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBEbyBub3QgYmVnaW4gcGxheWluZyB0byB0aGUgZGV2aWNlIHVubGVz
cyBwbGF5YmFjayBoYXMganVzdCBzdGFydGVkLgorICAgIGlmICghZmxhZ3NBcmVTZXQobmV3Rmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1ZpZGVvKSB8fCBmbGFnc0FyZVNldChvbGRGbGFn
cywgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW8pKSB7CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInJldHVybmluZyBlYXJseSwgcGxheWJhY2sg
ZGlkbid0IGp1c3Qgc3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAo
YXV0byYgc3RhdGUgOiBtX2NsaWVudFN0YXRlKSB7CisgICAgICAgIGlmIChzdGF0ZSA9PSBjaGFu
Z2VkQ2xpZW50U3RhdGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQUxXQVlTX0xP
R19NRURJQVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCBzdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIpOworICAgICAgICBzdGF0ZS0+Y2xp
ZW50LnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNl
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGNoYW5nZWRDbGllbnRTdGF0ZS5nZXQoKSwgIiBjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHRydWUpIik7CisgICAgY2hhbmdlZENsaWVudFN0YXRlLT5jbGllbnQuc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY2hhbmdlZENsaWVudFN0YXRlLT5jb250ZXh0SWQsIHRy
dWUpOworCisgICAgaWYgKGluZGV4ICYmIG1fY2xpZW50U3RhdGUuc2l6ZSgpID4gMSkKKyAgICAg
ICAgc3RkOjpzd2FwKG1fY2xpZW50U3RhdGUuYXQoaW5kZXgpLCBtX2NsaWVudFN0YXRlLmF0KDAp
KTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRQbGF5YmFja1RhcmdldChS
ZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCit7CisgICAgQUxXQVlTX0xPR19NRURJ
QVNFU1NJT05NQU5BR0VSKF9fZnVuY19fLCAiaGFzIGFjdGl2ZSByb3V0ZSA9ICIsIHRhcmdldC0+
aGFzQWN0aXZlUm91dGUoKSk7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0
KTsKKyAgICBtX3RhcmdldENoYW5nZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2so
VGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGF2
YWlsYWJsZSkKK3sKKyAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18s
IGF2YWlsYWJsZSk7CisgICAgbV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGF2YWls
YWJsZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkKKyAgICAgICAgc3Rh
dGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShzdGF0ZS0+
Y29udGV4dElkLCBhdmFpbGFibGUpOworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKCkKK3sKKyAgICBBTFdBWVNfTE9HX01F
RElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18pOworICAgIG1fcGxheWJhY2tUYXJnZXRQaWNrZXJE
aXNtaXNzZWQgPSB0cnVlOworICAgIHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0Nv
bmZpZ3VyYXRpb25UYXNrKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjb25m
aWd1cmVOZXdDbGllbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0
ZSkgeworICAgICAgICBpZiAoIXN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBzdGF0ZS0+Y29uZmlndXJhdGlvblJlcXVpcmVkID0g
ZmFsc2U7CisgICAgICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAg
ICAgICAgICAgc3RhdGUtPmNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShzdGF0ZS0+Y29udGV4dElkLCB0cnVlKTsKKworICAgICAgICBpZiAobV9wbGF5YmFja1Rh
cmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRDbGllbnRz
KCkKK3sKKyAgICBpZiAobV9jbGllbnRTdGF0ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50VGhhdFJlcXVlc3RlZFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IG5vdEZvdW5k
OworICAgIHNpemVfdCBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IG5vdEZvdW5kOwor
ICAgIGJvb2wgaGF2ZUFjdGl2ZVJvdXRlID0gbV9wbGF5YmFja1RhcmdldCAmJiBtX3BsYXliYWNr
VGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2NsaWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGll
bnRTdGF0ZVtpXTsKKworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sIHN0YXRlLmdldCgpLCAiLCByZXF1ZXN0ZWRQaWNrZXIgPSAiLCBzdGF0ZS0+cmVxdWVz
dGVkUGlja2VyKTsKKworICAgICAgICBpZiAoKG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNr
VGFyZ2V0UGlja2VyRGlzbWlzc2VkKSAmJiBzdGF0ZS0+cmVxdWVzdGVkUGlja2VyKQorICAgICAg
ICAgICAgaW5kZXhPZkNsaWVudFRoYXRSZXF1ZXN0ZWRQaWNrZXIgPSBpOworCisgICAgICAgIGlm
IChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBmbGFnc0FyZVNl
dChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2Up
KQorICAgICAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpOworCisgICAg
ICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RGb3VuZCAmJiBoYXZl
QWN0aXZlUm91dGUgJiYgc3RhdGUtPnByZXZpb3VzbHlSZXF1ZXN0ZWRQaWNrZXIpCisgICAgICAg
ICAgICBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciA9IGk7CisgICAgfQorCisgICAg
aWYgKGluZGV4T2ZDbGllbnRUaGF0UmVxdWVzdGVkUGlja2VyICE9IG5vdEZvdW5kKQorICAgICAg
ICBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9IGluZGV4T2ZDbGllbnRUaGF0UmVxdWVz
dGVkUGlja2VyOworICAgIGlmIChpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCA9PSBub3RG
b3VuZCAmJiBpbmRleE9mTGFzdENsaWVudFRvUmVxdWVzdFBpY2tlciAhPSBub3RGb3VuZCkKKyAg
ICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPSBpbmRleE9mTGFzdENsaWVudFRv
UmVxdWVzdFBpY2tlcjsKKyAgICBpZiAoaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgPT0g
bm90Rm91bmQgJiYgaGF2ZUFjdGl2ZVJvdXRlICYmIGZsYWdzQXJlU2V0KG1fY2xpZW50U3RhdGVb
MF0tPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpFeHRlcm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRl
KSAmJiAhZmxhZ3NBcmVTZXQobV9jbGllbnRTdGF0ZVswXS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ1ZpZGVvKSkKKyAgICAgICAgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQg
PSAwOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NsaWVudFN0YXRlLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGF1dG8mIHN0YXRlID0gbV9jbGllbnRTdGF0ZVtpXTsKKworICAgICAg
ICBpZiAobV9wbGF5YmFja1RhcmdldCkKKyAgICAgICAgICAgIHN0YXRlLT5jbGllbnQuc2V0UGxh
eWJhY2tUYXJnZXQoc3RhdGUtPmNvbnRleHRJZCwgKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigp
KTsKKworICAgICAgICBpZiAoaSAhPSBpbmRleE9mQ2xpZW50V2lsbFBsYXlUb1RhcmdldCB8fCAh
aGF2ZUFjdGl2ZVJvdXRlKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1B
TkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpLCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoZmFsc2UpIik7CisgICAgICAgICAgICBzdGF0ZS0+Y2xpZW50LnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHN0YXRlLT5jb250ZXh0SWQsIGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzdGF0ZS0+cmVxdWVzdGVkUGlja2VyICYmIG1fcGxheWJhY2tUYXJn
ZXRQaWNrZXJEaXNtaXNzZWQpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9O
TUFOQUdFUihfX2Z1bmNfXywgc3RhdGUuZ2V0KCksICIgY2FsbGluZyBwbGF5YmFja1RhcmdldFBp
Y2tlcldhc0Rpc21pc3NlZCIpOworICAgICAgICAgICAgc3RhdGUtPmNsaWVudC5wbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChzdGF0ZS0+Y29udGV4dElkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRlLT5jb25maWd1cmF0aW9uUmVxdWlyZWQgPSBmYWxzZTsKKyAgICAgICAgaWYg
KG1fdGFyZ2V0Q2hhbmdlZCB8fCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkKQorICAg
ICAgICAgICAgc3RhdGUtPnJlcXVlc3RlZFBpY2tlciA9IGZhbHNlOworICAgIH0KKworICAgIGlm
IChoYXZlQWN0aXZlUm91dGUgJiYgaW5kZXhPZkNsaWVudFdpbGxQbGF5VG9UYXJnZXQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgYXV0byYgc3RhdGUgPSBtX2NsaWVudFN0YXRlW2luZGV4T2ZDbGll
bnRXaWxsUGxheVRvVGFyZ2V0XTsKKyAgICAgICAgaWYgKCFmbGFnc0FyZVNldChzdGF0ZS0+Zmxh
Z3MsIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ1RvRXh0ZXJuYWxEZXZpY2UpKSB7CisgICAgICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIGNhbGxpbmcgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSkiKTsKKyAgICAg
ICAgICAgIHN0YXRlLT5jbGllbnQuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc3RhdGUt
PmNvbnRleHRJZCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3RhcmdldENoYW5n
ZWQgPSBmYWxzZTsKKyAgICBjb25maWd1cmVXYXRjaGRvZ1RpbWVyKCk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y29uZmlndXJlUGxheWJhY2tUYXJnZXRNb25pdG9yaW5nKCkK
K3sKKyAgICBib29sIG1vbml0b3JpbmdSZXF1aXJlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQXZh
aWxhYmlsaXR5TGlzdGVuZXIgPSBmYWxzZTsKKyAgICBib29sIGhhdmVDbGllbnRXaXRoTWVkaWEg
PSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9jbGllbnRTdGF0ZSkgeworICAgICAg
ICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgpKTsK
KyAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIE1lZGlhUHJvZHVjZXI6OlJlcXVpcmVzUGxheWJh
Y2tUYXJnZXRNb25pdG9yaW5nKSB7CisgICAgICAgICAgICBtb25pdG9yaW5nUmVxdWlyZWQgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlLT5m
bGFncyAmIE1lZGlhUHJvZHVjZXI6Okhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVu
ZXIpCisgICAgICAgICAgICBoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciA9IHRydWU7CisgICAgICAg
IGlmIChzdGF0ZS0+ZmxhZ3MgJiBNZWRpYVByb2R1Y2VyOjpIYXNBdWRpb09yVmlkZW8pCisgICAg
ICAgICAgICBoYXZlQ2xpZW50V2l0aE1lZGlhID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobW9u
aXRvcmluZ1JlcXVpcmVkIHx8IChoYXNBdmFpbGFiaWxpdHlMaXN0ZW5lciAmJiBoYXZlQ2xpZW50
V2l0aE1lZGlhKSkgeworICAgICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19m
dW5jX18sICJzdGFydGluZyBtb25pdG9yaW5nIik7CisgICAgICAgIHRhcmdldFBpY2tlcigpLnN0
YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIG1vbml0
b3JpbmciKTsKKyAgICAgICAgdGFyZ2V0UGlja2VyKCkuc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2NoZWR1
bGVEZWxheWVkVGFzayhDb25maWd1cmF0aW9uVGFza3MgdGFza3MpCit7CisgICAgbV90YXNrRmxh
Z3MgfD0gdGFza3M7CisgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90KHRhc2tEZWxheUludGVy
dmFsKTsKK30KKwordm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjp0YXNrVGltZXJGaXJlZCgp
Cit7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrKQorICAg
ICAgICBjb25maWd1cmVOZXdDbGllbnRzKCk7CisgICAgaWYgKG1fdGFza0ZsYWdzICYgVGFyZ2V0
Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKQorICAgICAgICBjb25maWd1cmVQbGF5YmFja1Rhcmdl
dENsaWVudHMoKTsKKyAgICBpZiAobV90YXNrRmxhZ3MgJiBUYXJnZXRNb25pdG9yaW5nQ29uZmln
dXJhdGlvblRhc2spCisgICAgICAgIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0TW9uaXRvcmluZygp
OworICAgIGlmIChtX3Rhc2tGbGFncyAmIFdhdGNoZG9nVGltZXJDb25maWd1cmF0aW9uVGFzaykK
KyAgICAgICAgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAgbV90YXNrRmxhZ3MgPSBO
b1Rhc2s7Cit9CisKK3NpemVfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpmaW5kKFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Ns
aWVudFN0YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2NsaWVudFN0YXRlW2ldLT5j
b250ZXh0SWQgPT0gY29udGV4dElkICYmICZtX2NsaWVudFN0YXRlW2ldLT5jbGllbnQgPT0gY2xp
ZW50KQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcmV0dXJuIG5vdEZvdW5k
OworfQorCit2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNvbmZpZ3VyZVdhdGNoZG9nVGlt
ZXIoKQoreworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGltZXJJbnRlcnZhbEFm
dGVyUGF1c2luZyB7IDFfaCB9OworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHdhdGNoZG9nVGlt
ZXJJbnRlcnZhbEFmdGVyUGxheWluZ1RvRW5kIHsgOF9taW4gfTsKKworICAgIGlmICghbV9wbGF5
YmFja1RhcmdldCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkgeworICAg
ICAgICBpZiAobV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIEFMV0FZ
U19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInN0b3BwaW5nIHRpbWVyIik7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0geyB9OworICAgICAgICAgICAg
bV93YXRjaGRvZ1RpbWVyLnN0b3AoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBib29sIHN0b3BUaW1lciA9IGZhbHNlOworICAgIGJvb2wgZGlkUGxheVRvRW5k
ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzdGF0ZSA6IG1fY2xpZW50U3RhdGUpIHsKKworICAg
ICAgICBBTFdBWVNfTE9HX01FRElBU0VTU0lPTk1BTkFHRVIoX19mdW5jX18sIHN0YXRlLmdldCgp
LCAiIHBsYXllZFRvRW5kID0gIiwgc3RhdGUtPnBsYXllZFRvRW5kKTsKKworICAgICAgICBpZiAo
ZmxhZ3NBcmVTZXQoc3RhdGUtPmZsYWdzLCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdUb0V4dGVy
bmFsRGV2aWNlKSAmJiBmbGFnc0FyZVNldChzdGF0ZS0+ZmxhZ3MsIE1lZGlhUHJvZHVjZXI6Oklz
UGxheWluZ1ZpZGVvKSkKKyAgICAgICAgICAgIHN0b3BUaW1lciA9IHRydWU7CisgICAgICAgIGlm
IChzdGF0ZS0+cGxheWVkVG9FbmQpCisgICAgICAgICAgICBkaWRQbGF5VG9FbmQgPSB0cnVlOwor
ICAgICAgICBzdGF0ZS0+cGxheWVkVG9FbmQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3Rv
cFRpbWVyKSB7CisgICAgICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNf
XywgInN0b3BwaW5nIHRpbWVyIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWwg
PSB7IH07CisgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgU2Vjb25kcyBpbnRlcnZhbCA9IGRpZFBsYXlUb0VuZCA/IHdhdGNoZG9nVGltZXJJbnRl
cnZhbEFmdGVyUGxheWluZ1RvRW5kIDogd2F0Y2hkb2dUaW1lckludGVydmFsQWZ0ZXJQYXVzaW5n
OworICAgICAgICBpZiAoaW50ZXJ2YWwgIT0gbV9jdXJyZW50V2F0Y2hkb2dJbnRlcnZhbCB8fCAh
bV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fd2F0Y2hkb2dUaW1l
ci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOworICAgICAgICB9CisgICAgICAgIEFMV0FZU19MT0df
TUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1bmNfXywgInRpbWVyIHNjaGVkdWxlZCBmb3IgIiwgaW50
ZXJ2YWwudmFsdWUoKSwgIiBzZWNvbmRzIik7CisgICAgICAgIG1fY3VycmVudFdhdGNoZG9nSW50
ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKK3sKKyAgICBpZiAoIW1fcGxheWJhY2tUYXJnZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFMV0FZU19MT0dfTUVESUFTRVNTSU9OTUFOQUdFUihfX2Z1
bmNfXyk7CisgICAgdGFyZ2V0UGlja2VyKCkuaW52YWxpZGF0ZVBsYXliYWNrVGFyZ2V0cygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiTWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCIKKyNpbmNs
dWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVk
ZSAiUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2xpZW50U3RhdGU7CitjbGFzcyBJ
bnRSZWN0OworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyOworY2xhc3MgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudDsKKworY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIpOworcHVibGljOgorCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJlZCgpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQo
Ym9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpT
dGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckRpc21pc3NQb3B1cCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllciBhZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVQbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50JiwgUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVB
bGxQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudHMoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQmLCBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBJbnRSZWN0JiwgYm9vbCwgYm9vbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGllbnRTdGF0ZURpZENoYW5nZShXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50
JiwgUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKworICAgIGJvb2wgYWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcigp
OworICAgIHZpcnR1YWwgfldlYk1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKKworICAgIHZpcnR1YWwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgcGxhdGZvcm1QaWNrZXIoKSA9IDA7
CisgICAgc3RhdGljIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIHBsYXRmb3JtTWFuYWdlcigpOwor
Citwcml2YXRlOgorCisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgdGFy
Z2V0UGlja2VyKCk7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2sm
IG1vY2tQaWNrZXIoKTsKKworICAgIC8vIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVu
dAorICAgIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF5YmFja1RhcmdldFBpY2tl
cldhc0Rpc21pc3NlZCgpIG92ZXJyaWRlOworCisgICAgc2l6ZV90IGZpbmQoV2ViTWVkaWFTZXNz
aW9uTWFuYWdlckNsaWVudCosIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIp
OworCisgICAgdm9pZCBjb25maWd1cmVQbGF5YmFja1RhcmdldENsaWVudHMoKTsKKyAgICB2b2lk
IGNvbmZpZ3VyZU5ld0NsaWVudHMoKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVBsYXliYWNrVGFyZ2V0
TW9uaXRvcmluZygpOworICAgIHZvaWQgY29uZmlndXJlV2F0Y2hkb2dUaW1lcigpOworCisgICAg
ZW51bSBDb25maWd1cmF0aW9uVGFza0ZsYWdzIHsKKyAgICAgICAgTm9UYXNrID0gMCwKKyAgICAg
ICAgSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrID0gMSA8PCAwLAorICAgICAgICBUYXJnZXRDbGll
bnRzQ29uZmlndXJhdGlvblRhc2sgPSAxIDw8IDEsCisgICAgICAgIFRhcmdldE1vbml0b3JpbmdD
b25maWd1cmF0aW9uVGFzayA9IDEgPDwgMiwKKyAgICAgICAgV2F0Y2hkb2dUaW1lckNvbmZpZ3Vy
YXRpb25UYXNrID0gMSA8PCAzLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBDb25maWd1
cmF0aW9uVGFza3M7CisgICAgU3RyaW5nIHRvU3RyaW5nKENvbmZpZ3VyYXRpb25UYXNrcyk7CisK
KyAgICB2b2lkIHNjaGVkdWxlRGVsYXllZFRhc2soQ29uZmlndXJhdGlvblRhc2tzKTsKKyAgICB2
b2lkIHRhc2tUaW1lckZpcmVkKCk7CisKKyAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwor
CisgICAgV2ViTWVkaWFTZXNzaW9uTG9nZ2VyJiBsb2dnZXIoKTsKKworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fdGFza1RpbWVyOworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fd2F0Y2hkb2dUaW1lcjsKKworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50U3RhdGU+PiBtX2NsaWVudFN0YXRlOworICAgIFJlZlB0
cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4gbV9waWNrZXJPdmVy
cmlkZTsKKyAgICBDb25maWd1cmF0aW9uVGFza3MgbV90YXNrRmxhZ3MgeyBOb1Rhc2sgfTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFTZXNzaW9uTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBT
ZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CisgICAgYm9vbCBtX2V4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdGFyZ2V0Q2hhbmdlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3BsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc2VkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fbW9ja1BpY2tlckVuYWJsZWQgeyBmYWxzZSB9OworfTsKKworU3Ry
aW5nIG1lZGlhUHJvZHVjZXJTdGF0ZVN0cmluZyhXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YVN0YXRlRmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3M+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBmbGFncykgeyByZXR1cm4gV2ViQ29yZTo6bWVkaWFQcm9kdWNlclN0
YXRlU3RyaW5nKGZsYWdzKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJw
bGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKworI2luY2x1
ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1WaWV3LmgiCisjaW5jbHVkZSAiUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50KCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFBsYXliYWNrVGFyZ2V0Q2xpZW50
Q29udGV4dElkZW50aWZpZXIsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKFBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIsIGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoUGxheWJhY2tUYXJnZXRDbGllbnRD
b250ZXh0SWRlbnRpZmllciwgYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1Rh
cmdldFBpY2tlcldhc0Rpc21pc3NlZChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1WaWV3KiBwbGF0Zm9ybVZpZXcoKSBj
b25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCShyZXZpc2lvbiAyNjc3
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKICNpbmNsdWRlICJBdWRpb1dvcmtsZXROb2RlLmgiCiAKKyNpbmNsdWRlICJBdWRpb0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFt
TWFwLmgiCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaCIKICNpbmNsdWRlICJC
YXNlQXVkaW9Db250ZXh0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQxMDAsMTggKzQxMDAsOCBAQAogCQlDNkYwOTAwQTE0MzI3QjYxMDA2ODU4NDkgLyogTXV0YXRp
b25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzZGMDkwMDExNDMyN0I2MTAwNjg1ODQ5IC8qIE11dGF0aW9uQ2FsbGJhY2suaCAqLzsgfTsK
IAkJQzZGMDkwMEYxNDMyN0I2MTAwNjg1ODQ5IC8qIE11dGF0aW9uT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjA5MDA2MTQzMjdCNjEw
MDY4NTg0OSAvKiBNdXRhdGlvbk9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzZGMDkwMkQxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0
YXRpb25PYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzZGMDkwMjUxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlci5oICov
OyB9OwotCQlDOTAyN0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTAyN0Y0MDFCMUQwQUQy
MDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggKi87IH07Ci0JCUM5MDg0M0QwMUIxOEU0N0QwMEI2
ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDOTA4NDNDRTFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1v
dGVDb250cm9scy5oICovOyB9OwotCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDOTBGNjU1MzFCMjI1Mzk2MDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAgKi87IH07Ci0JCUM5MEY2NTU2MUIyMjUzQkUwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTBG
NjU1NDFCMjI1Mzk2MDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oICovOyB9OwotCQlD
OTM3RkU4RDFCMUY2ODIxMDA4RUNDNUQgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk2OEIyRTYx
QjFFNzJGNzAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaCAqLzsgfTsK
LQkJQzk2RjVFQzUxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDOTZGNUVDMTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJNYWMuaCAqLzsgfTsKLQkJQzk2RjVFQzcxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vz
c2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM5NkY1RUMzMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgKi87IH07Ci0JCUM5NkY1RUM4MUI1ODcyMjYwMDkx
RUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk2RjVFQzQxQjU4NzIyNjAwOTFFQTlE
IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggKi87IH07CiAJCUM5OTA1ODEz
MUUzMkM3NUYwMDczQkREQSAvKiBTdWNjZXNzT3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNjZXNz
T3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
OUQ0NjcwNTFFNjBDNDY1MDA4MTk1RkIgLyogQXV0b3BsYXlFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlENDY3MDQxRTYwQzNFQjAwODE5NUZC
IC8qIEF1dG9wbGF5RXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlDOUQ4NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0
YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5
RDg1MUVFMUIzOURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUM5Rjg3Q0ZFMUIyOEY0
MEUwMDk3OUI4MyAvKiBNZWRpYVNlc3Npb25FdmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5Rjg3Q0ZEMUIyOEU1RjYwMDk3OUI4MyAvKiBNZWRp
YVNlc3Npb25FdmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdEMTBE
OTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4Q0MwMDU1Q0JGQyAvKiBK
U1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyogSlNWYWx1ZUluV3JhcHBl
ZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTdFOUI0NzI0
MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovOyB9OwpAQCAtMTQy
MDIsMjkgKzE0MTkyLDggQEAKIAkJQzZGMDkwMjQxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0YXRp
b25PYnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011
dGF0aW9uT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkYwOTAy
NTE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25PYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNkYwOTE3RTE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5
MDI2QjYzMUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVtb3RlQ29udHJvbHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwMjZCNjQxQjFDRjVBQjAwMUQ5OUE3
IC8qIEpTTWVkaWFSZW1vdGVDb250cm9scy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01lZGlhUmVtb3RlQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzkwMjdGM0UxQjFEMEFCOTAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVk
aWFTZXNzaW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwMjdGM0YxQjFE
MEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDOTAyN0Y0MDFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDOTA4NDNDRDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250
cm9scy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVJlbW90
ZUNvbnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwODQzQ0UxQjE4
RTQ3RDAwQjY4NTY0IC8qIE1lZGlhUmVtb3RlQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFSZW1vdGVDb250cm9scy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDOTBGNjU1MzFCMjI1Mzk2MDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzkwRjY1NTQxQjIyNTM5
NjAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDOTM0NThCQjFCMThENzdFMDA4OEVFMTIgLyogTWVkaWFSZW1vdGVDb250cm9scy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFSZW1vdGVDb250cm9scy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NjhCMkU1MUIxRTcwNDUwMEVGMUY4MSAvKiBIVE1M
TWVkaWFFbGVtZW50K01lZGlhU2Vzc2lvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkhUTUxNZWRpYUVsZW1lbnQrTWVk
aWFTZXNzaW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5NjhCMkU2MUIx
RTcyRjcwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzk2OEIyRTcxQjFFNzc4MTAwRUYxRjgxIC8qIEhUTUxNZWRpYUVsZW1lbnRN
ZWRpYVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUM5NkY1RUMxMUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDOTZGNUVDMjFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzk2RjVFQzMxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvblByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzk2RjVFQzQxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vz
c2lvbkludGVycnVwdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM5OTA1ODEyMUUzMkI3MzQwMDczQkREQSAvKiBTdWNjZXNzT3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3VjY2Vzc09yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM5RDQ2NzA0MUU2MEMz
RUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9wbGF5RXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlEODUxRUUxQjM5REM3ODAwODUw
NjJFIC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUM5REFEQkM5MUIxRDNCMjUwMDFGMTdEOCAvKiBKU01lZGlhU2Vzc2lvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU2Vzc2lvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5REFEQkNBMUIxRDNCMjUwMDFGMTdEOCAvKiBKU01l
ZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhU2Vz
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUY4N0NGRDFCMjhFNUY2MDA5
NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9u
RXZlbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMDkxRDg2MjNDRjkwNzgw
MEFENDM0NiAvKiBTdHlsZUltYWdlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlSW1h
Z2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4OTIzQ0Y5MDg4
MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUltYWdlU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTYzNURDMjA3MkU3NjkwMEU3RDJD
RSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWZlcnJlclBvbGljeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
Njc0MCwzMCArMTY3MDksNiBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwog
CQl9OwotCQkwNzA5RDc4QjFBRTU1NTJFMDA0RTQyRjggLyogbWVkaWFzZXNzaW9uICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDOTY4QjJFNTFCMUU3MDQ1
MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudCtNZWRpYVNlc3Npb24uaWRsICovLAotCQkJCUM5
NjhCMkU3MUIxRTc3ODEwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTZXNzaW9uLmNw
cCAqLywKLQkJCQlDOTY4QjJFNjFCMUU3MkY3MDBFRjFGODEgLyogSFRNTE1lZGlhRWxlbWVudE1l
ZGlhU2Vzc2lvbi5oICovLAotCQkJCUM5MDg0M0NEMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJl
bW90ZUNvbnRyb2xzLmNwcCAqLywKLQkJCQlDOTA4NDNDRTFCMThFNDdEMDBCNjg1NjQgLyogTWVk
aWFSZW1vdGVDb250cm9scy5oICovLAotCQkJCUM5MzQ1OEJCMUIxOEQ3N0UwMDg4RUUxMiAvKiBN
ZWRpYVJlbW90ZUNvbnRyb2xzLmlkbCAqLywKLQkJCQlDOTAyN0YzRjFCMUQwQUQyMDBCRkJGRUYg
LyogTWVkaWFTZXNzaW9uLmNwcCAqLywKLQkJCQlDOTAyN0Y0MDFCMUQwQUQyMDBCRkJGRUYgLyog
TWVkaWFTZXNzaW9uLmggKi8sCi0JCQkJQzkwMjdGM0UxQjFEMEFCOTAwQkZCRkVGIC8qIE1lZGlh
U2Vzc2lvbi5pZGwgKi8sCi0JCQkJQzlGODdDRkQxQjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vz
c2lvbkV2ZW50cy5oICovLAotCQkJCUM5MEY2NTUzMUIyMjUzOTYwMDIxNjNBMSAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcCAqLywKLQkJCQlDOTBGNjU1NDFCMjI1Mzk2MDAyMTYzQTEgLyogTWVk
aWFTZXNzaW9uTWFuYWdlci5oICovLAotCQkJCUM5RDg1MUVFMUIzOURDNzgwMDg1MDYyRSAvKiBN
ZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAotCQkJCTQ0NkRDNjQ2MjRBMjlEOUIwMDYxRjM5MCAv
KiBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmggKi8sCi0JCQkJMDcwOUQ3
OEMxQUU1NTU1NDAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLAotCQkJ
CTA3MDlENzhEMUFFNTU1NTQwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8s
Ci0JCQkJMDcwOUQ3OTQxQUU1NUEyOTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJD
bGllbnQuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gbWVkaWFzZXNzaW9uOwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJMDcyMjFCNDYxN0NFQzMyNzAwODQ4RTUxIC8qIG1lZGlh
c3RyZWFtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIz
MzI5LDcgKzIzMjc0LDYgQEAKIAkJCQlDREJEM0QyNzFGRTg1QzkyMDAxMkM1NDUgLyogbWVkaWFj
YXBhYmlsaXRpZXMgKi8sCiAJCQkJQ0Q5QTM3RjUxN0M3RDkzNjAwQzVGQTdBIC8qIG1lZGlhY29u
dHJvbHMgKi8sCiAJCQkJNEQzQjAwQTAyMTVENUMwRjAwNzZCOTgzIC8qIG1lZGlhcmVjb3JkZXIg
Ki8sCi0JCQkJMDcwOUQ3OEIxQUU1NTUyRTAwNEU0MkY4IC8qIG1lZGlhc2Vzc2lvbiAqLywKIAkJ
CQlCMUE5NDJERDE1QjVDRTIyMDBENTI1RDEgLyogbWVkaWFzb3VyY2UgKi8sCiAJCQkJMDcyMjFC
NDYxN0NFQzMyNzAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICovLAogCQkJCTcxRDZBQTM5MURBNEVB
RjcwMEIyMzk2OSAvKiBtb2Rlcm4tbWVkaWEtY29udHJvbHMgKi8sCkBAIC0yNDQxNiwxMCArMjQz
NjAsNiBAQAogCQkJCTJEOUJGNzExMURCRkQ5MTQwMDdBN0Q5OSAvKiBKU01lZGlhRW5jcnlwdGVk
RXZlbnQuaCAqLywKIAkJCQlFNDQ2MTQxMDBDRDY4MjY5MDBGQURBNzUgLyogSlNNZWRpYUVycm9y
LmNwcCAqLywKIAkJCQlFNDQ2MTQxMTBDRDY4MjY5MDBGQURBNzUgLyogSlNNZWRpYUVycm9yLmgg
Ki8sCi0JCQkJQzkwMjZCNjMxQjFDRjVBQjAwMUQ5OUE3IC8qIEpTTWVkaWFSZW1vdGVDb250cm9s
cy5jcHAgKi8sCi0JCQkJQzkwMjZCNjQxQjFDRjVBQjAwMUQ5OUE3IC8qIEpTTWVkaWFSZW1vdGVD
b250cm9scy5oICovLAotCQkJCUM5REFEQkM5MUIxRDNCMjUwMDFGMTdEOCAvKiBKU01lZGlhU2Vz
c2lvbi5jcHAgKi8sCi0JCQkJQzlEQURCQ0ExQjFEM0IyNTAwMUYxN0Q4IC8qIEpTTWVkaWFTZXNz
aW9uLmggKi8sCiAJCQkJN0U0NkY2RjgxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudElu
ZGV4VWludC5jcHAgKi8sCiAJCQkJN0U0NkY2RjkxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxl
bWVudEluZGV4VWludC5oICovLAogCQkJCTkwMDE3ODdFMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwICovLApAQCAtMjY5NDcsNyArMjY4ODcsNiBAQAogCQkJ
CTY1ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBtYWMgKi8sCiAJCQkJOUFDNkYwMjAyMTE0OEYx
RTAwQ0JEQTA2IC8qIG1lZGlhY2FwYWJpbGl0aWVzICovLAogCQkJCTREM0I1MDEyMjE3RTU4QTMw
MDY2NURCMSAvKiBtZWRpYXJlY29yZGVyICovLAotCQkJCUM5NkY1RUJGMUI1ODcyMjYwMDkxRUE5
RCAvKiBtZWRpYXNlc3Npb24gKi8sCiAJCQkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1l
ZGlhc3RyZWFtICovLAogCQkJCTU5Qzc3RjEwMTA1NDU5MUMwMDUwNjEwNCAvKiBtb2NrICovLAog
CQkJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovLApAQCAtMjcyNTAsMjUg
KzI3MTg5LDYgQEAKIAkJCXBhdGggPSBXSExTTDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07Ci0JCUM5NkY1RUJGMUI1ODcyMjYwMDkxRUE5RCAvKiBtZWRpYXNlc3Npb24gKi8gPSB7
Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUM5NkY1RUMwMUI1ODcy
MjYwMDkxRUE5RCAvKiBtYWMgKi8sCi0JCQkJQzk2RjVFQzMxQjU4NzIyNjAwOTFFQTlEIC8qIE1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcCAqLywKLQkJCQlDOTZGNUVDNDFCNTg3
MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCAqLywKLQkJ
CSk7Ci0JCQlwYXRoID0gbWVkaWFzZXNzaW9uOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKLQkJQzk2RjVFQzAxQjU4NzIyNjAwOTFFQTlEIC8qIG1hYyAqLyA9IHsKLQkJCWlzYSA9
IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzk2RjVFQzExQjU4NzIyNjAwOTFFQTlE
IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmggKi8sCi0JCQkJQzk2RjVF
QzIxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFj
Lm1tICovLAotCQkJKTsKLQkJCXBhdGggPSBtYWM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwogCQlDRDBEQkIzRTE0MjI3NEU2MDAyODAyNjMgLyogYXVkaW8gKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjc2NDksOSArMjc1NjksMTMgQEAK
IAkJQ0UyNjE2OUQxODdFNjU1NDAwNzk1NUYzIC8qIGFpcnBsYXkgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ0NkRDNjQ2MjRBMjlEOUIwMDYxRjM5MCAv
KiBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmggKi8sCiAJCQkJQTVERUJE
OUYxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQuY3BwICovLAogCQkJCUE1REVCREEwMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggKi8sCiAJCQkJQTVERUJEQTExNkZCOTA4NzAwODM2
RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsICovLAorCQkJ
CTA3MDlENzhDMUFFNTU1NTQwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAq
LywKKwkJCQkwNzA5RDc4RDFBRTU1NTU0MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ci5oICovLAorCQkJCTA3MDlENzk0MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGFpcnBsYXk7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMzE2NTQsNyArMzE1NzgsNiBAQAogCQkJCUE4RUE3Q0FCMEEx
OTJCOUMwMEE4RUY1RiAvKiBIVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0NDYxM0E1MENENjMzMTAwMEZBREE3NSAvKiBIVE1MTWVkaWFFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDUyMDlFNjFCMEJEOUUxMDA3NzE4NEUgLyogSFRNTE1lZGlhRWxlbWVudEVu
dW1zLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTM3RkU4RDFCMUY2ODIxMDA4RUNDNUQgLyogSFRN
TE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRUEy
MkZDRDdDNjAwMTIwNEVDIC8qIEhUTUxNZWRpYUVsZW1lbnRSZW1vdGVQbGF5YmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThFQTc5RjQwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxNZW51RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkYzMUUwNzUxRkEzQjYyQjAwRTA1OUJBIC8qIEhUTUxN
ZW51SXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzMwMDAsMjMgKzMyOTIzLDE2IEBA
CiAJCQkJNDE0QjdGQUQyNEQ4MUNDMTAwMzNENDQyIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEQ3M0Y5NEUyMThDNEE4NzAwM0EzRUQ2IC8qIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNzZF
ODk2MjNDMzUzN0IwMDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUM5MDg0M0QwMUIxOEU0N0QwMEI2ODU2NCAvKiBNZWRpYVJlbW90ZUNvbnRyb2xz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDhBQ0E4RjFEMjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFS
ZW1vdGVTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3
NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFCRjlEQjND
MUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUIx
MjREOEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RCRUFFQUQxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTdEMjc1RTFFQUM1Nzk4MDBCRjAxRTcgLyog
TWVkaWFTZWxlY3Rpb25PcHRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUM5MDI3RjQyMUIxRDBB
RDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUM5Rjg3Q0ZF
MUIyOEY0MEUwMDk3OUI4MyAvKiBNZWRpYVNlc3Npb25FdmVudHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQTk1OTNGMjQxMkJBRTAwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxNDQ2MEEyMjQxMjk5NDUwMDgxNEJFNyAvKiBNZWRpYVNlc3Np
b25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlDOTZGNUVDODFCNTg3MjI2MDA5MUVB
OUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzkwRjY1NTYxQjIyNTNCRTAwMjE2M0Ex
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxN0Y3QUVGMjEz
OUJGNkYwMEZCQTdFQyAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9T
LmggaW4gSGVhZGVycyAqLywKLQkJCQlDOUQ4NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFT
ZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVGMTdBOUQwMUIwMDI3
NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2NDFFQjMxODE4RjVF
RDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RD
OEI1QTcxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzUyNDIsOCArMzUxNTgsNiBAQAogCQkJCTFCMTI0RDhGMUQzODBCQjYw
MEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREJF
QUVBQzE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQzk2RjVFQzcxQjU4NzIyNjAwOTFFQTlE
IC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUM5MEY2NTU1MUIyMjUzQjEwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QTYxODA0NzRGNzAwMTZF
Njg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0
MTMzQ0I4QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAy
Njc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTgsMTAgKzI5OCw2IEBACiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCi0j
ZW5kaWYKLQogI2lmIFVTRShRVUlDS19MT09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgogI2Vu
ZGlmCkBAIC00MTg1LDIyICs0MTgxLDYgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5n
TWVkaWEodWludAogICAgIHN0YXRlIHw9IE1lZGlhU3RyZWFtVHJhY2s6OmNhcHR1cmVTdGF0ZSgq
dGhpcyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGlmIChIVE1M
TWVkaWFFbGVtZW50KiBzb3VyY2VFbGVtZW50ID0gSFRNTE1lZGlhRWxlbWVudDo6ZWxlbWVudFdp
dGhJRChzb3VyY2VFbGVtZW50SUQpKSB7Ci0gICAgICAgIGlmIChzb3VyY2VFbGVtZW50LT5pc1Bs
YXlpbmcoKSkKLSAgICAgICAgICAgIHN0YXRlIHw9IE1lZGlhUHJvZHVjZXI6OklzU291cmNlRWxl
bWVudFBsYXlpbmc7Ci0KLSAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzb3VyY2VFbGVtZW50
LT5zZXNzaW9uKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBjb250cm9scyA9IHNlc3Npb24t
PmNvbnRyb2xzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udHJvbHMtPnByZXZpb3VzVHJh
Y2tFbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlIHw9IE1lZGlhUHJvZHVjZXI6
OklzUHJldmlvdXNUcmFja0NvbnRyb2xFbmFibGVkOwotICAgICAgICAgICAgICAgIGlmIChjb250
cm9scy0+bmV4dFRyYWNrRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBN
ZWRpYVByb2R1Y2VyOjpJc05leHRUcmFja0NvbnRyb2xFbmFibGVkOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICBpZiAobV91c2VySGFzSW50ZXJhY3RlZFdp
dGhNZWRpYUVsZW1lbnQpCiAgICAgICAgIHN0YXRlIHw9IE1lZGlhUHJvZHVjZXI6Okhhc1VzZXJJ
bnRlcmFjdGVkV2l0aE1lZGlhRWxlbWVudDsKIApAQCAtNzQ2OSwxNyArNzQ0OSw2IEBAIHZvaWQg
RG9jdW1lbnQ6OnBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGkKIAogI2VuZGlmIC8vIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQot
TWVkaWFTZXNzaW9uJiBEb2N1bWVudDo6ZGVmYXVsdE1lZGlhU2Vzc2lvbigpCi17Ci0gICAgaWYg
KCFtX2RlZmF1bHRNZWRpYVNlc3Npb24pCi0gICAgICAgIG1fZGVmYXVsdE1lZGlhU2Vzc2lvbiA9
IE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJl
dHVybiAqbV9kZWZhdWx0TWVkaWFTZXNzaW9uOwotfQotCi0jZW5kaWYKLQogU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBEb2N1bWVudDo6c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
UHJvcGFnYXRlKCkgY29uc3QKIHsKICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyID0gbG9hZGVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjY3Nzkw
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
Nyw3ICsxNzcsNiBAQCBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQbGF5
YmFja1RhcmdldENsaWVudDsKIGNsYXNzIE1lZGlhUXVlcnlMaXN0OwogY2xhc3MgTWVkaWFRdWVy
eU1hdGNoZXI7Ci1jbGFzcyBNZWRpYVNlc3Npb247CiBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFzcyBOb2Rl
RmlsdGVyOwpAQCAtMTA5NywxMCArMTA5Niw2IEBAIHB1YmxpYzoKICAgICBib29sIHZpZGVvUGxh
eWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkgY29uc3Q7CiAgICAgYm9vbCBtZWRpYURhdGFMb2Fk
c0F1dG9tYXRpY2FsbHkoKSBjb25zdDsKIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAg
IE1lZGlhU2Vzc2lvbiYgZGVmYXVsdE1lZGlhU2Vzc2lvbigpOwotI2VuZGlmCi0KICAgICB2b2lk
IHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZv
aWQgc3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKQEAgLTE5NTIsMTAgKzE5NDcsNiBA
QCBwcml2YXRlOgogICAgIFRhcmdldENsaWVudFRvSWRNYXAgbV9jbGllbnRUb0lETWFwOwogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBSZWZQdHI8TWVkaWFTZXNzaW9u
PiBtX2RlZmF1bHRNZWRpYVNlc3Npb247Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogICAgIFJlZlB0cjxJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eT4gbV9pZGJD
b25uZWN0aW9uUHJveHk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQCBNZWRp
YUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlhRGV2aWNlcyBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KIE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEK
IE1lZGlhUXVlcnlMaXN0Ci1NZWRpYVJlbW90ZUNvbnRyb2xzIGNvbmRpdGlvbmFsPU1FRElBX1NF
U1NJT04KIE1lZGlhUmVjb3JkZXIgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRpYVNvdXJj
ZSBjb25kaXRpb25hbD1NRURJQV9TT1VSQ0UKIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMTAgKzEzNyw2IEBACiAjaW5jbHVkZSAiV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
TUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKLSNlbmRpZgotCiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJN
ZWRpYVNvdXJjZS5oIgpAQCAtMzE4LDMwICszMTQsNiBAQCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1l
bnQqPiYgSFRNTE1lZGlhRWxlCiAgICAgcmV0dXJuIGVsZW1lbnRzOwogfQogCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi10eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEhUTUxNZWRpYUVsZW1l
bnQqPiBJRFRvRWxlbWVudE1hcDsKLQotc3RhdGljIElEVG9FbGVtZW50TWFwJiBlbGVtZW50SURz
VG9FbGVtZW50cygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElEVG9FbGVtZW50TWFw
PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotSFRNTE1lZGlhRWxlbWVudCogSFRNTE1lZGlh
RWxlbWVudDo6ZWxlbWVudFdpdGhJRCh1aW50NjRfdCBpZCkKLXsKLSAgICBpZiAoaWQgPT0gSFRN
TE1lZGlhRWxlbWVudEludmFsaWRJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBy
ZXR1cm4gZWxlbWVudElEc1RvRWxlbWVudHMoKS5nZXQoaWQpOwotfQotCi1zdGF0aWMgdWludDY0
X3QgbmV4dEVsZW1lbnRJRCgpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IGVsZW1lbnRJRCA9IDA7
Ci0gICAgcmV0dXJuICsrZWxlbWVudElEOwotfQotI2VuZGlmCi0KIHN0cnVjdCBNZWRpYUVsZW1l
bnRTZXNzaW9uSW5mbyB7CiAgICAgY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbiogc2Vzc2lvbjsK
ICAgICBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3Nl
OwpAQCAtNTE3LDEzICs0ODksNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRp
YWxpemF0CiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBt
X2VsZW1lbnRJRCA9IG5leHRFbGVtZW50SUQoKTsKLSAgICBlbGVtZW50SURzVG9FbGVtZW50cygp
LmFkZChtX2VsZW1lbnRJRCwgdGhpcyk7Ci0KLSAgICBzZXRTZXNzaW9uSW50ZXJuYWwoZG9jdW1l
bnQuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKTsKLSNlbmRpZgotCiAgICAgcmVnaXN0ZXJXaXRoRG9j
dW1lbnQoZG9jdW1lbnQpOwogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1B
QykKQEAgLTU4OCwxNSArNTUzLDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1l
bnQoKQogICAgIGlmIChtX2lzb2xhdGVkV29ybGQpCiAgICAgICAgIG1faXNvbGF0ZWRXb3JsZC0+
Y2xlYXJXcmFwcGVycygpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgaWYgKG1f
c2Vzc2lvbikgewotICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZU1lZGlhRWxlbWVudCgqdGhpcyk7
Ci0gICAgICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgZWxlbWVudElEc1Rv
RWxlbWVudHMoKS5yZW1vdmUobV9lbGVtZW50SUQpOwotI2VuZGlmCi0KICAgICBtX3NlZWtUYXNr
UXVldWUuY2xvc2UoKTsKICAgICBtX3Jlc3VtZVRhc2tRdWV1ZS5jbG9zZSgpOwogICAgIG1fcHJv
bWlzZVRhc2tRdWV1ZS5jbG9zZSgpOwpAQCAtMzQ5NSwzMSArMzQ1MSw2IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKIAogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS5wbGF5RXZlbnQpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAg
IC8vIDYuMyBBY3RpdmF0aW5nIGEgbWVkaWEgc2Vzc2lvbiBmcm9tIGEgbWVkaWEgZWxlbWVudAot
ICAgICAgICAvLyBXaGVuIHRoZSBwbGF5KCkgbWV0aG9kIGlzIGludm9rZWQsIHRoZSBwYXVzZWQg
YXR0cmlidXRlIGlzIHRydWUsIGFuZCB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaGFzIHRoZSB2
YWx1ZQotICAgICAgICAvLyBIQVZFX0ZVVFVSRV9EQVRBIG9yIEhBVkVfRU5PVUdIX0RBVEEsIHRo
ZW4KLSAgICAgICAgLy8gMS4gTGV0IG1lZGlhIHNlc3Npb24gYmUgdGhlIHZhbHVlIG9mIHRoZSBj
dXJyZW50IG1lZGlhIHNlc3Npb24uCi0gICAgICAgIC8vIDIuIElmIHdlIGFyZSBub3QgY3VycmVu
dGx5IGluIG1lZGlhIHNlc3Npb24ncyBsaXN0IG9mIGFjdGl2ZSBwYXJ0aWNpcGF0aW5nIG1lZGlh
IGVsZW1lbnRzIHRoZW4gYXBwZW5kCi0gICAgICAgIC8vICAgIG91cnNlbHZlcyB0byB0aGlzIGxp
c3QuCi0gICAgICAgIC8vIDMuIExldCBhY3RpdmF0ZWQgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5n
IHRoZSBtZWRpYSBzZXNzaW9uIGludm9jYXRpb24gYWxnb3JpdGhtIGZvciBtZWRpYSBzZXNzaW9u
LgotICAgICAgICAvLyA0LiBJZiBhY3RpdmF0ZWQgaXMgZmFpbHVyZSwgcGF1c2Ugb3Vyc2VsdmVz
LgotICAgICAgICBpZiAobV9yZWFkeVN0YXRlID09IEhBVkVfRU5PVUdIX0RBVEEgfHwgbV9yZWFk
eVN0YXRlID09IEhBVkVfRlVUVVJFX0RBVEEpIHsKLSAgICAgICAgICAgIGlmIChtX3Nlc3Npb24p
IHsKLSAgICAgICAgICAgICAgICBtX3Nlc3Npb24tPmFkZEFjdGl2ZU1lZGlhRWxlbWVudCgqdGhp
cyk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobV9zZXNzaW9uLT5raW5kKCkgPT0gTWVkaWFTZXNz
aW9uS2luZDo6Q29udGVudCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkuZm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UobV9lbGVtZW50
SUQpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghbV9zZXNzaW9u
LT5pbnZva2UoKSkgewotICAgICAgICAgICAgICAgICAgICBwYXVzZSgpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0jZW5kaWYKICAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFU
QSkKICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndhaXRpbmdFdmVudCk7
CiAgICAgfSBlbHNlIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkKQEAgLTM3
MjIsMTEgKzM2NTMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE11dGVkKGJvb2wgbXV0
CiAKICAgICAgICAgdXBkYXRlU2hvdWxkUGxheSgpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0gICAgICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9lbGVtZW50SUQp
OwotI2Vsc2UKICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgICAgICBzY2hl
ZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKTsKQEAgLTUxMTUsMTEgKzUwNDIsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2hhcmFjCiAgICAgICAgIHNldEF1dG9wbGF5RXZlbnRQ
bGF5YmFja1N0YXRlKEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRlOjpQcmV2ZW50ZWRBdXRvcGxh
eSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgZG9jdW1lbnQoKS51
cGRhdGVJc1BsYXlpbmdNZWRpYShtX2VsZW1lbnRJRCk7Ci0jZWxzZQogICAgIGRvY3VtZW50KCku
dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKLSNlbmRpZgogCiAgICAgY2hlY2tGb3JBdWRpb0FuZFZp
ZGVvKCk7CiAgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKQEAgLTUyOTIsMTIgKzUyMTUsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAgICAgICAgIG1fcGxheWVy
LT5zZXRWb2x1bWUoZWZmZWN0aXZlVm9sdW1lKCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVkaWEobV9lbGVtZW50
SUQpOwotI2Vsc2UKICAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7Ci0jZW5k
aWYKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKQEAgLTU0MTQsMTEgKzUz
MzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXlpbmcoYm9vbCBwCiAgICAgaWYg
KG1fcGxheWluZykKICAgICAgICAgc2NoZWR1bGVOb3RpZnlBYm91dFBsYXlpbmcoKTsKIAotI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIGRvY3VtZW50KCkudXBkYXRlSXNQbGF5aW5nTWVk
aWEobV9lbGVtZW50SUQpOwotI2Vsc2UKICAgICBkb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01l
ZGlhKCk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAg
ICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CkBAIC03NjQwLDExICs3NTU0LDggQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVNZWRpYVN0YXRlKAogCiAgICAgbV9tZWRpYVN0YXRl
ID0gc3RhdGU7CiAgICAgbV9tZWRpYVNlc3Npb24tPm1lZGlhU3RhdGVEaWRDaGFuZ2UobV9tZWRp
YVN0YXRlKTsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBkb2N1bWVudCgpLnVwZGF0
ZUlzUGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsKLSNlbHNlCisKICAgICBkb2N1bWVudCgpLnVw
ZGF0ZUlzUGxheWluZ01lZGlhKCk7Ci0jZW5kaWYKIH0KICNlbmRpZgogCkBAIC03NzQ5LDExICs3
NjYwLDYgQEAgZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmVmZmVjdGl2ZVZvbHVtZQogICAgIGRv
dWJsZSB2b2x1bWVNdWx0aXBsaWVyID0gcGFnZSA/IHBhZ2UtPm1lZGlhVm9sdW1lKCkgOiAxOwog
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKICAgICAgICAgdm9sdW1lTXVsdGlwbGllciAqPSBt
X21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCk7Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0g
ICAgaWYgKG1fc2hvdWxkRHVjaykKLSAgICAgICAgdm9sdW1lTXVsdGlwbGllciAqPSAwLjI1Owot
I2VuZGlmCi0KICAgICByZXR1cm4gbV92b2x1bWUgKiB2b2x1bWVNdWx0aXBsaWVyOwogfQogCkBA
IC03ODE0LDcwICs3NzIwLDYgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjYW5TYXZlTWVkaWFE
YXRhKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
Ci1kb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6cGxheWVyVm9sdW1lKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+dm9sdW1lKCkgOiAwOwotfQotCi1NZWRpYVNlc3Np
b24qIEhUTUxNZWRpYUVsZW1lbnQ6OnNlc3Npb24oKSBjb25zdAotewotICAgIFJlZlB0cjxNZWRp
YVNlc3Npb24+IHNlc3Npb24gPSBtX3Nlc3Npb24uZ2V0KCk7Ci0gICAgaWYgKHNlc3Npb24gJiYg
c2Vzc2lvbiA9PSAmZG9jdW1lbnQoKS5kZWZhdWx0TWVkaWFTZXNzaW9uKCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHNlc3Npb24uZ2V0KCk7Ci19Ci0KLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0U2Vzc2lvbihNZWRpYVNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAg
Ly8gNi4xLiBFeHRlbnNpb25zIHRvIHRoZSBIVE1MTWVkaWFFbGVtZW50IGludGVyZmFjZQotICAg
IC8vIDEuIExldCBtIGJlIHRoZSBtZWRpYSBlbGVtZW50IGluIHF1ZXN0aW9uLgotICAgIC8vIDIu
IExldCBvbGQgbWVkaWEgc2Vzc2lvbiBiZSBt4oCZcyBjdXJyZW50IG1lZGlhIHNlc3Npb24sIGlm
IGl0IGhhcyBvbmUsIGFuZCBudWxsIG90aGVyd2lzZS4KLSAgICAvLyAzLiBMZXQgbeKAmXMgY3Vy
cmVudCBtZWRpYSBzZXNzaW9uIGJlIHRoZSBuZXcgdmFsdWUgb3IgdGhlIHRvcC1sZXZlbCBicm93
c2luZyBjb250ZXh04oCZcyBtZWRpYSBzZXNzaW9uIGlmIHRoZSBuZXcgdmFsdWUgaXMgbnVsbC4K
LSAgICAvLyA0LiBMZXQgbmV3IG1lZGlhIHNlc3Npb24gYmUgbeKAmXMgY3VycmVudCBtZWRpYSBz
ZXNzaW9uLgotCi0gICAgLy8gNS4gVXBkYXRlIG1lZGlhIHNlc3Npb25zOiBJZiBvbGQgbWVkaWEg
c2Vzc2lvbiBhbmQgbmV3IG1lZGlhIHNlc3Npb24gYXJlIHRoZSBzYW1lICh3aGV0aGVyIGJvdGgg
bnVsbCBvciBib3RoIHRoZSBzYW1lIG1lZGlhIHNlc3Npb24pLCB0aGVuIHRlcm1pbmF0ZSB0aGVz
ZSBzdGVwcy4KLSAgICBpZiAobV9zZXNzaW9uLmdldCgpID09IHNlc3Npb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChtX3Nlc3Npb24pIHsKLSAgICAgICAgLy8gNi4gSWYgbSBpcyBhbiBh
dWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnQgb2Ygb2xkIG1lZGlhIHNlc3Npb24sIHRoZW4gcGF1
c2UgbSBhbmQgcmVtb3ZlIG0gZnJvbSBvbGQgbWVkaWEgc2Vzc2lvbuKAmXMgbGlzdCBvZiBhdWRp
by1wcm9kdWNpbmcgcGFydGljaXBhbnRzLgotICAgICAgICBpZiAobV9zZXNzaW9uLT5pc01lZGlh
RWxlbWVudEFjdGl2ZSgqdGhpcykpCi0gICAgICAgICAgICBwYXVzZSgpOwotCi0gICAgICAgIG1f
c2Vzc2lvbi0+cmVtb3ZlTWVkaWFFbGVtZW50KCp0aGlzKTsKLQotICAgICAgICAvLyA3LiBJZiBv
bGQgbWVkaWEgc2Vzc2lvbiBpcyBub3QgbnVsbCBhbmQgbm8gbG9uZ2VyIGhhcyBvbmUgb3IgbW9y
ZSBhdWRpby1wcm9kdWNpbmcgcGFydGljaXBhbnRzLCB0aGVuIHJ1biB0aGUgbWVkaWEgc2Vzc2lv
biBkZWFjdGl2YXRpb24gYWxnb3JpdGhtIGZvciBvbGQgbWVkaWEgc2Vzc2lvbi4KLSAgICAgICAg
aWYgKCFtX3Nlc3Npb24tPmhhc0FjdGl2ZU1lZGlhRWxlbWVudHMoKSkKLSAgICAgICAgICAgIG1f
c2Vzc2lvbi0+ZGVhY3RpdmF0ZSgpOwotICAgIH0KLQotICAgIGlmIChzZXNzaW9uKQotICAgICAg
ICBzZXRTZXNzaW9uSW50ZXJuYWwoKnNlc3Npb24pOwotICAgIGVsc2UKLSAgICAgICAgc2V0U2Vz
c2lvbkludGVybmFsKGRvY3VtZW50KCkuZGVmYXVsdE1lZGlhU2Vzc2lvbigpKTsKLX0KLQotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTZXNzaW9uSW50ZXJuYWwoTWVkaWFTZXNzaW9uJiBzZXNz
aW9uKQotewotICAgIG1fc2Vzc2lvbiA9ICZzZXNzaW9uOwotICAgIHNlc3Npb24uYWRkTWVkaWFF
bGVtZW50KCp0aGlzKTsKLSAgICBtX2tpbmQgPSBzZXNzaW9uLmtpbmQoKTsKLX0KLQotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREdWNrKGJvb2wgZHVjaykKLXsKLSAgICBpZiAobV9z
aG91bGREdWNrID09IGR1Y2spCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2hvdWxkRHVjayA9
IGR1Y2s7Ci0gICAgdXBkYXRlVm9sdW1lKCk7Ci19Ci0KLSNlbmRpZgotCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFja0NoYW5nZWQoKQogewog
ICAgIGlmIChwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNG
dWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpICYmICFpc0Z1bGxzY3JlZW4oKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDg1LDIxICs0ODUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAgICAgdm9pZCBtZWRpYUxvYWRpbmdGYWlsZWRGYXRh
bGx5KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCi0gICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIHBsYXllclZvbHVtZSgpIGNvbnN0OwotCi0g
ICAgY29uc3QgU3RyaW5nJiBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgdm9p
ZCBzZXRLaW5kKGNvbnN0IFN0cmluZyYga2luZCkgeyBtX2tpbmQgPSBraW5kOyB9Ci0KLSAgICBN
ZWRpYVNlc3Npb24qIHNlc3Npb24oKSBjb25zdDsKLSAgICB2b2lkIHNldFNlc3Npb24oTWVkaWFT
ZXNzaW9uKik7Ci0KLSAgICB2b2lkIHNldFNob3VsZER1Y2soYm9vbCk7Ci0KLSAgICBzdGF0aWMg
SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudFdpdGhJRCh1aW50NjRfdCk7Ci0gICAgdWludDY0X3Qg
ZWxlbWVudElEKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50SUQ7IH0KLSNlbmRpZgotCiAgICAg
UmVmUHRyPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBnZXRWaWRlb1BsYXliYWNrUXVhbGl0eSgpOwog
CiAgICAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9wcmVsb2FkOyB9CkBAIC03MTAsMTAgKzY5NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNw
YXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQotICAgIHZvaWQgc2V0U2Vzc2lvbkludGVybmFsKE1lZGlhU2Vzc2lvbiYpOwotI2Vu
ZGlmCi0KICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0x
MDQ1LDEzICsxMDI2LDYgQEAgcHJpdmF0ZToKICAgICAvLyBjYWxsaW5nIHRoZSBtZWRpYSBlbmdp
bmUgcmVjdXJzaXZlbHkuCiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2sg
eyAwIH07CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBTdHJpbmcgbV9raW5kOwot
ICAgIFJlZlB0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBib29sIG1fc2hvdWxkRHVj
ayB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9lbGVtZW50SUQ7Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiAgICAgUmVmUHRyPE1lZGlhU291cmNlPiBtX21lZGlhU291cmNl
OwogICAgIHVuc2lnbmVkIG1fZHJvcHBlZFZpZGVvRnJhbWVzIHsgMCB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsMTIgKzQ2NCw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoTWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzLCB1aW50NjRfdCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZUF1dG9wbGF5RXZlbnQoQXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PEF1dG9wbGF5RXZl
bnRGbGFncz4pIHsgfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdmlydHVhbCB2
b2lkIGhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShjb25z
dCBNZWRpYVNlc3Npb25NZXRhZGF0YSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkQ29u
dGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCkgeyB9Ci0jZW5kaWYKLQogI2lmIEVO
QUJMRShXRUJfQ1JZUFRPKQogICAgIHZpcnR1YWwgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTAgKzE1NCw2IEBACiAjaW5jbHVkZSAiU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgog
I2VuZGlmCkBAIC0yMDk3LDMxICsyMDkzLDYgQEAgdm9pZCBQYWdlOjpyZXN1bWVBbGxNZWRpYUJ1
ZmZlcmluZygpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi12b2lk
IFBhZ2U6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUgZXZlbnRUeXBlKQotewotICAg
IHN3aXRjaCAoZXZlbnRUeXBlKSB7Ci0gICAgY2FzZSBNZWRpYUV2ZW50VHlwZTo6UGxheVBhdXNl
OgotICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS50b2dnbGVQbGF5YmFj
aygpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhRXZlbnRUeXBlOjpUcmFja05leHQ6
Ci0gICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnNraXBUb05leHRUcmFj
aygpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhRXZlbnRUeXBlOjpUcmFja1ByZXZp
b3VzOgotICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5za2lwVG9QcmV2
aW91c1RyYWNrKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBQYWdlOjpzZXRW
b2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCi17
Ci0gICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBIVE1MTWVkaWFFbGVtZW50Ojpl
bGVtZW50V2l0aElEKGVsZW1lbnRJRCkpCi0gICAgICAgIGVsZW1lbnQtPnNldFZvbHVtZSh2b2x1
bWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwotfQotCi0jZW5kaWYKLQogdW5zaWduZWQgUGFnZTo6
c3ViZnJhbWVDb3VudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1haW5GcmFtZSgpLnRyZWUoKS5k
ZXNjZW5kYW50Q291bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNjc3OTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYy
LDYgQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCiAjZW5kaWYKIAotI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkV2ZW50cy5oIgotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2luY2x1ZGUgIk1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCiAjZW5kaWYKQEAgLTY2MCwxMSArNjU2LDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCBjYW5Vc2Up
IHsgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSA9IGNhblVzZTsgfQogICAgIGJvb2wgY2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhblVzZUNyZWRlbnRpYWxTdG9y
YWdlOyB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlLCB1aW50NjRfdCk7Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBhZGRQbGF5
YmFja1RhcmdldFBpY2tlckNsaWVudChQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuY3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXIuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI6Ok1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvblByb3ZpZGVyKE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyQ2xpZW50
JiBjbGllbnQpCi0gICAgOiBtX2NsaWVudCgmY2xpZW50KQotewotfQotCi1NZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlcjo6fk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyKCkg
PSBkZWZhdWx0OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Q
cm92aWRlci5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvblByb3ZpZGVyX2gKLSNkZWZpbmUgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXJfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkgewotICAgIENvbnRlbnQsCi0gICAgVHJhbnNpZW50LAot
ICAgIFRyYW5zaWVudFNvbG8KLX07Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblBy
b3ZpZGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0YXJ0
T2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdv
cnkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUVuZE9mSW50ZXJydXB0aW9uTm90
aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5KSA9IDA7Ci0KLXByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlckNsaWVu
dCgpID0gZGVmYXVsdDsKLX07Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3Zp
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI+
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
cihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlckNsaWVudCYpOwotICAgIHZpcnR1YWwg
fk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyKCk7Ci0KLSAgICAvLyBUbyBiZSBvdmVy
cmlkZGVuIGJ5IHN1YmNsYXNzZXMuCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luTGlzdGVuaW5nRm9y
SW50ZXJydXB0aW9ucygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3RlbmluZ0Zvcklu
dGVycnVwdGlvbnMoKSA9IDA7Ci0KLSAgICBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY2xpZW50OyB9Ci0KLXByaXZhdGU6
Ci0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJDbGllbnQqIG1fY2xpZW50Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0KLSNlbmRpZiAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcl9oICov
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24vbWFjL01lZGlhU2Vz
c2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlck1hYy5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXNlc3Npb24vbWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hY19oCi0jZGVmaW5lIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjX2gKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBQTEFU
Rk9STShNQUMpCi0KLSNpbmNsdWRlICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
blByb3ZpZGVyTWFjIDogcHVibGljIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyIHsK
LXB1YmxpYzoKLSAgICB1c2luZyBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlcjo6TWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI7Ci0KLSAgICB2b2lkIGJlZ2luTGlzdGVuaW5n
Rm9ySW50ZXJydXB0aW9ucygpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcExpc3RlbmluZ0Zvcklu
dGVycnVwdGlvbnMoKSBvdmVycmlkZTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfk1lZGlh
U2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjKCkgPSBkZWZhdWx0OwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pICYmIFBM
QVRGT1JNKE1BQykKLQotI2VuZGlmIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
TWFjX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMv
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb25Qcm92aWRlck1hYy5tbQkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRl
ck1hYy5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVy
TWFjLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQotCi0j
aW1wb3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBjYWxsRGlkQmVnaW5SaW5naW5nTm90
aWZpY2F0aW9uID0gQ0ZTVFIoIkNhbGxEaWRCZWdpblJpbmdpbmciKTsKLXN0YXRpYyBjb25zdCBD
RlN0cmluZ1JlZiBjYWxsRGlkRW5kUmluZ2luZ05vdGlmaWNhdGlvbiA9IENGU1RSKCJDYWxsRGlk
RW5kUmluZ2luZyIpOwotc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGNhbGxEaWRDb25uZWN0Tm90
aWZpY2F0aW9uID0gQ0ZTVFIoIkNhbGxEaWRDb25uZWN0Iik7Ci0KLXN0YXRpYyB2b2lkIGNhbGxE
aWRCZWdpblJpbmdpbmcoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBD
RlN0cmluZ1JlZiwgY29uc3Qgdm9pZCosIENGRGljdGlvbmFyeVJlZikKLXsKLSAgICBBU1NFUlRf
QVJHKG9ic2VydmVyLCBvYnNlcnZlcik7Ci0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXIqIHByb3ZpZGVyID0gKE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyKilvYnNl
cnZlcjsKLSAgICBwcm92aWRlci0+Y2xpZW50KCkuZGlkUmVjZWl2ZVN0YXJ0T2ZJbnRlcnJ1cHRp
b25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5zaWVu
dCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhbGxEaWRFbmRSaW5naW5nKENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rp
b25hcnlSZWYpCi17Ci0gICAgQVNTRVJUX0FSRyhvYnNlcnZlciwgb2JzZXJ2ZXIpOwotICAgIE1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjKiBwcm92aWRlciA9IChNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYyopb2JzZXJ2ZXI7Ci0gICAgcHJvdmlkZXItPmNsaWVu
dCgpLmRpZFJlY2VpdmVFbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpbmdDYXRlZ29yeTo6VHJhbnNpZW50KTsKLX0KLQotc3RhdGljIHZvaWQgY2FsbERp
ZENvbm5lY3QoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDRlN0cmlu
Z1JlZiwgY29uc3Qgdm9pZCosIENGRGljdGlvbmFyeVJlZikKLXsKLSAgICBBU1NFUlRfQVJHKG9i
c2VydmVyLCBvYnNlcnZlcik7Ci0gICAgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJN
YWMqIHByb3ZpZGVyID0gKE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjKilvYnNl
cnZlcjsKLSAgICBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlckNsaWVudCYgY2xpZW50
ID0gcHJvdmlkZXItPmNsaWVudCgpOwotICAgIGNsaWVudC5kaWRSZWNlaXZlRW5kT2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnk6OlRyYW5z
aWVudCk7Ci0gICAgY2xpZW50LmRpZFJlY2VpdmVTdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0
aW9uKE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5OjpDb250ZW50KTsKLX0KLQotdm9p
ZCBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYzo6YmVnaW5MaXN0ZW5pbmdGb3JJ
bnRlcnJ1cHRpb25zKCkKLXsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBub3RpZmljYXRp
b25DZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldERpc3RyaWJ1dGVkQ2VudGVyKCk7Ci0g
ICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3RpZmljYXRpb25DZW50ZXIsIHRo
aXMsIGNhbGxEaWRCZWdpblJpbmdpbmcsIGNhbGxEaWRCZWdpblJpbmdpbmdOb3RpZmljYXRpb24s
IG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0
ZWx5KTsKLSAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKG5vdGlmaWNhdGlvbkNl
bnRlciwgdGhpcywgY2FsbERpZEVuZFJpbmdpbmcsIGNhbGxEaWRFbmRSaW5naW5nTm90aWZpY2F0
aW9uLCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1l
ZGlhdGVseSk7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3RpZmljYXRp
b25DZW50ZXIsIHRoaXMsIGNhbGxEaWRDb25uZWN0LCBjYWxsRGlkQ29ubmVjdE5vdGlmaWNhdGlv
biwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRp
YXRlbHkpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjOjpz
dG9wTGlzdGVuaW5nRm9ySW50ZXJydXB0aW9ucygpCi17Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJSZW1vdmVFdmVyeU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0RGlzdHJpYnV0ZWRD
ZW50ZXIoKSwgdGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSwxMSArMjg1LDYg
QEAKICNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCi0jaW5jbHVkZSAiTWVk
aWFTZXNzaW9uTWFuYWdlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmgiCiAjZW5k
aWYKQEAgLTQyODYsNTcgKzQyODEsOCBAQCBib29sIEludGVybmFsczo6ZWxlbWVudElzQmxvY2tp
bmdEaXNwbGF5CiB7CiAgICAgcmV0dXJuIGVsZW1lbnQuaXNEaXNhYmxpbmdTbGVlcCgpOwogfQot
CiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0K
LXZvaWQgSW50ZXJuYWxzOjpzZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlm
aWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29yeSkKLXsKLSAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlU3RhcnRPZkludGVy
cnVwdGlvbk5vdGlmaWNhdGlvbihjYXRlZ29yeSk7Ci19Ci0KLXZvaWQgSW50ZXJuYWxzOjpzZW5k
TWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW5nQ2F0ZWdvcnkgY2F0ZWdvcnkpCi17Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2luZ2xldG9uKCkuZGlkUmVjZWl2ZUVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKGNhdGVn
b3J5KTsKLX0KLQotU3RyaW5nIEludGVybmFsczo6bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKE1l
ZGlhU2Vzc2lvbiogc2Vzc2lvbikgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHNlc3Npb24tPmN1cnJl
bnRTdGF0ZSgpKSB7Ci0gICAgY2FzZSBNZWRpYVNlc3Npb246OlN0YXRlOjpBY3RpdmU6Ci0gICAg
ICAgIHJldHVybiAiYWN0aXZlIjsKLSAgICBjYXNlIE1lZGlhU2Vzc2lvbjo6U3RhdGU6OkludGVy
cnVwdGVkOgotICAgICAgICByZXR1cm4gImludGVycnVwdGVkIjsKLSAgICBjYXNlIE1lZGlhU2Vz
c2lvbjo6U3RhdGU6OklkbGU6Ci0gICAgICAgIHJldHVybiAiaWRsZSI7Ci0gICAgfQotfQotCi1k
b3VibGUgSW50ZXJuYWxzOjptZWRpYUVsZW1lbnRQbGF5ZXJWb2x1bWUoSFRNTE1lZGlhRWxlbWVu
dCogZWxlbWVudCkgY29uc3QKLXsKLSAgICBBU1NFUlRfQVJHKGVsZW1lbnQsIGVsZW1lbnQpOwot
ICAgIHJldHVybiBlbGVtZW50LT5wbGF5ZXJWb2x1bWUoKTsKLX0KLQotdm9pZCBJbnRlcm5hbHM6
OnNlbmRNZWRpYUNvbnRyb2xFdmVudChNZWRpYUNvbnRyb2xFdmVudCBldmVudCkKLXsKLSAgICAv
LyBGSVhNRTogTm8gZ29vZCByZWFzb24gdG8gdXNlIGEgc2luZ2xlIGZ1bmN0aW9uIHdpdGggYW4g
YXJndW1lbnQgaW5zdGVhZCBvZiB0aHJlZSBmdW5jdGlvbnMuCi0gICAgc3dpdGNoIChldmVudCkg
ewotICAgIGNhc2UgTWVkaUNvbnRyb2xFdmVudDo6UGxheVBhdXNlOgotICAgICAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKS50b2dnbGVQbGF5YmFjaygpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIE1lZGlDb250cm9sRXZlbnQ6Ok5leHRUcmFjazoKLSAgICAgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuc2tpcFRvTmV4dFRyYWNrKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTWVkaUNvbnRyb2xFdmVudDo6UHJldmlvdXNUcmFjazoKLSAgICAgICAg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuc2tpcFRvUHJldmlvdXNUcmFjaygpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLQogI2lmIEVOQUJMRShXRUJfQVVESU8pCiB2b2lkIEludGVybmFsczo6c2V0QXVkaW9Db250
ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEJhc2VBdWRpb0NvbnRleHQ+LCBS
ZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mIGNvbnRleHRWYXJpYW50LCBTdHJpbmdWaWV3IHJl
c3RyaWN0aW9uc1N0cmluZykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAko
cmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3Zp
ZGVyLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShWSURFTykKICNpbmNsdWRlICJNZWRpYUVsZW1l
bnRTZXNzaW9uLmgiCiAjZW5kaWYKQEAgLTY2NiwxNSArNjYyLDYgQEAgcHVibGljOgogICAgIGJv
b2wgZWxlbWVudElzQmxvY2tpbmdEaXNwbGF5U2xlZXAoSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIHNlbmRNZWRp
YVNlc3Npb25TdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVy
cnVwdGluZ0NhdGVnb3J5KTsKLSAgICB2b2lkIHNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVw
dGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSk7Ci0gICAg
U3RyaW5nIG1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShNZWRpYVNlc3Npb24mKSBjb25zdDsKLSAg
ICBkb3VibGUgbWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKEhUTUxNZWRpYUVsZW1lbnQmKSBjb25z
dDsKLSAgICBlbnVtIGNsYXNzIE1lZGlhQ29udHJvbEV2ZW50IHsgUGxheVBhdXNlLCBOZXh0VHJh
Y2ssIFByZXZpb3VzVHJhY2sgfTsKLSAgICB2b2lkIHNlbmRNZWRpYUNvbnRyb2xFdmVudChNZWRp
YUNvbnRyb2xFdmVudCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCiAgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckVuYWJsZWQo
Ym9vbCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIGRldmljZU5hbWUsIGNvbnN0IFN0cmluZyYgZGV2aWNl
U3RhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24g
MjY3NzkwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxOCArNDYsNiBAQCBlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsKICAg
ICAiUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGlnaCIKIH07CiAKLVtDb25kaXRpb25hbD1NRURJ
QV9TRVNTSU9OXSBlbnVtIE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IHsKLSAgICAi
Y29udGVudCIsCi0gICAgInRyYW5zaWVudCIsCi0gICAgInRyYW5zaWVudC1zb2xvIgotfTsKLQot
W0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIGVudW0gTWVkaWFDb250cm9sRXZlbnQgewotICAg
ICJwbGF5LXBhdXNlIiwKLSAgICAibmV4dC10cmFjayIsCi0gICAgInByZXZpb3VzLXRyYWNrIgot
fTsKLQogZW51bSBBdXRvRmlsbEJ1dHRvblR5cGUgewogICAgICJOb25lIiwKICAgICAiQ29udGFj
dHMiLApAQCAtNjk2LDExICs2ODQsNiBAQCBlbnVtIENvbnRlbnRTaXplQ2F0ZWdvcnkgewogCiAg
ICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIGJlZ2lu
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmluZyBpbnRlcnJ1cHRpb25UeXBlKTsKICAg
ICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBlbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b24oRE9NU3RyaW5nIGZsYWdzKTsKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gdW5k
ZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25TdGFydE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1l
ZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5IGNhdGVnb3J5KTsKLSAgICBbQ29uZGl0aW9u
YWw9TUVESUFfU0VTU0lPTl0gdW5kZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVw
dGlvbk5vdGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSBjYXRlZ29y
eSk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIERPTVN0cmluZyBtZWRpYVNlc3Np
b25DdXJyZW50U3RhdGUoTWVkaWFTZXNzaW9uIHNlc3Npb24pOwotICAgIFtDb25kaXRpb25hbD1N
RURJQV9TRVNTSU9OXSBkb3VibGUgbWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKEhUTUxNZWRpYUVs
ZW1lbnQgZWxlbWVudCk7Ci0gICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT05dIHVuZGVmaW5l
ZCBzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQpOwogICAgIFtD
b25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZl
KCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgYXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBhcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQob3B0aW9uYWwgYm9vbGVhbiBzdXNwZW5kZWRVbmRlckxvY2sg
PSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAyMC0wOS0zMCAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGNvZGUgYmVo
aW5kIEVOQUJMRShNRURJQV9TRVNTSU9OKSwgbm8gcG9ydHMgZW5hYmxlIGl0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFJlbW92ZXMgYWxsIGNvZGUg
aW4gRU5BQkxFKE1FRElBX1NFU1NJT04pIGFuZCBhbGwgbWVkaWEgc2Vzc2lvbgorICAgICAgICBy
ZWxhdGVkIFNQSS4gSXQgd2FzIG5ldmVyIGVuYWJsZWQgYW5kIG5vdGhpbmcgZXZlciBhZG9wdGVk
IGl0LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
UmVtb3ZlIG1lZGlhIHNlc3Npb24gcmVsYXRlZCBmaWxlcy4KKworICAgICAgICAqIFNoYXJlZC9B
UEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVkaWFTZXNzaW9u
TWV0YWRhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9XZWJNZWRpYVNlc3Npb25N
ZXRhZGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg6
IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIFJlbW92ZSBhbGwgY29kZSBpbiBF
TkFCTEUoTUVESUFfU0VTU0lPTikuCisKIDIwMjAtMDktMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hvdWxkIHN1cHBvcnQgaXNU
eXBlU3VwcG9ydGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNiBAQCBT
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCiBTaGFyZWQvV2ViSW1hZ2UuY3BwCiBTaGFy
ZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvV2ViS2l0MkluaXRpYWxp
emUuY3BwIEBuby11bmlmeQotU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAogU2hh
cmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCiBTaGFyZWQvV2ViTW91c2VFdmVudC5jcHAgQG5vLXVu
aWZ5CiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM3OSw3ICszNzgs
NiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tIaXRUZXN0UmVzdWx0LmNwcAogVUlQcm9jZXNzL0FQSS9D
L1dLSWNvbkRhdGFiYXNlLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAogVUlQ
cm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKLVVJUHJvY2Vzcy9BUEkv
Qy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxp
c3RlbmVyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja0Rpc3BsYXkuY3BwCiBVSVByb2Nlc3Mv
QVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShy
ZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTIyNiwxNSArMjI2LDEyIEBAIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VH
cmFwaGljc1VzYWdlU2EKIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
LmNwcAogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKIFVJUHJvY2Vzcy9WaWV3
U25hcHNob3RTdG9yZS5jcHAKLVVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
Y3BwCi1VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcAogVUlQ
cm9jZXNzL1dlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKIFVJUHJvY2Vzcy9XS0ltYWdlUHJl
dmlld1ZpZXdDb250cm9sbGVyLm1tCiAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFSZWNv
cmQuY3BwCiAKIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwCi1VSVBy
b2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJ
L0MvV0tUZXN0aW5nU3VwcG9ydC5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYu
Y3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDEwICsxMDksNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Np
b25NZXRhZGF0YS5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1
ZGUgPFdlYkNvcmUvQ2FwdHVyZURldmljZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25z
dHJhaW50cy5oPgpAQCAtMjEwNiwzMiArMjEwMiw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2Vy
U3R5bGVTaGVldD46OmRlY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhU2Vzc2lvbk1ldGFkYXRhPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhU2Vzc2lvbk1ldGFkYXRhJiByZXN1bHQp
Ci17Ci0gICAgZW5jb2RlciA8PCByZXN1bHQuYXJ0aXN0KCk7Ci0gICAgZW5jb2RlciA8PCByZXN1
bHQuYWxidW0oKTsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC50aXRsZSgpOwotICAgIGVuY29kZXIg
PDwgcmVzdWx0LmFydHdvcmtVUkwoKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhU2Vz
c2lvbk1ldGFkYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhU2Vzc2lvbk1ldGFk
YXRhJiByZXN1bHQpCi17Ci0gICAgU3RyaW5nIGFydGlzdCwgYWxidW0sIHRpdGxlOwotICAgIFVS
TCBhcnR3b3JrVVJMOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJ0aXN0KSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxidW0pKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRsZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFydHdvcmtVUkwpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gTWVkaWFTZXNzaW9uTWV0YWRhdGEodGl0bGUs
IGFydGlzdCwgYWxidW0sIGFydHdvcmtVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlm
Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3Rp
Y2l0eTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDEwICsxODcsNiBAQCBjbGFzcyBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi1jbGFzcyBNZWRpYVNl
c3Npb25NZXRhZGF0YTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHN0cnVj
dCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCkBAIC02MzUsMTMgKzYzMSw2IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIH07CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpNZWRpYVNlc3Npb25NZXRhZGF0YT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsKLSAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpNZWRpYVNlc3Np
b25NZXRhZGF0YSYpOwotfTsKLSNlbmRpZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYpOwogICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gZGVjb2RlKERlY29kZXImKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZWRpYVNlc3Npb25NZXRhZGF0
YS5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlh
U2Vzc2lvbk1ldGFkYXRhLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uTWV0
YWRhdGEuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZWY8V2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGE+IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpjcmVhdGUoY29uc3QgTWVkaWFTZXNzaW9uTWV0
YWRhdGEmIG1ldGFkYXRhKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1lZGlhU2Vz
c2lvbk1ldGFkYXRhKG1ldGFkYXRhKSk7Ci19Ci0KLVdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOjpX
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YShjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRh
dGEpCi0gICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQotewotfQotCi1XZWJNZWRpYVNlc3Npb25N
ZXRhZGF0YTo6fldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKCkKLXsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAkocmV2aXNpb24g
MjY3NzkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdl
Yk1lZGlhU2Vzc2lvbk1ldGFkYXRhX2gKLSNkZWZpbmUgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGFf
aAotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJNZWRp
YVNlc3Npb25NZXRhZGF0YSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJN
ZWRpYVNlc3Npb25NZXRhZGF0YT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1l
dGFkYXRhJik7Ci0gICAgfldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhKCk7Ci0KLSAgICBTdHJpbmcg
dGl0bGUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLnRpdGxlKCk7IH0KLSAgICBTdHJpbmcg
YXJ0aXN0KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnRpc3QoKTsgfQotICAgIFN0cmlu
ZyBhbGJ1bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYWxidW0oKTsgfQotICAgIFN0cmlu
ZyBhcnR3b3JrVVJMKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3b3JrVVJMKCkuc3Ry
aW5nKCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0
YShjb25zdCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpOwotCi0gICAgV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWV0YWRhdGEgbV9tZXRhZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNlbmRpZiAvLyBXZWJN
ZWRpYVNlc3Npb25NZXRhZGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVj
dC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDYgQEAgcHVibGljOgogICAgICAg
ICBXZWJzaXRlUG9saWNpZXMsCiAgICAgICAgIFdpbmRvd0ZlYXR1cmVzLAogCi0jaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCi0gICAgICAgIE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciwKLSAgICAg
ICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEsCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAgICAgICAgIFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UsCiAgICAgICAgIFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsCkBAIC00MjgsMTEgKzQyMyw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3QKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Oldl
YnNpdGVQb2xpY2llcywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OldpbmRvd0ZlYXR1cmVz
LAogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIEFQSTo6T2JqZWN0OjpUeXBl
OjpNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIsCi0gICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpN
ZWRpYVNlc3Npb25NZXRhZGF0YSwKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAg
ICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9u
c2UsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsLApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUsOCArMTA1LDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tIaXRUZXN0UmVzdQog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJY29uRGF0YWJhc2UqIFdLSWNvbkRhdGFiYXNl
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNwZWN0b3IqIFdLSW5zcGVjdG9y
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
KiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJS
ZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhU2Vzc2lvbk1ldGFkYXRhKiBX
S01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tN
ZXNzYWdlTGlzdGVuZXIqIFdLTWVzc2FnZUxpc3RlbmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uQWN0aW9uKiBXS05hdmlnYXRpb25BY3Rpb25SZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBXS05hdmlnYXRpb25EYXRh
UmVmOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2lu
Y2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCisjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDExNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCi0KLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotY29uc3QgY2hhciogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzdXBwbGVtZW50
TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIiOwotfQot
Ci1SZWY8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPiBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXI6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKHByb2Nlc3NQb29sKSk7
Ci19Ci0KLVdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6V2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKLSAgICA6IFdlYkNvbnRleHRTdXBw
bGVtZW50KHByb2Nlc3NQb29sKSB7IH0KLQotLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLQotdm9p
ZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkK
LXsKLSAgICBBUEk6Ok9iamVjdDo6cmVmKCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyOjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKLXsKLSAgICBBUEk6Ok9iamVj
dDo6ZGVyZWYoKTsKLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmluaXRp
YWxpemVDbGllbnQoY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlKiBj
bGllbnQpCi17Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi1ib29sIFdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0ZShXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIGF0dHJpYnV0ZSkgY29uc3QK
LXsKLSAgICBpZiAoIW1fZm9jdXNlZE1lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIG1fcGxheWJhY2tBdHRyaWJ1dGVzICYgYXR0cmlidXRlOwotfQotCi12
b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGUo
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSBhdHRyaWJ1dGUsIGJv
b2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBtX3BsYXliYWNrQXR0cmlidXRl
cyB8PSBhdHRyaWJ1dGU7Ci0gICAgZWxzZQotICAgICAgICBtX3BsYXliYWNrQXR0cmlidXRlcyAm
PSB+YXR0cmlidXRlOwotCi0gICAgbV9jbGllbnQuZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUo
dGhpcywgYXR0cmlidXRlLCB2YWx1ZSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyOjpzZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSkKLXsK
LSAgICBpZiAoIW1fZm9jdXNlZE1lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKFdlYlBhZ2VQcm94eSogcHJveHkgPSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPmZpcnN0KQot
ICAgICAgICBwcm94eS0+c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBtX2ZvY3VzZWRN
ZWRpYUVsZW1lbnQtPnNlY29uZCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyOjp1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFTdGF0ZShXZWJQYWdlUHJveHkq
IHByb3h5LCB1aW50NjRfdCBlbGVtZW50SUQsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlh
U3RhdGVGbGFncyBmbGFncykKLXsKLSAgICBpZiAobV9mb2N1c2VkTWVkaWFFbGVtZW50KSB7Ci0g
ICAgICAgIGlmIChwcm94eSA9PSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPmZpcnN0ICYmIGVsZW1l
bnRJRCA9PSBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQtPnNlY29uZCkgewotICAgICAgICAgICAgdXBk
YXRlUGxheWJhY2tBdHRyaWJ1dGUoSXNQbGF5aW5nLCBmbGFncyAmIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6OklzU291cmNlRWxlbWVudFBsYXlpbmcpOwotICAgICAgICAgICAgdXBkYXRlUGxheWJh
Y2tBdHRyaWJ1dGUoSXNOZXh0VHJhY2tDb250cm9sRW5hYmxlZCwgZmxhZ3MgJiBXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpJc05leHRUcmFja0NvbnRyb2xFbmFibGVkKTsKLSAgICAgICAgICAgIHVw
ZGF0ZVBsYXliYWNrQXR0cmlidXRlKElzUHJldmlvdXNUcmFja0NvbnRyb2xFbmFibGVkLCBmbGFn
cyAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzUHJldmlvdXNUcmFja0NvbnRyb2xFbmFibGVk
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5JiBwcm94eSwgdWludDY0X3Qg
ZWxlbWVudElEKQotewotICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IG1ha2VVbmlxdWU8Rm9j
dXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOwotfQotCi12b2lkIFdlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y2xlYXJGb2N1c2VkTWVkaWFFbGVtZW50KCkKLXsKLSAgICBt
X2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKHJl
dmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5oCShub25leGlzdGVudCkKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNpbmNsdWRl
ICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1
ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdHlwZWRlZiBzdGQ6OnBhaXI8V2Vi
UGFnZVByb3h5KiwgdWludDY0X3Q+IEZvY3VzZWRNZWRpYUVsZW1lbnQ7Ci0KLWNsYXNzIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6Ok1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3Vw
cGxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1l
KCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4gY3JlYXRl
KFdlYlByb2Nlc3NQb29sKik7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlKik7Ci0KLSAgICBib29sIHZhbHVlRm9y
UGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJp
YnV0ZSkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFT
dGF0ZShXZWJQYWdlUHJveHkqLCB1aW50NjRfdCwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzKTsKLSAgICB2b2lkIHNldFZvbHVtZU9mRm9jdXNlZE1lZGlhRWxlbWVudChk
b3VibGUpOwotCi0gICAgdm9pZCBzZXRGb2N1c2VkTWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYs
IHVpbnQ2NF90KTsKLSAgICB2b2lkIGNsZWFyRm9jdXNlZE1lZGlhRWxlbWVudCgpOwotCi0gICAg
dXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7Ci0K
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKFdlYlBy
b2Nlc3NQb29sKik7Ci0KLSAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAotICAgIHZvaWQgcmVm
V2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlcmVmV2ViQ29udGV4
dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgdXBkYXRlUGxheWJhY2tBdHRyaWJ1
dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZSwgYm9vbCk7Ci0K
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9jdXNlZE1lZGlhRWxlbWVudD4gbV9mb2N1c2VkTWVkaWFF
bGVtZW50OwotICAgIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGVz
IG1fcGxheWJhY2tBdHRyaWJ1dGVzIHsgMCB9OwotICAgIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlckNsaWVudCBtX2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5j
cHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyQ2xpZW50OjpkaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZShXZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXIqIG1hbmFnZXIsIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxh
eWJhY2tBdHRyaWJ1dGUgcGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYg
KCFtX2NsaWVudC5kaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9jbGllbnQuZGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUodG9BUEkobWFuYWdlciks
IHBsYXliYWNrQXR0cmlidXRlLCB2YWx1ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lP
TikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaAko
bm9uZXhpc3RlbnQpCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckNsaWVudF9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLQotI2luY2x1
ZGUgIkFQSUNsaWVudC5oIgotI2luY2x1ZGUgIldLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgi
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNl
PiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xp
ZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjsKLQotY2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyQ2xpZW50QmFzZT4gewotcHVibGljOgotICAgIHZvaWQgZGlkQ2hhbmdlUGxheWJhY2tBdHRy
aWJ1dGUoV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKiwgV0tNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXJQbGF5YmFja0F0dHJpYnV0ZSwgYm9vbCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLy8gV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDEyICsyNDQs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWV0YWRhdGEuaD4KLSNlbmRpZgotCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCIK
ICNlbmRpZgpAQCAtNjA1NCwyNCArNjA0OCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVB
bGxNZWRpYVBsYXliYWMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRp
YVBsYXliYWNrKCkpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi12b2lkIFdlYlBh
Z2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCi17Ci0g
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlTWVkaWFFdmVudChldmVudFR5cGUpKTsKLX0K
LQotdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1
bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKLXsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZvbHVt
ZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwgZWxlbWVudElEKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCBtYXlTdGFydE1l
ZGlhKQogewogICAgIGlmIChtYXlTdGFydE1lZGlhID09IG1fbWF5U3RhcnRNZWRpYVdoZW5Jbldp
bmRvdykKQEAgLTg5NzYsMTIgKzg5NTIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlv
bkdlc3R1cmVTbmFwCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5n
ZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbmV3U3RhdGUsIHVpbnQ2NF90IHNvdXJj
ZUVsZW1lbnRJRCkKIHsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBXZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXIqIGZvY3VzTWFuYWdlciA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnN1cHBsZW1lbnQ8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpOwotICAgIEFTU0VSVChm
b2N1c01hbmFnZXIpOwotICAgIGZvY3VzTWFuYWdlci0+dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVz
RnJvbU1lZGlhU3RhdGUodGhpcywgc291cmNlRWxlbWVudElELCBuZXdTdGF0ZSk7Ci0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFtX3Byb2Nlc3MtPnRocm90dGxl
cigpLnNob3VsZEJlUnVubmFibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTEzMCwyNiArOTEw
MCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpub3dQbGF5aW5nSW5mb0NhbGxiYWMKIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi12b2lkIFdlYlBhZ2VQcm94eTo6aGFzTWVk
aWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKLXsK
LSAgICBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzID0gc3RhdGU7Ci19
Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjptZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRhdGEpCi17Ci0gICAgUmVmPFdl
Yk1lZGlhU2Vzc2lvbk1ldGFkYXRhPiB3ZWJNZXRhZGF0YSA9IFdlYk1lZGlhU2Vzc2lvbk1ldGFk
YXRhOjpjcmVhdGUobWV0YWRhdGEpOwotICAgIG1fdWlDbGllbnQtPm1lZGlhU2Vzc2lvbk1ldGFk
YXRhRGlkQ2hhbmdlKCp0aGlzLCB3ZWJNZXRhZGF0YS5wdHIoKSk7Ci19Ci0KLXZvaWQgV2ViUGFn
ZVByb3h5Ojpmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVt
ZW50SUQpCi17Ci0gICAgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKiBmb2N1c01hbmFnZXIg
PSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcj4oKTsKLSAgICBBU1NFUlQoZm9jdXNNYW5hZ2VyKTsKLSAgICBmb2N1c01hbmFnZXIt
PnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoKnRoaXMsIGVsZW1lbnRJRCk7Ci19Ci0jZW5kaWYKLQog
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlF
dmVudCBldmVudCwgT3B0aW9uU2V0PEF1dG9wbGF5RXZlbnRGbGFncz4gZmxhZ3MpCiB7CiAgICAg
bV91aUNsaWVudC0+aGFuZGxlQXV0b3BsYXlFdmVudCgqdGhpcywgZXZlbnQsIGZsYWdzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjc3OTAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMTY5LDEyICsxNjksNiBAQCBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
OwogI2luY2x1ZGUgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIE1l
ZGlhU2Vzc2lvbk1ldGFkYXRhOwotfQotI2VuZGlmCi0KICNpZiBVU0UoRElSRUNUMkQpCiBpbnRl
cmZhY2UgSUQzRDExRGV2aWNlMTsKICNlbmRpZgpAQCAtMTM0NCwxMiArMTMzOCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgdm9pZCByZXN1bWVB
bGxNZWRpYVBsYXliYWNrKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBib29s
IGhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50czsgfQotICAgIHZvaWQgaGFu
ZGxlTWVkaWFFdmVudChXZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSk7Ci0gICAgdm9pZCBzZXRWb2x1
bWVPZk1lZGlhRWxlbWVudChkb3VibGUsIHVpbnQ2NF90KTsKLSNlbmRpZgotICAgICAgICAKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgZGlkQWxsb3dQb2ludGVyTG9jaygpOwog
ICAgIHZvaWQgZGlkRGVueVBvaW50ZXJMb2NrKCk7CkBAIC0xNDc1LDEyICsxNDYzLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgbm93UGxheWluZ0luZm9DYWxsYmFjayhib29sLCBib29sLCBjb25zdCBT
dHJpbmcmLCBkb3VibGUsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB2b2lkIGhhc01lZGlhU2Vzc2lvbldpdGhB
Y3RpdmVNZWRpYUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wpOwotICAgIHZvaWQgbWVkaWFTZXNzaW9u
TWV0YWRhdGFEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKTsK
LSAgICB2b2lkIGZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90KTsK
LSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEFQSTo6SGl0VGVzdFJlc3VsdCogbGFz
dE1vdXNlTW92ZUhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RNb3VzZU1vdmVI
aXRUZXN0UmVzdWx0LmdldCgpOyB9CiAgICAgdm9pZCBwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0
VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCk7CkBAIC0yNzc4LDEwICsyNzYwLDYg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNOZXZlclJpY2hseUVkaXRhYmxlRm9yVG91Y2hCYXIg
eyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICBib29s
IG1faGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMgeyBmYWxzZSB9OwotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIG1fcmVxdWlyZXNUYXJnZXRNb25pdG9yaW5nIHsgZmFsc2Ug
fTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00NzQsMTIg
KzQ3NCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgSXNQbGF5aW5nTWVkaWFE
aWRDaGFuZ2UodW5zaWduZWQgc3RhdGUsIHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkKICAgICBI
YW5kbGVBdXRvcGxheUV2ZW50KGVudW06dWludDhfdCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2
ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPiBmbGFncykKIAotI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIEhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRp
YUVsZW1lbnRzRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCi0gICAgTWVkaWFTZXNzaW9uTWV0YWRhdGFE
aWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEgbWV0YWRhdGEpOwotICAgIEZv
Y3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90IGVsZW1lbnRJRCkKLSNl
bmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25I
aXRUZXN0KHN0cnVjdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhIHJlc3VsdCwgYm9vbCBj
b250ZW50UHJldmVudHNEZWZhdWx0LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZp
c2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw5ICsyODksNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2Vi
UHJvY2Vzc1Bvb2woQVBJOjpQcm9jCiAgICAgLy8gTk9URTogVGhlc2Ugc3ViLW9iamVjdHMgbXVz
dCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZlck1hcC4uCiAgICAgYWRkU3Vw
cGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBhZGRTdXBwbGVtZW50
PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKLSAgICBhZGRTdXBwbGVtZW50PFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4oKTsKLSNl
bmRpZgogCiAgICAgcHJvY2Vzc1Bvb2xzKCkuYXBwZW5kKHRoaXMpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDEwICs1OSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0j
aW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0jZW5kaWYKLQogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OwogT0JKQ19DTEFT
UyBOU09iamVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTAgKzYwLDYgQEAgY2xhc3MgV2ViRnJh
bWVQcm94eTsKIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7Ci0KLSNpZiBFTkFCTEUo
TUVESUFfU0VTU0lPTikKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOwotI2VuZGlmCiB9
CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtMTYxLDEwICsxNTcsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG1lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhUHJvZHVj
ZXI6Ok1lZGlhU3RhdGVGbGFncykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dG9wbGF5
RXZlbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRp
b25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgeyB9CiAKLSNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRh
KikgeyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgSEFWRShBUFBf
TElOS1MpCiAgICAgdmlydHVhbCBib29sIHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVs
ZW1lbnQoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKikgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDI2Nzc5
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw4ICs5NCw2IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OwogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsK
IGNsYXNzIFdlYkluc3BlY3RvclByb3h5OwotY2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyOwotY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE7CiBjbGFzcyBXZWJOb3RpZmljYXRp
b247CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJOb3RpZmlj
YXRpb25Qcm92aWRlcjsKQEAgLTEzNiw4ICsxMzQsNiBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tI
VFRQQ29va2llU3RvcmVSZWYsCiBXS19BRERfQVBJX01BUFBJTkcoV0tIaXRUZXN0UmVzdWx0UmVm
LCBBUEk6OkhpdFRlc3RSZXN1bHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJY29uRGF0YWJhc2VS
ZWYsIFdlYkljb25EYXRhYmFzZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0luc3BlY3RvclJlZiwg
V2ViSW5zcGVjdG9yUHJveHkpCi1XS19BRERfQVBJX01BUFBJTkcoV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJSZWYsIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcikKLVdLX0FERF9BUElfTUFQ
UElORyhXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmLCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSkK
IFdLX0FERF9BUElfTUFQUElORyhXS01lc3NhZ2VMaXN0ZW5lclJlZiwgQVBJOjpNZXNzYWdlTGlz
dGVuZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBBUEk6Ok5h
dmlnYXRpb25BY3Rpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwg
QVBJOjpOYXZpZ2F0aW9uRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM2LDE2ICs0MzYs
NiBAQCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0CiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmPihXS1dlYnNpdGVE
YXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3JlKCkpOwogfQogCi1XS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlclJlZiBXS0NvbnRleHRHZXRNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIoV0tDb250ZXh0
UmVmIGNvbnRleHQpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnN1cHBsZW1lbnQ8V2ViS2l0OjpX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0KLQogV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYpCiB7CiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk+KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJ
KHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDYgQEAgV0tfRVhQT1JUIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXJSZWYgVwogV0tfRVhQT1JUIFdLR2VvbG9jYXRpb25NYW5hZ2Vy
UmVmIFdLQ29udGV4dEdldEdlb2xvY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7
CiBXS19FWFBPUlQgV0tJY29uRGF0YWJhc2VSZWYgV0tDb250ZXh0R2V0SWNvbkRhdGFiYXNlKFdL
Q29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJS
ZWYgV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4
dCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9y
ZUdldERlZmF1bHREYXRhU3RvcmUpOwotV0tfRVhQT1JUIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyUmVmIFdLQ29udGV4dEdldE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiBXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdl
dE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdL
UmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1hbmFnZXIo
V0tDb250ZXh0UmVmIGNvbnRleHQpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3JlKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCShub25leGlzdGVudCkK
QEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0
LmgiCi0jaW5jbHVkZSAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyR2V0
VHlwZUlEKCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4gdG9BUEko
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpBUElUeXBlKTsKLSNlbHNlCi0gICAgcmV0dXJu
IHRvQVBJKEFQSTo6T2JqZWN0OjpUeXBlOjpOdWxsKTsKLSNlbmRpZgotfQotCi12b2lkIFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Q2xpZW50KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
UmVmIG1hbmFnZXIsIGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSog
Y2xpZW50KQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHRvSW1wbChtYW5hZ2Vy
KS0+aW5pdGlhbGl6ZUNsaWVudChjbGllbnQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFu
YWdlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclZhbHVlRm9yUGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJSZWYgbWFuYWdlciwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQ
bGF5YmFja0F0dHJpYnV0ZSBhdHRyaWJ1dGUpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
Ci0gICAgcmV0dXJuIHRvSW1wbChtYW5hZ2VyKS0+dmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0ZShh
dHRyaWJ1dGUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7Ci0gICAgVU5VU0VE
X1BBUkFNKGF0dHJpYnV0ZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQg
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJTZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQo
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYgbWFuYWdlciwgZG91YmxlIHZvbHVtZSkKLXsK
LSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB0b0ltcGwobWFuYWdlciktPnNldFZvbHVt
ZU9mRm9jdXNlZE1lZGlhRWxlbWVudCh2b2x1bWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
bWFuYWdlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHZvbHVtZSk7Ci0jZW5kaWYKLX0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyX2gKLSNkZWZpbmUgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJfaAotCi0jaW5jbHVk
ZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8c3Rk
Ym9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5k
aWYKLQotZW51bSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIHsK
LSAgICBJc1BsYXlpbmcgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKLSAgICBJc1ByZXZp
b3VzVHJhY2tDb250cm9sRW5hYmxlZCA9IDEgPDwgMSwKLSAgICBJc05leHRUcmFja0NvbnRyb2xF
bmFibGVkICAgICA9IDEgPDwgMiwKLX07Ci10eXBlZGVmIHVpbnQzMl90IFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGVzOwotCi0vLyBNZWRpYSBTZXNzaW9uIEZvY3Vz
IE1hbmFnZXIgQ2xpZW50Ci10eXBlZGVmIHZvaWQgKCpXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ckRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlKShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJl
ZiBtYW5hZ2VyLCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIHBs
YXliYWNrQXR0cmlidXRlLCBib29sIHZhbHVlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLQot
dHlwZWRlZiBzdHJ1Y3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlIHsKLSAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl
cnNpb247Ci0gICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGllbnRJbmZvOwotfSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJh
c2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50VjAg
ewotICAgIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAgICAg
ICAgYmFzZTsKLQotICAgIC8vIFZlcnNpb24gMC4KLSAgICBXS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlckRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRlIGRpZENoYW5nZVBsYXliYWNrQXR0cmlidXRl
OwotfSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudFYwOwotCi1XS19FWFBPUlQgV0tU
eXBlSUQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJHZXRUeXBlSUQoKTsKLQotV0tfRVhQT1JU
IHZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJTZXRDbGllbnQoV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJSZWYgbWFuYWdlciwgY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJD
bGllbnRCYXNlKiBjbGllbnQpOwotCi1XS19FWFBPUlQgYm9vbCBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlclZhbHVlRm9yUGxheWJhY2tBdHRyaWJ1dGUoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJSZWYsIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUpOwotV0tf
RVhQT1JUIHZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJTZXRWb2x1bWVPZkZvY3VzZWRN
ZWRpYUVsZW1lbnQoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYsIGRvdWJsZSk7Ci0KLSNp
ZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlcl9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01l
ZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAkocmV2aXNpb24gMjY3NzkwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5j
cHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIKLQotI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLTWVkaWFTZXNzaW9uTWV0YWRh
dGFHZXRUeXBlSUQoKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0
b0FQSShXZWJNZWRpYVNlc3Npb25NZXRhZGF0YTo6QVBJVHlwZSk7Ci0jZWxzZQotICAgIHJldHVy
biB0b0FQSShBUEk6Ok9iamVjdDo6VHlwZTo6TnVsbCk7Ci0jZW5kaWYKLX0KLQotV0tTdHJpbmdS
ZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlUaXRsZShXS01lZGlhU2Vzc2lvbk1ldGFkYXRh
UmVmIG1ldGFkYXRhKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJldHVybiB0
b0NvcGllZEFQSSh0b0ltcGwobWV0YWRhdGEpLT50aXRsZSgpKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKG1ldGFkYXRhKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCi1XS1N0
cmluZ1JlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFydGlzdChXS01lZGlhU2Vzc2lvbk1l
dGFkYXRhUmVmIG1ldGFkYXRhKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJl
dHVybiB0b0NvcGllZEFQSSh0b0ltcGwobWV0YWRhdGEpLT5hcnRpc3QoKSk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0K
LQotV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBbGJ1bShXS01lZGlhU2Vz
c2lvbk1ldGFkYXRhUmVmIG1ldGFkYXRhKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwobWV0YWRhdGEpLT5hbGJ1bSgpKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRp
ZgotfQotCi1XS1VSTFJlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFydHdvcmtVUkwoV0tN
ZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKG1ldGFkYXRhKS0+YXJ0d29y
a1VSTCgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLSNlbmRpZgotfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAkocmV2aXNpb24gMjY3NzkwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5o
CShub25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tN
ZWRpYVNlc3Npb25NZXRhZGF0YV9oCi0jZGVmaW5lIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFfaAot
Ci0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5j
bHVkZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFH
ZXRUeXBlSUQoKTsKLQotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTWVkaWFTZXNzaW9uTWV0YWRh
dGFDb3B5VGl0bGUoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSk7Ci1XS19FWFBP
UlQgV0tTdHJpbmdSZWYgV0tNZWRpYVNlc3Npb25NZXRhZGF0YUNvcHlBcnRpc3QoV0tNZWRpYVNl
c3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSk7Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tNZWRp
YVNlc3Npb25NZXRhZGF0YUNvcHlBbGJ1bShXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFk
YXRhKTsKLVdLX0VYUE9SVCBXS1VSTFJlZiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhQ29weUFydHdv
cmtVUkwoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSk7Ci0KLSNpZmRlZiBfX2Nw
bHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhX2gg
Ki8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNp
b24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQsMTEgKzk0LDYgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dUl0ZW0uaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0jaW5jbHVkZSAi
V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lv
bkV2ZW50cy5oPgotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJWZXJz
aW9uQ2hlY2tzLmgiCiAjZW5kaWYKQEAgLTIwMzMsMTUgKzIwMjgsNiBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZXNp
Z25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UodG9BUEkoJnBhZ2UpLCB0b0FQ
SSh1c2VySW5mbyksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgICAgICB2b2lkIG1lZGlhU2Vzc2lvbk1ldGFkYXRh
RGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEqIG1l
dGFkYXRhKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50Lm1lZGlh
U2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQubWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UodG9BUEkoJnBh
Z2UpLCB0b0FQSShtZXRhZGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAg
IH0KLSNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIHZvaWQgcmVxdWVz
dFBvaW50ZXJMb2NrKFdlYlBhZ2VQcm94eSogcGFnZSkgZmluYWwKICAgICAgICAgewpAQCAtMjcz
Miw0MyArMjcxOCw2IEBAIHZvaWQgV0tQYWdlRGlkRGVueVBvaW50ZXJMb2NrKFdLUGFnZVJlZiAK
ICNlbmRpZgogfQogCi1ib29sIFdLUGFnZUhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVs
ZW1lbnRzKFdLUGFnZVJlZiBwYWdlKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAg
IHJldHVybiB0b0ltcGwocGFnZSktPmhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1l
bnRzKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLX0KLQotdm9pZCBXS1BhZ2VIYW5kbGVNZWRpYUV2ZW50KFdLUGFnZVJlZiBwYWdl
LCBXS01lZGlhRXZlbnRUeXBlIHdrRXZlbnRUeXBlKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQotICAgIE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZTsKLQotICAgIHN3aXRjaCAod2tFdmVu
dFR5cGUpIHsKLSAgICBjYXNlIGtXS01lZGlhRXZlbnRUeXBlUGxheVBhdXNlOgotICAgICAgICBl
dmVudFR5cGUgPSBNZWRpYUV2ZW50VHlwZTo6UGxheVBhdXNlOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIGtXS01lZGlhRXZlbnRUeXBlVHJhY2tOZXh0OgotICAgICAgICBldmVudFR5cGUgPSBN
ZWRpYUV2ZW50VHlwZTo6VHJhY2tOZXh0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGtXS01l
ZGlhRXZlbnRUeXBlVHJhY2tQcmV2aW91czoKLSAgICAgICAgZXZlbnRUeXBlID0gTWVkaWFFdmVu
dFR5cGU6OlRyYWNrUHJldmlvdXM7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
dG9JbXBsKHBhZ2UpLT5oYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShwYWdlKTsKLSAgICBVTlVTRURfUEFSQU0od2tFdmVudFR5cGUpOwotI2VuZGlm
Ci19Ci0KIHZvaWQgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5
UmVmKQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KHRvSW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
LmgJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDE5ICsxNTEsOCBAQCBlbnVtIHsK
IH07CiB0eXBlZGVmIHVpbnQzMl90IFdLTWVkaWFTdGF0ZTsKIAotCiBXS19FWFBPUlQgV0tNZWRp
YVN0YXRlIFdLUGFnZUdldE1lZGlhU3RhdGUoV0tQYWdlUmVmIHBhZ2UpOwogCi1lbnVtIHsKLSAg
ICBrV0tNZWRpYUV2ZW50VHlwZVBsYXlQYXVzZSwKLSAgICBrV0tNZWRpYUV2ZW50VHlwZVRyYWNr
TmV4dCwKLSAgICBrV0tNZWRpYUV2ZW50VHlwZVRyYWNrUHJldmlvdXMKLX07Ci10eXBlZGVmIHVp
bnQzMl90IFdLTWVkaWFFdmVudFR5cGU7Ci0KLVdLX0VYUE9SVCBib29sIFdLUGFnZUhhc01lZGlh
U2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKFdLUGFnZVJlZiBwYWdlKTsKLVdLX0VYUE9S
VCB2b2lkIFdLUGFnZUhhbmRsZU1lZGlhRXZlbnQoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFFdmVu
dFR5cGUgZXZlbnQpOwotCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VMb2FkVVJMV2l0aFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgYm9vbCBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzKTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlUG9zdFByZXNl
bnRhdGlvblVwZGF0ZUZ1bmN0aW9uKShXS0Vycm9yUmVmLCB2b2lkKik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgJKHJldmlzaW9uIDI2
Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNiBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VJ
c1BsYXlpbmdBdWRpb0RpZENoCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwg
V0tTZWN1cml0eU9yaWdpblJlZiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2sp
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHVz
ZXJNZWRpYURvY3VtZW50T3JpZ2luLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHRvcExldmVsRG9jdW1l
bnRPcmlnaW4sIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmIGRldmljZXNSZXF1ZXN0LCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZENsaWNrQXV0
b0ZpbGxCdXR0b25DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VNZWRpYVNlc3Np
b25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYVNlc3Np
b25NZXRhZGF0YVJlZiBtZXRhZGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVm
IHZvaWQgKCpXS0hhbmRsZUF1dG9wbGF5RXZlbnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdL
QXV0b3BsYXlFdmVudCBldmVudCwgV0tBdXRvcGxheUV2ZW50RmxhZ3MgZmxhZ3MsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9J
bmxpbmVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwog
dHlwZWRlZiB2b2lkICgqV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtNTAzLDcgKzUwMiw3IEBAIHR5cGVkZWYg
c3RydWN0IFdLUGFnZVVJQ2xpZW50VjUgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFs
ZXJ0OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CiAgICAgV0tQYWdlUnVu
SmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAg
ICBydW5KYXZhU2NyaXB0UHJvbXB0OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlk
Q2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRh
dGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlh
U2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogfSBXS1BhZ2VVSUNsaWVudFY1OwogCiB0eXBlZGVm
IHN0cnVjdCBXS1BhZ2VVSUNsaWVudFY2IHsKQEAgLTU3Niw3ICs1NzUsNyBAQCB0eXBlZGVmIHN0
cnVjdCBXS1BhZ2VVSUNsaWVudFY2IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVy
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJt
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENv
bmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJv
bXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3Jp
cHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25N
ZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vz
c2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0
byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4K
ICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC02NTYsNyArNjU1LDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWNyB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0
QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29u
ZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3Jp
cHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZh
U2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQYWdlTWVkaWFTZXNz
aW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBtZWRp
YVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVz
ZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAgICAvLyBWZXJzaW9u
IDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtNzQwLDcgKzczOSw3IEBAIHR5
cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjggewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRB
bGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNj
cmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZh
U2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlh
U2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
bWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAv
LyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogICAgIAogICAgIC8v
IFZlcnNpb24gNi4KICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkBAIC04MjgsNyArODI3
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWOSB7CiAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5K
YXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAg
IHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7Ci0gICAgV0tQ
YWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZTsKKyAgICB2b2lkKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
dXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCiAKICAg
ICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpAQCAtOTE5LDcg
KzkxOCw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjEwIHsKICAgICBXS1BhZ2VS
dW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAg
ICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFn
ZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAg
ICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBX
S1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAg
ICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAg
ICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4K
ICAgICAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOwpA
QCAtMTAxNCw3ICsxMDEzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTEgewog
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7
CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0
aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2U7Cisg
ICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRh
RGlkQ2hhbmdlLgogCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3
UGFnZTsKQEAgLTExMTIsNyArMTExMSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50
VjEyIHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hh
bmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25N
ZXRhZGF0YURpZENoYW5nZS4KICAgICAKICAgICAvLyBWZXJzaW9uIDYuCiAgICAgV0tQYWdlQ3Jl
YXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVOZXdQYWdlOwpAQCAtMTIxMyw3ICsxMjEyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQ
YWdlVUlDbGllbnRWMTMgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjU7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21w
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwotICAgIFdLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRh
RGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFTZXNzaW9uTWV0
YWRhdGFEaWRDaGFuZ2U7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1l
ZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgogCiAgICAgLy8gVmVyc2lvbiA2LgogICAgIFdL
UGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlTmV3UGFnZTsKQEAgLTEzMTcsNyArMTMxNiw3IEBAIHR5cGVkZWYgc3Ry
dWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVy
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJt
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENv
bmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJv
bXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3Jp
cHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKLSAgICBXS1BhZ2VNZWRpYVNlc3Npb25N
ZXRhZGF0YURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhU2Vz
c2lvbk1ldGFkYXRhRGlkQ2hhbmdlOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0
byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KIAogICAgIC8vIFZlcnNpb24gNi4K
ICAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHJldmlz
aW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV0tBcnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0
aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQotICAgIFJlZlB0cjxBUEk6OkFycmF5PiBvcmlnaW5VUkxzQXJyYXkgPSB0b0ltcGwo
b3JpZ2luVVJMc1JlZik7CisgICAgUmVmUHRyPEFQSTo6QXJyYXk+IG9yaWdpblVSTHNBcnJheSA9
IFdlYktpdDo6dG9JbXBsKG9yaWdpblVSTHNSZWYpOwogICAgIHNpemVfdCBuZXdTaXplID0gb3Jp
Z2luVVJMc0FycmF5ID8gb3JpZ2luVVJMc0FycmF5LT5zaXplKCkgOiAwOwogICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnM7CiAgICAgZG9tYWlucy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG5ld1NpemUpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzA2LDExICsxNzA2LDYgQEAKIAkJQzVGQTFFRDMxOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWly
UGxheVJvdXRlUGlja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNUZBMUVEMTE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIu
aCAqLzsgfTsKIAkJQzZBNENBMEIyMjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZBNENBMDky
MjUyODk5ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM2QTRDQTBDMjI1Mjg5OTgwMDE2OTI4OSAv
KiBXS0J1bmRsZVBhZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNkE0Q0EwQTIyNTI4OTk4MDAxNjkyODkgLyogV0tCdW5kbGVQYWdlTWFjLm1t
ICovOyB9OwotCQlDOThDNDhBNjFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDOThDNDhBNDFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
LmggKi87IH07Ci0JCUM5OEM0OEFBMUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzk4QzQ4QTgxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzlD
MTgzM0MxQjc0MDI2RDAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlDMTgz
MzgxQjczRkQ2QTAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5o
ICovOyB9OwotCQlDOUNENDM5ODFCNEIwMDFEMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0
YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5
Q0Q0Mzk0MUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovOyB9
OwotCQlDOUNENDM5RDFCNEIwMjRGMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlDRDQzOUEx
QjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQTA1Mzk3OTIzRUUzMjQ0MDBB
NTUzREMgLyogQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EwNTM5NzgyM0VFMzI0NDAwQTU1
M0RDIC8qIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCAqLzsgfTsKIAkJQ0Qw
MDNBNTMxOUQ0OUI1RDAwNUFCQ0UwIC8qIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMDAzQTUxMTlENDlC
NUQwMDVBQkNFMCAvKiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCUNEMEM2
ODMxMjAxRkQxMDEwMEE1OTQwOSAvKiBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwQzY4MkYyMDFGRDEw
MTAwQTU5NDA5IC8qIFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLmggKi87IH07CkBAIC01MDUy
LDE2ICs1MDQ3LDYgQEAKIAkJQzVGQTFFRDIxOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJv
dXRlUGlja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tB
aXJQbGF5Um91dGVQaWNrZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNr
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2QTRDQTA5MjI1Mjg5OTgwMDE2
OTI4OSAvKiBXS0J1bmRsZVBhZ2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2QTRDQTBBMjI1Mjg5OTgwMDE2OTI4
OSAvKiBXS0J1bmRsZVBhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0J1bmRsZVBh
Z2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5OEM0OEEzMUI2RkQ0QzMw
MDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1MTAzIC8q
IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzk4QzQ4QTcxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
Qzk4QzQ4QTgxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5QzE4MzM3MUI3M0ZENkEwMDcw
MzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlDMTgzMzgxQjczRkQ2QTAw
NzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzlDRDQzOTMxQjRCMDAwRTAwMjM5RTMz
IC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzlDRDQzOTQxQjRCMDAwRTAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lZGlhU2Vz
c2lvbk1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5Q0Q0Mzk5MUI0
QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tN
ZWRpYVNlc3Npb25NZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNB
MDUzOTc4MjNFRTMyNDQwMEE1NTNEQyAvKiBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJh
bWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwMDNBNTAxOUQ0OUI1RDAwNUFCQ0Uw
IC8qIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA7IHBhdGggPSBNZWRp
YUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDAwM0E1MTE5RDQ5QjVEMDA1QUJDRTAgLyogV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmg7IHBhdGggPSBNZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMzIsOCArNjExNyw2IEBACiAJ
CQkJQzAzMzdERDIxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwICovLAog
CQkJCUJDOUJBNTAyMTY5N0M0NTMwMEU0NDYxNiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5jcHAgKi8s
CiAJCQkJQkM5QkE1MDMxNjk3QzQ1MzAwRTQ0NjE2IC8qIFdlYktpdDJJbml0aWFsaXplLmggKi8s
Ci0JCQkJQzlDRDQzOTMxQjRCMDAwRTAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRh
LmNwcCAqLywKLQkJCQlDOUNENDM5NDFCNEIwMDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaCAqLywKIAkJCQk5MDU2MjBFODEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5
U2FtcGxlci5jcHAgKi8sCiAJCQkJOTA1NjIwRTkxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1lbW9y
eVNhbXBsZXIuaCAqLywKIAkJCQlDMDMzN0RBRjEyN0EyOEQwMDA4RkY0RjQgLyogV2ViTW91c2VF
dmVudC5jcHAgKi8sCkBAIC05MDUxLDEwICs5MDM0LDYgQEAKIAkJCQlCQzFCRTFGMTEyRDU0REJE
MDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25Qcm92aWRlci5jcHAgKi8sCiAJCQkJQkMxQkUxRjAx
MkQ1NERCRDAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIuaCAqLywKIAkJCQk1MUM4
RTE5QjFGMjE2MTcyMDBCRjczMUIgLyogV2ViSWNvbkRhdGFiYXNlLmggKi8sCi0JCQkJQzk4QzQ4
QTMxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgKi8s
Ci0JCQkJQzk4QzQ4QTQxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5oICovLAotCQkJCUM5QzE4MzM3MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJDbGllbnQuY3BwICovLAotCQkJCUM5QzE4MzM4MUI3M0ZENkEwMDcwMzZB
NyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCAqLywKIAkJCQkyRDNFRjQ0
MDE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLywKIAkJ
CQkyRDNFRjQ0MTE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Ki8sCiAJCQkJN0NDQ0M4RjgxQTVGNTBGRDAwOEZCMERBIC8qIFdlYk5hdmlnYXRpb25TdGF0ZS5j
cHAgKi8sCkBAIC05MjU3LDEwICs5MjM2LDYgQEAKIAkJCQk1MUE5RTEwODEzMTVDRDE4MDA5RTcw
MzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCAqLywKIAkJCQk1MUE5RTEwOTEzMTVD
RDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJMkQ3OTBB
OUUxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9kZS5oICovLAotCQkJCUM5OEM0OEE3MUI2
RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgKi8sCi0JCQkJ
Qzk4QzQ4QTgxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgg
Ki8sCi0JCQkJQzlDRDQzOTkxQjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRh
dGEuY3BwICovLAotCQkJCUM5Q0Q0MzlBMUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lv
bk1ldGFkYXRhLmggKi8sCiAJCQkJNUNBQkRDODQyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVzc2Fn
ZUxpc3RlbmVyLmNwcCAqLywKIAkJCQk1Q0FCREM4NTIyQzQwRkNDMDAxRURFOEUgLyogV0tNZXNz
YWdlTGlzdGVuZXIuaCAqLywKIAkJCQlDMTFFMTY5MzIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2Nr
RGlzcGxheS5jcHAgKi8sCkBAIC0xMTMyMCw5ICsxMTI5NSw2IEBACiAJCQkJQkM5QkE1MDUxNjk3
QzQ1MzAwRTQ0NjE2IC8qIFdlYktpdDJJbml0aWFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTYyODBDNzE5MTk5NTBDMDA2QUQ5RjkgLyogV2ViS2l0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0QwMDNBNTMxOUQ0OUI1RDAwNUFCQ0UwIC8qIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5OEM0OEE2MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5QzE4MzNDMUI3
NDAyNkQwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUM5Q0Q0Mzk4MUI0QjAwMUQwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Np
b25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI1QkVDMjYyNDAwRjRBOTAwNzBDNkVG
IC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEM0VGNDQzMTkxNzY0
NjMwMDAzNDE4NCAvKiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkwOTg1NEVEMTJCQzRFMTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTExNjIxLDggKzExNTkzLDYgQEAKIAkJCQk1MUE5RTEwQjEzMTVDRDE4MDA5
RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDc5MEE5RjFBRDcxNjQ5MDBBQjkwQjMgLyogV0tMYXlvdXRNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0U5MTIxNDIyOTNDMjgwMDA1QkVDNzggLyogV0tNYWluLmggaW4gSGVhZGVycyAqLywK
LQkJCQlDOThDNDhBQTFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUM5Q0Q0MzlEMUI0QjAyNEYwMDIzOUUzMyAvKiBXS01l
ZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0MEVFNjFCRjY3N0Uz
MDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNBQkRDODYyMkM0MEZERTAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxh
eS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24g
MjY3NzkwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzUsMjUgKzExNzUsNiBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6aGFuZGxlQXV0b3BsYXlFdmVuCiAgICAgbV9wYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b3BsYXlFdmVudChldmVudCwgZmxhZ3MpKTsK
IH0KIAotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6
aGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCBzdGF0
ZSkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYXNNZWRpYVNl
c3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShzdGF0ZSkpOwotfQotCi12b2lk
IFdlYkNocm9tZUNsaWVudDo6bWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoY29uc3QgTWVk
aWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Ok1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlKG1ldGFkYXRhKSk7
Ci19Ci0KLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERp
ZENoYW5nZSh1aW50NjRfdCBlbGVtZW50SUQpCi17Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Rm9jdXNlZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UoZWxlbWVu
dElEKSk7Ci19Ci0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAKIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CShyZXZpc2lvbiAyNjc3OTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNywxMiArMzM3LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6Ok1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncywgdWludDY0X3QpIGZpbmFsOwogICAgIHZvaWQg
aGFuZGxlQXV0b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2Vi
Q29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICB2b2lkIGhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzRGlk
Q2hhbmdlKGJvb2wpIGZpbmFsOwotICAgIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWV0YWRhdGEmKSBmaW5hbDsKLSAgICB2b2lk
IGZvY3VzZWRDb250ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90KSBmaW5hbDsKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAgICAgYm9vbCB3cmFwQ3J5cHRvS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50
OF90PiYpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI2Nzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTkwLDE4ICs1
MTkwLDYgQEAgdm9pZCBXZWJQYWdlOjpzdG9wTWVkaWFDYXB0dXJlKCkKICNlbmRpZgogfQogCi0j
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi12b2lkIFdlYlBhZ2U6OmhhbmRsZU1lZGlhRXZlbnQo
dWludDMyX3QgZXZlbnRUeXBlKQotewotICAgIG1fcGFnZS0+aGFuZGxlTWVkaWFFdmVudChzdGF0
aWNfY2FzdDxNZWRpYUV2ZW50VHlwZT4oZXZlbnRUeXBlKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6
c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElE
KQotewotICAgIG1fcGFnZS0+c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50
SUQpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGFnZTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5Jbldp
bmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiB7CiAgICAgaWYgKG1heVN0YXJ0TWVkaWEgPT0gbV9t
YXlTdGFydE1lZGlhV2hlbkluV2luZG93KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjcsMTEgKzk2
Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9v
bCk7CiAgICAgdm9pZCBzdG9wTWVkaWFDYXB0dXJlKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKLSAgICB2b2lkIGhhbmRsZU1lZGlhRXZlbnQodWludDMyX3QgLyogV2ViQ29yZTo6TWVk
aWFFdmVudFR5cGUgKi8pOwotICAgIHZvaWQgc2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91Ymxl
LCB1aW50NjRfdCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsT2Zm
c2V0UGlubmluZygpOwogCiAgICAgYm9vbCBtYWluRnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlk
ZXIoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtNDExLDExICs0MTEsNiBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWluCiAgICAgU2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVk
aWEpCiAgICAgU3RvcE1lZGlhQ2FwdHVyZSgpCiAKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
LSAgICBIYW5kbGVNZWRpYUV2ZW50KHVpbnQzMl90IGV2ZW50VHlwZSkKLSAgICBTZXRWb2x1bWVP
Zk1lZGlhRWxlbWVudChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCi0jZW5kaWYK
LQogICAgIFNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChib29sIGNhblJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCkKICAgICBTZXRDYW5SdW5Nb2RhbChib29sIGNhblJ1bk1vZGFs
KQogCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQkocmV2aXNpb24gMjY3NzkwKQorKysgU291cmNl
L2NtYWtlL09wdGlvbnNGVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNiBA
QCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0FVRElPIFBSSVZBVEUgT0ZGKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEg
UFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVE
SUFfQ0FQVFVSRSBQUklWQVRFIE9GRikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9NRURJQV9TRVNTSU9OIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NPVVJDRSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTIFBSSVZBVEUgT0ZG
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NUUkVBTSBQ
UklWQVRFIE9GRikKSW5kZXg6IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHJldmlzaW9uIDI2
Nzc5MCkKKysrIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMTY2LDcgKzE2Niw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX01BVEhNTCAiVG9nZ2xlIE1hdGhNTCBzdXBwb3J0IiBQ
UklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9DQVBUVVJF
ICJUb2dnbGUgTWVkaWEgQ2FwdHVyZSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUICJUb2dnbGUgZGVmaW5p
dGlvbiBvZiBtZWRpYSBjb250cm9scyBpbiBKYXZhc2NyaXB0IiBQUklWQVRFIE9OKQotICAgIFdF
QktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9TRVNTSU9OICJUb2dnbGUgTWVkaWEgU2Vz
c2lvbiBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfTUVESUFfU09VUkNFICJUb2dnbGUgTWVkaWEgU291cmNlIHN1cHBvcnQiIFBSSVZBVEUgT0ZG
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTICJUb2dn
bGUgTWVkaWEgU3RhdGlzdGljcyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfTUVESUFfU1RSRUFNICJUb2dnbGUgTWVkaWEgU3RyZWFtIHN1cHBv
cnQiIFBSSVZBVEUgT0ZGKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY3NzkwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFf
U0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBD
aHJpc3RlbnNlbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bToKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggTUVESUFfU0VTU0lP
TiBlbmFibGVkLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAg
ICAgICAgVXBkYXRlIG5hbWVzIHRvIG5ldyAndW51c2VkJyBuYW1pbmcuCisKIDIwMjAtMDktMzAg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3Ry
ZWFtZXJdIEludGVybmFsIGF1ZGlvIHJlbmRlcmluZyBzdXBwb3J0CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCShyZXZpc2lvbiAyNjc3OTApCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0JKHdvcmtpbmcgY29weSkKQEAgLTExOSw3
ICsxMTksNiBAQCBteSAoCiAgICAgJG1hdGhtbFN1cHBvcnQsCiAgICAgJG1lZGlhQ2FwdHVyZVN1
cHBvcnQsCiAgICAgJG1lZGlhQ29udHJvbHNTY3JpcHRTdXBwb3J0LAotICAgICRtZWRpYVNlc3Np
b25TdXBwb3J0LAogICAgICRtZWRpYVNvdXJjZVN1cHBvcnQsCiAgICAgJG1lZGlhU3RhdGlzdGlj
c1N1cHBvcnQsCiAgICAgJG1lZGlhU3RyZWFtU3VwcG9ydCwKQEAgLTM5OSw5ICszOTgsNiBAQCBt
eSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gIm1lZGlhLWNvbnRyb2xzLXNjcmlwdCIs
IGRlc2MgPT4gIlRvZ2dsZSBkZWZpbml0aW9uIG9mIG1lZGlhIGNvbnRyb2xzIGluIEphdmFzY3Jp
cHQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUIiwgdmFs
dWUgPT4gXCRtZWRpYUNvbnRyb2xzU2NyaXB0U3VwcG9ydCB9LAogCi0gICAgeyBvcHRpb24gPT4g
Im1lZGlhLXNlc3Npb24iLCBkZXNjID0+ICJUb2dnbGUgTWVkaWEgU2Vzc2lvbiBzdXBwb3J0IiwK
LSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX01FRElBX1NFU1NJT04iLCB2YWx1ZSA9PiBcJG1lZGlh
U2Vzc2lvblN1cHBvcnQgfSwKLQogICAgIHsgb3B0aW9uID0+ICJtZWRpYS1zb3VyY2UiLCBkZXNj
ID0+ICJUb2dnbGUgTWVkaWEgU291cmNlIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfTUVESUFfU09VUkNFIiwgdmFsdWUgPT4gXCRtZWRpYVNvdXJjZVN1cHBvcnQgfSwKIApJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2
Nzc5MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODEsNyArMzgxLDcgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpj
cmVhdGVPdGhlclBhZwogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKICAgICAgICAg
MCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFBy
b21wdAotICAgICAgICAwLCAvLyBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZQorICAgICAg
ICAwLCAvLyB1bnVzZWQ1CiAgICAgICAgIGNyZWF0ZU90aGVyUGFnZSwKICAgICAgICAgcnVuSmF2
YVNjcmlwdEFsZXJ0LAogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQpAQCAtNzE0
LDcgKzcxNCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3AKICAg
ICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3Jp
cHRDb25maXJtCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKLSAgICAgICAgMCwg
Ly8gbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UKKyAgICAgICAgMCwgLy8gdW51c2VkNQog
ICAgICAgICBjcmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydCwKICAg
ICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzc5
MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDIwLTA5LTMwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgY29kZSBiZWhpbmQgRU5BQkxFKE1FRElBX1NFU1NJT04pLCBubyBwb3J0cyBlbmFi
bGUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NjgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAg
UmVtb3ZlIGFsd2F5cyBza2lwcGVkIE1lZGlhIFNlc3Npb24gdGVzdHMuCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogbWVkaWEvc2Vzc2lvbjogUmVtb3ZlZC4KKwogMjAyMC0wOS0zMCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciBzaG91
bGQgc3VwcG9ydCBpc1R5cGVTdXBwb3J0ZWQKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNp
b24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5
KQpAQCAtMTkzMSw5ICsxOTMxLDYgQEAgZmFzdC9pbWFnZXMvYW5pbWF0ZWQtd2VicC5odG1sIFsg
U2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xNDYxODIgZWRpdGluZy9zZWxlY3Rpb24vbGVhay1kb2N1
bWVudC13aXRoLXNlbGVjdGlvbi1pbnNpZGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgTWVk
aWEgU2Vzc2lvbnMgaXMgbm90IHlldCBlbmFibGVkIGJ5IGRlZmF1bHQ6IEVOQUJMRShNRURJQV9T
RVNTSU9OKQotbWVkaWEvc2Vzc2lvbiBbIFNraXAgXQotCiAjIEV4cGVyaW1lbnRhbCBIMjY1IHN1
cHBvcnQuCiB3ZWJydGMvaDI2NS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApJbmRleDogTGF5b3V0
VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyNjc3OTApCisrKyBM
YXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTgsOCArMjU4LDYgQEAgbWVkaWEvcHJlc2VudGF0aW9ubW9kZWNoYW5nZWQtZmlyZWQtb25j
ZQogbWVkaWEvcHJvZ3Jlc3MtZXZlbnRzLWdlbmVyYXRlZC1jb3JyZWN0bHkuaHRtbCBbIFNraXAg
XQogbWVkaWEvcmVtb3RlcGxheWJhY2stcHJvbXB0Lmh0bWwgWyBTa2lwIF0KIAotbWVkaWEvc2Vz
c2lvbiBbIFNraXAgXQotCiBtZWRpYS90cmFjay9hdWRpby9hdWRpby10cmFjay1ta3Ytdm9yYmlz
LWFkZHRyYWNrLmh0bWwgWyBTa2lwIF0KIG1lZGlhL3RyYWNrL2F1ZGlvL2F1ZGlvLXRyYWNrLW1r
di12b3JiaXMtZW5hYmxlZC5odG1sIFsgU2tpcCBdCiBtZWRpYS90cmFjay9hdWRpby9hdWRpby10
cmFjay1ta3Ytdm9yYmlzLWxhbmd1YWdlLmh0bWwgWyBTa2lwIF0KSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3Nlc3Npb24vY29udGVudC1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vY29udGVudC1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0x
LDEyICswLDAgQEAKLSdDb250ZW50JyBzdGFydCBvZiBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3Vs
ZCBpbmRlZmluaXRlbHkgcGF1c2UgJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25zLgotCi0KLVdhaXRp
bmcgZm9yIENvbnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4KLU1lZGlhIGJlZ2FuIHBsYXlp
bmcuCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9u
KSA9PSAnYWN0aXZlJykgT0sKLVNlbmRpbmcgJ0NvbnRlbnQnIHN0YXJ0LW9mLWludGVycnVwdGlv
biBub3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25TdGFydE9mSW50
ZXJydXB0aW9uTm90aWZpY2F0aW9uKCJjb250ZW50IikpCi1UaGUgbWVkaWEgZWxlbWVudCB3YXMg
cGF1c2VkLgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbikgPT0gJ2lkbGUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi9jb250ZW50LWludGVycnVwdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0aW9ucy5odG1sCShyZXZpc2lv
biAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtaW50ZXJydXB0
aW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsKLSAg
ICAKLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBm
aW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lv
bigiY29udGVudCIpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIldhaXRpbmcgZm9yIENv
bnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4iKQotICAgICAgICAgICAgdmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAg
ICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB2aWRlby5vbnBsYXlpbmcg
PSBiZWdhblBsYXlpbmc7Ci0gICAgICAgICAgICB2aWRlby5vbmNhbnBsYXl0aHJvdWdoID0gY2Fu
cGxheXRocm91Z2g7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3Vn
aCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHZp
ZGVvLm9ucGF1c2UgPSBwYXVzZWQ7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9u
Q3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyAnQ29udGVudCcgc3RhcnQtb2YtaW50
ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFs
cy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigiY29udGVu
dCIpJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBwYXVz
ZWQoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGhlIG1lZGlh
IGVsZW1lbnQgd2FzIHBhdXNlZC4iKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMu
bWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImlkbGUiKTsKLQotICAgICAgICAg
ICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+J0NvbnRlbnQnIHN0YXJ0IG9mIGludGVycnVwdGlv
biBldmVudHMgc2hvdWxkIGluZGVmaW5pdGVseSBwYXVzZSAnQ29udGVudCcgbWVkaWEgc2Vzc2lv
bnMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIGNvbnRyb2xzPiA8L3ZpZGVvPgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Np
b24tZm9jdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nl
c3Npb24vY29udGVudC1zZXNzaW9uLWZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3Nzkw
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50LXNlc3Npb24tZm9jdXMtZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMjIgKzAsMCBAQAotUGxheWluZyBhIG1lZGlh
IGVsZW1lbnQgYmVsb25naW5nIHRvIGEgQ29udGVudCBtZWRpYSBzZXNzaW9uIHNob3VsZCBwYXVz
ZSBvdGhlciBwbGF5aW5nIENvbnRlbnQgbWVkaWEgZWxlbWVudHMuCi0KLQotRVZFTlQoY2FucGxh
eXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8xLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBw
bGF5aW5nIGZpcnN0IHZpZGVvLgotRVZFTlQocGxheWluZykKLUZpcnN0IHZpZGVvIGJlZ2FuIHBs
YXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8xLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotCi1TZXR0aW5n
IHVwIHNlY29uZCB2aWRlby4KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVv
MS5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLUVYUEVDVEVEICh2aWRlbzIucGF1c2VkID09ICd0cnVl
JykgT0sKLUJlZ2luIHBsYXlpbmcgc2Vjb25kIHZpZGVvLgotRVZFTlQocGxheWluZykKLVNlY29u
ZCB2aWRlbyBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvMi5wYXVzZWQgPT0gJ2ZhbHNl
JykgT0sKLUVWRU5UKHBhdXNlKQotRVhQRUNURUQgKHZpZGVvMS5wYXVzZWQgPT0gJ3RydWUnKSBP
SwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250ZW50
LXNlc3Npb24tZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNz
aW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy5odG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRlbnQtc2Vzc2lvbi1mb2N1cy5odG1sCShub25leGlz
dGVudCkKQEAgLTEsNzEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
ICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbiwgdmlkZW8xLCB2aWRlbzI7Ci0KLSAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBzZXNzaW9u
ID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotCi0gICAgICAgICAgICB2aWRlbzEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8xIik7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZl
bnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nVmlkZW8xLCBmYWxzZSwgdHJ1ZSwgdmlk
ZW8xKTsKLSAgICAgICAgICAgIHZpZGVvMS5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIu
Li9jb250ZW50L2NvdW50aW5nIik7Ci0gICAgICAgICAgICB2aWRlbzEuc2Vzc2lvbiA9IHNlc3Np
b247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmdWaWRl
bzEsIGZhbHNlLCB0cnVlLCB2aWRlbzEpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
YmVnaW5QbGF5aW5nVmlkZW8xKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3ZpZGVvMS5wYXVzZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJCZWdpbiBwbGF5aW5nIGZpcnN0IHZpZGVvLiIpOwotICAgICAgICAgICAgdmlkZW8xLnBsYXko
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZ1ZpZGVvMShldmVu
dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJGaXJzdCB2aWRlbyBiZWdh
biBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlbzEucGF1c2VkJywg
ZmFsc2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJTZXR0aW5nIHVwIHNlY29uZCB2aWRlby4iKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgdmlkZW8yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZp
ZGVvMiIpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2lu
UGxheWluZ1ZpZGVvMiwgZmFsc2UsIHRydWUsIHZpZGVvMik7Ci0gICAgICAgICAgICB2aWRlbzIu
c3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAg
ICAgICAgICAgdmlkZW8yLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nVmlkZW8yLCBmYWxzZSwgdHJ1ZSwgdmlkZW8yKTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nVmlkZW8y
KGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMS5wYXVz
ZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMi5wYXVzZWQnLCB0
cnVlKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGF1c2UnLCBwYXVzZWRWaWRlbzEsIGZh
bHNlLCB0cnVlLCB2aWRlbzEpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBs
YXlpbmcgc2Vjb25kIHZpZGVvLiIpOwotICAgICAgICAgICAgdmlkZW8yLnBsYXkoKTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rpb24gcGF1c2VkVmlkZW8xKGV2ZW50KQotICAg
ICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvMS5wYXVzZWQnLCB0cnVlKTsK
LSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJl
Z2FuUGxheWluZ1ZpZGVvMihldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJTZWNvbmQgdmlkZW8gYmVnYW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgndmlkZW8yLnBhdXNlZCcsIGZhbHNlKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlBsYXlpbmcgYSBtZWRp
YSBlbGVtZW50IGJlbG9uZ2luZyB0byBhIENvbnRlbnQgbWVkaWEgc2Vzc2lvbiBzaG91bGQgcGF1
c2Ugb3RoZXIgcGxheWluZyBDb250ZW50IG1lZGlhIGVsZW1lbnRzLjwvcD4KLSAgICA8dmlkZW8g
aWQ9InZpZGVvMSIgLz4KLSAgICA8dmlkZW8gaWQ9InZpZGVvMiIgLz4KLTwvYm9keT4KLTwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vY29udHJvbHMtZXhpc3RlbmNlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2NvbnRy
b2xzLWV4aXN0ZW5jZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vY29udHJvbHMtZXhpc3RlbmNlLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCkBAIC0xLDEyICswLDAgQEAKLU9ubHkgQ29udGVudCBNZWRpYSBTZXNzaW9ucyBzaG91
bGQgaGF2ZSBtZWRpYSByZW1vdGUgY29udHJvbHMgYWZ0ZXIgY3JlYXRpb24uCi0KLVJVTihzZXNz
aW9uID0gbmV3IE1lZGlhU2Vzc2lvbignY29udGVudCcpKQotRVhQRUNURUQgKHNlc3Npb24uY29u
dHJvbHMgIT0gJ251bGwnKSBPSwotUlVOKHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCd0cmFu
c2llbnQnKSkKLUVYUEVDVEVEIChzZXNzaW9uLmNvbnRyb2xzID09ICdudWxsJykgT0sKLVJVTihz
ZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigndHJhbnNpZW50LXNvbG8nKSkKLUVYUEVDVEVEIChz
ZXNzaW9uLmNvbnRyb2xzID09ICdudWxsJykgT0sKLVJVTihzZXNzaW9uID0gbmV3IE1lZGlhU2Vz
c2lvbignYW1iaWVudCcpKQotRVhQRUNURUQgKHNlc3Npb24uY29udHJvbHMgPT0gJ251bGwnKSBP
SwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9jb250cm9s
cy1leGlzdGVuY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L2NvbnRyb2xzLWV4aXN0ZW5jZS5odG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL2NvbnRyb2xzLWV4aXN0ZW5jZS5odG1sCShub25leGlzdGVudCkKQEAg
LTEsMzMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3Jp
cHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsKLSAgICAKLSAgICAgICAgZnVuY3Rp
b24gZG9UZXN0ICgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlh
U2Vzc2lvbigiY29udGVudCIpOwotICAgICAgICAgICAgcnVuKCJzZXNzaW9uID0gbmV3IE1lZGlh
U2Vzc2lvbignY29udGVudCcpIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInNlc3Npb24u
Y29udHJvbHMiLCBudWxsLCAnIT0nKTsKLQotICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBNZWRp
YVNlc3Npb24oInRyYW5zaWVudCIpOwotICAgICAgICAgICAgcnVuKCJzZXNzaW9uID0gbmV3IE1l
ZGlhU2Vzc2lvbigndHJhbnNpZW50JykiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgic2Vz
c2lvbi5jb250cm9scyIsIG51bGwpOwotCi0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlh
U2Vzc2lvbigidHJhbnNpZW50LXNvbG8iKTsKLSAgICAgICAgICAgIHJ1bigic2Vzc2lvbiA9IG5l
dyBNZWRpYVNlc3Npb24oJ3RyYW5zaWVudC1zb2xvJykiKTsKLSAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgic2Vzc2lvbi5jb250cm9scyIsIG51bGwpOwotCi0gICAgICAgICAgICBzZXNzaW9uID0g
bmV3IE1lZGlhU2Vzc2lvbigiYW1iaWVudCIpOwotICAgICAgICAgICAgcnVuKCJzZXNzaW9uID0g
bmV3IE1lZGlhU2Vzc2lvbignYW1iaWVudCcpIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InNlc3Npb24uY29udHJvbHMiLCBudWxsKTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAg
ICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4K
LSAgICA8cD5Pbmx5IENvbnRlbnQgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIGhhdmUgbWVkaWEgcmVt
b3RlIGNvbnRyb2xzIGFmdGVyIGNyZWF0aW9uLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vZGVmYXVsdC1zZXNzaW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vzc2lvbi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Np
b24vZGVmYXVsdC1zZXNzaW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDYgKzAs
MCBAQAotTmV3IG1lZGlhIGVsZW1lbnRzIGFyZSBhc3NpZ25lZCB0byB0aGUgRGVmYXVsdCBtZWRp
YSBzZXNzaW9uLCB3aGljaCBpcyBub3QgZXhwb3NlZCB0aHJvdWdoIHRoZSBzZXNzaW9uIGF0dHJp
YnV0ZS4KLQotUlVOKGF1ZGlvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlv
JykpCi1FWFBFQ1RFRCAoYXVkaW9FbGVtZW50LnNlc3Npb24gPT0gJ251bGwnKSBPSwotRU5EIE9G
IFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9kZWZhdWx0LXNlc3Npb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL2RlZmF1bHQtc2Vz
c2lvbi5odG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L2RlZmF1bHQtc2Vzc2lvbi5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTkgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAg
ICAgICBmdW5jdGlvbiBkb1Rlc3QgKCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhdWRp
b0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhdWRpbyIpOwotICAgICAgICAgICAg
cnVuKCJhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhdWRpbycpIik7Ci0g
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImF1ZGlvRWxlbWVudC5zZXNzaW9uIiwgbnVsbCk7Ci0K
LSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+Ci0gICAgPHA+TmV3IG1lZGlhIGVsZW1lbnRzIGFy
ZSBhc3NpZ25lZCB0byB0aGUgRGVmYXVsdCBtZWRpYSBzZXNzaW9uLCB3aGljaCBpcyBub3QgZXhw
b3NlZCB0aHJvdWdoIHRoZSBzZXNzaW9uIGF0dHJpYnV0ZS48L3A+Ci08L2JvZHk+Ci08L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRz
LWluLWNvbnRlbnQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNz
aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlh
L3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMSArMCwwIEBACi0nQ29udGVudCcgc2Vzc2lv
bnMgdGhhdCBhcmUgYWN0aXZlIHNob3VsZCByZXNwb25kIHRvIFBsYXkvUGF1c2UgbWVkaWEgY29u
dHJvbCBldmVudHMuCi0KLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAoaW50ZXJu
YWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi1JZGxl
IE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4K
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotU2VuZGluZyBQbGF5L1BhdXNl
IG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXkt
cGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotCi1QbGF5aW5n
IG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAo
dmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLVNlbmRpbmcgUGxheS9Q
YXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJw
bGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUVORCBP
RiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRp
YS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNz
aW9ucy5odG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDYxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0KLSAgICAgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vz
c2lvbigiY29udGVudCIpOwotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAg
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAg
ICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQv
Y291bnRpbmciKTsKLSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAg
ICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwg
dmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUo
c2Vzc2lvbiknLCAiaWRsZSIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIklkbGUgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2Ug
ZXZlbnRzLiIpOwotCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRy
dWUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewot
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2
ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRyb2xF
dmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRl
by5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUGxheWluZyBtZWRpYS4iKTsKLSAg
ICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJl
Z2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJN
ZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5w
YXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0g
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVu
dFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJTZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEgZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAg
cnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD4nQ29udGVudCcg
c2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIHNob3VsZCByZXNwb25kIHRvIFBsYXkvUGF1c2UgbWVk
aWEgY29udHJvbCBldmVudHMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVk
aWEtZXZlbnRzLWluLWRlZmF1bHQtc2Vzc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tZGVm
YXVsdC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNz
aW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOCArMCwwIEBACi0nRGVmYXVs
dCcgbWVkaWEgc2Vzc2lvbnMgc2hvdWxkIHJlc3BvbmQgdG8gcGxheS9wYXVzZSBtZWRpYSBldmVu
dHMuCi0KLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICd0cnVlJykgT0sKLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5h
bHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8u
cGF1c2VkID09ICd0cnVlJykgT0sKLQotUGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcpCi1N
ZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBP
SwotU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVk
aWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0g
J3RydWUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lv
bi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1kZWZhdWx0LXNlc3Npb25zLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50
cy1pbi1kZWZhdWx0LXNlc3Npb25zLmh0bWwJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vcGxheS1wYXVzZS1tZWRpYS1ldmVudHMtaW4tZGVmYXVsdC1zZXNz
aW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBmdW5jdGlvbiBydW5UZXN0
KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAgICAgICAg
ICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAg
ICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3Vu
dGluZyIpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5n
LCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVn
aW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3Zp
ZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykg
ewotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlh
IGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYUNvbnRy
b2xFdmVudCgicGxheS1wYXVzZSIpJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2
aWRlby5wYXVzZWQnLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUGxheWluZyBtZWRpYS4iKTsK
LSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRl
by5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEg
ZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJv
bEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3Zp
ZGVvLnBhdXNlZCcsIHRydWUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBlbmRUZXN0
KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KLSAgICA8cD4nRGVmYXVsdCcgbWVkaWEgc2Vzc2lvbnMgc2hvdWxkIHJlc3BvbmQg
dG8gcGxheS9wYXVzZSBtZWRpYSBldmVudHMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXkt
cGF1c2UtbWVkaWEtZXZlbnRzLWluLW5vbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEt
ZXZlbnRzLWluLW5vbi1jb250ZW50LXNlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3
NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50
cy1pbi1ub24tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAt
MSw0MSArMCwwIEBACi0nVHJhbnNpZW50JywgJ1RyYW5zaWVudCBTb2xvJywgYW5kICdBbWJpZW50
JyBzZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBtZWRpYSBjb250cm9s
IGV2ZW50cy4KLQotCi0tLS0KLVRlc3RpbmcgInRyYW5zaWVudCIgc2Vzc2lvbiBraW5kCi0tLS0K
LUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVZFTlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlp
bmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50
ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sK
LU5vbi1Db250ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBub3QgcmVzcG9uZCB0byBQbGF5L1Bh
dXNlIGV2ZW50cy4KLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5h
bHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNlIikpCi1FWFBFQ1RFRCAodmlkZW8u
cGF1c2VkID09ICdmYWxzZScpIE9LCi0tLS0KLVRlc3RpbmcgInRyYW5zaWVudC1zb2xvIiBzZXNz
aW9uIGtpbmQKLS0tLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi1FVkVOVChwbGF5aW5nKQotTWVk
aWEgYmVnYW4gcGxheWluZy4KLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sK
LUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09
ICdhY3RpdmUnKSBPSwotTm9uLUNvbnRlbnQgTWVkaWEgU2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNw
b25kIHRvIFBsYXkvUGF1c2UgZXZlbnRzLgotU2VuZGluZyBQbGF5L1BhdXNlIG1lZGlhIGV2ZW50
LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInBsYXktcGF1c2UiKSkKLUVY
UEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKLS0tLQotVGVzdGluZyAiYW1iaWVu
dCIgc2Vzc2lvbiBraW5kCi0tLS0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVZFTlQocGxheWlu
ZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxz
ZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKSA9PSAnYWN0aXZlJykgT0sKLU5vbi1Db250ZW50IE1lZGlhIFNlc3Npb25zIHNob3VsZCBu
b3QgcmVzcG9uZCB0byBQbGF5L1BhdXNlIGV2ZW50cy4KLVNlbmRpbmcgUGxheS9QYXVzZSBtZWRp
YSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwbGF5LXBhdXNl
IikpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1FTkQgT0YgVEVTVAot
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3BsYXktcGF1c2UtbWVkaWEtZXZlbnRz
LWluLW5vbi1jb250ZW50LXNlc3Npb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi9wbGF5LXBhdXNlLW1lZGlhLWV2ZW50cy1pbi1ub24tY29udGVudC1zZXNz
aW9ucy5odG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9u
L3BsYXktcGF1c2UtbWVkaWEtZXZlbnRzLWluLW5vbi1jb250ZW50LXNlc3Npb25zLmh0bWwJKG5v
bmV4aXN0ZW50KQpAQCAtMSw2MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uOwotCi0gICAgICAgIGZ1bmN0
aW9uIHJ1bkFsbFRlc3RzKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGJlZ2luUGxh
eWluZyk7Ci0gICAgICAgICAgICBydW5UZXN0KCJ0cmFuc2llbnQiKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qoc2Vzc2lvbktpbmQpIAotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb25zb2xlV3JpdGUoJy0tLScpOwotICAgICAgICAgICAgY29uc29sZVdyaXRlKCdUZXN0
aW5nICInICsgc2Vzc2lvbktpbmQgKyAnIiBzZXNzaW9uIGtpbmQnKTsKLSAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgnLS0tJyk7Ci0KLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNz
aW9uKHNlc3Npb25LaW5kKTsKLQotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmls
ZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vz
c2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdh
blBsYXlpbmcsIGZhbHNlLCB0cnVlLCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZpZGVvLnBs
YXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5n
LiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0K
LSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywg
ImFjdGl2ZSIpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJOb24tQ29udGVudCBN
ZWRpYSBTZXNzaW9ucyBzaG91bGQgbm90IHJlc3BvbmQgdG8gUGxheS9QYXVzZSBldmVudHMuIik7
Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIFBsYXkvUGF1c2UgbWVkaWEg
ZXZlbnQuIik7Ci0gICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJv
bEV2ZW50KCJwbGF5LXBhdXNlIiknKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3Zp
ZGVvLnBhdXNlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKHZpZGVvLnNlc3Npb24ua2luZCA9PSAidHJhbnNpZW50IikKLSAgICAgICAgICAg
ICAgICBydW5UZXN0KCJ0cmFuc2llbnQtc29sbyIpOwotICAgICAgICAgICAgZWxzZSBpZiAodmlk
ZW8uc2Vzc2lvbi5raW5kID09ICJ0cmFuc2llbnQtc29sbyIpCi0gICAgICAgICAgICAgICAgcnVu
VGVzdCgiYW1iaWVudCIpOwotICAgICAgICAgICAgZWxzZSBpZiAodmlkZW8uc2Vzc2lvbi5raW5k
ID09ICJhbWJpZW50IikKLSAgICAgICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgc2Vzc2lvbiBraW5kIik7
Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuQWxs
VGVzdHMoKSI+Ci0gICAgPHA+J1RyYW5zaWVudCcsICdUcmFuc2llbnQgU29sbycsIGFuZCAnQW1i
aWVudCcgc2Vzc2lvbnMgc2hvdWxkIG5vdCByZXNwb25kIHRvIFBsYXkvUGF1c2UgbWVkaWEgY29u
dHJvbCBldmVudHMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3JlbGVhc2luZy1zZXNzaW9ucy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9yZWxl
YXNpbmctc2Vzc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3JlbGVhc2luZy1zZXNzaW9ucy1leHBlY3RlZC50eHQJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxNSArMCwwIEBACi1TZXNzaW9ucyB0aGF0IGFyZSBleHBsaWNpdGx5IHJl
bGVhc2VkIHNob3VsZCBoYXZlIHRoZWlyIG1lZGlhIGVsZW1lbnRzIGluZGVmaW5pdGVseSBwYXVz
ZWQgYW5kIGdvIGludG8gYW4gSWRsZSBzdGF0ZS4KLQotCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkK
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotQmVnaW4gcGxheWluZyBtZWRp
YS4KLUVWRU5UKHBsYXlpbmcpCi1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVv
LnBhdXNlZCA9PSAnZmFsc2UnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25D
dXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1SVU4oc2Vzc2lvbi5kZWFjdGl2
YXRlKCkpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKLUVYUEVDVEVEIChp
bnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pID09ICdpZGxlJykgT0sK
LUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vcmVsZWFzaW5n
LXNlc3Npb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9y
ZWxlYXNpbmctc2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvc2Vzc2lvbi9yZWxlYXNpbmctc2Vzc2lvbnMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0x
LDUxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0
IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL21l
ZGlhLWZpbGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KLSAgICAgICAgdmFyIHNlc3Npb247Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAot
ICAgICAgICB7Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVu
dCIpOwotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0
Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZp
ZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsK
LSAgICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7
Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBsYXlpbmcgbWVkaWEuIik7Ci0gICAgICAgICAg
ICB2aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlp
bmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVn
YW4gcGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywg
ZmFsc2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vz
c2lvbiknLCAiYWN0aXZlIik7Ci0KLSAgICAgICAgICAgIHJ1bignc2Vzc2lvbi5kZWFjdGl2YXRl
KCknKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5wYXVzZWQnLCB0cnVlKTsK
LQotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywg
ImlkbGUiKTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9Ci0gICAgPC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+U2Vzc2lvbnMg
dGhhdCBhcmUgZXhwbGljaXRseSByZWxlYXNlZCBzaG91bGQgaGF2ZSB0aGVpciBtZWRpYSBlbGVt
ZW50cyBpbmRlZmluaXRlbHkgcGF1c2VkIGFuZCBnbyBpbnRvIGFuIElkbGUgc3RhdGUuPC9wPgot
ICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3Nlc3Npb24tY3JlYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lvbi1jcmVhdGlvbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vz
c2lvbi1jcmVhdGlvbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMCArMCwwIEBA
Ci1OZXcgbWVkaWEgc2Vzc2lvbnMgc2hvdWxkIGJlIGluIGFuIElkbGUgc3RhdGUgYWZ0ZXIgY3Jl
YXRpb24uCi0KLQotLS0tCi1UZXN0aW5nICJuZXcgTWVkaWFTZXNzaW9uKCdjb250ZW50JykiCi1F
WFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAn
aWRsZScpIE9LCi0tLS0KLQotLS0tCi1UZXN0aW5nICJuZXcgTWVkaWFTZXNzaW9uKCd0cmFuc2ll
bnQnKSIKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pID09ICdpZGxlJykgT0sKLS0tLQotCi0tLS0KLVRlc3RpbmcgIm5ldyBNZWRpYVNlc3Npb24o
J3RyYW5zaWVudC1zb2xvJykiCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJl
bnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi0tLS0KLQotLS0tCi1UZXN0aW5nICJuZXcg
TWVkaWFTZXNzaW9uKCdhbWJpZW50JykiCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lv
bkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi0tLS0KLQotLS0tCi1UZXN0aW5n
ICJuZXcgTWVkaWFTZXNzaW9uKCkiCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1
cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaWRsZScpIE9LCi0tLS0KLQotRU5EIE9GIFRFU1QKLQpJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zZXNzaW9uLWNyZWF0aW9uLmh0
bWwJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc2Vzc2lv
bi1jcmVhdGlvbi5odG1sCShub25leGlzdGVudCkKQEAgLTEsMzkgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBm
dW5jdGlvbiBkb1Rlc3QoKSAKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5k
KCJjb250ZW50Iik7Ci0gICAgICAgICAgICB0ZXN0U2Vzc2lvbktpbmQoInRyYW5zaWVudCIpOwot
ICAgICAgICAgICAgdGVzdFNlc3Npb25LaW5kKCJ0cmFuc2llbnQtc29sbyIpOwotICAgICAgICAg
ICAgdGVzdFNlc3Npb25LaW5kKCJhbWJpZW50Iik7Ci0gICAgICAgICAgICB0ZXN0U2Vzc2lvbktp
bmQoKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAgICAgICAgIGVuZFRl
c3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RTZXNzaW9uS2luZChzZXNz
aW9uS2luZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+LS0tIik7
Ci0KLSAgICAgICAgICAgIGlmIChzZXNzaW9uS2luZCAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3RpbmcgXCJuZXcgTWVkaWFTZXNzaW9uKCciICsgc2Vz
c2lvbktpbmQgKyAiJylcIiIpOwotICAgICAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFT
ZXNzaW9uKHNlc3Npb25LaW5kKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCJUZXN0aW5nIFwibmV3IE1lZGlhU2Vzc2lvbigpXCIiKTsKLSAgICAg
ICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAi
aWRsZSIpOwotICAgICAgICAgICAgY29uc29sZVdyaXRlKCItLS0iKTsKLSAgICAgICAgfQotICAg
IDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+Ci0gICAgPHA+TmV3
IG1lZGlhIHNlc3Npb25zIHNob3VsZCBiZSBpbiBhbiBJZGxlIHN0YXRlIGFmdGVyIGNyZWF0aW9u
LjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24v
c3dpdGNoaW5nLXNlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS9zZXNzaW9uL3N3aXRjaGluZy1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI2Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vc3dpdGNoaW5nLXNlc3Npb25z
LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE0ICswLDAgQEAKLVdoZW4gc3dpdGNo
aW5nIG1lZGlhIHNlc3Npb25zLCBtZWRpYSBlbGVtZW50cyBiZWxvbmdpbmcgdG8gdGhlIG9sZCBz
ZXNzaW9uIHNob3VsZCBiZSBwYXVzZWQuCi0KLQotUlVOKHNlc3Npb24gPSBuZXcgTWVkaWFTZXNz
aW9uKCJjb250ZW50IikpCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRlby5w
YXVzZWQgPT0gJ3RydWUnKSBPSwotQmVnaW4gcGxheWluZyBtZWRpYS4KLUVWRU5UKHBsYXlpbmcp
Ci1NZWRpYSBiZWdhbiBwbGF5aW5nLgotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2Un
KSBPSwotUlVOKHZpZGVvLnNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJ0cmFuc2llbnQiKSkK
LUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi9zd2l0Y2hpbmctc2Vzc2lvbnMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3N3aXRjaGluZy1zZXNzaW9ucy5o
dG1sCShyZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3N3aXRj
aGluZy1zZXNzaW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vz
c2lvbjsKLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJ1bignc2Vzc2lvbiA9IG5ldyBNZWRpYVNlc3Npb24oImNvbnRlbnQiKScpOwotCi0gICAg
ICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Nh
bnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAgICAgICAgICAg
IHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5
aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAgICAgICBjb25z
b2xlV3JpdGUoIkJlZ2luIHBsYXlpbmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2aWRlby5wbGF5
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmcoZXZlbnQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4gcGxheWluZy4i
KTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFsc2UpOwotCi0g
ICAgICAgICAgICBydW4oJ3ZpZGVvLnNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJ0cmFuc2ll
bnQiKScpOwotCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUp
OwotCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5XaGVuIHN3aXRjaGluZyBt
ZWRpYSBzZXNzaW9ucywgbWVkaWEgZWxlbWVudHMgYmVsb25naW5nIHRvIHRoZSBvbGQgc2Vzc2lv
biBzaG91bGQgYmUgcGF1c2VkLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1l
dmVudHMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1l
dmVudHMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTYgKzAsMCBA
QAotUHJldmlvdXMvTmV4dCBUcmFjayBldmVudHMgc2hvdWxkIG5vdCBiZSBmaXJlZCBpZiBwcmV2
aW91cy9uZXh0VHJhY2tFbmFibGVkIGFyZSAnZmFsc2UnLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJv
dWdoKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5aW5n
IG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RFRCAo
dmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vz
c2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLVNlbmRpbmcgTmV4dCBU
cmFjayBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJu
ZXh0LXRyYWNrIikpCi1TZW5kaW5nIFByZXZpb3VzIFRyYWNrIG1lZGlhIGV2ZW50LgotUlVOKGlu
dGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInByZXZpb3VzLXRyYWNrIikpCi1FTkQgT0Yg
VEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYWNrLW1lZGlhLWV2ZW50
cy1kaXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24v
dHJhY2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWRpc2FibGVkLmh0bWwJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw2OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNzaW9uLCBjb250cm9sczsKLQot
ICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlc3Np
b24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50Iik7Ci0gICAgICAgICAgICBjb250cm9scyA9
IHNlc3Npb24uY29udHJvbHM7Ci0gICAgICAgICAgICBjb250cm9scy5uZXh0VHJhY2tFbmFibGVk
ID0gZmFsc2U7Ci0gICAgICAgICAgICBjb250cm9scy5wcmV2aW91c1RyYWNrRW5hYmxlZCA9IGZh
bHNlOwotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCduZXh0dHJhY2snLCBza2lwVG9OZXh0VHJh
Y2ssIGZhbHNlLCB0cnVlLCBjb250cm9scyk7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3By
ZXZpb3VzdHJhY2snLCBza2lwVG9QcmV2aW91c1RyYWNrLCBmYWxzZSwgdHJ1ZSwgY29udHJvbHMp
OwotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9y
RXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVv
LnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAg
ICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCdwbGF5aW5nJywgYmVnYW5QbGF5aW5nLCBmYWxzZSwgdHJ1ZSwgdmlkZW8pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVnaW5QbGF5aW5nKGV2ZW50KQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcsIHRydWUpOwotCi0gICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIkJlZ2luIHBsYXlpbmcgbWVkaWEuIik7Ci0gICAgICAgICAgICB2
aWRlby5wbGF5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdhblBsYXlpbmco
ZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiTWVkaWEgYmVnYW4g
cGxheWluZy4iKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1c2VkJywgZmFs
c2UpOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNz
aW9uKScsICJhY3RpdmUiKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGlu
ZyBOZXh0IFRyYWNrIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJu
YWxzLnNlbmRNZWRpYUNvbnRyb2xFdmVudCgibmV4dC10cmFjayIpJyk7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIFByZXZpb3VzIFRyYWNr
IG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRp
YUNvbnRyb2xFdmVudCgicHJldmlvdXMtdHJhY2siKScpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJlbmRUZXN0KCkiLCAyMDApOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBza2lwVG9OZXh0VHJhY2soZXZlbnQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZhaWxUZXN0KCJuZXh0LXRyYWNrIGV2ZW50cyBzaG91bGQg
bm90IGJlIGZpcmVkLiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2tpcFRvUHJl
dmlvdXNUcmFjayhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgZmFpbFRlc3QoInByZXZp
b3VzLXRyYWNrIGV2ZW50cyBzaG91bGQgbm90IGJlIGZpcmVkLiIpOwotICAgICAgICB9Ci0gICAg
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+UHJl
dmlvdXMvTmV4dCBUcmFjayBldmVudHMgc2hvdWxkIG5vdCBiZSBmaXJlZCBpZiBwcmV2aW91cy9u
ZXh0VHJhY2tFbmFibGVkIGFyZSAnZmFsc2UnLjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAv
PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFj
ay1tZWRpYS1ldmVudHMtaW4tY29udGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29u
dGVudC1zZXNzaW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkKKysrIExheW91dFRl
c3RzL21lZGlhL3Nlc3Npb24vdHJhY2stbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMt
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTkgKzAsMCBAQAotJ0NvbnRlbnQnIHNl
c3Npb25zIHRoYXQgYXJlIGFjdGl2ZSBzaG91bGQgcmVzcG9uZCB0byBQcmV2aW91cy9OZXh0IFRy
YWNrIG1lZGlhIGNvbnRyb2wgZXZlbnRzLgotCi0KLUVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQ
RUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lvbikgPT0gJ2lk
bGUnKSBPSwotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1CZWdpbiBwbGF5
aW5nIG1lZGlhLgotRVZFTlQocGxheWluZykKLU1lZGlhIGJlZ2FuIHBsYXlpbmcuCi1FWFBFQ1RF
RCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlh
U2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLVNlbmRpbmcgTmV4
dCBUcmFjayBtZWRpYSBldmVudC4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50
KCJuZXh0LXRyYWNrIikpCi1FVkVOVChuZXh0dHJhY2spCi1TZW5kaW5nIFByZXZpb3VzIFRyYWNr
IG1lZGlhIGV2ZW50LgotUlVOKGludGVybmFscy5zZW5kTWVkaWFDb250cm9sRXZlbnQoInByZXZp
b3VzLXRyYWNrIikpCi1FVkVOVChwcmV2aW91c3RyYWNrKQotRU5EIE9GIFRFU1QKLQpJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29udGVudC1z
ZXNzaW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJh
Y2stbWVkaWEtZXZlbnRzLWluLWNvbnRlbnQtc2Vzc2lvbnMuaHRtbAkocmV2aXNpb24gMjY3Nzkw
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFjay1tZWRpYS1ldmVudHMtaW4tY29u
dGVudC1zZXNzaW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vz
c2lvbiwgY29udHJvbHM7Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7
Ci0gICAgICAgICAgICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotICAg
ICAgICAgICAgY29udHJvbHMgPSBzZXNzaW9uLmNvbnRyb2xzOwotICAgICAgICAgICAgY29udHJv
bHMubmV4dFRyYWNrRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICBjb250cm9scy5wcmV2aW91
c1RyYWNrRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ25leHR0cmFj
aycsIHNraXBUb05leHRUcmFjaywgZmFsc2UsIHRydWUsIGNvbnRyb2xzKTsKLSAgICAgICAgICAg
IHdhaXRGb3JFdmVudCgncHJldmlvdXN0cmFjaycsIHNraXBUb1ByZXZpb3VzVHJhY2ssIGZhbHNl
LCB0cnVlLCBjb250cm9scyk7Ci0KLSAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAg
ICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwot
ICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVu
dC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlkZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAg
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBiZWdhblBsYXlpbmcsIGZhbHNlLCB0cnVl
LCB2aWRlbyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZl
bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0
ZShzZXNzaW9uKScsICJpZGxlIik7Ci0KLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8u
cGF1c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiQmVnaW4gcGxheWlu
ZyBtZWRpYS4iKTsKLSAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCd2aWRlby5wYXVzZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMubWVk
aWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Npb24pJywgImFjdGl2ZSIpOwotCi0gICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJTZW5kaW5nIE5leHQgVHJhY2sgbWVkaWEgZXZlbnQuIik7Ci0g
ICAgICAgICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJuZXh0
LXRyYWNrIiknKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IHNraXBUb05leHRUcmFjayhldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJTZW5kaW5nIFByZXZpb3VzIFRyYWNrIG1lZGlhIGV2ZW50LiIpOwotICAgICAgICAgICAg
cnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhQ29udHJvbEV2ZW50KCJwcmV2aW91cy10cmFjayIpJyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBza2lwVG9QcmV2aW91c1RyYWNrKGV2ZW50
KQotICAgICAgICB7Ci0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD4nQ29udGVu
dCcgc2Vzc2lvbnMgdGhhdCBhcmUgYWN0aXZlIHNob3VsZCByZXNwb25kIHRvIFByZXZpb3VzL05l
eHQgVHJhY2sgbWVkaWEgY29udHJvbCBldmVudHMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8i
IC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3Ry
YW5zaWVudC1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1pbnRlcnJ1cHRpb25zLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjY3NzkwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQt
aW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOCArMCwwIEBA
Ci0nVHJhbnNpZW50JyBpbnRlcnJ1cHRpb24gZXZlbnRzIHNob3VsZCBkdWNrIGF1ZGlvIGZvciAn
Q29udGVudCcgbWVkaWEgc2Vzc2lvbnMuCi0KLQotV2FpdGluZyBmb3IgQ29udGVudCBtZWRpYSB0
byBiZWdpbiBwbGF5aW5nLgotRVZFTlQoY2FucGxheXRocm91Z2gpCi1NZWRpYSBiZWdhbiBwbGF5
aW5nLgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoc2Vzc2lv
bikgPT0gJ2FjdGl2ZScpIE9LCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXll
clZvbHVtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSkgPT0gJzEnKSBPSwotU2Vu
ZGluZyAnVHJhbnNpZW50JyBzdGFydC1vZi1pbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9uLgotUlVO
KGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlv
bigidHJhbnNpZW50IikpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRT
dGF0ZShzZXNzaW9uKSA9PSAnaW50ZXJydXB0ZWQnKSBPSwotRVhQRUNURUQgKGludGVybmFscy5t
ZWRpYUVsZW1lbnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikp
ID09ICcwLjI1JykgT0sKLVNlbmRpbmcgJ1RyYW5zaWVudCcgZW5kLW9mLWludGVycnVwdGlvbiBu
b3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVw
dGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50IikpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLm1lZGlh
U2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnYWN0aXZlJykgT0sKLUVYUEVDVEVEIChp
bnRlcm5hbHMubWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ2aWRlbyIpKSA9PSAnMScpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1pbnRlcnJ1cHRpb25zLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2llbnQtaW50ZXJydXB0aW9ucy5odG1sCShy
ZXZpc2lvbiAyNjc3OTApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1p
bnRlcnJ1cHRpb25zLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3Qu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIHZhciBzZXNz
aW9uOwotICAgIAotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Ci0KLSAgICAgICAgICAgIHNlc3Npb24gPSBuZXcgTWVkaWFTZXNzaW9uKCJjb250ZW50
Iik7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiV2FpdGluZyBmb3IgQ29udGVudCBtZWRp
YSB0byBiZWdpbiBwbGF5aW5nLiIpCi0gICAgICAgICAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxh
eXRocm91Z2gnLCBiZWdpblBsYXlpbmcpOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1l
ZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC9jb3VudGluZyIpOwotICAgICAgICAgICAgdmlk
ZW8uc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgICAgICAgICB2aWRlby52b2x1bWUgPSAxOwotICAg
ICAgICAgICAgdmlkZW8ub25wbGF5aW5nID0gYmVnYW5QbGF5aW5nOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBmdW5jdGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpLnBsYXkoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwotCi0gICAg
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJhY3Rp
dmUiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYUVsZW1l
bnRQbGF5ZXJWb2x1bWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpJywgMSk7Ci0K
LSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ1RyYW5zaWVudCcgc3RhcnQt
b2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2lu
dGVybmFscy5zZW5kTWVkaWFTZXNzaW9uU3RhcnRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigi
dHJhbnNpZW50IiknKTsKLQotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxz
Lm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScsICJpbnRlcnJ1cHRlZCIpOwotICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhRWxlbWVudFBsYXllclZv
bHVtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSknLCAwLjI1KTsKLQotICAgICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyAnVHJhbnNpZW50JyBlbmQtb2YtaW50ZXJy
dXB0aW9uIG5vdGlmaWNhdGlvbi4iKTsKLSAgICAgICAgICAgICAgICBydW4oJ2ludGVybmFscy5z
ZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudCIp
Jyk7Ci0KLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5tZWRpYVNlc3Np
b25DdXJyZW50U3RhdGUoc2Vzc2lvbiknLCAiYWN0aXZlIik7Ci0gICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCdpbnRlcm5hbHMubWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ2aWRlbyIpKScsIDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD4nVHJhbnNpZW50JyBpbnRlcnJ1
cHRpb24gZXZlbnRzIHNob3VsZCBkdWNrIGF1ZGlvIGZvciAnQ29udGVudCcgbWVkaWEgc2Vzc2lv
bnMuPC9wPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIC8+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS9zZXNzaW9uL3RyYW5zaWVudC1zb2xvLWludGVycnVwdGlvbnMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJh
bnNpZW50LXNvbG8taW50ZXJydXB0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2Nzc5MCkK
KysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJydXB0aW9u
cy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwxOCArMCwwIEBACi0nVHJhbnNpZW50
IFNvbG8nIGludGVycnVwdGlvbiBldmVudHMgc2hvdWxkIHBhdXNlIGVsZW1lbnRzIGJlbG9uZ2lu
ZyB0byAnQ29udGVudCcgbWVkaWEgc2Vzc2lvbnMuCi0KLQotV2FpdGluZyBmb3IgQ29udGVudCBt
ZWRpYSB0byBiZWdpbiBwbGF5aW5nLgotRVZFTlQoY2FucGxheXRocm91Z2gpCi1NZWRpYSBiZWdh
biBwbGF5aW5nLgotRVhQRUNURUQgKGludGVybmFscy5tZWRpYVNlc3Npb25DdXJyZW50U3RhdGUo
c2Vzc2lvbikgPT0gJ2FjdGl2ZScpIE9LCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxz
ZScpIE9LCi1TZW5kaW5nICdUcmFuc2llbnQgU29sbycgc3RhcnQtb2YtaW50ZXJydXB0aW9uIG5v
dGlmaWNhdGlvbi4KLVJVTihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1
cHRpb25Ob3RpZmljYXRpb24oInRyYW5zaWVudC1zb2xvIikpCi1FWFBFQ1RFRCAoaW50ZXJuYWxz
Lm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKSA9PSAnaW50ZXJydXB0ZWQnKSBPSwot
RVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCi1TZW5kaW5nICdUcmFuc2llbnQg
U29sbycgZW5kLW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uCi1SVU4oaW50ZXJuYWxzLnNl
bmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigidHJhbnNpZW50LXNv
bG8iKSkKLUVYUEVDVEVEIChpbnRlcm5hbHMubWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKHNlc3Np
b24pID09ICdhY3RpdmUnKSBPSwotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBP
SwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvc2Vzc2lvbi90cmFuc2ll
bnQtc29sby1pbnRlcnJ1cHRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvc2Vzc2lvbi90cmFuc2llbnQtc29sby1pbnRlcnJ1cHRpb25zLmh0bWwJKHJldmlzaW9uIDI2
Nzc5MCkKKysrIExheW91dFRlc3RzL21lZGlhL3Nlc3Npb24vdHJhbnNpZW50LXNvbG8taW50ZXJy
dXB0aW9ucy5odG1sCShub25leGlzdGVudCkKQEAgLTEsNTggKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICB2YXIgc2Vzc2lvbjsK
LSAgICAKLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAotICAgICAgICB7Ci0gICAgICAgICAg
ICBzZXNzaW9uID0gbmV3IE1lZGlhU2Vzc2lvbigiY29udGVudCIpOwotCi0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoIldhaXRpbmcgZm9yIENvbnRlbnQgbWVkaWEgdG8gYmVnaW4gcGxheWluZy4i
KQotCi0gICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB3YWl0Rm9y
RXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgYmVnaW5QbGF5aW5nKTsKLSAgICAgICAgICAgIHZpZGVv
LnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvY291bnRpbmciKTsKLSAg
ICAgICAgICAgIHZpZGVvLnNlc3Npb24gPSBzZXNzaW9uOwotICAgICAgICAgICAgdmlkZW8ub25w
bGF5aW5nID0gYmVnYW5QbGF5aW5nOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmdW5j
dGlvbiBiZWdpblBsYXlpbmcoZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZpZGVvLnBs
YXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGJlZ2FuUGxheWluZyhldmVudCkK
LSAgICAgICAgewotICAgICAgICAgICAgdmlkZW8ub25wbGF5aW5nID0gbnVsbDsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJNZWRpYSBiZWdhbiBwbGF5aW5nLiIpOwot
Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScs
ICJhY3RpdmUiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcs
IGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU2VuZGluZyAnVHJhbnNp
ZW50IFNvbG8nIHN0YXJ0LW9mLWludGVycnVwdGlvbiBub3RpZmljYXRpb24uIik7Ci0gICAgICAg
ICAgICAgICAgcnVuKCdpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvblN0YXJ0T2ZJbnRlcnJ1cHRp
b25Ob3RpZmljYXRpb24oInRyYW5zaWVudC1zb2xvIiknKTsKLQotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScs
ICJpbnRlcnJ1cHRlZCIpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8ucGF1
c2VkJywgdHJ1ZSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlNlbmRpbmcgJ1Ry
YW5zaWVudCBTb2xvJyBlbmQtb2YtaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbi4iKTsKLSAgICAg
ICAgICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRp
b25Ob3RpZmljYXRpb24oInRyYW5zaWVudC1zb2xvIiknKTsKLQotICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnaW50ZXJuYWxzLm1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShzZXNzaW9uKScs
ICJhY3RpdmUiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLnBhdXNlZCcs
IGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZW5kVGVz
dCgpOwotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Ci0gICAgPHA+J1RyYW5zaWVudCBTb2xvJyBpbnRlcnJ1cHRpb24gZXZlbnRzIHNo
b3VsZCBwYXVzZSBlbGVtZW50cyBiZWxvbmdpbmcgdG8gJ0NvbnRlbnQnIG1lZGlhIHNlc3Npb25z
LjwvcD4KLSAgICA8dmlkZW8gaWQ9InZpZGVvIiAvPgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>